E52.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. //
  2. // Created by EDZ on 25-9-11.
  3. //
  4. #ifndef E52_H
  5. #define E52_H
  6. #include "main.h"
  7. #include <stdio.h>
  8. #include <sys/types.h>
  9. #include "string.h"
  10. #include "stdlib.h"
  11. // 定义云端命令枚举,使命令含义更清晰
  12. typedef enum {
  13. IDLE = 0x00,
  14. REQUEST_BLUETOOTH_DATA = 0x03, // 请求发送蓝牙数据
  15. CONFIGURE_E52 = 0x07, // E52 配置命令
  16. E52_ENTER_SLEEP = 0x05, // E52 进入睡眠模式
  17. E52_HEARTBEAT = 0x08 // E52 心跳包命令
  18. } CloudCommand;
  19. typedef enum {
  20. TIMER_IDLE,
  21. TIMER_ENABLE,
  22. TIMER_DISABLE
  23. } TimerSTATUS;
  24. // 定义定时器操作类型
  25. typedef enum {
  26. TIMER_OP_START, // 启动定时器
  27. TIMER_OP_STOP // 停止定时器
  28. } Timer_Operation;
  29. typedef enum {
  30. BL_IDLE,
  31. BL_START,
  32. BL_STOP
  33. } BLSTATUS;
  34. // 设备信息结构体
  35. typedef struct __attribute__((packed)){
  36. uint8_t isReady; // 设备是否就绪
  37. uint8_t broadcast_type; // 广播类型 01:单波 02:广播 03:多播
  38. uint8_t loraDeviceAddress_H; //设备地址高位 默认0
  39. uint8_t loraDeviceAddress_L; //设备地址低位 默认0
  40. uint8_t target_addr_H; // 目标地址高字节 默认FF
  41. uint8_t target_addr_L; // 目标地址低字节 默认FF
  42. uint8_t powerValue; //电量 默认0
  43. // uint8_t receivingNewDataFlag; //接收lora新数据
  44. //使能蓝牙收发数据
  45. uint8_t BlDataFlag; //发送蓝牙数据
  46. //lora接收到新的消息
  47. uint8_t newLoraDataFlag; //接收lora数据成功标志位。1:有新数据来。0.表示等待接收数据。后续可以改成队列类型。
  48. //后台的远程命令
  49. uint8_t commandFromCloud; //从云端接收到的命令 1.请求蓝牙数据,2.请求lora数据,3.睡眠 4,重新发送点卯数据
  50. //lora发生成功标志
  51. uint8_t loraSendSuccessFlag;
  52. //定时器相关
  53. uint8_t timerEnable; //定时器使能
  54. uint16_t timeCount; //定时器计数
  55. uint16_t forwardBLAndLoraDataDuration; //转发蓝牙数据持续时间高位ms
  56. } Device_structure;
  57. // 只声明变量,不定义变量,使用extern关键字
  58. extern Device_structure deviceInfo;
  59. // 心跳数据结构体
  60. typedef struct __attribute__((packed)){
  61. uint8_t frame_header_H; // 帧头高字节
  62. uint8_t frame_header_L; // 帧头低字节
  63. uint8_t function_code; // 功能码
  64. uint8_t badge_addr_high; //胸牌地址高字节
  65. uint8_t badge_addr_low; //胸牌地址低字节
  66. uint8_t broadcast_type; // 广播类型
  67. uint8_t target_addr_H; // 目标地址高字节
  68. uint8_t target_addr_L; // 目标地址低字节
  69. uint8_t frame_tail_H; // 帧尾高字节
  70. uint8_t frame_tail_L; // 帧尾低字节
  71. } Heartbeat_structure;
  72. void E52_Heartbeat_Fun(void);
  73. // 发送蓝牙结构体
  74. typedef struct __attribute__((packed)){
  75. uint8_t frame_header_H; // 帧头高字节
  76. uint8_t frame_header_L; // 帧头低字节
  77. uint8_t function_code; // 功能码
  78. uint8_t badge_addr_high; //胸牌地址高字节
  79. uint8_t badge_addr_low; //胸牌地址低字节
  80. uint8_t bl_data[8]; //蓝牙数据
  81. uint8_t finish_send; // 是否完成发送
  82. // uint8_t target_addr_H; // 目标地址高字节
  83. // uint8_t target_addr_L; // 目标地址低字节
  84. uint8_t frame_tail_H; // 帧尾高字节
  85. uint8_t frame_tail_L; // 帧尾低字节
  86. } SendBlData_structure;
  87. void E52_Send_Bl_Data_Fun(uint8_t);
  88. // 发送SOS结构体
  89. typedef struct __attribute__((packed)){
  90. uint8_t frame_header_H; // 帧头高字节
  91. uint8_t frame_header_L; // 帧头低字节
  92. uint8_t function_code; // 功能码
  93. uint8_t badge_addr_high; //胸牌地址高字节
  94. uint8_t badge_addr_low; //胸牌地址低字节
  95. uint8_t SOS_data; //蓝牙数据
  96. uint8_t finish_send; // 是否完成发送
  97. uint8_t target_addr_H; // 目标地址高字节
  98. uint8_t target_addr_L; // 目标地址低字节
  99. uint8_t frame_tail_H; // 帧尾高字节
  100. uint8_t frame_tail_L; // 帧尾低字节
  101. } SendSOS_structure;
  102. void E52_Send_SOS_Fun(void);
  103. void E52_Analyze_Data(void);
  104. #endif //E52_H