|
|
@@ -1,4 +1,5 @@
|
|
|
#include "user_led.h"
|
|
|
+#include "user_ws2812b.h"
|
|
|
#include "define.h"
|
|
|
#include "stdarg.h"
|
|
|
|
|
|
@@ -7,15 +8,16 @@ tmosTaskID led_task_id = INVALID_TASK_ID;
|
|
|
static uint32_t alarm_stat = 0;
|
|
|
|
|
|
static uint16_t led_task_process_event(uint8_t task_id, uint16_t events);
|
|
|
-static void led_dev_duty(uint16_t duty);
|
|
|
-static void left_dev_duty(uint16_t duty);
|
|
|
-static void right_dev_duty(uint16_t duty);
|
|
|
+static void prvSet_led_duty(LED_TYPE type);
|
|
|
|
|
|
static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
{
|
|
|
- .idx = DEV_LED,
|
|
|
- .set_duty = led_dev_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .idx = RIGHT_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0xFF,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
@@ -30,9 +32,12 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
.off_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
},
|
|
|
{
|
|
|
- .idx = LEFT_LED,
|
|
|
- .set_duty = left_dev_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .idx = DEV_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0xFF,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
@@ -47,9 +52,12 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
.off_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
},
|
|
|
{
|
|
|
- .idx = RIGHT_LED,
|
|
|
- .set_duty = right_dev_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .idx = LEFT_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0xFF,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
@@ -66,193 +74,16 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
};
|
|
|
|
|
|
/*******************************************************************************
|
|
|
- * @函数名称 led_pwm_init
|
|
|
- * @函数说明 初始化
|
|
|
- * @输入参数 无
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void led_pwm_init(void)
|
|
|
-{
|
|
|
- GPIO_InitTypeDef GPIO_InitStructure={0};
|
|
|
- TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
|
|
|
- TIM_OCInitTypeDef TIM_OutputCompareInitStructure;
|
|
|
- TIM_BDTRInitTypeDef BDTR_Structure;
|
|
|
- TIM5_TimeBaseInitTypeDef TIM5_BaseInitStructure;
|
|
|
- TIM5_OCInitTypeDef TIM5_OutputCompareInitStructure;
|
|
|
- TIM5_BDTRInitTypeDef BDTR5_Structure;
|
|
|
-
|
|
|
- LED_GPIO_RCC_ENABLE;
|
|
|
- GPIO_InitStructure.GPIO_Pin = DEV_LED_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(DEV_LED_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LEFT_LED_R_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LEFT_LED_R_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LEFT_LED_G_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LEFT_LED_G_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = RIGHT_LED_R_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(RIGHT_LED_R_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = RIGHT_LED_G_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(RIGHT_LED_G_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- LED_PWM_RCC_ENABLE;
|
|
|
-#ifdef LED_REMAPCONFIG_ENABLE
|
|
|
- LED_REMAPCONFIG_ENABLE;
|
|
|
-#endif
|
|
|
-
|
|
|
- TIM_BaseInitStructure.TIM_Period = TIM_LED_PERIOD;
|
|
|
- TIM_BaseInitStructure.TIM_Prescaler = TIM_LED_PRESCALER - 1;
|
|
|
- TIM_BaseInitStructure.TIM_CounterMode =TIM_CounterMode_Up;
|
|
|
- TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
|
|
- TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
|
|
|
- TIM_TimeBaseInit(TIM_IND_LED,&TIM_BaseInitStructure);
|
|
|
-
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //占空比设置的高电平
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCNPolarity =TIM_OCNPolarity_Low;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OutputState =TIM_OutputState_Enable;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
|
|
|
- TIM_OutputCompareInitStructure.TIM_Pulse = 0;
|
|
|
-
|
|
|
- BDTR_Structure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
|
|
|
- BDTR_Structure.TIM_Break = TIM_Break_Disable;
|
|
|
- BDTR_Structure.TIM_BreakPolarity = TIM_BreakPolarity_High;
|
|
|
- BDTR_Structure.TIM_DeadTime = 0x80;
|
|
|
- BDTR_Structure.TIM_LOCKLevel = TIM_LOCKLevel_1;
|
|
|
- BDTR_Structure.TIM_OSSIState = TIM_OSSIState_Enable;
|
|
|
- BDTR_Structure.TIM_OSSRState = TIM_OSSRState_Enable;
|
|
|
- TIM_BDTRConfig(TIM_IND_LED,&BDTR_Structure);
|
|
|
-
|
|
|
- LEFT_LED_R_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- LEFT_LED_G_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- RIGHT_LED_R_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- RIGHT_LED_G_INIT(&TIM_OutputCompareInitStructure);
|
|
|
-
|
|
|
-
|
|
|
- TIM5_BaseInitStructure.TIM_Period = TIM_LED_PERIOD;
|
|
|
- TIM5_BaseInitStructure.TIM_Prescaler = TIM_LED_PRESCALER - 1;
|
|
|
- TIM5_BaseInitStructure.TIM_CounterMode =TIM_CounterMode_Up;
|
|
|
- TIM5_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
|
|
- TIM5_BaseInitStructure.TIM_RepetitionCounter = 0;
|
|
|
- TIM5_TimeBaseInit(&TIM5_BaseInitStructure);
|
|
|
-
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCMode =TIM_OCMode_PWM2; //占空比设置的高电平
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCNPolarity =TIM_OCNPolarity_Low;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OutputState =TIM_OutputState_Enable;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_Pulse = 0;
|
|
|
-
|
|
|
- BDTR5_Structure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
|
|
|
- BDTR5_Structure.TIM_Break = TIM_Break_Disable;
|
|
|
- BDTR5_Structure.TIM_BreakPolarity = TIM_BreakPolarity_High;
|
|
|
- BDTR5_Structure.TIM_DeadTime = 0x80;
|
|
|
- BDTR5_Structure.TIM_LOCKLevel = TIM_LOCKLevel_1;
|
|
|
- BDTR5_Structure.TIM_OSSIState = TIM_OSSIState_Enable;
|
|
|
- BDTR5_Structure.TIM_OSSRState = TIM_OSSRState_Enable;
|
|
|
- TIM5_BDTRConfig(&BDTR5_Structure);
|
|
|
-
|
|
|
- DEV_LED_INIT(&TIM5_OutputCompareInitStructure);
|
|
|
-
|
|
|
-
|
|
|
- DEV_LED_RUN;
|
|
|
- LEFT_LED_R_RUN;
|
|
|
- LEFT_LED_G_RUN;
|
|
|
- RIGHT_LED_R_RUN;
|
|
|
- RIGHT_LED_G_RUN;
|
|
|
-
|
|
|
- DEV_LED_COMPARE(0);
|
|
|
- LEFT_LED_R_COMPARE(0);
|
|
|
- LEFT_LED_G_COMPARE(0);
|
|
|
- LEFT_LED_R_COMPARE(0);
|
|
|
- LEFT_LED_G_COMPARE(0);
|
|
|
-
|
|
|
- TIM_Cmd(TIM_DEV_LED,ENABLE);
|
|
|
- TIM_Cmd(TIM_IND_LED,ENABLE);
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 led_dev_duty
|
|
|
- * @函数说明 设置设备指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
+ * @函数名称 prvSet_led_duty
|
|
|
+ * @函数说明 设置指示灯亮度
|
|
|
+ * @输入参数 type:灯下标
|
|
|
* @输出参数 无
|
|
|
* @返回参数 无
|
|
|
*******************************************************************************/
|
|
|
-static void led_dev_duty(uint16_t duty)
|
|
|
+static void prvSet_led_duty(LED_TYPE type)
|
|
|
{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- DEV_LED_COMPARE(value);
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 left_dev_duty
|
|
|
- * @函数说明 设置左边指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void left_dev_duty(uint16_t duty)
|
|
|
-{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- if(led_work[LEFT_LED].color == RED_LED)
|
|
|
- {
|
|
|
- LEFT_LED_G_COMPARE(LED_OFF_DUTY);
|
|
|
- LEFT_LED_R_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LEFT_LED].color == GREEN_LED)
|
|
|
- {
|
|
|
- LEFT_LED_R_COMPARE(LED_OFF_DUTY);
|
|
|
- LEFT_LED_G_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LEFT_LED].color == YELLOW_LED)
|
|
|
- {
|
|
|
- LEFT_LED_R_COMPARE(duty);
|
|
|
- LEFT_LED_G_COMPARE(duty);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 right_dev_duty
|
|
|
- * @函数说明 设置右边指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void right_dev_duty(uint16_t duty)
|
|
|
-{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- if(led_work[RIGHT_LED].color == RED_LED)
|
|
|
- {
|
|
|
- RIGHT_LED_G_COMPARE(LED_OFF_DUTY);
|
|
|
- RIGHT_LED_R_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[RIGHT_LED].color == GREEN_LED)
|
|
|
- {
|
|
|
- RIGHT_LED_R_COMPARE(LED_OFF_DUTY);
|
|
|
- RIGHT_LED_G_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[RIGHT_LED].color == YELLOW_LED)
|
|
|
- {
|
|
|
- RIGHT_LED_R_COMPARE(duty);
|
|
|
- RIGHT_LED_G_COMPARE(duty);
|
|
|
- }
|
|
|
+ vUser_ws2812b_set_stat(type, led_work[type].color.red, led_work[type].color.green,
|
|
|
+ led_work[type].color.blue, led_work[type].duty_value);
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************
|
|
|
@@ -270,13 +101,15 @@ static void led_invert(led_work_s *led_work)
|
|
|
{
|
|
|
led_work->single_flicker_period = led_work->flicker_period;
|
|
|
led_work->stat = LED_STAT_ON;
|
|
|
- led_work->set_duty(LED_ON_DUTY);
|
|
|
+ led_work->duty_value = 100;
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else if(led_work->single_flicker_period == (led_work->flicker_period - led_work->flicker_onperiod))
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
led_work->stat = LED_STAT_OFF;
|
|
|
- led_work->set_duty(LED_OFF_DUTY);
|
|
|
+ led_work->duty_value = 0;
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
led_work->flicker_count--;
|
|
|
}
|
|
|
else{
|
|
|
@@ -285,7 +118,8 @@ static void led_invert(led_work_s *led_work)
|
|
|
}
|
|
|
else{
|
|
|
led_work->workStat = LED_WORK_OFF;
|
|
|
- led_work->set_duty(LED_OFF_DUTY);
|
|
|
+ led_work->duty_value = 0;
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -306,15 +140,15 @@ static void led_heart(led_work_s *led_work)
|
|
|
led_work->single_flicker_period = led_work->flicker_period;
|
|
|
led_work->duty_value = 0;
|
|
|
led_work->single_off_durationTime = led_work->off_durationTime;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
led_work->flicker_count--;
|
|
|
}
|
|
|
else if(led_work->single_flicker_period == off_period)
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
- led_work->duty_value = led_work->duty_on;
|
|
|
+ led_work->duty_value = 100;
|
|
|
led_work->single_on_durationTime = led_work->on_durationTime;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else{
|
|
|
if(led_work->single_flicker_period > off_period)
|
|
|
@@ -323,7 +157,7 @@ static void led_heart(led_work_s *led_work)
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
led_work->duty_value = (led_work->flicker_period - led_work->single_flicker_period) * 100 / led_work->flicker_onperiod;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else{
|
|
|
led_work->single_off_durationTime--;
|
|
|
@@ -334,7 +168,7 @@ static void led_heart(led_work_s *led_work)
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
led_work->duty_value = led_work->single_flicker_period * 100 / off_period;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else{
|
|
|
led_work->single_on_durationTime--;
|
|
|
@@ -424,7 +258,7 @@ static uint16_t led_task_process_event(uint8_t task_id, uint16_t events)
|
|
|
* @输出参数 无
|
|
|
* @返回参数 无
|
|
|
*******************************************************************************/
|
|
|
-bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat, ...)
|
|
|
+bool set_led_indication(LED_TYPE type, uint32_t color, LED_WORK_STAT work_stat, ...)
|
|
|
{
|
|
|
bool stat = false;
|
|
|
|
|
|
@@ -433,22 +267,19 @@ bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat,
|
|
|
goto exit;
|
|
|
}
|
|
|
|
|
|
- if(color > YELLOW_LED)
|
|
|
- {
|
|
|
- goto exit;
|
|
|
- }
|
|
|
+ led_work[type].color.red = (color >> 16) & 0xFF;
|
|
|
+ led_work[type].color.green = (color >> 8) & 0xFF;
|
|
|
+ led_work[type].color.blue = color & 0xFF;
|
|
|
|
|
|
if(work_stat == LED_WORK_OFF || work_stat == LED_WORK_ON)
|
|
|
{
|
|
|
- led_work[type].color = color;
|
|
|
led_work[type].workStat = work_stat;
|
|
|
- led_work[type].set_duty((work_stat == LED_WORK_ON) ? LED_ON_DUTY : LED_OFF_DUTY);
|
|
|
-
|
|
|
+ led_work[type].duty_value = (work_stat == LED_WORK_ON) ? 100 : 0;
|
|
|
+ prvSet_led_duty(led_work[type].idx);
|
|
|
stat = true;
|
|
|
}
|
|
|
else if(work_stat == LED_WORK_INVERT || work_stat == LED_WORK_BREATHE)
|
|
|
{
|
|
|
- led_work[type].color = color;
|
|
|
led_work[type].workStat = work_stat;
|
|
|
led_work[type].duty_value = 0;
|
|
|
led_work[type].stat = LED_STAT_OFF;
|
|
|
@@ -474,6 +305,21 @@ bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat,
|
|
|
|
|
|
va_end(ap);
|
|
|
|
|
|
+ for(int i = 0; i < LED_TYPE_MAX; i++)
|
|
|
+ {
|
|
|
+ if(led_work[i].workStat == LED_WORK_INVERT
|
|
|
+ || led_work[i].workStat == LED_WORK_BREATHE)
|
|
|
+ {
|
|
|
+ led_work[i].single_flicker_period = led_work[i].flicker_period;
|
|
|
+ led_work[i].duty_value = 0;
|
|
|
+ if(led_work[i].workStat == LED_WORK_BREATHE)
|
|
|
+ {
|
|
|
+ led_work[i].single_on_durationTime = led_work[i].on_durationTime;
|
|
|
+ led_work[i].single_off_durationTime = led_work[i].off_durationTime;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
stat = true;
|
|
|
}
|
|
|
exit:
|
|
|
@@ -491,7 +337,6 @@ void led_task_init(void)
|
|
|
{
|
|
|
led_task_id = TMOS_ProcessEventRegister(led_task_process_event);
|
|
|
PRINT("led_task_id=%d\n", led_task_id);
|
|
|
- led_pwm_init();
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************
|
|
|
@@ -521,12 +366,13 @@ void vUser_led_set_view_stat(uint8_t idx, led_view_stat_e stat)
|
|
|
{
|
|
|
switch(stat)
|
|
|
{
|
|
|
- case LED_VIEW_ALARM:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, YELLOW_LED, LED_WORK_INVERT, 1000, 500, 0);break; //报警
|
|
|
- case LED_VIEW_WARN:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);break; //警告
|
|
|
- case LED_VIEW_KEY_ELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, RED_LED, LED_WORK_ON);break; //有钥匙并上锁
|
|
|
- case LED_VIEW_NOKEY_ELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, RED_LED, LED_WORK_BREATHE, 500, 250, 0, 100, 100);break; //无钥匙并上锁
|
|
|
- case LED_VIEW_KEY_NOELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, GREEN_LED, LED_WORK_BREATHE, 500, 250, 0, 100, 100);break; //有钥匙没上锁
|
|
|
- case LED_VIEW_NOKEY_NOELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, GREEN_LED, LED_WORK_ON);break; //无钥匙没上锁
|
|
|
+ case LED_VIEW_ALARM:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, LED_VIEW_ALARM_COLOR, LED_WORK_INVERT, 1000, 500, 0);break; //报警
|
|
|
+ case LED_VIEW_WARN:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, LED_VIEW_WARN_COLOR, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);break; //警告
|
|
|
+ case LED_VIEW_ELECT_FAUIL:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, LED_VIEW_ELECT_FAULT_COLOR, LED_WORK_INVERT, 200, 100, 0);break; //电磁锁故障
|
|
|
+ case LED_VIEW_KEY_ELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, LED_VIEW_NOKEY_ELECT_COLOR, LED_WORK_ON);break; //有钥匙并上锁
|
|
|
+ case LED_VIEW_NOKEY_ELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, LED_VIEW_NOKEY_ELECT_COLOR, LED_WORK_BREATHE, 500, 250, 0, 100, 100);break; //无钥匙并上锁
|
|
|
+ case LED_VIEW_KEY_NOELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, LED_VIEW_KEY_NOELECT_COLOR, LED_WORK_BREATHE, 500, 250, 0, 100, 100);break; //有钥匙没上锁
|
|
|
+ case LED_VIEW_NOKEY_NOELECT:set_led_indication((idx == LEFT_IDX)?LEFT_LED:RIGHT_LED, LED_VIEW_NOKEY_NOELECT_COLOR, LED_WORK_ON);break; //无钥匙没上锁
|
|
|
default:break;
|
|
|
}
|
|
|
}
|
|
|
@@ -552,31 +398,36 @@ void vUser_led_set_alarm_view(led_all_alarm_stat_e alarmStat, bool stat)
|
|
|
|
|
|
if((alarm_stat & (1 << LED_ALL_ALARM_RST)) != 0)
|
|
|
{
|
|
|
- for(int i = 1; i < LED_TYPE_MAX; i++)
|
|
|
+ for(int i = 0; i < LED_TYPE_MAX; i++)
|
|
|
{
|
|
|
- set_led_indication(i, YELLOW_LED, LED_WORK_INVERT, 1000, 500, 0, 0, 0);
|
|
|
+ set_led_indication(i, WS2812B_RST_RGB, LED_WORK_INVERT, 1000, 500, 0, 0, 0);
|
|
|
}
|
|
|
}
|
|
|
else if((alarm_stat & (1 << LED_ALL_ALARM_BLE)) != 0)
|
|
|
{
|
|
|
- for(int i = 1; i < LED_TYPE_MAX; i++)
|
|
|
+ for(int i = 0; i < LED_TYPE_MAX; i++)
|
|
|
{
|
|
|
- set_led_indication(i, GREEN_LED, LED_WORK_INVERT, 200, 100, 0, 0, 0);
|
|
|
+ set_led_indication(i, WS2812B_BLE_RGB, LED_WORK_INVERT, 200, 100, 0, 0, 0);
|
|
|
}
|
|
|
}
|
|
|
else if((alarm_stat & (1 << LED_ALL_ALARM_CAN_IDX_ERROR)) != 0)
|
|
|
{
|
|
|
- set_led_indication(LEFT_LED, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
- set_led_indication(RIGHT_LED, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ for(int i = 0; i < LED_TYPE_MAX; i++)
|
|
|
+ {
|
|
|
+ set_led_indication(i, WS2812B_CANID_ERROR_RGB, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ }
|
|
|
}
|
|
|
else if((alarm_stat & (1 << LED_ALL_ALARM_OFFLINE)) != 0)
|
|
|
{
|
|
|
- set_led_indication(LEFT_LED, YELLOW_LED, LED_WORK_BREATHE, 300, 150, 0, 100, 100);
|
|
|
- set_led_indication(RIGHT_LED, YELLOW_LED, LED_WORK_BREATHE, 300, 150, 0, 100, 100);
|
|
|
+ for(int i = 0; i < LED_TYPE_MAX; i++)
|
|
|
+ {
|
|
|
+ set_led_indication(i, WS2812B_OFFLINE_RGB, LED_WORK_BREATHE, 300, 150, 0, 100, 100);
|
|
|
+ }
|
|
|
}
|
|
|
else if(alarm_stat == 0)
|
|
|
{
|
|
|
- vUser_led_set_view_stat(LEFT_LED, led_work[LEFT_LED].viewStat);
|
|
|
- vUser_led_set_view_stat(RIGHT_LED, led_work[RIGHT_LED].viewStat);
|
|
|
+ set_led_indication(DEV_LED, WS2812B_NORMAL_RGB, LED_WORK_INVERT, 5000, 2500, 0);
|
|
|
+ vUser_led_set_view_stat(LEFT_IDX, led_work[LEFT_IDX].viewStat);
|
|
|
+ vUser_led_set_view_stat(RIGHT_IDX, led_work[RIGHT_IDX].viewStat);
|
|
|
}
|
|
|
}
|