谁能帮我解读下这个函数块?
void rgb_led_demo_func(void *priv)
{
static u16 mode1_timer = 0;
static u8 mode1_mode = RGB_MODE_1;
static u8 timer = 0;
u8 mode = led.light_mode;
#ifdef T1MS_KEY_EN
void deal_for_key(void);
deal_for_key();
#endif
if(mode == RGB_MODE_OFF)
return;
led.timer++;
if(led.timer > 2000)
{
led.timer = 0;
led.direction++;
led.direction %= 2;
if(led.direction == 0)
{
led.num++;
if(led.num > 2)
{
led.num = 1;
}
}
}
switch_color_loop(&led.quan.color[0],CFG_COLOR_SPEED,CFG_COLOR_WAIT_TIME);
switch_color_loop(&led.quan.color[1],CFG_COLOR_SPEED,CFG_COLOR_WAIT_TIME);
switch_color_loop(&led.quan.color[2],CFG_COLOR_SPEED,CFG_COLOR_WAIT_TIME);
led.m_quan.color[0] = led.quan.color[0];
led.m_quan.color[1] = led.quan.color[1];
led.m_quan.color[2] = led.quan.color[2];
led.s_quan.color[0] = led.quan.color[0];
led.s_quan.color[1] = led.quan.color[1];
led.s_quan.color[2] = led.quan.color[2];
if(mode == RGB_MODE_AUTO)
{
mode1_timer++;
if(mode1_timer > 1000*5)
{
mode1_timer = 0;
mode1_mode++;
if(mode1_mode >= RGB_MODE_MAX)
mode1_mode = RGB_MODE_1;
}
mode = mode1_mode;
}
switch(mode)
{
#ifdef TEST_EN
case RGB_MODE_TEST_RED:
case RGB_MODE_TEST_GREED:
case RGB_MODE_TEST_BLUE:
case RGB_MODE_TEST_RED_BLUE:
case RGB_MODE_TEST_RED_GREEN:
case RGB_MODE_TEST_GREED_BLUE:
case RGB_MODE_TEST_GREED_GREED_BLUE:
set_led_test_mode( led.cloor_red,led.cloor_green,led.cloor_blue);
break;
#endif
case RGB_MODE_1:
b_zhu_quan_func();
m_zhu_quan_func();
s_zhu_quan_func();
break;
case RGB_MODE_2:
b_zhu_quan_long_func();
m_zhu_quan_func();
s_zhu_quan_long_func();
break;
case RGB_MODE_3:
b_quan_func();
m_quan_func();
s_quan_func();
break;
case RGB_MODE_4:
b_flash_quan_func();
m_flash_quan_func();
s_flash_quan_func();
break;
case RGB_MODE_5:
b_8_func();
m_8_func();
s_8_func();
break;
case RGB_MODE_6:
b_quan_3color_func();
m_quan_3color_func();
s_quan_3color_func();
break;
}
}









