From c76171b461ba8669a74bb6c60de42a26a421f35d Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Thu, 6 Jun 2024 20:29:22 +0800 Subject: [PATCH] minor improve for logic --- Core/Src/sts_lamp_bar.c | 104 +++++++++++++++------------------ Core/Src/yunhorn_sts_process.c | 2 +- LoRaWAN/App/lora_app.c | 25 +++++--- 3 files changed, 64 insertions(+), 67 deletions(-) diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c index 72c5dde..da1d8ed 100644 --- a/Core/Src/sts_lamp_bar.c +++ b/Core/Src/sts_lamp_bar.c @@ -238,6 +238,7 @@ void STS_Combined_Status_Processing(void) case STS_NETWORK_MODE: sts_status_color = sts_cloud_netcolor; break; + case STS_WIRED_MODE: // NO LAMP BAR FOR THOSE WATER LEAKAGE SENSOR OR SOAP CAPACITY SENSORS sts_status_color = STS_DARK; #ifdef STS_M1 @@ -245,11 +246,13 @@ void STS_Combined_Status_Processing(void) sts_water_leakage_changed_flag = 1; #endif break; + case STS_REEDSWITCH_MODE: sts_status_color = (sts_reed_hall_result == STS_Status_Door_Open )? STS_GREEN: STS_RED; break; + case STS_RSS_MODE: if (sts_rss_result == STS_RESULT_NO_MOTION){ sts_status_color = STS_GREEN; @@ -258,14 +261,18 @@ void STS_Combined_Status_Processing(void) sts_status_color = STS_RED; } break; + case STS_DUAL_MODE: // FOR STS_O6 if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_SOS_Release )) { sts_status_color = STS_GREEN; + sts_lamp_bar_color = STS_GREEN; } else if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close )||(sts_reed_hall_2_result == STS_Status_SOS_Pushdown )) { sts_status_color = STS_RED; + sts_lamp_bar_color = STS_RED; +#if 0 // not for STS-O6 sensor switch(sts_fall_rising_detected_result) { case STS_PRESENCE_LAYDOWN: sts_lamp_bar_color = STS_YELLOW; @@ -274,15 +281,17 @@ void STS_Combined_Status_Processing(void) case STS_PRESENCE_FALL: //RED_BLUE FLASH sts_lamp_bar_color = STS_RED_BLUE; sts_status_color = STS_RED_BLUE; - break; + break; case STS_PRESENCE_RISING: //NORMAL OCCUPANCY STATUS sts_lamp_bar_color = STS_RED; sts_status_color = STS_RED; - break; + break; } +#endif if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown ) { sts_status_color = STS_RED_BLUE; + sts_lamp_bar_color = STS_RED_BLUE; } } break; @@ -291,35 +300,55 @@ void STS_Combined_Status_Processing(void) if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_SOS_Release )) { sts_status_color = STS_GREEN; + sts_lamp_bar_color = STS_GREEN; } else if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close )||(sts_reed_hall_2_result == STS_Status_SOS_Pushdown )) { sts_status_color = STS_RED; + sts_lamp_bar_color = STS_RED; } switch(sts_fall_rising_detected_result) { - case STS_PRESENCE_LAYDOWN: - sts_lamp_bar_color = STS_YELLOW; - sts_status_color = STS_YELLOW; - break; - case STS_PRESENCE_FALL: //RED_BLUE FLASH - sts_lamp_bar_color = STS_RED_BLUE; - sts_status_color = STS_RED_BLUE; - break; - case STS_PRESENCE_RISING: //NORMAL OCCUPANCY STATUS - sts_lamp_bar_color = STS_RED; - sts_status_color = STS_RED; - break; - default: - sts_lamp_bar_color = STS_RED; - sts_status_color = STS_RED; + case STS_PRESENCE_NONE: + sts_lamp_bar_color = STS_GREEN; + sts_status_color = STS_GREEN; break; + + case STS_PRESENCE_FALL: //RED_BLUE FLASH + sts_lamp_bar_color = STS_RED_BLUE; + sts_status_color = STS_RED_BLUE; + break; + + case STS_PRESENCE_LAYDOWN: + sts_lamp_bar_color = STS_YELLOW; + sts_status_color = STS_YELLOW; + break; + + case STS_PRESENCE_RISING: //NORMAL OCCUPANCY STATUS + sts_lamp_bar_color = STS_RED; + sts_status_color = STS_RED; + break; + + case STS_PRESENCE_UNCONCIOUS: + sts_lamp_bar_color = STS_RED_BLUE; + sts_status_color = STS_RED_BLUE; + break; + + case STS_PRESENCE_STAYSTILL: + sts_lamp_bar_color = STS_RED_BLUE; + sts_status_color = STS_RED_BLUE; + break; + default: + sts_lamp_bar_color = STS_GREEN; + sts_status_color = STS_GREEN; + break; } if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown ) { sts_status_color = STS_RED_BLUE; + sts_lamp_bar_color = STS_RED_BLUE; } break; @@ -381,17 +410,6 @@ void STS_Combined_Status_Processing(void) break; } -#if 0 - if (sts_status_color == STS_RED_BLUE) - { - //STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level); - STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED, luminance_level); - HAL_Delay(100); - STS_Lamp_Bar_Set_STS_RGB_Color(STS_BLUE, luminance_level); - HAL_Delay(100); - STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED_BLUE, luminance_level); - } -#endif if ((sts_work_mode == STS_WIRED_MODE) || (sts_service_mask > STS_SERVICE_MASK_L0)) { sts_status_color = STS_DARK; @@ -399,39 +417,11 @@ void STS_Combined_Status_Processing(void) last_lamp_bar_color = STS_DARK; STS_Lamp_Bar_Set_Dark(); } - else - { - //if ((last_lamp_bar_color != sts_status_color)) - { - sts_lamp_bar_color = ((sts_service_mask == STS_SERVICE_MASK_L0)? sts_status_color:STS_DARK); +// sensor_data_ready = 1; - STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level); - if ((sts_service_mask == STS_SERVICE_MASK_L0) || (sts_lamp_bar_color == STS_DARK)) - { - // STS_WS2812B_Refresh(); - } - last_lamp_bar_color = sts_lamp_bar_color; - } - } - - //STS_Lamp_Bar_Refresh(); -#if 1 - //if ((sts_rss_result_changed_flag)|| (sts_reed_hall_changed_flag) || (sts_tof_result_changed_flag) || (sts_water_leakage_changed_flag)) - { - - //sts_rss_result_changed_flag =0; - sts_reed_hall_changed_flag =0; - sts_tof_result_changed_flag =0; -#ifdef STS_M1 - sts_water_leakage_changed_flag=0; -#endif - sensor_data_ready = 1; - //STS_PRESENCE_SENSOR_Prepare_Send_Data(); - } -#endif } void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index 0bd0e1b..734a0ae 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -38,7 +38,7 @@ /* USER CODE BEGIN Includes */ extern volatile sts_cfg_nvm_t sts_cfg_nvm; extern volatile uint8_t sts_ac_code[20]; -volatile uint8_t sts_service_mask; +volatile uint8_t sts_service_mask=0; volatile uint32_t rfac_timer; volatile uint8_t sensor_data_ready=0; diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index b6aaaf8..7fd6d30 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -649,7 +649,7 @@ void LoRaWAN_Init(void) UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); - UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); + //UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, YUNHORN_STS_HEART_BEAT_CHECK_TIME, @@ -676,7 +676,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) case HALL1_Pin: if (sts_reed_hall_1_changed) { - HAL_Delay(250); //de-bouncing + HAL_Delay(450); //de-bouncing sts_hall1_read = HALL1_STATE; APP_LOG(TS_OFF, VLEVEL_M, "\n\n Door Contact Read = %02x --%20s\r\n", HALL1_STATE, (HALL1_STATE==STS_Status_Door_Close)?"Door Closed":"Door Opened"); OnSensor1StateChanged(); @@ -684,22 +684,24 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) // if (EventType == TX_ON_EVENT) { //sensor_data_ready =1; - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0); + //UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0); + STS_YunhornSTSEventP1_Process(); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); } - //sts_reed_hall_1_changed =0; + sts_reed_hall_1_changed =0; } break; case HALL2_Pin: if (sts_reed_hall_2_changed) { - HAL_Delay(250); //de-bouncing + HAL_Delay(450); //de-bouncing sts_hall2_read = HALL2_STATE; APP_LOG(TS_OFF, VLEVEL_M, "\n\n SOS Button Read = %02x --%20s\r\n", HALL2_STATE, (HALL2_STATE==STS_Status_SOS_Pushdown)?"SOS Pushdown":"SOS Released"); OnSensor2StateChanged(); //sensor_data_ready =1; - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0); + //UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0); + STS_YunhornSTSEventP1_Process(); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); //sts_reed_hall_2_changed =0; } @@ -1206,10 +1208,13 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower); } - heart_beat_timer = 1; - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); UTIL_TIMER_Start(&STSLampBarColorTimer); + HAL_Delay(2000); + heart_beat_timer = 1; + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + HAL_Delay(2000); + UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); /* USER CODE END OnJoinRequest_1 */ } @@ -1465,7 +1470,9 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context) { UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), CFG_SEQ_Prio_0); - if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag==1)) + APP_LOG(TS_OFF, VLEVEL_M, "\r\n ******** MOTION CHANGED FLAG= %d \r\n", sts_rss_result_changed_flag); + + if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag ==1)) { sts_rss_result_changed_flag = 0; UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);