/******************************************************************************* * File Name : bluetooth.h * Description : Bluetooth Communication Protocol (New V2) * Created on : 2025-12-04 * Author : HIDO *******************************************************************************/ #ifndef FML_BLUETOOTH_H_ #define FML_BLUETOOTH_H_ /******************************************************************************* * Include Files * *******************************************************************************/ #include "HIDO_TypeDef.h" #include "stm32h7xx_hal.h" /******************************************************************************* * Macro * *******************************************************************************/ #define BT_UART_RX_BUF_SIZE 1024 #define UART6_DMA_RX_BUF_SIZE BT_UART_RX_BUF_SIZE #define BT_UART_TX_BUF_SIZE 1024 #define BT_UART_TX_QUEUE_MEMBER_CNT 16 // Protocol Constants #define BT_FRAME_HEADER1 0xAA #define BT_FRAME_HEADER2 0x55 #define BT_FRAME_TAIL 0x0D // Command Types #define BT_CMD_PATH_COORDS 0x01 #define BT_CMD_REF_POINT 0x02 #define BT_CMD_CONTROL 0x03 /******************************************************************************* * Type Definition * *******************************************************************************/ #pragma pack(push, 1) typedef struct { HIDO_UINT8 m_u8Header1; HIDO_UINT8 m_u8Header2; HIDO_UINT8 m_u8CmdType; HIDO_UINT16 m_u16DataLen; HIDO_UINT16 m_u16SeqNum; } ST_BT_FrameHeader; typedef struct { HIDO_DOUBLE m_dX; HIDO_DOUBLE m_dY; } ST_BT_PathPoint; typedef struct { HIDO_DOUBLE m_dLat; HIDO_DOUBLE m_dLon; HIDO_CHAR m_cLatDir; HIDO_CHAR m_cLonDir; HIDO_UINT8 m_au8Reserved[14]; } ST_BT_RefPointData; typedef struct { HIDO_INT8 m_i8SteerSpeed; // -100 to 100 (Negative Left) HIDO_INT8 m_i8TravelSpeed; // -100 to 100 (Negative Reverse) HIDO_UINT8 m_au8Reserved[2]; } ST_BT_ControlData; #pragma pack(pop) /******************************************************************************* * Global Function * *******************************************************************************/ HIDO_VOID BT_Init(void); HIDO_VOID BT_Poll(void); HIDO_VOID UART6_StartReceive(void); // Exposed for ISR extern HIDO_UINT8 uart6_dma_rxbuf[BT_UART_RX_BUF_SIZE]; extern HIDO_UINT8 uart6_dma_recv_end_flag; extern HIDO_UINT16 uart6_dma_recv_len; extern volatile HIDO_UINT32 g_u32BtIdleIntCount; #endif /* FML_BLUETOOTH_H_ */