|
@@ -344,92 +344,33 @@ int main(void)
|
|
|
/* USER CODE END WHILE */
|
|
/* USER CODE END WHILE */
|
|
|
|
|
|
|
|
/* USER CODE BEGIN 3 */
|
|
/* USER CODE BEGIN 3 */
|
|
|
- // printf("deviceInfo.commandFromCloud:%02x\r\n",deviceInfo.commandFromCloud);
|
|
|
|
|
- // 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;
|
|
|
|
|
- // }
|
|
|
|
|
-
|
|
|
|
|
- // if (SOS_key_struct.sosCheckActive) {
|
|
|
|
|
- // RTC_DateTimeTypeDef now;
|
|
|
|
|
- // RTC_GetDateTime(&hrtc, &now);
|
|
|
|
|
- //
|
|
|
|
|
- // uint32_t diffSec = RTC_CalcDiffSeconds(&firstPressTime, &now);
|
|
|
|
|
- // if (diffSec > 60) {
|
|
|
|
|
- // // 超过5秒,停止检测
|
|
|
|
|
- // if (SOS_key_struct.SOS_key_Count >= 5) {
|
|
|
|
|
- // printf("SOS TRIGGERED!!!\r\n");
|
|
|
|
|
- // // TODO: 触发SOS逻辑
|
|
|
|
|
- // }
|
|
|
|
|
- // // 重置状态
|
|
|
|
|
- // SOS_key_struct.sosCheckActive = FALSE;
|
|
|
|
|
- // SOS_key_struct.SOS_key_Count = 0;
|
|
|
|
|
- // }else {
|
|
|
|
|
- //
|
|
|
|
|
- // }
|
|
|
|
|
- // }
|
|
|
|
|
|
|
|
|
|
// 检查是否接收到"心跳"命令,且设备在线
|
|
// 检查是否接收到"心跳"命令,且设备在线
|
|
|
- // 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 (!deviceInfo.isOnline) {
|
|
|
|
|
+ RTC_TimeTypeDef now = {0};
|
|
|
|
|
+ HAL_RTC_GetTime(&hrtc, &now, RTC_FORMAT_BIN);
|
|
|
|
|
+
|
|
|
|
|
+ int pressedSeconds = (now.Hours * 3600 + now.Minutes * 60 + now.Seconds)
|
|
|
|
|
+ - (Online_struct.Hours * 3600 + Online_struct.Minutes * 60 + Online_struct.Seconds);
|
|
|
|
|
+ if (pressedSeconds < 0) pressedSeconds += 24 * 3600;
|
|
|
|
|
+
|
|
|
|
|
+ // printf("发送上报时间 按下持续时间: %d 秒\r\n", pressedSeconds);
|
|
|
|
|
+
|
|
|
|
|
+ if (pressedSeconds >= 10) {
|
|
|
|
|
+ E52_Heartbeat_Fun();
|
|
|
|
|
+ // printf("111111\r\n");
|
|
|
|
|
+ Online_struct = now; // 记录上报时间
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
// 解析后台命令
|
|
// 解析后台命令
|
|
|
- // if (GET_CMD( deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_VERIFY) {
|
|
|
|
|
- // E52_Analyze_Data();
|
|
|
|
|
- // }
|
|
|
|
|
|
|
+ if (GET_CMD( deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_VERIFY) {
|
|
|
|
|
+ E52_Analyze_Data();
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 03:请求蓝牙数据
|
|
// 03:请求蓝牙数据
|
|
|
- if (GET_CMD( deviceInfo.commandFromCloud) == REQUEST_BLUETOOTH_DATA && deviceInfo.isOnline) {
|
|
|
|
|
|
|
+ if ((GET_CMD( deviceInfo.commandFromCloud) == REQUEST_BLUETOOTH_DATA && deviceInfo.isOnline) || deviceInfo.isSOS) {
|
|
|
|
|
|
|
|
switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
switch (GET_STEP(deviceInfo.commandFromCloud)) {
|
|
|
case REQUEST_BLUETOOTH_DATA_SCAN:
|
|
case REQUEST_BLUETOOTH_DATA_SCAN:
|