diff --git a/Core/Inc/sts_lamp_bar.h b/Core/Inc/sts_lamp_bar.h index 1b1d990..3c30c31 100644 --- a/Core/Inc/sts_lamp_bar.h +++ b/Core/Inc/sts_lamp_bar.h @@ -90,22 +90,22 @@ enum sts_lamp_color { #define STS_FALL_NORMAL_COLOR STS_GREEN //#define STS_FALL_SUSPICIOUS_COLOR STS_YELLOW //#define STS_FALL_CONFIRMED_COLOR STS_RED -#define STS_FALL_SUSPICIOUS_COLOR (sts_color_severity_l2_l3<<4) +#define STS_FALL_SUSPICIOUS_COLOR (sts_color_severity_l2_l3>>4) #define STS_FALL_CONFIRMED_COLOR (sts_color_severity_l2_l3&0x0F) #define STS_HUMAN_MOVEMENT_MOTIONLESS_NORMAL STS_GREEN //#define STS_HUMAN_MOVEMENT_MOTIONLESS_SHORT_COLOR STS_YELLOW //#define STS_HUMAN_MOVEMENT_MOTIONLESS_LONG_COLOR STS_RED -#define STS_HUMAN_MOVEMENT_MOTIONLESS_SHORT_COLOR (sts_color_severity_l2_l3<<4) +#define STS_HUMAN_MOVEMENT_MOTIONLESS_SHORT_COLOR (sts_color_severity_l2_l3>>4) #define STS_HUMAN_MOVEMENT_MOTIONLESS_LONG_COLOR (sts_color_severity_l2_l3&0x0F) #define STS_OCCUPANCY_NORMAL_COLOR STS_GREEN //#define STS_OCCUPANCY_STAYLONGER_COLOR STS_YELLOW //NOT REALLY USED, JUST TO ALIGN FOR COLORS PATTERN //#define STS_OCCUPANCY_OVERSTAY_COLOR STS_BLUE -#define STS_OCCUPANCY_STAYLONGER_COLOR (sts_color_severity_l2_l3<<4) +#define STS_OCCUPANCY_STAYLONGER_COLOR (sts_color_severity_l2_l3>>4) #define STS_OCCUPANCY_OVERSTAY_COLOR (sts_color_severity_l2_l3&0x0F) -#define STS_COLOR_SEVERITY_L2 (sts_color_severity_l2_l3<<4) +#define STS_COLOR_SEVERITY_L2 (sts_color_severity_l2_l3>>4) #define STS_COLOR_SEVERITY_L3 (sts_color_severity_l2_l3&0x0F) #endif diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 997f09f..17ae145 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -705,7 +705,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) // APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXTI_CALLBACK, Door Open: sts status color =%d, lampbar_color=%d \r\n", sts_status_color, sts_lamp_bar_color); } - //if (sts_hall1_read == prev_sts_hall1_read) return; + if (sts_hall1_read == prev_sts_hall1_read) return; prev_sts_hall1_read = sts_hall1_read; //if (last_sts_hall1_read != sts_hall1_read) // to eliminate power drop issue of PCB with long REEDSWITCH CABLES @@ -739,7 +739,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) #ifndef STS_R4 #if 1 - case BUT2_Pin: + case BUT2_Pin: // SOS BUTTON HAL_Delay(100); __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); sts_hall2_read = HALL2_STATE; @@ -786,8 +786,9 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) #endif #if 1 case PIR_Pin: + HAL_Delay(100); sts_pir_read = PIR_STATE; - __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + //__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); if (sts_pir_read == 1) { if (lockLow) diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin b/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin index 1021669..99162e6 100644 Binary files a/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin and b/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin differ diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf index ad7c998..1267481 100644 Binary files a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf and b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf differ diff --git a/STS/Core/Src/yunhorn_sts_process.c b/STS/Core/Src/yunhorn_sts_process.c index ad29557..5fb86d5 100644 --- a/STS/Core/Src/yunhorn_sts_process.c +++ b/STS/Core/Src/yunhorn_sts_process.c @@ -856,12 +856,13 @@ void USER_APP_Parse_CMD_P(uint8_t *parse_buffer, uint8_t parse_buffer_size) sts_cfg_nvm.fhmos_cfg_8 = fhmos_cfg.th_fall_body_min_height_cm; // default:19 -- 25 cm OnStoreSTSCFGContextRequest(); - + /* // 2024-11-18 UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)parse_buffer,parse_buffer_size); i = parse_buffer_size; STS_SENSOR_Upload_Message(YUNHORN_STS_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); + */ } } break; @@ -872,7 +873,11 @@ void USER_APP_Parse_CMD_P(uint8_t *parse_buffer, uint8_t parse_buffer_size) break; } - + // 2024-11-18 + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); + UTIL_MEM_cpy_8((void*)outbuf,(void*)parse_buffer,parse_buffer_size); + i = parse_buffer_size; + STS_SENSOR_Upload_Message(YUNHORN_STS_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); } // following to be fill up #if 0 @@ -3071,7 +3076,7 @@ void OnSensorPIR1StateChanged(void) #endif if (sts_pir_read == STS_RESULT_MOTION) { - APP_LOG(TS_OFF, VLEVEL_M, "\r\n Motion Human Movement Detected\r\n"); + APP_LOG(TS_OFF, VLEVEL_H, "\r\n Motion Human Movement Detected\r\n"); sts_o7_sensorData.event_sensor3_motion_start_time = sensor_event_time.Seconds; sts_o7_sensorData.event_sensor3_no_movement_start_time = 0; sts_o7_sensorData.event_sensor3_motion_duration = 0; @@ -3080,7 +3085,7 @@ void OnSensorPIR1StateChanged(void) } else if (sts_pir_read == STS_RESULT_NO_MOTION) { - APP_LOG(TS_OFF, VLEVEL_M, "\r\n Motionless, Human Movement Ended\r\n"); + APP_LOG(TS_OFF, VLEVEL_H, "\r\n Motionless, Human Movement Ended\r\n"); sts_o7_sensorData.event_sensor3_motion_stop_time = sensor_event_time.Seconds; sts_o7_sensorData.event_sensor3_no_movement_start_time = sensor_event_time.Seconds; fhmos_data.state_PIR = 0; @@ -3355,6 +3360,7 @@ void STS_Combined_Status_Processing(void) if (fhmos_data.state_occupancy == STS_FHMOS_OCCUPANCY_OVERSTAY) { sts_status_color = STS_OCCUPANCY_OVERSTAY_COLOR; + APP_LOG(TS_OFF, VLEVEL_M, "\r\n FHMOS_OCCUPY_OVERSTAY Color set to 0x%02x \r\n", sts_status_color); } #if 0 if (fhmos_data.color_fall > STS_OCCUPY_COLOR) diff --git a/STS/TOF/App/app_tof.c b/STS/TOF/App/app_tof.c index 2bb1f27..00f27c6 100644 --- a/STS/TOF/App/app_tof.c +++ b/STS/TOF/App/app_tof.c @@ -819,8 +819,8 @@ static void print_result(RANGING_SENSOR_Result_t *Result) head_height_level_from_floor_mm = MIN(1400, abs(sts_sensor_install_height - head_distance_from_ceiling_mm)); - APP_LOG(TS_OFF, VLEVEL_M, "\r\n Updown distance=%d cm, Floor Up head =%d cm\r\n", head_distance_from_ceiling_mm/10, head_height_level_from_floor_mm/10); - + //APP_LOG(TS_OFF, VLEVEL_M, "\r\n Updown distance=%d cm, Floor Up head =%d cm\r\n", head_distance_from_ceiling_mm/10, head_height_level_from_floor_mm/10); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n ## head level = %d cm ##\r\n", head_height_level_from_floor_mm/10); /* state tree */ if ((head_distance_from_ceiling_mm <= factor1_floor_level_from_ceiling_mm) @@ -838,12 +838,12 @@ static void print_result(RANGING_SENSOR_Result_t *Result) } - } else if ((head_distance_from_ceiling_mm < (factor2_head_level_from_floor_mm - 150))) // TODO XXX 50mm gap to avoid flapping back and forth + } else // update 2025-06 27 if ((head_distance_from_ceiling_mm < (factor2_head_level_from_floor_mm - 150))) // TODO XXX 50mm gap to avoid flapping back and forth { - if (no_count < TIME_C) + if (no_count < TIME_C-2) { no_count ++; - APP_LOG(TS_OFF, VLEVEL_M, "\r\n NO++ %d\r\n", no_count); + //APP_LOG(TS_OFF, VLEVEL_M, "\r\n NO++ %d\r\n", no_count); } else { yes_count =0; @@ -854,17 +854,18 @@ static void print_result(RANGING_SENSOR_Result_t *Result) { sts_head_level_low = 1; - APP_LOG(TS_OFF, VLEVEL_M, "\r\n lead low = 1\r\n"); + //APP_LOG(TS_OFF, VLEVEL_M, "\r\n head low = 1\r\n"); - } else if (no_count > (TIME_C -1)) + } else if (no_count > (TIME_C -2)) { sts_head_level_low = 0; - APP_LOG(TS_OFF, VLEVEL_M, "\r\n lead low = 0\r\n"); + //APP_LOG(TS_OFF, VLEVEL_M, "\r\n head low = 0\r\n"); sts_fhmos_bitmap_pending = FHMOS_BITMAP_BLANK; APP_LOG(TS_OFF, VLEVEL_M, "\r\n return zero statues, bitmap status=%d \r\n", sts_fhmos_bitmap_pending); } + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Yes =%d No =%d head low =%d \r\n", yes_count, no_count, sts_head_level_low); //OnSensorL8AStateChanged(); }