Midnight Sun Firmware
Loading...
Searching...
No Matches
rear_controller.h
1#pragma once
2
3/************************************************************************************************
4 * @file rear_controller.h
5 *
6 * @brief Header file for rear_controller
7 *
8 * @date 2025-05-28
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stdint.h>
15
16/* Inter-component Headers */
17#include "adbms_afe.h"
18#include "current_acs37800.h"
19#include "current_ads122c14irter.h"
20#include "global_enums.h"
21#include "ws22_motor_can.h"
22
23/* Intra-component Headers */
24
31/* Forward declarations */
33
34#define REAR_CONTROLLER_CURRENT_SENSE_FILTER_ALPHA 0.5
35#define REAR_CONTROLLER_CURRENT_SENSE_MAX_RETRIES 3
36
37#define REAR_CONTROLLER_RELAY_INRUSH_MIN_DELAY_MS 130U
38
39typedef struct {
40 uint8_t series_count;
44
45typedef struct {
48 uint32_t aux_voltage;
49 uint32_t pcs_voltage;
50 int32_t aux_current;
51 int32_t pcs_current;
57 /* Relay states */
64 /* Safety monitors */
67 bool pcs_valid;
68 bool aux_valid;
73 /* Temperature monitoring */
74 int16_t max_board_temperature;
75 int16_t max_cell_temperature;
76
86
87StatusCode rear_controller_init(RearControllerStorage *storage, RearControllerConfig *config, Ws22MotorCanConfig *motor_can_config);
88
StatusCode
StatusCodes for various errors.
Definition: status.h:27
Definition: current_acs37800.h:30
Definition: current_ads122c14irter.h:258
Runtime Data Storage.
Definition: adbms_afe.h:109
Latched BPS fault state, persisted on the rear controller.
Definition: global_enums.h:245
Definition: rear_controller.h:39
uint8_t parallel_count
Definition: rear_controller.h:41
uint8_t series_count
Definition: rear_controller.h:40
float cell_capacity_Ah
Definition: rear_controller.h:42
Definition: rear_controller.h:45
float pack_current
Definition: rear_controller.h:46
bool motor_lv_enabled
Definition: rear_controller.h:62
bool killswitch_active
Definition: rear_controller.h:66
struct Ws22MotorCanStorage * ws22_motor_can_storage
Definition: rear_controller.h:77
int32_t aux_current
Definition: rear_controller.h:50
bool bps_fault_live
Definition: rear_controller.h:71
AdbmsAfeStorage adbms_afe_storage
Definition: rear_controller.h:79
uint8_t bps_fault_cell
Definition: rear_controller.h:70
Ws22MotorCanConfig * ws22_motor_can_config
Definition: rear_controller.h:84
bool precharge_complete
Definition: rear_controller.h:65
bool motor_relay_closed
Definition: rear_controller.h:61
uint32_t aux_voltage
Definition: rear_controller.h:48
bool solar_relay_closed
Definition: rear_controller.h:60
bool pcs_valid
Definition: rear_controller.h:67
float estimated_state_of_charge
Definition: rear_controller.h:53
int32_t pcs_current
Definition: rear_controller.h:51
bool neg_relay_closed
Definition: rear_controller.h:59
ADS122Storage ads122_storage
Definition: rear_controller.h:81
ACS37800Storage acs37800_storage
Definition: rear_controller.h:80
BpsFaultRecord bps_fault_record
Definition: rear_controller.h:69
uint32_t pcs_voltage
Definition: rear_controller.h:49
float hydrogen_concentration
Definition: rear_controller.h:55
bool pos_relay_closed
Definition: rear_controller.h:58
float pack_voltage
Definition: rear_controller.h:47
bool aux_valid
Definition: rear_controller.h:68
Definition: ws22_motor_can.h:95
WS22 motor CAN interface storage structure.
Definition: ws22_motor_can.h:111