123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605 |
- #include "u_light_ctrl.h"
- #include "u_effect_color.h"
- #include "u_effect_rhythm.h"
- #include "u_app_handler.h"
- #include "u_effect_normal.h"
- #include "u_app_handler.h"
- #include "u_pwm_drive.h"
- void light_power_set(uint8_t set_state)
- {
- if (set_state == GLO_EN)
- {
- g_light_para.power_st = GLO_EN;
- if (g_light_para.app_mode[0] < LIGHT_APP_MODE_RC_MIN)
- {
- light_mode_set(g_light_para.app_mode);
- }
- else
- {
- rc_mode_enter(g_light_para.rc_mode);
- }
- }
- else
- {
- g_light_para.power_st = GLO_DIS;
- u_rhythm_timer_ctrl(GLO_DIS);
- light_effect_timer_stop();
- light_set_color(0x00);
-
- }
-
- U_UART_PRINTF("power_st = %d\n", g_light_para.power_st);
- }
- void light_speed_ctrl(uint8_t light_speed)
- {
- // if (change_speed <= 0 || change_speed > 11 || g_light_para.effect == LIGHT_EFFECT_STATIC || g_light_para.effect == LIGHT_EFFECT_RHYTHM)
- // {
- // return;
- // }
- g_light_para.app_speed = light_speed;
- g_light_para.speed = (110 - light_speed) / 10;
- U_UART_PRINTF("g_speed = %d\n", g_light_para.speed);
- if (g_light_para.speed > LIGHT_SPEED_MAX)
- {
- light_effect_timer_stop();
- return;
- }
- switch (g_light_para.effect)
- {
- // case LIGHT_EFFECT_NULL:
- // {
- // u_analog_timer_stop(&g_ag_timer_light_effect);
- // }
- // break;
- case LIGHT_EFFECT_JUMP:
- {
- light_mode_jump_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
- }
- break;
- case LIGHT_EFFECT_GRADUAL:
- {
- light_mode_gradual_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
- }
- break;
- case LIGHT_EFFECT_BREATH:
- {
- light_mode_breath_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
- }
- break;
- case LIGHT_EFFECT_BLINK:
- {
- light_mode_blink_cfg(&g_light_info, 0, 0, 0, g_light_para.speed, 0);
- }
- break;
-
- default:
- {
- U_UART_PRINTF("speed_false\n");
- //u_analog_timer_stop(&g_ag_timer_light_effect);
- }
- break;
- }
- }
- void light_bright_ctrl(uint8_t light_bright)
- {
- g_light_para.bright = light_bright;
- U_UART_PRINTF("g_bright = %d\n", g_light_para.bright);
- switch (g_light_para.effect)
- {
- case LIGHT_EFFECT_JUMP:
- {
- light_mode_jump_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
- }
- break;
- case LIGHT_EFFECT_GRADUAL:
- {
- light_mode_gradual_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
- }
- break;
- case LIGHT_EFFECT_STATIC:
- {
- light_mode_static_cfg(&g_light_info, 0, g_light_para.bright);
- }
- break;
- case LIGHT_EFFECT_BREATH:
- {
- light_mode_breath_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
- }
- break;
- case LIGHT_EFFECT_BLINK:
- {
- light_mode_blink_cfg(&g_light_info, 0, 0, 0, 0, g_light_para.bright);
- }
- break;
-
- default:
- {
- //dream_mode_rainbow_spectra_cfg(&g_effect_dream_rainbow_info, 0, 0, 0, 0);
- }
- break;
- }
- }
- void light_rhythm_enter(uint8_t rhythm_mode)
- {
- g_light_para.rhythm_mode = rhythm_mode;
- light_effect_timer_stop();
- u_rhythm_timer_ctrl(GLO_EN);
- app_rhythm_val_up(0);
- switch (rhythm_mode)
- {
- case RHYTHM_MODE_STOP:
- {
- u_rhythm_timer_ctrl(GLO_DIS);
- }
- break;
- case RHYTHM_MODE_GRADUAL_7:
- {
- //light_rhythm_mode_one_clr_cfg(&g_normal_rhythm, &g_light_para.one_rhythm_clr, NULL);
- light_rhythm_mode_gradual_cfg(&g_normal_rhythm, app_static_clr, 7, NULL);
- }
- break;
- case RHYTHM_MODE_JUMP_7://RHYTHM_MODE_JUMP_7:
- {
- light_rhythm_mode_jump_cfg(&g_normal_rhythm, base_clr, 7, NULL);
- }
- break;
- case RHYTHM_MODE_FADE_7://RHYTHM_MODE_GRADUAL_7:
- {
- light_rhythm_mode_fade_cfg(&g_normal_rhythm, base_clr, 7, NULL);
- }
- break;
- case RHYTHM_MODE_JUMP_3:
- {
- light_rhythm_mode_jump_cfg(&g_normal_rhythm, base_clr, 3, NULL);
- }
- break;
- case RHYTHM_MODE_FADE_3:
- {
- light_rhythm_mode_fade_cfg(&g_normal_rhythm, base_clr, 3, NULL);
- }
- break;
-
- default:
- {
- u_rhythm_timer_ctrl(GLO_DIS);
- }
- break;
- }
- U_UART_PRINTF("Rhythm_mode = 0x%X\n", rhythm_mode);
-
- }
- void rc_mode_enter(uint8_t rc_mode)
- {
- uint8_t cnt_tmp=0;
- u_rhythm_timer_ctrl(GLO_DIS);//节奏控制
- g_light_para.rc_mode = rc_mode;
- U_UART_PRINTF("s_rc_mode = %d\n", g_light_para.rc_mode);
-
-
- switch(g_light_para.rc_mode)
- {
- case RC_MODE_COLOR_R:
- case RC_MODE_COLOR_G:
- case RC_MODE_COLOR_B:
- case RC_MODE_COLOR_W:
- case RC_MODE_COLOR_1:
- case RC_MODE_COLOR_2:
- case RC_MODE_COLOR_3:
- case RC_MODE_COLOR_4:
- case RC_MODE_COLOR_5:
- case RC_MODE_COLOR_6:
- case RC_MODE_COLOR_7:
- case RC_MODE_COLOR_8:
- case RC_MODE_COLOR_9:
- case RC_MODE_COLOR_10:
- case RC_MODE_COLOR_11:
- case RC_MODE_COLOR_12:
- {
-
- light_mode_static_cfg(&g_light_info, &rc_static_clr[g_light_para.rc_mode], g_light_para.bright);
-
- g_light_para.app_mode[0] = LIGHT_APP_MODE_RC_STATIC;
- }
- break;
- //g_light_para.app_mode[0] = LIGHT_APP_MODE_RC_DYNAMIC; //bug
- case RC_MODE_FLASH:
- {
- static uint8_t s_flash_color_ind = 0;
- cnt_tmp = ++s_flash_color_ind;
- s_flash_color_ind = cnt_tmp % 7;
- light_mode_jump_cfg(&g_light_info, &base_clr[s_flash_color_ind], 1, g_light_para.speed, g_light_para.bright);
- U_UART_PRINTF("s_flash_color_ind = %d\n", s_flash_color_ind);
- }
- break;
- case RC_MODE_STROBE:
- {
- static uint8_t s_strobe_color_ind = 0;
- cnt_tmp = ++s_strobe_color_ind;
- s_strobe_color_ind = cnt_tmp % 7;
- light_mode_blink_cfg(&g_light_info, &base_clr[s_strobe_color_ind], 1, 5, g_light_para.speed, g_light_para.bright);
-
- }
- break;
- case RC_MODE_FADE:
- {
- static uint8_t s_fade_color_ind = 0;
- cnt_tmp = ++s_fade_color_ind;
- s_fade_color_ind =cnt_tmp % 2;
- if (s_fade_color_ind)
- {
- light_mode_breath_cfg(&g_light_info, &rc_clr_smooth[0], 7, g_light_para.speed, g_light_para.bright);
- }
- else
- {
- light_mode_breath_cfg(&g_light_info, &base_clr[0], 3, g_light_para.speed, g_light_para.bright);
- }
-
- }
- break;
- case RC_MODE_SMOOTH:
- {
- light_mode_gradual_cfg(&g_light_info, rc_clr_smooth, 7, g_light_para.speed, g_light_para.bright);
- }
- break;
- default:
- {
-
- }
- break;
- }
- }
- /********************************* ir_decode **********************************/
- #include "u_time.h"
- void ir_decode(const uint8_t *ir_code)
- {
- #define RC_USER_CODE_0 (0x00)
- // #define RC_USER_CODE_1 (0xFF) //
- #define RC_USER_CODE_1 (0xEF)
- #define RC_USER_CODE_2 (0x7F)
-
- if (ir_code[0] == RC_USER_CODE_0 && (ir_code[1] == RC_USER_CODE_1 || ir_code[1] == RC_USER_CODE_2))
- {
- if (ir_code[2] == (~ir_code[3] & 0xff))
- {
- //U_UART_PRINTF("ir_code = %02X\n", ir_code[2]);
-
- if (g_light_para.power_st == GLO_DIS && ir_code[2] != RC_CODE_ON)
- {
- return;
- }
- switch(ir_code[2])
- {
- case RC_CODE_UP:
- {
- if (g_light_para.effect == LIGHT_EFFECT_STATIC)
- {
- g_light_para.bright = (g_light_para.bright + 10) >= LIGHT_BRIGHT_MAX ? LIGHT_BRIGHT_MAX : (g_light_para.bright + 10);
- light_bright_ctrl(g_light_para.bright);
-
- }
- else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
- {
- //rhythm_sensit_ctrl(g_light_para.app_music_mode, -2, 0);
- }
- else
- {
- g_light_para.app_speed = (g_light_para.app_speed + 10) >= LIGHT_APP_SPEED_MAX ? LIGHT_APP_SPEED_MAX : (g_light_para.app_speed + 10);
- light_speed_ctrl(g_light_para.app_speed);
- }
- }
- break;
- case RC_CODE_DOWN:
- {
- if (g_light_para.effect == LIGHT_EFFECT_STATIC)
- {
- g_light_para.bright = (g_light_para.bright - 10) <= LIGHT_BRIGHT_MIN ? LIGHT_BRIGHT_MIN : (g_light_para.bright - 10);
- light_bright_ctrl(g_light_para.bright);
- }
- else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
- {
- //rhythm_sensit_ctrl(g_light_para.app_music_mode, -2, 0);
- }
- else
- {
- g_light_para.app_speed = (g_light_para.app_speed - 10) < LIGHT_SPEED_MIN ? LIGHT_SPEED_MIN : (g_light_para.app_speed - 10);
- light_speed_ctrl(g_light_para.app_speed);
- }
- }
- break;
- case RC_CODE_OFF:
- {
- light_power_set(GLO_DIS);
- light_state_upload();
- }
- break;
-
- case RC_CODE_ON:
- {
- light_power_set(GLO_EN);
- light_state_upload();
- }
- break;
-
- case RC_CODE_FLASH:
- {
- rc_mode_enter(RC_MODE_FLASH);
- }
- break;
- case RC_CODE_STROBE:
- {
- rc_mode_enter(RC_MODE_STROBE);
- }
- break;
- case RC_CODE_FADE:
- {
- rc_mode_enter(RC_MODE_FADE);
- }
- break;
- case RC_CODE_SMOOTH:
- {
- rc_mode_enter(RC_MODE_SMOOTH);
- }
- break;
-
- case RC_CODE_COLOR_R:
- {
- rc_mode_enter(RC_MODE_COLOR_R);
- }
- break;
- case RC_CODE_COLOR_G:
- {
- rc_mode_enter(RC_MODE_COLOR_G);
- }
- break;
- case RC_CODE_COLOR_B:
- {
- rc_mode_enter(RC_MODE_COLOR_B);
- }
- break;
- case RC_CODE_W:
- {
- rc_mode_enter(RC_MODE_COLOR_W);
- }
- break;
-
- case RC_CODE_COLOR_1:
- {
- rc_mode_enter(RC_MODE_COLOR_1);
- }
- break;
- case RC_CODE_COLOR_2:
- {
- rc_mode_enter(RC_MODE_COLOR_2);
- }
- break;
- case RC_CODE_COLOR_3:
- {
- rc_mode_enter(RC_MODE_COLOR_3);
- }
- break;
- case RC_CODE_COLOR_4:
- {
- rc_mode_enter(RC_MODE_COLOR_4);
- }
- break;
- case RC_CODE_COLOR_5:
- {
- rc_mode_enter(RC_MODE_COLOR_5);
- }
- break;
- case RC_CODE_COLOR_6:
- {
- rc_mode_enter(RC_MODE_COLOR_6);
- }
- break;
- case RC_CODE_COLOR_7:
- {
- rc_mode_enter(RC_MODE_COLOR_7);
- }
- break;
- case RC_CODE_COLOR_8:
- {
- rc_mode_enter(RC_MODE_COLOR_8);
- }
- break;
- case RC_CODE_COLOR_9:
- {
- rc_mode_enter(RC_MODE_COLOR_9);
- }
- break;
- case RC_CODE_COLOR_10:
- {
- rc_mode_enter(RC_MODE_COLOR_10);
- }
- break;
- case RC_CODE_COLOR_11:
- {
- rc_mode_enter(RC_MODE_COLOR_11);
- }
- break;
- case RC_CODE_COLOR_12:
- {
- rc_mode_enter(RC_MODE_COLOR_12);
- }
- break;
- }
- light_info_save_set();
- }
- }
-
- }
- /********************************* ir_decode end **********************************/
- uint8_t rgb_line_order_check(void)
- {
- uint8_t order_err = 0;
-
- if (g_light_para.rgb_order[0] == 0)
- {
- if ((g_light_para.rgb_order[1] == 1 && g_light_para.rgb_order[2] == 2) || (g_light_para.rgb_order[2] == 1 && g_light_para.rgb_order[1] == 2))
- {
- order_err = 1;
- }
- else
- {
- order_err = 0;
- }
- }
- else if (g_light_para.rgb_order[0] == 1)
- {
- if ((g_light_para.rgb_order[1] == 0 && g_light_para.rgb_order[2] == 2) || (g_light_para.rgb_order[2] == 0 && g_light_para.rgb_order[1] == 2))
- {
- order_err = 1;
- }
- else
- {
- order_err = 0;
- }
- }
- else if (g_light_para.rgb_order[0] == 2)
- {
- if ((g_light_para.rgb_order[1] == 0 && g_light_para.rgb_order[2] == 1) || (g_light_para.rgb_order[2] == 0 && g_light_para.rgb_order[1] == 1))
- {
- order_err = 1;
- }
- else
- {
- order_err = 0;
- }
- }
- else
- {
- order_err = 0;
- }
-
- if (order_err == 0)
- {
- g_light_para.rgb_order[0] = 0;
- g_light_para.rgb_order[1] = 1;
- g_light_para.rgb_order[2] = 2;
- }
- U_UART_PRINTF("order_err = %d\n", order_err);
-
- return order_err;
- }
- /********************************* app_ctrl end **********************************/
- /********************************* flash_save **********************************/
- #include "u_time.h"
- #define FLASH_SAVE_BASE_ADDR (0x27800)
- #define FLASH_SAVE_FLAG (0x5A)
- extern AlarmTime_t m_alarm_cfg[2]; //3个闹钟结构体定义
- void flash_printf(void)
- {
- // U_UART_PRINTF("save_flag = %d, clr_data = %d, effect = %d\n", \
- // g_light_para.save_flag, m_app_colour_info.clr_data[0], m_app_mode_info[0].effect);
- //
- // U_UART_PRINTF("dow_st = %d, alarm_st = %d\n", \
- // m_count_down.alarm_state, m_alarm_cfg[0].alarm_state);
- }
- static uint32_t flash_offset_addr_set(uint32_t data_size)
- {
- if (data_size % 4 == 0)
- {
- return data_size;
-
- }
- else
- {
- return data_size + (4 - (data_size % 4));
- }
- }
- /********************************* flash_save **********************************/
- #include "user_driver.h"
- //#define BT_LIGHT_FLASH_ADDR (0x7f000)
- #define BT_LIGHT_FLASH_ADDR (0x3f000) //芯片最后一次扇区
- static uint8_t m_flash_save_flg = 0;
- void light_info_save_set(void)
- {
- m_flash_save_flg = 1;
- }
- void light_info_save(void)
- {
- //flash_set_line_mode(1);
- flash_erase_sector(BT_LIGHT_FLASH_ADDR);
- flash_write_data((uint8_t *)&g_light_para, BT_LIGHT_FLASH_ADDR , sizeof(LightPara_t));
- U_UART_PRINTF("save_ok\r\n");
- //flash_set_line_mode(4);
- }
- void light_flash_save_cb(void)
- {
- if (m_flash_save_flg)
- {
- m_flash_save_flg = 0;
- light_info_save();
- }
- }
- /********************************* flash_save end **********************************/
- void light_info_init(void)
- {
- //flash_set_line_mode(1);
- flash_read_data((uint8_t *)&g_light_para, BT_LIGHT_FLASH_ADDR , sizeof(LightPara_t));
- delay_us(20);
- //flash_set_line_mode(4);
-
- if (g_light_para.save_flag == FLASH_SAVE_FLAG)
- {
- //flash_printf();
- }
- else
- {
- U_UART_PRINTF("flash_init\n");
- memset(&g_light_para, 0, sizeof(LightPara_t));
- g_light_para.save_flag = FLASH_SAVE_FLAG;
- g_light_para.power_st = GLO_EN;
- g_light_para.bright = LIGHT_BRIGHT_MAX;
- g_light_para.speed = LIGHT_DEF_SPEED;
- g_light_para.rhythm_sensit = 25;
- g_light_para.app_speed = 109 - LIGHT_DEF_SPEED * 10;
- g_light_para.app_mode[0] = LIGHT_APP_MODE_COLORUR;
- g_light_para.app_mode[1] = 0x01;
- g_light_para.clr_temp[0] = 0xFF;
- g_light_para.clr_temp[1] = 0x00;
- g_light_para.clr_temp[2] = 0x00;
- g_light_para.rgb_order[0] = 0;
- g_light_para.rgb_order[1] = 1;
- g_light_para.rgb_order[2] = 2;
-
- light_info_save();
- }
- g_light_para.rebootCnt++;
- rgb_line_order_check();
- U_UART_PRINTF("\r\napp_mode = %02X, rc_mode = %d reboot:%d\r\n", g_light_para.app_mode[0], g_light_para.rc_mode,g_light_para.rebootCnt);
- light_power_set(g_light_para.power_st);
- light_info_save();
- //U_UART_PRINTF("size:%d\r\n",sizeof(g_light_para));
- }
- /********************************* flash_save end **********************************/
|