You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.3 KiB
75 lines
2.3 KiB
// ******************** Prototypes ********************
|
|
typedef void (*board_init)(void);
|
|
typedef void (*board_board_tick)(void);
|
|
typedef bool (*board_get_button)(void);
|
|
typedef void (*board_set_panda_power)(bool enabled);
|
|
typedef void (*board_set_panda_individual_power)(uint8_t port_num, bool enabled);
|
|
typedef void (*board_set_ignition)(bool enabled);
|
|
typedef void (*board_set_individual_ignition)(uint8_t bitmask);
|
|
typedef void (*board_set_harness_orientation)(uint8_t orientation);
|
|
typedef void (*board_set_can_mode)(uint8_t mode);
|
|
typedef void (*board_enable_can_transceiver)(uint8_t transceiver, bool enabled);
|
|
typedef void (*board_enable_header_pin)(uint8_t pin_num, bool enabled);
|
|
typedef float (*board_get_channel_power)(uint8_t channel);
|
|
typedef uint16_t (*board_get_sbu_mV)(uint8_t channel, uint8_t sbu);
|
|
|
|
struct board {
|
|
GPIO_TypeDef * const led_GPIO[3];
|
|
const uint8_t led_pin[3];
|
|
const bool has_canfd;
|
|
const bool has_sbu_sense;
|
|
const uint16_t avdd_mV;
|
|
board_init init;
|
|
board_board_tick board_tick;
|
|
board_get_button get_button;
|
|
board_set_panda_power set_panda_power;
|
|
board_set_panda_individual_power set_panda_individual_power;
|
|
board_set_ignition set_ignition;
|
|
board_set_individual_ignition set_individual_ignition;
|
|
board_set_harness_orientation set_harness_orientation;
|
|
board_set_can_mode set_can_mode;
|
|
board_enable_can_transceiver enable_can_transceiver;
|
|
board_enable_header_pin enable_header_pin;
|
|
board_get_channel_power get_channel_power;
|
|
board_get_sbu_mV get_sbu_mV;
|
|
|
|
// TODO: shouldn't need these
|
|
bool has_spi;
|
|
};
|
|
|
|
// ******************* Definitions ********************
|
|
#define HW_TYPE_UNKNOWN 0U
|
|
#define HW_TYPE_V1 1U
|
|
#define HW_TYPE_V2 2U
|
|
|
|
// CAN modes
|
|
#define CAN_MODE_NORMAL 0U
|
|
#define CAN_MODE_OBD_CAN2 3U
|
|
|
|
// Harness states
|
|
#define HARNESS_ORIENTATION_NONE 0U
|
|
#define HARNESS_ORIENTATION_1 1U
|
|
#define HARNESS_ORIENTATION_2 2U
|
|
|
|
#define SBU1 0U
|
|
#define SBU2 1U
|
|
|
|
// ********************* Globals **********************
|
|
uint8_t harness_orientation = HARNESS_ORIENTATION_NONE;
|
|
uint8_t can_mode = CAN_MODE_NORMAL;
|
|
uint8_t ignition = 0U;
|
|
|
|
|
|
void unused_set_individual_ignition(uint8_t bitmask) {
|
|
UNUSED(bitmask);
|
|
}
|
|
|
|
void unused_board_enable_header_pin(uint8_t pin_num, bool enabled) {
|
|
UNUSED(pin_num);
|
|
UNUSED(enabled);
|
|
}
|
|
|
|
void unused_set_panda_individual_power(uint8_t port_num, bool enabled) {
|
|
UNUSED(port_num);
|
|
UNUSED(enabled);
|
|
}
|
|
|