diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c index 2b76c68..6f897ab 100644 --- a/Core/Src/sts_lamp_bar.c +++ b/Core/Src/sts_lamp_bar.c @@ -82,18 +82,19 @@ extern SysTime_t mems_event_time; extern volatile uint32_t event_start_time, event_stop_time; extern volatile uint32_t event_door_lock_start_time, event_door_lock_stop_time; volatile uint8_t luminance_level = DEFAULT_LUMINANCE_LEVEL; -void ws2812b_data_transfer(uint8_t *src, uint32_t len); -void ws2812b_light_custom(uint8_t red, uint8_t green, uint8_t blue); -void ws2812b_light_all_with_lum_level(uint8_t color, uint8_t lum_level); -void ws2812b_light_all(uint8_t color); +static void ws2812b_data_transfer(uint8_t *src, uint32_t len); +static void ws2812b_light_custom(uint8_t red, uint8_t green, uint8_t blue); +static void sts_test_color_with_lum_level(void); +static void ws2812b_light_all_with_lum_level(uint8_t color, uint8_t lum_level); +static void ws2812b_light_all(uint8_t color); -void ws2812b_data_transfer(uint8_t *src, uint32_t len) +static void ws2812b_data_transfer(uint8_t *src, uint32_t len) { uint8_t i =0; uint32_t bits = 0; uint32_t bytes = 0; - //HAL_TIM_PWM_Stop_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL); - memset(ws2812b_crr_value,0,sizeof(ws2812b_crr_value)); + HAL_TIM_PWM_Stop_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL); + UTIL_MEM_set_8(ws2812b_crr_value,0,sizeof(ws2812b_crr_value)); while(len--) { for (i=0; i < 8; i++) @@ -113,10 +114,10 @@ void ws2812b_data_transfer(uint8_t *src, uint32_t len) } -void ws2812b_light_custom(uint8_t red, uint8_t green, uint8_t blue) +static void ws2812b_light_custom(uint8_t red, uint8_t green, uint8_t blue) { uint8_t i = 0; - memset(ws2812b_data, 0, sizeof(ws2812b_data)); + UTIL_MEM_set_8(ws2812b_data, 0, sizeof(ws2812b_data)); for (i=0; i<(LED_COUNT); i++) { ws2812b_data[3*i] = green; @@ -127,23 +128,23 @@ void ws2812b_light_custom(uint8_t red, uint8_t green, uint8_t blue) } void ws2812b_light_one_rgb(uint8_t red, uint8_t green, uint8_t blue, uint8_t idx) { - uint8_t i = 0; - memset(ws2812b_data, 0, sizeof(ws2812b_data)); - for (i=0; i<(LED_COUNT); i++) + //uint8_t i = 0; + UTIL_MEM_set_8(ws2812b_data, 0, sizeof(ws2812b_data)); + //for (i=0; i<(LED_COUNT); i++) { - ws2812b_data[3*i] = green; - ws2812b_data[3*i+1] = red; - ws2812b_data[3*i+2] = blue; + ws2812b_data[3*idx] = green; + ws2812b_data[3*idx+1] = red; + ws2812b_data[3*idx+2] = blue; } ws2812b_data_transfer(ws2812b_data, sizeof(ws2812b_data)); } -void ws2812b_light_all_with_lum_level(uint8_t color, uint8_t lum_level) +static void ws2812b_light_all_with_lum_level(uint8_t color, uint8_t lum_level) { luminance_level = lum_level; ws2812b_light_all(color); } -void ws2812b_light_all(uint8_t color) +static void ws2812b_light_all(uint8_t color) { switch(color) { @@ -182,17 +183,16 @@ void STS_Lamp_Bar_Init(void) void STS_Lamp_Bar_Scoller(uint8_t color, uint8_t lum_level) { uint8_t i =0; - memset(ws2812b_data, 0, sizeof(ws2812b_data)); - for(i=0; i < (LED_COUNT+1); i++) + UTIL_MEM_set_8(ws2812b_data, 0, sizeof(ws2812b_data)); + for(i=0; i < (LED_COUNT); i++) { + ws2812b_data[3*i] = color_rgb[color][1]*lum_level; + ws2812b_data[3*i+1] = color_rgb[color][0]*lum_level; + ws2812b_data[3*i+2] = color_rgb[color][2]*lum_level; + ws2812b_data_transfer(ws2812b_data, sizeof(ws2812b_data)); HAL_Delay(20); - - if (i>4)&0x0f, low4=sts_lamp_bar_color&0x0f; -#if 0 - luminance_level += 10; - luminance_level %= 60; - luminance_level = MAX(10,luminance_level); -#endif -if (last_sts_lamp_bar_color != sts_lamp_bar_color) -{ - APP_LOG(TS_OFF, VLEVEL_M, "\r\n----Lamp Bar Color changed from %02x to %02x \r\n", last_sts_lamp_bar_color, sts_lamp_bar_color); - last_sts_lamp_bar_color = sts_lamp_bar_color; -} + + //if (last_sts_lamp_bar_color != sts_lamp_bar_color) + { + if (last_sts_lamp_bar_color != sts_lamp_bar_color) + { + APP_LOG(TS_OFF, VLEVEL_M, "\r\n----Lamp Bar Color changed from %02x to %02x \r\n", last_sts_lamp_bar_color, sts_lamp_bar_color); + last_sts_lamp_bar_color = sts_lamp_bar_color; + } + UTIL_TIMER_Stop(&STSLampBarColorTimer); if (high4==0) @@ -1283,11 +1279,12 @@ if (last_sts_lamp_bar_color != sts_lamp_bar_color) #if defined(FADEOUT) if ((sts_rss_result == STS_RESULT_MOTION)) //||(sts_reed_hall_result == STS_Status_Door_Close )) { - + //STS_Lamp_Bar_Set_STS_RGB_Color_FadeOut(STS_COLOR_DEFAULT_OCCUPY, luminance_level, LED_COUNT/2); STS_Lamp_Bar_Set_STS_RGB_Color_FadeOut(sts_lamp_bar_color, luminance_level, LED_COUNT/2); } else //if ((sts_rss_result == STS_RESULT_NO_MOTION)||(sts_reed_hall_result == STS_Status_Door_Open )){ { STS_Lamp_Bar_Set_STS_RGB_Color_FadeIn(sts_lamp_bar_color, luminance_level, LED_COUNT/2); + //STS_Lamp_Bar_Set_STS_RGB_Color_FadeIn(STS_COLOR_DEFAULT_VACANT, luminance_level, LED_COUNT/2); } #else STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level); @@ -1299,7 +1296,7 @@ if (last_sts_lamp_bar_color != sts_lamp_bar_color) r_b = !r_b; } UTIL_TIMER_Start(&STSLampBarColorTimer); -//} +} } @@ -3206,11 +3203,11 @@ void OnRestoreSTSCFGContextProcess(void) } sts_work_mode = sts_cfg_nvm.work_mode; - sts_lamp_bar_color = STS_GREEN; sts_service_mask = sts_cfg_nvm.sts_service_mask; sts_lamp_bar_flashing_color = sts_cfg_nvm.alarm_lamp_bar_flashing_color; sts_color_occupy_vacant = sts_cfg_nvm.color_occupy_vacant; sts_color_severity_l2_l3 = sts_cfg_nvm.color_severity_l2_l3; + sts_lamp_bar_color = STS_COLOR_DEFAULT_VACANT; if (sts_work_mode == STS_UNI_MODE){ sts_presence_fall_detection =TRUE; } else {