|
|
@@ -173,7 +173,19 @@ void E52_Configuration_Fun() {
|
|
|
|
|
|
void E52_Send_Sleep_Fun() {
|
|
|
printf("这是让设备睡眠的命令\r\n");
|
|
|
- // RTC_Sleep_Enter_Fun();
|
|
|
+
|
|
|
+ // 解析睡眠时间 24小时秒数
|
|
|
+ uint32_t sleep_seconds = ((uint32_t)rx_buf_uart2[5] << 16) |
|
|
|
+ ((uint32_t)rx_buf_uart2[6] << 8) |
|
|
|
+ ((uint32_t)rx_buf_uart2[7]);
|
|
|
+
|
|
|
+ if (sleep_seconds == 0 || sleep_seconds > 86399) {
|
|
|
+ printf("睡眠时间无效, 使用默认3000ms\r\n");
|
|
|
+ deviceInfo.rtc_wake_up_time = 3000;
|
|
|
+ } else {
|
|
|
+ deviceInfo.rtc_wake_up_time = sleep_seconds;
|
|
|
+ printf("接收到睡眠时间: %lu 秒\r\n", sleep_seconds);
|
|
|
+ }
|
|
|
// TODO: command:05
|
|
|
}
|
|
|
|
|
|
@@ -195,6 +207,25 @@ void E52_Heartbeat_Fun1() {
|
|
|
// TODO: command:08
|
|
|
}
|
|
|
|
|
|
+void Enter_Sleep_ACK_Fun() {
|
|
|
+ printf("这是心跳包\r\n");
|
|
|
+ Heartbeat_structure heartbeat_structure;
|
|
|
+
|
|
|
+ heartbeat_structure.frame_header_H = 0x55;
|
|
|
+ heartbeat_structure.frame_header_L = 0xAA;
|
|
|
+ heartbeat_structure.function_code = 0x05;
|
|
|
+ heartbeat_structure.badge_addr_high = deviceInfo.loraDeviceAddress_H;
|
|
|
+ heartbeat_structure.badge_addr_low = deviceInfo.loraDeviceAddress_L;
|
|
|
+ heartbeat_structure.broadcast_type = deviceInfo.broadcast_type;
|
|
|
+ heartbeat_structure.target_addr_H = deviceInfo.target_addr_H;
|
|
|
+ heartbeat_structure.target_addr_L = deviceInfo.target_addr_L;
|
|
|
+ heartbeat_structure.frame_tail_H = 0xFF;
|
|
|
+ heartbeat_structure.frame_tail_L = 0xEE;
|
|
|
+
|
|
|
+ HAL_UART_Transmit(&huart2, (uint8_t *)&heartbeat_structure, sizeof(heartbeat_structure), HAL_MAX_DELAY);
|
|
|
+ // TODO: command:01
|
|
|
+}
|
|
|
+
|
|
|
void E52_Analyze_Data() {
|
|
|
// 根据接收到的第三个字节(命令字节)进行分支处理
|
|
|
switch (rx_buf_uart2[2]) {
|
|
|
@@ -207,9 +238,8 @@ void E52_Analyze_Data() {
|
|
|
deviceInfo.commandFromCloud = COMBINE_CMD_STEP(CONFIGURE_E52, CONFIGURE_E52_SET_BROADCAST_TYPE);
|
|
|
break;
|
|
|
case E52_ENTER_SLEEP:
|
|
|
- // deviceInfo.commandFromCloud = COMBINE_CMD_STEP(E52_ENTER_SLEEP, STEP_EXECUTE);
|
|
|
- // E52_Send_Sleep_Fun();
|
|
|
- deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
+ E52_Send_Sleep_Fun();
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(E52_ENTER_SLEEP, RTC_SLEEP_STEP);
|
|
|
break;
|
|
|
case E52_HEARTBEAT:// 完成
|
|
|
E52_Heartbeat_Fun1();
|