---minor improve for stable LED color

This commit is contained in:
Yunhorn 2024-07-25 18:29:36 +08:00
parent a67c466012
commit 89a809911d
3 changed files with 40 additions and 27 deletions

View File

@ -57,7 +57,7 @@ extern volatile uint8_t sts_work_mode;
volatile uint8_t sts_reed_hall_ext_int = 0; volatile uint8_t sts_reed_hall_ext_int = 0;
volatile uint8_t sts_status_color = STS_GREEN; volatile uint8_t sts_status_color = STS_GREEN;
volatile uint8_t sts_lamp_bar_color = STS_GREEN; //puColor volatile uint8_t sts_lamp_bar_color = STS_GREEN; //puColor
volatile uint8_t sts_lamp_bar_flashing_color = 0x23; // RED_BLUE; volatile uint8_t sts_lamp_bar_flashing_color = STS_RED_DARK; //0x23; RED_BLUE;
volatile uint8_t sts_cloud_netcolor = STS_GREEN; //netColor volatile uint8_t sts_cloud_netcolor = STS_GREEN; //netColor
extern volatile uint8_t sts_occupancy_status; extern volatile uint8_t sts_occupancy_status;
@ -189,7 +189,7 @@ void STS_Lamp_Bar_Refresh(void)
void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum) void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum)
{ {
switch (sts_lamp_color&0x0f) switch (sts_lamp_color)
{ {
case STS_DARK: case STS_DARK:
STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, 0x0); STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, 0x0);

View File

@ -610,34 +610,25 @@ void STS_Combined_Status_Processing(void)
if ((last_lamp_bar_color != sts_status_color)) if ((last_lamp_bar_color != sts_status_color))
{ {
sts_lamp_bar_color = ((sts_service_mask == STS_SERVICE_MASK_L0)? sts_status_color:STS_DARK); sts_lamp_bar_color = sts_status_color;
STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level); 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; last_lamp_bar_color = sts_lamp_bar_color;
} }
} }
//STS_Lamp_Bar_Refresh(); //STS_Lamp_Bar_Refresh();
#if 1
if ((sts_rss_result_changed_flag)|| (sts_reed_hall_changed_flag)|| (sts_reed_hall_changed_flag)) if ((sts_rss_result_changed_flag)|| (sts_reed_hall_changed_flag)|| (sts_reed_hall_changed_flag))
{ {
//sts_rss_result_changed_flag =0; //sts_rss_result_changed_flag =0;
//sts_reed_hall_changed_flag =0; //sts_reed_hall_changed_flag =0;
//sts_tof_result_changed_flag =0; //sts_tof_result_changed_flag =0;
#ifdef STS_M1
sts_water_leakage_changed_flag=0;
#endif
sensor_data_ready = 1; sensor_data_ready = 1;
//STS_PRESENCE_SENSOR_Prepare_Send_Data(); //STS_PRESENCE_SENSOR_Prepare_Send_Data();
} }
#endif
} }
@ -684,7 +675,7 @@ void STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(void)
void STS_PRESENCE_SENSOR_Init_Send_Data(void) void STS_PRESENCE_SENSOR_Init_Send_Data(void)
{ {
sts_o7_sensorData.lamp_bar_color = STS_GREEN; //sts_o7_sensorData.lamp_bar_color = STS_GREEN;
sts_o7_sensorData.workmode = sts_work_mode; //STS_DUAL_MODE; sts_o7_sensorData.workmode = sts_work_mode; //STS_DUAL_MODE;
sts_o7_sensorData.state_sensor1_on_off = 0x0; sts_o7_sensorData.state_sensor1_on_off = 0x0;
@ -767,7 +758,8 @@ void STS_PRESENCE_SENSOR_Prepare_Send_Data(STS_OO_SensorStatusDataTypeDef *senso
// Fall detection and duration, confirmation duration // Fall detection and duration, confirmation duration
sensor_data->fall_state = sts_fall_rising_detected_result; sensor_data->fall_state = sts_fall_rising_detected_result;
if (sts_fall_rising_detected_result == STS_PRESENCE_FALL) if ((sts_fall_rising_detected_result == STS_PRESENCE_FALL)||
(sts_fall_rising_detected_result == STS_PRESENCE_LAYDOWN))
{ {
APP_LOG(TS_OFF, VLEVEL_M, "\r\n......FALL RISING DETECTION RESULT: %25s \r\n", APP_LOG(TS_OFF, VLEVEL_M, "\r\n......FALL RISING DETECTION RESULT: %25s \r\n",
(char*)sts_presence_fall_detection_message[sts_fall_rising_detected_result] ); (char*)sts_presence_fall_detection_message[sts_fall_rising_detected_result] );
@ -808,7 +800,7 @@ void STS_PRESENCE_SENSOR_Init(void)
APP_LOG(TS_ON, VLEVEL_M, "##### YunHorn SmarToilets(r) Presence Sensor Started\r\n"); APP_LOG(TS_ON, VLEVEL_M, "##### YunHorn SmarToilets(r) Presence Sensor Started\r\n");
sts_o7_sensorData.workmode = (uint8_t)sts_work_mode; //STS_DUAL_MODE; sts_o7_sensorData.workmode = (uint8_t)sts_work_mode; //STS_DUAL_MODE;
sts_o7_sensorData.lamp_bar_color = (uint8_t)STS_GREEN; //sts_o7_sensorData.lamp_bar_color = (uint8_t)STS_GREEN;
sts_o7_sensorData.battery_Pct = 99; sts_o7_sensorData.battery_Pct = 99;
sts_o7_sensorData.dutycycletimelevel = 1; sts_o7_sensorData.dutycycletimelevel = 1;
sts_o7_sensorData.event_sensor1_start_time = 0; sts_o7_sensorData.event_sensor1_start_time = 0;

View File

@ -1124,22 +1124,28 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
{ {
if (last_sts_lamp_bar_color != sts_lamp_bar_color) if (last_sts_lamp_bar_color != sts_lamp_bar_color)
{ {
__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, DEFAULT_LUMINANCE_LEVEL);
STS_WS2812B_Refresh(); __enable_irq();
//STS_WS2812B_Refresh();
last_sts_lamp_bar_color = sts_lamp_bar_color; last_sts_lamp_bar_color = sts_lamp_bar_color;
} }
} else { } else {
if (r_b) if (r_b)
{ {
__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(high4, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(high4, DEFAULT_LUMINANCE_LEVEL);
STS_WS2812B_Refresh(); __enable_irq();
last_sts_lamp_bar_color = high4;
//STS_WS2812B_Refresh();
} }
else { else {
__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(low4, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(low4, DEFAULT_LUMINANCE_LEVEL);
STS_WS2812B_Refresh(); __enable_irq();
last_sts_lamp_bar_color = low4;
//STS_WS2812B_Refresh();
} }
r_b = !r_b; r_b = !r_b;
@ -1257,19 +1263,28 @@ static void OnYunhornSTSDurationCheckTimerEvent(void *context)
sts_o7_sensorData.no_movement_duration =0; sts_o7_sensorData.no_movement_duration =0;
break; break;
case STS_PRESENCE_FALL: case STS_PRESENCE_FALL:
// sts_fall_confirm_threshold_in_10sec
sts_o7_sensorData.event_sensor3_fall_duration = current_time.Seconds - sts_o7_sensorData.event_sensor3_fall_start_time; sts_o7_sensorData.event_sensor3_fall_duration = current_time.Seconds - sts_o7_sensorData.event_sensor3_fall_start_time;
if (sts_o7_sensorData.event_sensor3_fall_duration > 10*sts_cfg_nvm.fall_confirm_threshold_in_10sec) if (sts_o7_sensorData.event_sensor3_fall_duration > 10*sts_cfg_nvm.fall_confirm_threshold_in_10sec)
{ {
//sts_o7_sensorData.occupancy_over_stay_state = 1; //sts_o7_sensorData.occupancy_over_stay_state = 1;
sts_o7_sensorData.fall_state = sts_fall_rising_detected_result; sts_o7_sensorData.fall_state = sts_fall_rising_detected_result;
sts_o7_sensorData.fall_laydown_duration =sts_o7_sensorData.event_sensor3_fall_duration; sts_o7_sensorData.fall_laydown_duration =sts_o7_sensorData.event_sensor3_fall_duration;
over_threshold = TRUE; over_threshold = TRUE;
} } else { // still laydown, but not over fall down confirmation threshold
sts_o7_sensorData.fall_state = STS_PRESENCE_LAYDOWN;
sts_o7_sensorData.fall_laydown_duration =sts_o7_sensorData.event_sensor3_fall_duration;
over_threshold = FALSE;
}
break; break;
case STS_PRESENCE_RISING: case STS_PRESENCE_RISING:
over_threshold = FALSE;
break; break;
case STS_PRESENCE_LAYDOWN: case STS_PRESENCE_LAYDOWN:
break; break;
case STS_PRESENCE_UNCONSCIOUS: case STS_PRESENCE_UNCONSCIOUS:
@ -1296,8 +1311,14 @@ static void OnYunhornSTSDurationCheckTimerEvent(void *context)
if (over_threshold == TRUE) { if (over_threshold == TRUE) {
sensor_data_ready = 1; sensor_data_ready = 1;
sts_status_color = STS_RED_DARK; if (sts_o7_sensorData.fall_state == STS_PRESENCE_LAYDOWN)
sts_lamp_bar_color = STS_RED_DARK; //sts_lamp_bar_flashing_color; {
sts_status_color = sts_lamp_bar_flashing_color; //STS_RED_BLUE;
sts_lamp_bar_color = sts_lamp_bar_flashing_color; //STS_RED_BLUE;
} else {
sts_status_color = STS_RED_DARK;
sts_lamp_bar_color = STS_RED_DARK; //sts_lamp_bar_flashing_color;
}
SendTxData(); SendTxData();
over_threshold = FALSE; over_threshold = FALSE;
} }