73{
74
75
76
77
78
79 while (rx_buffer.available())
80 {
81 CAN_message_t recvd_msg;
82 uint8_t buf[sizeof(CAN_message_t)];
83 rx_buffer.pop_front(buf, sizeof(CAN_message_t));
84 memmove(&recvd_msg, buf, sizeof(recvd_msg));
85 switch (recvd_msg.id)
86 {
87
88 case DASHBOARD_STATE_CANID:
89 interfaces.dash_interface->read(recvd_msg);
90 break;
91
92
93 case ID_BMS_STATUS:
94 interfaces.ams_interface->retrieve_status_CAN(curr_millis, recvd_msg);
95 break;
96 case ID_BMS_TEMPERATURES:
97 interfaces.ams_interface->retrieve_temp_CAN(recvd_msg);
98 break;
99 case ID_BMS_VOLTAGES:
100 interfaces.ams_interface->retrieve_voltage_CAN(recvd_msg);
101 break;
102 case ID_EM_MEASUREMENT:
103 interfaces.ams_interface->retrieve_em_measurement_CAN(recvd_msg);
104 break;
105 case ACU_SHUNT_MEASUREMENTS_CANID:
106 interfaces.ams_interface->retrieve_current_shunt_CAN(recvd_msg);
107 break;
108
109
110 case ID_MC1_STATUS:
111 interfaces.front_left_inv->receive_status_msg(recvd_msg);
112 break;
113 case ID_MC2_STATUS:
114 interfaces.front_right_inv->receive_status_msg(recvd_msg);
115 break;
116 case ID_MC3_STATUS:
117 interfaces.rear_left_inv->receive_status_msg(recvd_msg);
118 break;
119 case ID_MC4_STATUS:
120 interfaces.rear_right_inv->receive_status_msg(recvd_msg);
121 break;
122
123
124 case ID_MC1_TEMPS:
125 interfaces.front_left_inv->receive_temp_msg(recvd_msg);
126 break;
127 case ID_MC2_TEMPS:
128 interfaces.front_right_inv->receive_temp_msg(recvd_msg);
129 break;
130 case ID_MC3_TEMPS:
131 interfaces.rear_left_inv->receive_temp_msg(recvd_msg);
132 break;
133 case ID_MC4_TEMPS:
134 interfaces.rear_right_inv->receive_temp_msg(recvd_msg);
135 break;
136
137
138 case ID_MC1_ENERGY:
139 interfaces.front_left_inv->receive_energy_msg(recvd_msg);
140 break;
141 case ID_MC2_ENERGY:
142 interfaces.front_right_inv->receive_energy_msg(recvd_msg);
143 break;
144 case ID_MC3_ENERGY:
145 interfaces.rear_left_inv->receive_energy_msg(recvd_msg);
146 break;
147 case ID_MC4_ENERGY:
148 interfaces.rear_right_inv->receive_energy_msg(recvd_msg);
149 break;
150
151
152 case SAB_SUSPENSION_CANID:
153 interfaces.sab_interface->retrieve_pots_and_load_cells_CAN(recvd_msg);
154 break;
155
156
157 case VN_VEL_CANID:
158 interfaces.vn_interface->retrieve_velocity_CAN(recvd_msg);
159 break;
160 case VN_LINEAR_ACCEL_CANID:
161 interfaces.vn_interface->retrieve_linear_accel_CAN(recvd_msg);
162 break;
163 case VN_LINEAR_ACCEL_UNCOMP_CANID:
164 interfaces.vn_interface->retrieve_uncompLinear_accel_CAN(recvd_msg);
165 break;
166 case VN_YPR_CANID:
167 interfaces.vn_interface->retrieve_ypr_CAN(recvd_msg);
168 break;
169 case VN_LAT_LON_CANID:
170 interfaces.vn_interface->retrieve_lat_lon_CAN(recvd_msg);
171 break;
172 case VN_GPS_TIME_MSG_CANID:
173 interfaces.vn_interface->retrieve_gps_time_CAN(recvd_msg);
174 break;
175 case VN_STATUS_CANID:
176 interfaces.vn_interface->retrieve_vn_status_CAN(recvd_msg);
177 break;
178 case VN_ANGULAR_RATE_CANID:
179 interfaces.vn_interface->receive_ang_rates_CAN(recvd_msg);
180 break;
181 default:
182 break;
183 }
184 }
185}