| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #ifndef _BLUETOOTH_H
- #define _BLUETOOTH_H
- /*------------------------------- 宏定义 --------------------------------------
- */
- #define BLUETOOTH_BUF_LEN (1024)
- #define BL_TBUF_NUM (10) // 共有多少个buf
- #define BL_TBUF_LEN (256) // 每个buf长度
- #define CMD_RECVBUF_LEN (64) // AT指令接收buf长度
- /*------------------------------ 类型结构 -------------------------------------
- */
- enum _AT_CMD
- {
- AT_CMD_SACN = 0, // 扫描设备
- AT_CMD_CONN, // 连接设备
- AT_CMD_CHINFO, // 状态查询
- AT_CMD_LESEND, // 数据发送
- AT_CMD_LEDISC, // 断开连接
- AT_CMD_NAME, // 设置名称
- AT_CMD_MAC, // MAC 查询
- AT_CMD_REBOOT, // 蓝牙重启
- AT_CMD_DATA, // 数据接收
- AT_CMD_STAT, // 连接状态
- AT_CMD_MAX
- };
- typedef enum _AT_CMD AT_CMD;
- struct at_cmd_index_match
- {
- const char *cmd_str; // AT指令字符串
- const char *send_op_str; // AT指令追加字符串 不为空则填充
- const char *cmd_end_str; // AT指令结束字符串 用于判断指令的结束
- const char *data_end_str; // 数据段结束字符串 为空则此帧不包含数据否则包含数据 数据接收判断用
- const char *sta_end_str; // AT指令结果字符串 为空则不需判断结果否则需判断结果
- const u8 cmd; // 用于记录是何种操作指令
- };
- typedef struct bl_tbuf
- {
- volatile u8 tb_head ;
- volatile u8 tb_tail_send;
- volatile u8 tb_tail_ack;
- u8 tb_cmd[BL_TBUF_NUM]; // 记录发送的指令类型供接收确认用
- u8 tb_data[BL_TBUF_NUM][BL_TBUF_LEN];
- }bl_tbuf_t;
- typedef struct bluetooth
- {
- u8 chnl;
- u8 cTypeCounter; // 接收解析用
- u8 cRecvLenth; // 接收解析用
- u8 cRecvCnt; // 接收解析用
- s8 cmd_type; // 指令类型 用于接收时判断数据类型
- bool cmd_sta; // 指令操作结果 指令发出后判断蓝牙模块的执行结果
- bool lnk_sta; // 蓝牙连接状态
- bool bData; // 接收一帧报文
- u8 resend_cnt; // 重发计数
- struct rt_fifo recv_fifo; // 蓝牙数据接收fifo
- u8 recv_fifo_buf[BLUETOOTH_BUF_LEN]; // fifo缓存数组
- iec_rbuf_t rx_buf; // 加密报文用
- u8 recvbuf[BLUETOOTH_BUF_LEN]; // 用于存放fifo取出数据
- u8 cmd_recvbuf[CMD_RECVBUF_LEN]; //
- u8 esambuf[BLUETOOTH_BUF_LEN]; // 用于接收加密返回数据
- u8 arrSendBuf[BLUETOOTH_BUF_LEN]; // 用于发送数据组帧
- bl_tbuf_t tx_buf[1]; // 发送报文缓存
- unsigned long us0_sendpiece; // 发送帧间隔计时
- unsigned long us0_disc_reboot; // 断连软复位计时
- unsigned long us0_idle_reboot; // 空闲软复位计时
- unsigned long us0_cfmtimeout; // 确认超时计时
- // 接收超时处理
- bool b_recv_reset;
- unsigned long us0_recv;
- } BLUETOOTH_DEF;
- /*------------------------------ 函数声明 -------------------------------------
- */
- int bluetooth_init(BLUETOOTH_DEF *p, u8 chnl);
- void bluetooth_recv(BLUETOOTH_DEF *pt, u8 _byte);
- int bluetooth_app(BLUETOOTH_DEF *p);
- void bluetooth_timer(BLUETOOTH_DEF *pt);
- #endif /* _BLUETOOTH_H */
|