|
|
@@ -337,6 +337,9 @@ int main(void)
|
|
|
|
|
|
/* Infinite loop */
|
|
|
/* USER CODE BEGIN WHILE */
|
|
|
+ // RTC_DateTimeTypeDef now;
|
|
|
+ // RTC_GetDateTime(&hrtc, &now);
|
|
|
+
|
|
|
printf("Device is ready\r\n");
|
|
|
printf("设备地址:0x%02X%02X\n", deviceInfo.loraDeviceAddress_H, deviceInfo.loraDeviceAddress_L);
|
|
|
uint8_t i = 0;
|
|
|
@@ -347,79 +350,54 @@ int main(void)
|
|
|
|
|
|
/* USER CODE BEGIN 3 */
|
|
|
printf("deviceInfo.commandFromCloud:%02x\r\n",deviceInfo.commandFromCloud);
|
|
|
- RTC_DateTimeTypeDef now;
|
|
|
- RTC_GetDateTime(&hrtc, &now);
|
|
|
- GPIO_PinState sosState = HAL_GPIO_ReadPin(SOS_KEY_GPIO_Port, SOS_KEY_Pin);//高为未按压,低为按下,优先级最高
|
|
|
- GPIO_PinState powerState = HAL_GPIO_ReadPin(JUGE_PIN_GPIO_Port, JUGE_PIN_Pin);
|
|
|
-
|
|
|
- if (powerState == GPIO_PIN_RESET) {
|
|
|
- // powerOff();
|
|
|
- deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
- printf("收到未知步骤,忽略处理\r\n");
|
|
|
- HAL_Delay(10*60*1000);
|
|
|
- }
|
|
|
-
|
|
|
- if (ledShanshuo != now.seconds) {
|
|
|
- ledShanshuo = now.seconds;
|
|
|
- }
|
|
|
-
|
|
|
- if (!sosState) {
|
|
|
- // E52_Heartbeat_Fun();
|
|
|
- printf("SOS中\r\n");
|
|
|
-
|
|
|
- deviceInfo.BlDataFlag = BL_START;
|
|
|
- printf("开启蓝牙扫描\r\n");
|
|
|
- HAL_Delay(1000);
|
|
|
- deviceInfo.BlDataFlag = BL_STOP;
|
|
|
- int k = 0;
|
|
|
- while (receiveBlDataCount > k) {
|
|
|
-
|
|
|
- printf("发送第%d个蓝牙数据给Lora\r\n", k);
|
|
|
- if (deviceInfo.loraSendSuccessFlag == 0) {
|
|
|
- E52_Send_SOS_Fun(k,0x00);
|
|
|
- }else {
|
|
|
- continue;
|
|
|
- }
|
|
|
- memset(totalData[k], 0, sizeof(totalData[k]));
|
|
|
- k++;
|
|
|
- }
|
|
|
- HAL_Delay(1000);
|
|
|
- E52_Send_Bl_Data_Fun(k,0x01);
|
|
|
- printf("停止蓝牙扫描,开始发送蓝牙数据给Lora\r\n");
|
|
|
-
|
|
|
- HAL_Delay(2000);
|
|
|
- receiveBlDataCount = 0;
|
|
|
- deviceInfo.timeCount = 0;
|
|
|
- deviceInfo.forwardBLAndLoraDataDuration = 0;
|
|
|
- k = 0;
|
|
|
- printf("发送结束\r\n");
|
|
|
- HAL_Delay(2000);
|
|
|
-
|
|
|
- continue;
|
|
|
- }
|
|
|
+ // GPIO_PinState sosState = HAL_GPIO_ReadPin(SOS_KEY_GPIO_Port, SOS_KEY_Pin);
|
|
|
+ // GPIO_PinState powerState = HAL_GPIO_ReadPin(JUGE_PIN_GPIO_Port, JUGE_PIN_Pin);
|
|
|
+ //
|
|
|
+ // if (powerState == GPIO_PIN_RESET) {
|
|
|
+ // // powerOff();
|
|
|
+ // deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
+ // printf("收到未知步骤,忽略处理\r\n");
|
|
|
+ // HAL_Delay(10*60*1000);
|
|
|
+ // }
|
|
|
|
|
|
- // 命令为IDLE,且步骤为STEP_INIT 说明有新数据。
|
|
|
- if (GET_CMD( deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_VERIFY && sosState) {
|
|
|
- E52_Analyze_Data();
|
|
|
- }
|
|
|
+ // if (ledShanshuo != now.seconds) {
|
|
|
+ // ledShanshuo = now.seconds;
|
|
|
+ // }
|
|
|
|
|
|
- // 检查是否接收到"心跳"命令,且设备在线
|
|
|
- if (!deviceInfo.isOnline && sosState){
|
|
|
- printf("The device is not online.\r\n");
|
|
|
- deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
- if (!deviceInfo.loraSendSuccessFlag) {
|
|
|
- E52_Heartbeat_Fun();
|
|
|
- }
|
|
|
- uint8_t count = 0;
|
|
|
- while(count < 10) {
|
|
|
- if (HAL_GPIO_ReadPin(JUGE_PIN_GPIO_Port, JUGE_PIN_Pin) == GPIO_PIN_RESET) {
|
|
|
- // powerOff();
|
|
|
- break;
|
|
|
- }
|
|
|
- count++;
|
|
|
- HAL_Delay(1000);
|
|
|
- }
|
|
|
- }
|
|
|
+ // if (!sosState) {
|
|
|
+ // // E52_Heartbeat_Fun();
|
|
|
+ // printf("SOS中\r\n");
|
|
|
+ //
|
|
|
+ // deviceInfo.BlDataFlag = BL_START;
|
|
|
+ // printf("开启蓝牙扫描\r\n");
|
|
|
+ // HAL_Delay(1000);
|
|
|
+ // deviceInfo.BlDataFlag = BL_STOP;
|
|
|
+ // int k = 0;
|
|
|
+ // while (receiveBlDataCount > k) {
|
|
|
+ //
|
|
|
+ // printf("发送第%d个蓝牙数据给Lora\r\n", k);
|
|
|
+ // if (deviceInfo.loraSendSuccessFlag == 0) {
|
|
|
+ // E52_Send_SOS_Fun(k,0x00);
|
|
|
+ // }else {
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
+ // memset(totalData[k], 0, sizeof(totalData[k]));
|
|
|
+ // k++;
|
|
|
+ // }
|
|
|
+ // HAL_Delay(1000);
|
|
|
+ // E52_Send_Bl_Data_Fun(k,0x01);
|
|
|
+ // printf("停止蓝牙扫描,开始发送蓝牙数据给Lora\r\n");
|
|
|
+ //
|
|
|
+ // HAL_Delay(2000);
|
|
|
+ // receiveBlDataCount = 0;
|
|
|
+ // deviceInfo.timeCount = 0;
|
|
|
+ // deviceInfo.forwardBLAndLoraDataDuration = 0;
|
|
|
+ // k = 0;
|
|
|
+ // printf("发送结束\r\n");
|
|
|
+ // HAL_Delay(2000);
|
|
|
+ //
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
|
|
|
// if (SOS_key_struct.sosCheckActive) {
|
|
|
// RTC_DateTimeTypeDef now;
|
|
|
@@ -440,8 +418,23 @@ int main(void)
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
+ // 检查是否接收到"心跳"命令,且设备在线
|
|
|
+ if (!deviceInfo.isOnline){
|
|
|
+ printf("The device is not online.\r\n");
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
|
|
|
+ if (!deviceInfo.loraSendSuccessFlag) {
|
|
|
+ E52_Heartbeat_Fun();
|
|
|
+ }
|
|
|
+ HAL_Delay(3000);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 解析后台命令
|
|
|
+ if (GET_CMD( deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_VERIFY) {
|
|
|
+ E52_Analyze_Data();
|
|
|
+ }
|
|
|
+
|
|
|
// 03:请求蓝牙数据
|
|
|
- if (GET_CMD( deviceInfo.commandFromCloud) == REQUEST_BLUETOOTH_DATA && deviceInfo.isOnline && sosState) {
|
|
|
+ if (GET_CMD( deviceInfo.commandFromCloud) == REQUEST_BLUETOOTH_DATA && deviceInfo.isOnline) {
|
|
|
|
|
|
switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
|
case REQUEST_BLUETOOTH_DATA_SCAN:
|
|
|
@@ -487,7 +480,7 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
// 08:请求心跳数据
|
|
|
- if (GET_CMD( deviceInfo.commandFromCloud) == E52_HEARTBEAT && deviceInfo.isOnline && sosState) {
|
|
|
+ if (GET_CMD( deviceInfo.commandFromCloud) == E52_HEARTBEAT && deviceInfo.isOnline) {
|
|
|
switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
|
case HEARTBEAT_SEND:
|
|
|
if (deviceInfo.loraSendSuccessFlag == 0) {
|
|
|
@@ -509,7 +502,7 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
// 07:配置E52
|
|
|
- if (GET_CMD( deviceInfo.commandFromCloud) == CONFIGURE_E52 && deviceInfo.isOnline && sosState) {
|
|
|
+ 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);
|