...
Buttons to change state
Drive, Reverse, and Neutral
Regen Braking button
Hazard Button
three 7-segment displays with the below quantities
Speedometer (speed in km/h)
When we BPS fault it will display the error code instead
Current Readings (Amps)
Aux Battery Voltage (Volts)
Indicator LEDs
One for each of the above buttons (D/N/R/Haz/Reg)
Left turn signal
Right Turn Signal
Cruise control enabled indicator
BPS Fault Light
AFE Loss of Communications
Buzzer to highlight events
Button Clicks
BPS fault
Pedal Position
Maps ADC reading from 0-1 for the Motor Controller
Stores pedal calibration data in flash non-volatile memory
Steering Stalk
Toggles Left/Right lights
Toggles Cruise Control
...
Power Button, hazard, regen: send notifications to main task
R, N, D → Send notifications to Drive FSM
Module: update_dashboard:
Static variables:
cruise_control_state
target_velocity
regen_braking_state
power_state_to_transmit
...
dashboard_init()
update_indicators()
Gets notification value from button presses, updates indicator lights and output can_messages
Hazard enabled:
when pressed, toggle static hazard state
update indicator and cc_power_control.hazard_enabled message based on stored value
Regen Brake:
when pressed, toggle static regen brake state
update indicator and drive_output.regen_brake_enabled message based on stored value
Lights left/right
update left/right indicator based on steering stalk position
Cruise Control Enabled:
update static cc state + indicator based on steering stalk ISR (Button click)
update drive_output based on cc_state + target_velocity
update_displays() [SEPERATE TASK]
Reads values from CAN messages, uses values for 7-seg:
Calculated speed using RPM to MPH → speed display (Top)
Current reading in Amps → current display (Middle)
Aux Battery Voltage → aux batt display (Bottom)
cruise_control_monitor()
Checks for cruise control inputs from steering stalk
Updates Cruise control target speed
Module: pedal
Module: steering
Drive FSM
The Drive FSM handles the control of drive state of the car. It receives the drive buttons (Neutral (N), Drive (D), Reverse(R)) and runs the preparations and checks needed to change the drive state of the car, and communicates this value with the motor controllers.
...