// // Created by EDZ on 25-9-11. // #ifndef E52_H #define E52_H #include "main.h" #include #include #include "string.h" #include "stdlib.h" // 定义云端命令枚举,使命令含义更清晰 typedef enum { IDLE = 0x00, REQUEST_BLUETOOTH_DATA = 0x03, // 请求发送蓝牙数据 CONFIGURE_E52 = 0x07, // E52 配置命令 E52_ENTER_SLEEP = 0x05, // E52 进入睡眠模式 E52_HEARTBEAT = 0x08 // E52 心跳包命令 } CloudCommand; typedef enum { TIMER_IDLE, TIMER_ENABLE, TIMER_DISABLE } TimerSTATUS; // 定义定时器操作类型 typedef enum { TIMER_OP_START, // 启动定时器 TIMER_OP_STOP // 停止定时器 } Timer_Operation; typedef enum { BL_IDLE, BL_START, BL_STOP } BLSTATUS; // 设备信息结构体 typedef struct __attribute__((packed)){ uint8_t isReady; // 设备是否就绪 uint8_t broadcast_type; // 广播类型 01:单波 02:广播 03:多播 uint8_t loraDeviceAddress_H; //设备地址高位 默认0 uint8_t loraDeviceAddress_L; //设备地址低位 默认0 uint8_t target_addr_H; // 目标地址高字节 默认FF uint8_t target_addr_L; // 目标地址低字节 默认FF uint8_t powerValue; //电量 默认0 // uint8_t receivingNewDataFlag; //接收lora新数据 //使能蓝牙收发数据 uint8_t BlDataFlag; //发送蓝牙数据 //lora接收到新的消息 uint8_t newLoraDataFlag; //接收lora数据成功标志位。1:有新数据来。0.表示等待接收数据。后续可以改成队列类型。 //后台的远程命令 uint8_t commandFromCloud; //从云端接收到的命令 1.请求蓝牙数据,2.请求lora数据,3.睡眠 4,重新发送点卯数据 //定时器相关 uint8_t timerEnable; //定时器使能 uint16_t timeCount; //定时器计数 uint16_t forwardBLAndLoraDataDuration; //转发蓝牙数据持续时间高位ms } Device_structure; // 只声明变量,不定义变量,使用extern关键字 extern Device_structure deviceInfo; // 心跳数据结构体 typedef struct __attribute__((packed)){ uint8_t frame_header_H; // 帧头高字节 uint8_t frame_header_L; // 帧头低字节 uint8_t function_code; // 功能码 uint8_t badge_addr_high; //胸牌地址高字节 uint8_t badge_addr_low; //胸牌地址低字节 uint8_t broadcast_type; // 广播类型 uint8_t target_addr_H; // 目标地址高字节 uint8_t target_addr_L; // 目标地址低字节 uint8_t frame_tail_H; // 帧尾高字节 uint8_t frame_tail_L; // 帧尾低字节 } Heartbeat_structure; void E52_Heartbeat_Fun(void); // 发送蓝牙结构体 typedef struct __attribute__((packed)){ uint8_t frame_header_H; // 帧头高字节 uint8_t frame_header_L; // 帧头低字节 uint8_t function_code; // 功能码 uint8_t badge_addr_high; //胸牌地址高字节 uint8_t badge_addr_low; //胸牌地址低字节 uint8_t bl_data[8]; //蓝牙数据 uint8_t finish_send; // 是否完成发送 // uint8_t target_addr_H; // 目标地址高字节 // uint8_t target_addr_L; // 目标地址低字节 uint8_t frame_tail_H; // 帧尾高字节 uint8_t frame_tail_L; // 帧尾低字节 } SendBlData_structure; void E52_Send_Bl_Data_Fun(uint8_t); // 发送SOS结构体 typedef struct __attribute__((packed)){ uint8_t frame_header_H; // 帧头高字节 uint8_t frame_header_L; // 帧头低字节 uint8_t function_code; // 功能码 uint8_t badge_addr_high; //胸牌地址高字节 uint8_t badge_addr_low; //胸牌地址低字节 uint8_t SOS_data; //蓝牙数据 uint8_t finish_send; // 是否完成发送 uint8_t target_addr_H; // 目标地址高字节 uint8_t target_addr_L; // 目标地址低字节 uint8_t frame_tail_H; // 帧尾高字节 uint8_t frame_tail_L; // 帧尾低字节 } SendSOS_structure; void E52_Send_SOS_Fun(void); void E52_Analyze_Data(void); #endif //E52_H