1010#include " hytech_msgs.pb.h"
1111#include < cstdint>
1212
13+
1314DrivebrainInterface::DrivebrainInterface (const RearLoadCellData_s &rear_load_cell_data,
1415 const RearSusPotData_s &rear_suspot_data,
1516 const ThermistorData_s &coolant_temperature_data_0,
@@ -27,36 +28,78 @@ DrivebrainInterface::DrivebrainInterface(const RearLoadCellData_s &rear_load_cel
2728 _vcr_data_port(vcr_data_port),
2829 _udp_socket(udp_socket) { };
2930
30- StampedDrivetrainCommand_s DrivebrainInterface::get_latest_data () {
31- return _latest_drivebrain_command;
31+ StampedDrivetrainCommand_s DrivebrainInterface::get_latest_telem_drivebrain_command () {
32+ return _latest_drivebrain_command_telem;
33+ }
34+
35+ StampedDrivetrainCommand_s DrivebrainInterface::get_latest_auxillary_drivebrain_command () {
36+ return _latest_drivebrain_command_auxillary;
37+ }
38+
39+
40+ void DrivebrainInterface::receive_drivebrain_speed_command_telem (const CAN_message_t &msg,
41+ unsigned long curr_millis) {
42+ DRIVEBRAIN_SPEED_SET_INPUT_t drivebrain_msg;
43+
44+ Unpack_DRIVEBRAIN_SPEED_SET_INPUT_hytech (&drivebrain_msg, &msg.buf [0 ], msg.len );
45+
46+ _latest_drivebrain_command_telem.desired_speeds .recvd = true ;
47+ _latest_drivebrain_command_telem.desired_speeds .last_recv_millis = curr_millis;
48+
49+ _latest_drivebrain_command_telem.desired_speeds .veh_vec_data = {
50+ static_cast <float >(drivebrain_msg.drivebrain_set_rpm_fl ),
51+ static_cast <float >(drivebrain_msg.drivebrain_set_rpm_fr ),
52+ static_cast <float >(drivebrain_msg.drivebrain_set_rpm_rl ),
53+ static_cast <float >(drivebrain_msg.drivebrain_set_rpm_rr )};
54+ };
55+
56+ void DrivebrainInterface::receive_drivebrain_torque_lim_command_telem (const CAN_message_t &msg,
57+ unsigned long curr_millis) {
58+ DRIVEBRAIN_TORQUE_LIM_INPUT_t drivebrain_msg;
59+
60+ Unpack_DRIVEBRAIN_TORQUE_LIM_INPUT_hytech (&drivebrain_msg, &msg.buf [0 ], msg.len );
61+
62+ _latest_drivebrain_command_telem.torque_limits .recvd = true ;
63+ _latest_drivebrain_command_telem.torque_limits .last_recv_millis = curr_millis;
64+
65+ _latest_drivebrain_command_telem.torque_limits .veh_vec_data = {
66+ static_cast <float >(
67+ HYTECH_drivebrain_torque_fl_ro_fromS (drivebrain_msg.drivebrain_torque_fl_ro )),
68+ static_cast <float >(
69+ HYTECH_drivebrain_torque_fr_ro_fromS (drivebrain_msg.drivebrain_torque_fr_ro )),
70+ static_cast <float >(
71+ HYTECH_drivebrain_torque_rl_ro_fromS (drivebrain_msg.drivebrain_torque_rl_ro )),
72+ static_cast <float >(
73+ HYTECH_drivebrain_torque_rr_ro_fromS (drivebrain_msg.drivebrain_torque_rr_ro ))};
3274}
3375
34- void DrivebrainInterface::receive_drivebrain_speed_command (const CAN_message_t &msg,
76+
77+ void DrivebrainInterface::receive_drivebrain_speed_command_auxillary (const CAN_message_t &msg,
3578 unsigned long curr_millis) {
3679 DRIVEBRAIN_SPEED_SET_INPUT_t drivebrain_msg;
3780
3881 Unpack_DRIVEBRAIN_SPEED_SET_INPUT_hytech (&drivebrain_msg, &msg.buf [0 ], msg.len );
3982
40- _latest_drivebrain_command .desired_speeds .recvd = true ;
41- _latest_drivebrain_command .desired_speeds .last_recv_millis = curr_millis;
83+ _latest_drivebrain_command_auxillary .desired_speeds .recvd = true ;
84+ _latest_drivebrain_command_auxillary .desired_speeds .last_recv_millis = curr_millis;
4285
43- _latest_drivebrain_command .desired_speeds .veh_vec_data = {
86+ _latest_drivebrain_command_auxillary .desired_speeds .veh_vec_data = {
4487 static_cast <float >(drivebrain_msg.drivebrain_set_rpm_fl ),
4588 static_cast <float >(drivebrain_msg.drivebrain_set_rpm_fr ),
4689 static_cast <float >(drivebrain_msg.drivebrain_set_rpm_rl ),
4790 static_cast <float >(drivebrain_msg.drivebrain_set_rpm_rr )};
4891};
4992
50- void DrivebrainInterface::receive_drivebrain_torque_lim_command (const CAN_message_t &msg,
93+ void DrivebrainInterface::receive_drivebrain_torque_lim_command_auxillary (const CAN_message_t &msg,
5194 unsigned long curr_millis) {
5295 DRIVEBRAIN_TORQUE_LIM_INPUT_t drivebrain_msg;
5396
5497 Unpack_DRIVEBRAIN_TORQUE_LIM_INPUT_hytech (&drivebrain_msg, &msg.buf [0 ], msg.len );
5598
56- _latest_drivebrain_command .torque_limits .recvd = true ;
57- _latest_drivebrain_command .torque_limits .last_recv_millis = curr_millis;
99+ _latest_drivebrain_command_auxillary .torque_limits .recvd = true ;
100+ _latest_drivebrain_command_auxillary .torque_limits .last_recv_millis = curr_millis;
58101
59- _latest_drivebrain_command .torque_limits .veh_vec_data = {
102+ _latest_drivebrain_command_auxillary .torque_limits .veh_vec_data = {
60103 static_cast <float >(
61104 HYTECH_drivebrain_torque_fl_ro_fromS (drivebrain_msg.drivebrain_torque_fl_ro )),
62105 static_cast <float >(
@@ -69,11 +112,12 @@ void DrivebrainInterface::receive_drivebrain_torque_lim_command(const CAN_messag
69112
70113void DrivebrainInterface::handle_enqueue_suspension_CAN_data () {
71114 REAR_SUSPENSION_t rear_sus_msg;
115+
72116 rear_sus_msg.rl_load_cell = _suspension_data.rear_load_cell_data .RL_loadcell_analog ;
73117 rear_sus_msg.rr_load_cell = _suspension_data.rear_load_cell_data .RR_loadcell_analog ;
74118 rear_sus_msg.rl_shock_pot = _suspension_data.rear_suspot_data .RL_sus_pot_analog ;
75119 rear_sus_msg.rr_shock_pot = _suspension_data.rear_suspot_data .RR_sus_pot_analog ;
76-
120+
77121 CAN_util::enqueue_msg (&rear_sus_msg, &Pack_REAR_SUSPENSION_hytech,
78122 VCRCANInterfaceImpl::telem_can_tx_buffer);
79123}
0 commit comments