1#include "DashboardInterface.h"
6 DASHBOARD_STATE_t dash_state;
7 Unpack_DASHBOARD_STATE_hytech(&dash_state, can_msg.buf, can_msg.len);
11 _data.
ssok = dash_state.ssok_above_threshold;
44 DASHBOARD_MCU_STATE_t dash_mcu_state;
50 dash_mcu_state.launch_control_led =
_data.
LED[
static_cast<int>(DashLED_e::LAUNCH_CONTROL_LED)];
51 dash_mcu_state.mode_led =
_data.
LED[
static_cast<int>(DashLED_e::MODE_LED)];
52 dash_mcu_state.mechanical_brake_led =
_data.
LED[
static_cast<int>(DashLED_e::MECH_BRAKE_LED)];
53 dash_mcu_state.cockpit_brb_led =
_data.
LED[
static_cast<int>(DashLED_e::COCKPIT_BRB_LED)];
54 dash_mcu_state.inertia_status_led =
_data.
LED[
static_cast<int>(DashLED_e::INERTIA_LED)];
55 dash_mcu_state.start_status_led =
_data.
LED[
static_cast<int>(DashLED_e::START_LED)];
56 dash_mcu_state.motor_controller_error_led =
_data.
LED[
static_cast<int>(DashLED_e::MC_ERROR_LED)];
58 dash_mcu_state.bots_led =
_data.
LED[
static_cast<int>(DashLED_e::BOTS_LED)];
59 dash_mcu_state.imd_led =
_data.
LED[
static_cast<int>(DashLED_e::IMD_LED)];
60 dash_mcu_state.ams_led =
_data.
LED[
static_cast<int>(DashLED_e::AMS_LED)];
62 dash_mcu_state.glv_led =
_data.
LED[
static_cast<int>(DashLED_e::GLV_LED)];
63 dash_mcu_state.pack_charge_led =
_data.
LED[
static_cast<int>(DashLED_e::CRIT_CHARGE_LED)];
65 CAN_message_t can_msg;
66 auto id = Pack_DASHBOARD_MCU_STATE_hytech(&dash_mcu_state, can_msg.buf, &can_msg.len, (uint8_t *)&can_msg.flags.extended);
70 uint8_t buf[
sizeof(CAN_message_t)] = {};
71 memmove(buf, &can_msg,
sizeof(CAN_message_t));
72 msg_queue_->push_back(buf,
sizeof(CAN_message_t));
81 _data.
LED[
static_cast<uint8_t
>(led)] =
static_cast<uint8_t
>(color);
87 bool drivetrain_error,
89 float min_cell_voltage,
90 AnalogConversion_s glv_voltage,
101 setLED(DashLED_e::BOTS_LED, mcu->
get_bots_ok() ? LEDColors_e::ON : LEDColors_e::RED);
102 setLED(DashLED_e::START_LED, car_state ==
int(MCU_STATE::READY_TO_DRIVE) ? LEDColors_e::ON : LEDColors_e::RED);
103 setLED(DashLED_e::MC_ERROR_LED, !drivetrain_error ? LEDColors_e::ON : LEDColors_e::RED);
106 switch (launch_state)
109 setLED(DashLED_e::LAUNCH_CONTROL_LED, LEDColors_e::RED);
112 setLED(DashLED_e::LAUNCH_CONTROL_LED, LEDColors_e::YELLOW);
115 setLED(DashLED_e::LAUNCH_CONTROL_LED, LEDColors_e::ON);
118 setLED(DashLED_e::LAUNCH_CONTROL_LED, LEDColors_e::OFF);
124 case TorqueLimit_e::TCMUX_LOW_TORQUE:
125 setLED(DashLED_e::MODE_LED, LEDColors_e::OFF);
127 case TorqueLimit_e::TCMUX_MID_TORQUE:
128 setLED(DashLED_e::MODE_LED, LEDColors_e::YELLOW);
130 case TorqueLimit_e::TCMUX_FULL_TORQUE:
131 setLED(DashLED_e::MODE_LED, LEDColors_e::ON);
134 setLED(DashLED_e::MODE_LED, LEDColors_e::RED);
138 uint16_t scaled_cell_voltage = (uint16_t)map((uint32_t)(min_cell_voltage * 1000), 3300, 4200, 0, 255);
139 _data.
LED[
static_cast<int>(DashLED_e::CRIT_CHARGE_LED)] = std::max(0, std::min((
int)scaled_cell_voltage, 255));
TorqueLimit_e
Defines modes of torque limit to be processed in torque limit map for exact values.
bool launchControlButtonPressed()
ControllerMode_e getDialMode()
void read(const CAN_message_t &can_msg)
bool prev_button_pressed_state_
bool rightShifterButtonPressed()
void update_torque_mode_(bool button_pressed)
void setLED(DashLED_e led, LEDColors_e color)
bool torqueModeButtonPressed()
TorqueLimit_e getTorqueLimitMode()
DashComponentInterface_s _data
bool nightModeButtonPressed()
bool inverterResetButtonPressed()
bool specialButtonPressed()
bool startButtonPressed()
void tick10(MCUInterface *mcu, int car_state, bool buzzer, bool drivetrain_error, TorqueLimit_e torque, float min_cell_voltage, AnalogConversion_s glv_voltage, int launch_state, ControllerMode_e dial_mode)
CANBufferType * msg_queue_
bool shutdownHAboveThreshold()
bool leftShifterButtonPressed()
BuzzerController buzzer(BUZZER_ON_INTERVAL)
ControllerMode_e cur_dial_mode
TorqueLimit_e torque_limit_mode
ControllerMode_e dial_mode