/*******************************************************************************
|
* 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_ */
|