|
|
@@ -116,9 +116,9 @@ void EnterSleepMode(void)
|
|
|
|
|
|
void Device_Info_Init_Fun() {
|
|
|
deviceInfo.isOnline = FALSE;
|
|
|
- deviceInfo.broadcast_type = 0x02;
|
|
|
- deviceInfo.loraDeviceAddress_H = 0x00;
|
|
|
- deviceInfo.loraDeviceAddress_L = 0x00;
|
|
|
+ deviceInfo.broadcast_type = BROADCAST_ALL;
|
|
|
+ deviceInfo.loraDeviceAddress_H = 0xFE; //默认地址高位
|
|
|
+ deviceInfo.loraDeviceAddress_L = 0xEF; //默认地址低位
|
|
|
deviceInfo.powerValue = 0;
|
|
|
deviceInfo.target_addr_H = 0xFF;
|
|
|
deviceInfo.target_addr_L = 0xFF;
|
|
|
@@ -242,8 +242,7 @@ int main(void)
|
|
|
HAL_Delay(2000);
|
|
|
Device_Info_Init_Fun();
|
|
|
printf("开启Lora广播模块\r\n");
|
|
|
- const char *lora_msg = "AT+OPTION=3,0";
|
|
|
- HAL_UART_Transmit(&huart2, (uint8_t *)lora_msg, strlen(lora_msg), HAL_MAX_DELAY);
|
|
|
+ E52_CONFIG_BROADCAST_TYPE_FUN(BROADCAST_ALL);
|
|
|
HAL_Delay(2000);
|
|
|
const char *lora_msg1 = "AT+TYPE=1";
|
|
|
HAL_UART_Transmit(&huart2, (uint8_t *)lora_msg1, strlen(lora_msg1), HAL_MAX_DELAY);
|
|
|
@@ -275,7 +274,16 @@ int main(void)
|
|
|
E52_Analyze_Data();
|
|
|
}
|
|
|
|
|
|
- // 检查是否接收到"请求蓝牙数据"命令,且定时器处于就绪状态
|
|
|
+ // 检查是否接收到"心跳"命令,且设备在线
|
|
|
+ if (!deviceInfo.isOnline){
|
|
|
+ printf("The device is not online.\r\n");
|
|
|
+ if (!deviceInfo.loraSendSuccessFlag) {
|
|
|
+ E52_Heartbeat_Fun();
|
|
|
+ }
|
|
|
+ HAL_Delay(3000);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 03:请求蓝牙数据
|
|
|
if (GET_CMD( deviceInfo.commandFromCloud) == REQUEST_BLUETOOTH_DATA && deviceInfo.isOnline) {
|
|
|
|
|
|
switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
|
@@ -289,17 +297,19 @@ int main(void)
|
|
|
Timer_Managment_Fun(&htim4, TIMER_OP_STOP);
|
|
|
deviceInfo.BlDataFlag = BL_STOP;
|
|
|
i = 0;
|
|
|
- while (receiveBlDataCount >= i) {
|
|
|
+ while (receiveBlDataCount > i) {
|
|
|
|
|
|
printf("发送第%d个蓝牙数据给Lora\r\n", i);
|
|
|
if (deviceInfo.loraSendSuccessFlag == 0) {
|
|
|
- E52_Send_Bl_Data_Fun(i);
|
|
|
+ E52_Send_Bl_Data_Fun(i,0x00);
|
|
|
}else {
|
|
|
continue;
|
|
|
}
|
|
|
memset(totalData[i], 0, sizeof(totalData[i]));
|
|
|
i++;
|
|
|
}
|
|
|
+
|
|
|
+ E52_Send_Bl_Data_Fun(i,0x01);
|
|
|
deviceInfo.commandFromCloud = COMBINE_CMD_STEP(REQUEST_BLUETOOTH_DATA, STEP_COMPLETE);
|
|
|
printf("停止蓝牙扫描,开始发送蓝牙数据给Lora\r\n");
|
|
|
break; //发送数据阶段
|
|
|
@@ -319,6 +329,7 @@ int main(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 08:请求心跳数据
|
|
|
if (GET_CMD( deviceInfo.commandFromCloud) == E52_HEARTBEAT && deviceInfo.isOnline) {
|
|
|
switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
|
case HEARTBEAT_SEND:
|
|
|
@@ -339,14 +350,42 @@ int main(void)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- // 检查是否接收到"心跳"命令,且设备在线
|
|
|
- if (!deviceInfo.isOnline){
|
|
|
- printf("The device is not online.\r\n");
|
|
|
- if (!deviceInfo.loraSendSuccessFlag) {
|
|
|
- E52_Heartbeat_Fun();
|
|
|
- }
|
|
|
- HAL_Delay(3000);
|
|
|
+
|
|
|
+ // 07:配置E52
|
|
|
+ if (GET_CMD( deviceInfo.commandFromCloud) == CONFIGURE_E52 && deviceInfo.isOnline) {
|
|
|
+ switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
|
+ case CONFIGURE_E52_SET_BROADCAST_TYPE: //第一步,配置广播类型
|
|
|
+ E52_CONFIG_BROADCAST_TYPE_FUN(deviceInfo.broadcast_type);
|
|
|
+ HAL_Delay(2000);
|
|
|
+ if (deviceInfo.broadcast_type == BROADCAST_ALL) {
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(CONFIGURE_E52, STEP_COMPLETE); //TODO 广播,直接结束.或者进入测试流程。
|
|
|
+ }else {
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(CONFIGURE_E52, CONFIGURE_E52_SET_LORA_ADDRESS); //第三步,配置Lora地址
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case CONFIGURE_E52_SET_LORA_ADDRESS:
|
|
|
+ E104_BT5005A_DST_ADDR_Fun();
|
|
|
+ HAL_Delay(2000);
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(CONFIGURE_E52, STEP_COMPLETE); //TODO 广播,直接结束.或者进入测试流程。
|
|
|
+ break; //如果是单波,多播,配置目标地址
|
|
|
+
|
|
|
+ case STEP_COMPLETE:
|
|
|
+ if (deviceInfo.loraSendSuccessFlag == 0) {
|
|
|
+ E52_Heartbeat_Fun();
|
|
|
+ }else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ printf("未知配置命令\r\n");
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
+ ;break;
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
/* USER CODE END 3 */
|
|
|
}
|