Midnight Sun Firmware
Loading...
Searching...
No Matches
GlobalEnums

Global Enum definition for sharing between projects. More...

Classes

struct  PedalCalibrationData
 Stores data that defines when the pedal is full pressed or unpressed. More...
 
struct  __attribute__
 Per-fault detail snapshot for the BPS fault code. More...
 
union  BpsFaultData
 
struct  BpsFaultRecord
 Latched BPS fault state, persisted on the rear controller. More...
 

Macros

#define VEHICLE_DRIVE_STATE_TO_STR(s)   (((s) < VEHICLE_DRIVE_NUM_STATES) ? vehicle_drive_state_strings[(s)] : "UNKNOWN")
 
#define GLOBAL_LIGHTS_BLINK_FREQUENCY_HZ   1.5f
 Blink frequency for all indicator/strobe lights (turn signals + BPS strobe). More...
 
#define GLOBAL_LIGHTS_BLINK_PERIOD_MS   ((uint32_t)(1000.0f / (2.0f * GLOBAL_LIGHTS_BLINK_FREQUENCY_HZ)))
 
#define GLOBAL_SIGNAL_LIGHTS_BLINK_PERIOD_MS   GLOBAL_LIGHTS_BLINK_PERIOD_MS
 
#define GLOBAL_BPS_LIGHTS_BLINK_PERIOD_MS   GLOBAL_LIGHTS_BLINK_PERIOD_MS
 
#define ERROR_FLAG_HARDWARE_OVERCURRENT_MASK   (1U << ERROR_FLAG_HARDWARE_OVERCURRENT)
 Hardware overcurrent error flag mask.
 
#define ERROR_FLAG_SOFTWARE_OVERCURRENT_MASK   (1U << ERROR_FLAG_SOFTWARE_OVERCURRENT)
 Software overcurrent error flag mask.
 
#define ERROR_FLAG_DC_BUS_OV_MASK   (1U << ERROR_FLAG_DC_BUS_OV)
 DC bus overvoltage error flag mask.
 
#define ERROR_FLAG_BAD_HALL_SEQUENCE_MASK   (1U << ERROR_FLAG_BAD_HALL_SEQUENCE)
 Bad hall sequence error flag mask.
 
#define ERROR_FLAG_WATCHDOG_CAUSED_RESET_MASK   (1U << ERROR_FLAG_WATCHDOG_CAUSED_RESET)
 Watchdog caused reset error flag mask.
 
#define ERROR_FLAG_CFG_READ_ERROR_MASK   (1U << ERROR_FLAG_CFG_READ_ERROR)
 CFG read error flag mask.
 
#define ERROR_FLAG_UVLO_MASK   (1U << ERROR_FLAG_UVLO)
 UVLO error flag mask.
 
#define ERROR_FLAG_DESATURATION_FAULT_MASK   (1U << ERROR_FLAG_DESATURATION_FAULT)
 Desaturation fault error flag mask.
 
#define ERROR_FLAG_MOTOR_OVER_SPEED_MASK   (1U << ERROR_FLAG_MOTOR_OVER_SPEED)
 Motor overspeed error flag mask.
 
#define LIMIT_FLAG_OUTPUT_VOLTAGE_PWM_MASK   (1U << LIMIT_FLAG_OUTPUT_VOLTAGE_PWM)
 Output voltage PWM limit flag mask.
 
#define LIMIT_FLAG_MOTOR_CURRENT_MASK   (1U << LIMIT_FLAG_MOTOR_CURRENT)
 Motor current limit flag mask.
 
#define LIMIT_FLAG_VELOCITY_MASK   (1U << LIMIT_FLAG_VELOCITY)
 Velocity limit flag mask.
 
#define LIMIT_FLAG_BUS_CURRENT_MASK   (1U << LIMIT_FLAG_BUS_CURRENT)
 Bus current limit flag mask.
 
#define LIMIT_FLAG_BUS_VOLTAGE_UPPER_MASK   (1U << LIMIT_FLAG_BUS_VOLTAGE_UPPER)
 Bus voltage upper limit flag mask.
 
#define LIMIT_FLAG_BUS_VOLTAGE_LOWER_MASK   (1U << LIMIT_FLAG_BUS_VOLTAGE_LOWER)
 Bus voltage lower limit flag mask.
 
#define LIMIT_FLAG_TEMPERATURE_MASK   (1U << LIMIT_FLAG_TEMPERATURE)
 Temperature limit flag mask.
 
#define BPS_FAULT_OVERVOLTAGE_MASK   (1U << BPS_FAULT_OVERVOLTAGE)
 BPS Overvoltage fault mask.
 
#define BPS_FAULT_UNBALANCE_MASK   (1U << BPS_FAULT_UNBALANCE)
 BPS Unbalanced fault mask.
 
#define BPS_FAULT_OVERTEMP_AMBIENT_MASK   (1U << BPS_FAULT_OVERTEMP_AMBIENT)
 BPS Ambient temperature fault mask.
 
#define BPS_FAULT_COMMS_LOSS_AFE_MASK   (1U << BPS_FAULT_COMMS_LOSS_AFE)
 BPS Communication lost with AFEs fault mask.
 
#define BPS_FAULT_COMMS_LOSS_CURR_SENSE_MASK   (1U << BPS_FAULT_COMMS_LOSS_CURR_SENSE)
 BPS Communication lost with current sense fault mask.
 
#define BPS_FAULT_OVERTEMP_CELL_MASK   (1U << BPS_FAULT_OVERTEMP_CELL)
 BPS Cell temperature fault mask.
 
#define BPS_FAULT_OVERCURRENT_MASK   (1U << BPS_FAULT_OVERCURRENT)
 BPS Overcurrent fault mask.
 
#define BPS_FAULT_UNDERVOLTAGE_MASK   (1U << BPS_FAULT_UNDERVOLTAGE)
 BPS Undervoltage fault mask.
 
#define BPS_FAULT_KILLSWITCH_MASK   (1U << BPS_FAULT_KILLSWITCH)
 BPS Killswitch fault mask.
 
#define BPS_FAULT_RELAY_CLOSE_FAILED_MASK   (1U << BPS_FAULT_RELAY_CLOSE_FAILED)
 BPS Relay failed to close fault mask.
 
#define BPS_FAULT_DISCONNECTED_MASK   (1U << BPS_FAULT_DISCONNECTED)
 BPS Disconnected fault mask.
 
#define BPS_FAULT_HIGH_PRIORITY_MASK   (1U << 15U)
 BPS High priority fault mask.
 
#define BPS_FAULT_LOW_PRIORITY_MASK   (1U << 14U)
 BPS Low priority fault mask.
 
#define STEERING_LIGHT_STATE_TO_STR(s)   (((s) < STEERING_LIGHTS_NUM_STATES) ? steering_light_state_strings[(s)] : "UNKNOWN")
 
#define STEERING_CC_INCREASE_MASK   (1U << EE_STEERING_CC_INCREASE_BIT)
 Increase cruise control speed mask.
 
#define STEERING_CC_DECREASE_MASK   (1U << EE_STEERING_CC_DECREASE_BIT)
 Decrease cruise control speed mask.
 
#define STEERING_CC_TOGGLE_MASK   (1U << EE_STEERING_CC_TOGGLE_BIT)
 Toggle cruise control mask.
 
#define IS_WS22_CAN_ID(x)   (((x) >= 0x80U && (x) <= 0x8BU) || (x) == 0x501U)
 True for any raw CAN ID belonging to the WS22 motor controller (status 0x81-0x8B or drive cmd 0x501).
 

Typedefs

typedef struct PedalCalibrationData PedalCalibrationData
 Stores data that defines when the pedal is full pressed or unpressed. More...
 

Enumerations

enum  VehicleDriveState {
  VEHICLE_DRIVE_STATE_INVALID = 0 , VEHICLE_DRIVE_STATE_NEUTRAL = 1 , VEHICLE_DRIVE_STATE_DRIVE = 2 , VEHICLE_DRIVE_STATE_REVERSE = 3 ,
  VEHICLE_DRIVE_STATE_CRUISE = 4 , VEHICLE_DRIVE_STATE_BRAKE = 5 , VEHICLE_DRIVE_STATE_REGEN = 6 , VEHICLE_DRIVE_STATE_FAULT = 7 ,
  VEHICLE_DRIVE_NUM_STATES
}
 Vehicle drive states. More...
 
enum  VehiclePowerStates { VEHICLE_POWER_STATE_IDLE , VEHICLE_POWER_STATE_DRIVE , VEHICLE_POWER_STATE_CHARGE , VEHICLE_POWER_STATE_FAULT }
 Vehicle power states. More...
 
enum  Ws22MotorFlags {
  ERROR_FLAG_HARDWARE_OVERCURRENT = 0 , ERROR_FLAG_SOFTWARE_OVERCURRENT = 1 , ERROR_FLAG_DC_BUS_OV = 2 , ERROR_FLAG_BAD_HALL_SEQUENCE = 3 ,
  ERROR_FLAG_WATCHDOG_CAUSED_RESET = 4 , ERROR_FLAG_CFG_READ_ERROR = 6 , ERROR_FLAG_UVLO = 6 , ERROR_FLAG_DESATURATION_FAULT = 7 ,
  ERROR_FLAG_MOTOR_OVER_SPEED = 8 , LIMIT_FLAG_OUTPUT_VOLTAGE_PWM = 9 , LIMIT_FLAG_MOTOR_CURRENT = 10 , LIMIT_FLAG_VELOCITY = 11 ,
  LIMIT_FLAG_BUS_CURRENT = 12 , LIMIT_FLAG_BUS_VOLTAGE_UPPER = 13 , LIMIT_FLAG_BUS_VOLTAGE_LOWER = 14 , LIMIT_FLAG_TEMPERATURE = 15 ,
  NUM_WS22_MOTOR_FLAGS
}
 WS22 motor limit and error flags.
 
enum  BpsFault {
  BPS_FAULT_OVERVOLTAGE , BPS_FAULT_UNBALANCE , BPS_FAULT_OVERTEMP_AMBIENT , BPS_FAULT_COMMS_LOSS_AFE ,
  BPS_FAULT_COMMS_LOSS_CURR_SENSE , BPS_FAULT_OVERTEMP_CELL , BPS_FAULT_OVERCURRENT , BPS_FAULT_UNDERVOLTAGE ,
  BPS_FAULT_KILLSWITCH , BPS_FAULT_RELAY_CLOSE_FAILED , BPS_FAULT_DISCONNECTED , NUM_BPS_FAULTS
}
 Battery fault definitions. More...
 
enum  SteeringLightState {
  STEERING_LIGHTS_OFF_STATE = 0 , STEERING_LIGHTS_LEFT_STATE = 1 , STEERING_LIGHTS_RIGHT_STATE = 2 , STEERING_LIGHTS_HAZARD_STATE = 3 ,
  STEERING_LIGHTS_NUM_STATES
}
 Steering lights definitions. More...
 
enum  BpsLightState { BPS_LIGHT_ON_STATE , BPS_LIGHT_OFF_STATE , NUM_BPS_LIGHT_STATES }
 
enum  SteeringCruiseControl { STEERING_CRUISE_CONTROL_DECREASE_BIT = 0 , STEERING_CRUISE_CONTROL_INCREASE_BIT , STEERING_CRUISE_CONTROL_TOGGLE_BIT }
 Steering cruise control definitions. More...
 
enum  PDPowerState { EE_POWER_OFF_STATE , EE_POWER_PRECHARGE_STATE , EE_POWER_DRIVE_STATE , EE_POWER_FAULT_STATE }
 Power distribution power state definitions. More...
 

Functions

struct __attribute__ ((aligned(4))) PedalPersistData
 Pedal persist struct.
 

Variables

static const char * vehicle_drive_state_strings [VEHICLE_DRIVE_NUM_STATES]
 LUT + Macro to help print vehicle drive states. More...
 
 PedalPersistData
 
static const char * steering_light_state_strings [STEERING_LIGHTS_NUM_STATES] = { "OFF", "LEFT", "RIGHT", "HAZARD" }
 LUT + Macro to help print steering light states.
 

Detailed Description

Global Enum definition for sharing between projects.

Macro Definition Documentation

◆ GLOBAL_LIGHTS_BLINK_FREQUENCY_HZ

#define GLOBAL_LIGHTS_BLINK_FREQUENCY_HZ   1.5f

Blink frequency for all indicator/strobe lights (turn signals + BPS strobe).

Regulation requires 60-120 pulses per minute (1-2 Hz); 1.5 Hz = 90 ppm sits mid-band. One pulse is a full on+off cycle and the software timer toggles the output every callback, so the toggle period is half the pulse period: 1000 / (2 * freq) ms.

Typedef Documentation

◆ PedalCalibrationData

Stores data that defines when the pedal is full pressed or unpressed.

The lower_value is the value at which the pedal is considered fully unpressed whereas the upper_value is the value at which the pedal is fully pressed

Enumeration Type Documentation

◆ BpsFault

enum BpsFault

Battery fault definitions.

Enumerator
BPS_FAULT_OVERVOLTAGE 

BPS Overvoltage fault

BPS_FAULT_UNBALANCE 

BPS Unbalanced fault

BPS_FAULT_OVERTEMP_AMBIENT 

BPS Ambient temperature fault

BPS_FAULT_COMMS_LOSS_AFE 

BPS Communication lost with AFEs fault

BPS_FAULT_COMMS_LOSS_CURR_SENSE 

BPS Communication lost with current sense fault

BPS_FAULT_OVERTEMP_CELL 

BPS Cell temperature fault

BPS_FAULT_OVERCURRENT 

BPS Overcurrent fault

BPS_FAULT_UNDERVOLTAGE 

BPS Undervoltage fault

BPS_FAULT_KILLSWITCH 

BPS Killswitch fault

BPS_FAULT_RELAY_CLOSE_FAILED 

BPS Relay failed to close fault

BPS_FAULT_DISCONNECTED 

BPS Disconnected fault

◆ BpsLightState

Enumerator
BPS_LIGHT_ON_STATE 

BPS light on state

BPS_LIGHT_OFF_STATE 

BPS light off state

NUM_BPS_LIGHT_STATES 

Number of BPS light states

◆ PDPowerState

Power distribution power state definitions.

Enumerator
EE_POWER_OFF_STATE 

Power distribution off state

EE_POWER_PRECHARGE_STATE 

Power distribution precharge state

EE_POWER_DRIVE_STATE 

Power distribution drive state

EE_POWER_FAULT_STATE 

Power distribution fault state

◆ SteeringCruiseControl

Steering cruise control definitions.

Enumerator
STEERING_CRUISE_CONTROL_DECREASE_BIT 

Decrease cruise control speed

STEERING_CRUISE_CONTROL_INCREASE_BIT 

Increase cruise control speed

STEERING_CRUISE_CONTROL_TOGGLE_BIT 

Toggle cruise control

◆ SteeringLightState

Steering lights definitions.

Enumerator
STEERING_LIGHTS_OFF_STATE 

Steering lights off

STEERING_LIGHTS_LEFT_STATE 

Steering light left turn

STEERING_LIGHTS_RIGHT_STATE 

Steering light right turn

STEERING_LIGHTS_HAZARD_STATE 

Steering light hazard state

STEERING_LIGHTS_NUM_STATES 

Number of steering light states

◆ VehicleDriveState

Vehicle drive states.

Enumerator
VEHICLE_DRIVE_STATE_INVALID 

Wrong State

VEHICLE_DRIVE_STATE_NEUTRAL 

Car Not Actively Moving in Neutral

VEHICLE_DRIVE_STATE_DRIVE 

Car Drive Forward

VEHICLE_DRIVE_STATE_REVERSE 

Car Drive Reverse

VEHICLE_DRIVE_STATE_CRUISE 

Car Cruise Constant Velocity

VEHICLE_DRIVE_STATE_BRAKE 

Car Brake

VEHICLE_DRIVE_STATE_REGEN 

Car Brake With Regen

VEHICLE_DRIVE_STATE_FAULT 

BPS fault

◆ VehiclePowerStates

Vehicle power states.

Enumerator
VEHICLE_POWER_STATE_IDLE 

Ready but not driving or charging, cars in neutral

VEHICLE_POWER_STATE_DRIVE 

Driving: motor relays closed, LV enabled

VEHICLE_POWER_STATE_CHARGE 

Charging: charger detected, motor relay may be required

VEHICLE_POWER_STATE_FAULT 

Faulted: relays open, latched until reset

Variable Documentation

◆ vehicle_drive_state_strings

const char* vehicle_drive_state_strings[VEHICLE_DRIVE_NUM_STATES]
static
Initial value:
= {
}
@ VEHICLE_DRIVE_STATE_REGEN
Definition: global_enums.h:40
@ VEHICLE_DRIVE_STATE_NEUTRAL
Definition: global_enums.h:35
@ VEHICLE_DRIVE_STATE_DRIVE
Definition: global_enums.h:36
@ VEHICLE_DRIVE_STATE_BRAKE
Definition: global_enums.h:39
@ VEHICLE_DRIVE_STATE_CRUISE
Definition: global_enums.h:38
@ VEHICLE_DRIVE_STATE_INVALID
Definition: global_enums.h:34
@ VEHICLE_DRIVE_STATE_REVERSE
Definition: global_enums.h:37

LUT + Macro to help print vehicle drive states.