|
|
@@ -138,8 +138,8 @@ void Device_Info_Init_Fun() {
|
|
|
deviceInfo.BlDataFlag = BL_IDLE;
|
|
|
deviceInfo.newLoraDataFlag = 0;
|
|
|
deviceInfo.isReady = 0;
|
|
|
- deviceInfo.commandFromCloud = IDLE;
|
|
|
deviceInfo.loraSendSuccessFlag = 0;
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT); //初始化
|
|
|
//TODO: 大循环,获取设备地址信息,否则重新发送。发送上线信息,等待反馈,否则重新发送上线信息。一切准备就绪后,开启isready为1,进入工作模式。
|
|
|
// while (1){}
|
|
|
}
|
|
|
@@ -287,42 +287,63 @@ int main(void)
|
|
|
/* USER CODE BEGIN 3 */
|
|
|
//检测是否有新的lora 数据判断
|
|
|
//TODO 应该防止频繁调用此函数。如果command 是IDLE,则调用此函数。
|
|
|
- if (deviceInfo.newLoraDataFlag == 1) {
|
|
|
- // printf("loraDeviceAddress: 0x%02X 0x%02X\r\n", deviceInfo.loraDeviceAddress_H,deviceInfo.loraDeviceAddress_L);
|
|
|
+ // if (deviceInfo.newLoraDataFlag == 1) {
|
|
|
+ // // printf("loraDeviceAddress: 0x%02X 0x%02X\r\n", deviceInfo.loraDeviceAddress_H,deviceInfo.loraDeviceAddress_L);
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ // 命令为IDLE,且步骤为STEP_INIT 说明有新数据。
|
|
|
+ if (GET_CMD( deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_VERIFY) {
|
|
|
E52_Analyze_Data();
|
|
|
}
|
|
|
|
|
|
// 检查是否接收到"请求蓝牙数据"命令,且定时器处于就绪状态
|
|
|
- if (deviceInfo.commandFromCloud == REQUEST_BLUETOOTH_DATA) {
|
|
|
-
|
|
|
- if (deviceInfo.timeCount >= deviceInfo.forwardBLAndLoraDataDuration) {
|
|
|
- Timer_Managment_Fun(&htim4, TIMER_OP_STOP);
|
|
|
- deviceInfo.BlDataFlag = BL_STOP;
|
|
|
- while (receiveBlDataCount >= i) {
|
|
|
-
|
|
|
- printf("发送第%d个蓝牙数据给Lora\r\n", i);
|
|
|
- if (deviceInfo.loraSendSuccessFlag == 0) {
|
|
|
- E52_Send_Bl_Data_Fun(i);
|
|
|
- }else {
|
|
|
- continue;
|
|
|
+ if (GET_CMD( deviceInfo.commandFromCloud) == REQUEST_BLUETOOTH_DATA) {
|
|
|
+
|
|
|
+ switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
|
+ case REQUEST_BLUETOOTH_DATA_SCAN:
|
|
|
+ Timer_Managment_Fun(&htim4, TIMER_OP_START);
|
|
|
+ deviceInfo.BlDataFlag = BL_START;
|
|
|
+ printf("开启蓝牙扫描\r\n");
|
|
|
+ break; //扫描蓝牙阶段
|
|
|
+
|
|
|
+ case REQUEST_BLUETOOTH_DATA_SEND:
|
|
|
+ Timer_Managment_Fun(&htim4, TIMER_OP_STOP);
|
|
|
+ deviceInfo.BlDataFlag = BL_STOP;
|
|
|
+ i = 0;
|
|
|
+ while (receiveBlDataCount >= i) {
|
|
|
+
|
|
|
+ printf("发送第%d个蓝牙数据给Lora\r\n", i);
|
|
|
+ if (deviceInfo.loraSendSuccessFlag == 0) {
|
|
|
+ E52_Send_Bl_Data_Fun(i);
|
|
|
+ }else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ memset(totalData[i], 0, sizeof(totalData[i]));
|
|
|
+ i++;
|
|
|
}
|
|
|
- memset(totalData[i], 0, sizeof(totalData[i]));
|
|
|
- i++;
|
|
|
- }
|
|
|
- receiveBlDataCount = 0;
|
|
|
- deviceInfo.timeCount = 0;
|
|
|
- deviceInfo.forwardBLAndLoraDataDuration = 0;
|
|
|
- i = 0;
|
|
|
-
|
|
|
- deviceInfo.commandFromCloud = IDLE;
|
|
|
- // 清空缓冲区(可选)
|
|
|
- //TODO 停止计时器后,将数据发送出去。
|
|
|
- printf("停止蓝牙扫描,开始发送蓝牙数据给Lora\r\n");
|
|
|
- }else {
|
|
|
- Timer_Managment_Fun(&htim4, TIMER_OP_START);
|
|
|
- deviceInfo.BlDataFlag = BL_START;
|
|
|
- printf("开启蓝牙扫描\r\n");
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(REQUEST_BLUETOOTH_DATA, STEP_COMPLETE);
|
|
|
+ printf("停止蓝牙扫描,开始发送蓝牙数据给Lora\r\n");
|
|
|
+ break; //发送数据阶段
|
|
|
+ case STEP_COMPLETE:
|
|
|
+ receiveBlDataCount = 0;
|
|
|
+ deviceInfo.timeCount = 0;
|
|
|
+ deviceInfo.forwardBLAndLoraDataDuration = 0;
|
|
|
+ i = 0;
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
+ printf("发送结束\r\n");
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ // 处理未知步骤
|
|
|
+ printf("收到未知步骤,忽略处理\r\n");
|
|
|
+ break;
|
|
|
}
|
|
|
+
|
|
|
+ // if (deviceInfo.timeCount >= deviceInfo.forwardBLAndLoraDataDuration) {
|
|
|
+ //
|
|
|
+ // }else {
|
|
|
+ //
|
|
|
+ // }
|
|
|
}
|
|
|
}
|
|
|
/* USER CODE END 3 */
|