P11LOV, P11SL2/L3 for lamp bar color

This commit is contained in:
Yunhorn 2025-06-27 17:38:29 +08:00
parent 75f39aa138
commit 3f25825460
6 changed files with 27 additions and 19 deletions

View File

@ -90,22 +90,22 @@ enum sts_lamp_color {
#define STS_FALL_NORMAL_COLOR STS_GREEN #define STS_FALL_NORMAL_COLOR STS_GREEN
//#define STS_FALL_SUSPICIOUS_COLOR STS_YELLOW //#define STS_FALL_SUSPICIOUS_COLOR STS_YELLOW
//#define STS_FALL_CONFIRMED_COLOR STS_RED //#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_FALL_CONFIRMED_COLOR (sts_color_severity_l2_l3&0x0F)
#define STS_HUMAN_MOVEMENT_MOTIONLESS_NORMAL STS_GREEN #define STS_HUMAN_MOVEMENT_MOTIONLESS_NORMAL STS_GREEN
//#define STS_HUMAN_MOVEMENT_MOTIONLESS_SHORT_COLOR STS_YELLOW //#define STS_HUMAN_MOVEMENT_MOTIONLESS_SHORT_COLOR STS_YELLOW
//#define STS_HUMAN_MOVEMENT_MOTIONLESS_LONG_COLOR STS_RED //#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_HUMAN_MOVEMENT_MOTIONLESS_LONG_COLOR (sts_color_severity_l2_l3&0x0F)
#define STS_OCCUPANCY_NORMAL_COLOR STS_GREEN #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_STAYLONGER_COLOR STS_YELLOW //NOT REALLY USED, JUST TO ALIGN FOR COLORS PATTERN
//#define STS_OCCUPANCY_OVERSTAY_COLOR STS_BLUE //#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_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) #define STS_COLOR_SEVERITY_L3 (sts_color_severity_l2_l3&0x0F)
#endif #endif

View File

@ -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); // 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; 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 //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 #ifndef STS_R4
#if 1 #if 1
case BUT2_Pin: case BUT2_Pin: // SOS BUTTON
HAL_Delay(100); HAL_Delay(100);
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
sts_hall2_read = HALL2_STATE; sts_hall2_read = HALL2_STATE;
@ -786,8 +786,9 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
#endif #endif
#if 1 #if 1
case PIR_Pin: case PIR_Pin:
HAL_Delay(100);
sts_pir_read = PIR_STATE; 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 (sts_pir_read == 1)
{ {
if (lockLow) if (lockLow)

View File

@ -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 sts_cfg_nvm.fhmos_cfg_8 = fhmos_cfg.th_fall_body_min_height_cm; // default:19 -- 25 cm
OnStoreSTSCFGContextRequest(); OnStoreSTSCFGContextRequest();
/*
// 2024-11-18 // 2024-11-18
UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
UTIL_MEM_cpy_8((void*)outbuf,(void*)parse_buffer,parse_buffer_size); UTIL_MEM_cpy_8((void*)outbuf,(void*)parse_buffer,parse_buffer_size);
i = parse_buffer_size; i = parse_buffer_size;
STS_SENSOR_Upload_Message(YUNHORN_STS_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(YUNHORN_STS_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
*/
} }
} }
break; break;
@ -872,7 +873,11 @@ void USER_APP_Parse_CMD_P(uint8_t *parse_buffer, uint8_t parse_buffer_size)
break; 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 // following to be fill up
#if 0 #if 0
@ -3071,7 +3076,7 @@ void OnSensorPIR1StateChanged(void)
#endif #endif
if (sts_pir_read == STS_RESULT_MOTION) 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_motion_start_time = sensor_event_time.Seconds;
sts_o7_sensorData.event_sensor3_no_movement_start_time = 0; sts_o7_sensorData.event_sensor3_no_movement_start_time = 0;
sts_o7_sensorData.event_sensor3_motion_duration = 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) } 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_motion_stop_time = sensor_event_time.Seconds;
sts_o7_sensorData.event_sensor3_no_movement_start_time = sensor_event_time.Seconds; sts_o7_sensorData.event_sensor3_no_movement_start_time = sensor_event_time.Seconds;
fhmos_data.state_PIR = 0; fhmos_data.state_PIR = 0;
@ -3355,6 +3360,7 @@ void STS_Combined_Status_Processing(void)
if (fhmos_data.state_occupancy == STS_FHMOS_OCCUPANCY_OVERSTAY) if (fhmos_data.state_occupancy == STS_FHMOS_OCCUPANCY_OVERSTAY)
{ {
sts_status_color = STS_OCCUPANCY_OVERSTAY_COLOR; 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 0
if (fhmos_data.color_fall > STS_OCCUPY_COLOR) if (fhmos_data.color_fall > STS_OCCUPY_COLOR)

View File

@ -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)); 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 */ /* state tree */
if ((head_distance_from_ceiling_mm <= factor1_floor_level_from_ceiling_mm) 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 ++; 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 { } else {
yes_count =0; yes_count =0;
@ -854,17 +854,18 @@ static void print_result(RANGING_SENSOR_Result_t *Result)
{ {
sts_head_level_low = 1; 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; 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; 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 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(); //OnSensorL8AStateChanged();
} }