/* test/stubs/stm32f7xx_hal.h — minimal HAL stub for host-side unit tests. * * Provides just enough types and functions so that the firmware source files * compile on a host (Linux/macOS) with -DTEST_HOST. * Each test file must define the actual behavior of HAL_GetTick() etc. */ #ifndef STM32F7XX_HAL_H #define STM32F7XX_HAL_H #include #include #include /* ---- Return codes ---- */ #define HAL_OK 0 #define HAL_ERROR 1 #define HAL_BUSY 2 #define HAL_TIMEOUT 3 typedef uint32_t HAL_StatusTypeDef; /* ---- Enable / Disable ---- */ #define ENABLE 1 #define DISABLE 0 /* ---- HAL_GetTick: each test declares its own implementation ---- */ uint32_t HAL_GetTick(void); /* ---- Minimal CAN types used by can_driver.c / vesc_can.c ---- */ typedef struct { uint32_t dummy; } CAN_TypeDef; typedef struct { uint32_t Prescaler; uint32_t Mode; uint32_t SyncJumpWidth; uint32_t TimeSeg1; uint32_t TimeSeg2; uint32_t TimeTriggeredMode; uint32_t AutoBusOff; uint32_t AutoWakeUp; uint32_t AutoRetransmission; uint32_t ReceiveFifoLocked; uint32_t TransmitFifoPriority; } CAN_InitTypeDef; typedef struct { CAN_TypeDef *Instance; CAN_InitTypeDef Init; /* opaque HAL internals omitted */ } CAN_HandleTypeDef; typedef struct { uint32_t StdId; uint32_t ExtId; uint32_t IDE; uint32_t RTR; uint32_t DLC; uint32_t Timestamp; uint32_t FilterMatchIndex; } CAN_RxHeaderTypeDef; typedef struct { uint32_t StdId; uint32_t ExtId; uint32_t IDE; uint32_t RTR; uint32_t DLC; uint32_t TransmitGlobalTime; } CAN_TxHeaderTypeDef; typedef struct { uint32_t FilterIdHigh; uint32_t FilterIdLow; uint32_t FilterMaskIdHigh; uint32_t FilterMaskIdLow; uint32_t FilterFIFOAssignment; uint32_t FilterBank; uint32_t FilterMode; uint32_t FilterScale; uint32_t FilterActivation; uint32_t SlaveStartFilterBank; } CAN_FilterTypeDef; #define CAN_ID_STD 0x00000000u #define CAN_ID_EXT 0x00000004u #define CAN_RTR_DATA 0x00000000u #define CAN_RTR_REMOTE 0x00000002u #define CAN_FILTERMODE_IDMASK 0u #define CAN_FILTERSCALE_32BIT 1u #define CAN_RX_FIFO0 0u #define CAN_RX_FIFO1 1u #define CAN_FILTER_ENABLE 1u #define CAN_MODE_NORMAL 0u #define CAN_SJW_1TQ 0u #define CAN_BS1_13TQ 0u #define CAN_BS2_4TQ 0u #define CAN_ESR_BOFF 0x00000004u static inline HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *h){(void)h;return HAL_OK;} static inline HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *h, CAN_FilterTypeDef *f){(void)h;(void)f;return HAL_OK;} static inline HAL_StatusTypeDef HAL_CAN_Start(CAN_HandleTypeDef *h){(void)h;return HAL_OK;} static inline uint32_t HAL_CAN_GetTxMailboxesFreeLevel(CAN_HandleTypeDef *h){(void)h;return 3u;} static inline HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *h, CAN_TxHeaderTypeDef *hdr, uint8_t *d, uint32_t *mb){(void)h;(void)hdr;(void)d;(void)mb;return HAL_OK;} static inline uint32_t HAL_CAN_GetRxFifoFillLevel(CAN_HandleTypeDef *h, uint32_t f){(void)h;(void)f;return 0u;} static inline HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *h, uint32_t f, CAN_RxHeaderTypeDef *hdr, uint8_t *d){(void)h;(void)f;(void)hdr;(void)d;return HAL_OK;} /* ---- GPIO (minimal, for can_driver GPIO init) ---- */ typedef struct { uint32_t dummy; } GPIO_TypeDef; typedef struct { uint32_t Pin; uint32_t Mode; uint32_t Pull; uint32_t Speed; uint32_t Alternate; } GPIO_InitTypeDef; static inline void HAL_GPIO_Init(GPIO_TypeDef *p, GPIO_InitTypeDef *g){(void)p;(void)g;} #define GPIOB ((GPIO_TypeDef *)0) #define GPIO_PIN_12 (1u<<12) #define GPIO_PIN_13 (1u<<13) #define GPIO_MODE_AF_PP 0u #define GPIO_NOPULL 0u #define GPIO_SPEED_FREQ_HIGH 0u #define GPIO_AF9_CAN2 9u /* ---- RCC stubs ---- */ #define __HAL_RCC_CAN1_CLK_ENABLE() ((void)0) #define __HAL_RCC_CAN2_CLK_ENABLE() ((void)0) #define __HAL_RCC_GPIOB_CLK_ENABLE() ((void)0) #endif /* STM32F7XX_HAL_H */