bluetooth.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef _BLUETOOTH_H
  2. #define _BLUETOOTH_H
  3. /*------------------------------- 宏定义 --------------------------------------
  4. */
  5. #define BLUETOOTH_BUF_LEN (1024)
  6. #define BL_TBUF_NUM (10) // 共有多少个buf
  7. #define BL_TBUF_LEN (256) // 每个buf长度
  8. #define CMD_RECVBUF_LEN (64) // AT指令接收buf长度
  9. /*------------------------------ 类型结构 -------------------------------------
  10. */
  11. enum _AT_CMD
  12. {
  13. AT_CMD_SACN = 0, // 扫描设备
  14. AT_CMD_CONN, // 连接设备
  15. AT_CMD_CHINFO, // 状态查询
  16. AT_CMD_LESEND, // 数据发送
  17. AT_CMD_LEDISC, // 断开连接
  18. AT_CMD_NAME, // 设置名称
  19. AT_CMD_MAC, // MAC 查询
  20. AT_CMD_REBOOT, // 蓝牙重启
  21. AT_CMD_DATA, // 数据接收
  22. AT_CMD_STAT, // 连接状态
  23. AT_CMD_MAX
  24. };
  25. typedef enum _AT_CMD AT_CMD;
  26. struct at_cmd_index_match
  27. {
  28. const char *cmd_str; // AT指令字符串
  29. const char *send_op_str; // AT指令追加字符串 不为空则填充
  30. const char *cmd_end_str; // AT指令结束字符串 用于判断指令的结束
  31. const char *data_end_str; // 数据段结束字符串 为空则此帧不包含数据否则包含数据 数据接收判断用
  32. const char *sta_end_str; // AT指令结果字符串 为空则不需判断结果否则需判断结果
  33. const u8 cmd; // 用于记录是何种操作指令
  34. };
  35. typedef struct bl_tbuf
  36. {
  37. volatile u8 tb_head ;
  38. volatile u8 tb_tail_send;
  39. volatile u8 tb_tail_ack;
  40. u8 tb_cmd[BL_TBUF_NUM]; // 记录发送的指令类型供接收确认用
  41. u8 tb_data[BL_TBUF_NUM][BL_TBUF_LEN];
  42. }bl_tbuf_t;
  43. typedef struct bluetooth
  44. {
  45. u8 chnl;
  46. u8 cTypeCounter; // 接收解析用
  47. u8 cRecvLenth; // 接收解析用
  48. u8 cRecvCnt; // 接收解析用
  49. s8 cmd_type; // 指令类型 用于接收时判断数据类型
  50. bool cmd_sta; // 指令操作结果 指令发出后判断蓝牙模块的执行结果
  51. bool lnk_sta; // 蓝牙连接状态
  52. bool bData; // 接收一帧报文
  53. u8 resend_cnt; // 重发计数
  54. struct rt_fifo recv_fifo; // 蓝牙数据接收fifo
  55. u8 recv_fifo_buf[BLUETOOTH_BUF_LEN]; // fifo缓存数组
  56. iec_rbuf_t rx_buf; // 加密报文用
  57. u8 recvbuf[BLUETOOTH_BUF_LEN]; // 用于存放fifo取出数据
  58. u8 cmd_recvbuf[CMD_RECVBUF_LEN]; //
  59. u8 esambuf[BLUETOOTH_BUF_LEN]; // 用于接收加密返回数据
  60. u8 arrSendBuf[BLUETOOTH_BUF_LEN]; // 用于发送数据组帧
  61. bl_tbuf_t tx_buf[1]; // 发送报文缓存
  62. unsigned long us0_sendpiece; // 发送帧间隔计时
  63. unsigned long us0_disc_reboot; // 断连软复位计时
  64. unsigned long us0_idle_reboot; // 空闲软复位计时
  65. unsigned long us0_cfmtimeout; // 确认超时计时
  66. // 接收超时处理
  67. bool b_recv_reset;
  68. unsigned long us0_recv;
  69. } BLUETOOTH_DEF;
  70. /*------------------------------ 函数声明 -------------------------------------
  71. */
  72. int bluetooth_init(BLUETOOTH_DEF *p, u8 chnl);
  73. void bluetooth_recv(BLUETOOTH_DEF *pt, u8 _byte);
  74. int bluetooth_app(BLUETOOTH_DEF *p);
  75. void bluetooth_timer(BLUETOOTH_DEF *pt);
  76. #endif /* _BLUETOOTH_H */