u_light_ctrl.c 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516
  1. #include "u_light_ctrl.h"
  2. #include "u_effect_color.h"
  3. #include "u_effect_rhythm.h"
  4. #include "u_app_handler.h"
  5. #include "u_effect_normal.h"
  6. #include "u_app_handler.h"
  7. #include "u_pwm_drive.h"
  8. void light_power_set(uint8_t set_state)
  9. {
  10. if (set_state == GLO_EN)
  11. {
  12. g_light_para.power_st = GLO_EN;
  13. if (g_light_para.app_mode[0] < LIGHT_APP_MODE_RC_MIN)
  14. {
  15. light_mode_set(g_light_para.app_mode);
  16. }
  17. else
  18. {
  19. rc_mode_enter(g_light_para.rc_mode);
  20. }
  21. }
  22. else
  23. {
  24. g_light_para.power_st = GLO_DIS;
  25. u_rhythm_timer_ctrl(GLO_DIS);
  26. light_effect_timer_stop();
  27. light_set_color(0x00);
  28. }
  29. #ifdef DEBUG_DRV_APP
  30. U_UART_PRINTF("power_st = %d\n", g_light_para.power_st);
  31. #endif
  32. }
  33. void light_speed_ctrl(uint8_t light_speed)
  34. {
  35. // if (change_speed <= 0 || change_speed > 11 || g_light_para.effect == LIGHT_EFFECT_STATIC || g_light_para.effect == LIGHT_EFFECT_RHYTHM)
  36. // {
  37. // return;
  38. // }
  39. unsigned char glo_s;
  40. if(light_speed == 0)
  41. {
  42. light_speed = 1;
  43. }
  44. g_light_para.app_speed = light_speed;
  45. g_light_para.speed = (110 - light_speed) / 10;
  46. #ifdef DEBUG_DRV_APP
  47. U_UART_PRINTF("g_speed = %d\n", g_light_para.speed);
  48. #endif
  49. if (g_light_para.speed > LIGHT_SPEED_MAX)
  50. {
  51. light_effect_timer_stop();
  52. return;
  53. }
  54. switch (g_light_para.effect)
  55. {
  56. // case LIGHT_EFFECT_NULL:
  57. // {
  58. // u_analog_timer_stop(&g_ag_timer_light_effect);
  59. // }
  60. // break;
  61. case LIGHT_EFFECT_JUMP:
  62. {
  63. light_mode_jump_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  64. }
  65. break;
  66. case LIGHT_EFFECT_GRADUAL:
  67. {
  68. light_mode_gradual_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  69. }
  70. break;
  71. case LIGHT_EFFECT_BREATH:
  72. {
  73. light_mode_breath_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  74. }
  75. break;
  76. case LIGHT_EFFECT_BLINK:
  77. {
  78. light_mode_blink_cfg(&g_light_info, 0, 0, 0, g_light_para.speed, 0);
  79. }
  80. break;
  81. default:
  82. {
  83. #ifdef DEBUG_DRV_APP
  84. U_UART_PRINTF("speed_false\n");
  85. #endif
  86. //u_analog_timer_stop(&g_ag_timer_light_effect);
  87. }
  88. break;
  89. }
  90. }
  91. void ctrl_light_speed_ctrl(uint8_t light_speed) //有麦遥控器单独
  92. {
  93. // if (change_speed <= 0 || change_speed > 11 || g_light_para.effect == LIGHT_EFFECT_STATIC || g_light_para.effect == LIGHT_EFFECT_RHYTHM)
  94. // {
  95. // return;
  96. // }
  97. unsigned char glo_s;
  98. if(light_speed == 0)
  99. {
  100. light_speed = 1;
  101. }
  102. g_light_para.app_speed = light_speed;
  103. g_light_para.speed = (110 - light_speed) / 10;
  104. #ifdef DEBUG_DRV_APP
  105. U_UART_PRINTF("g_speed = %d\n", g_light_para.speed);
  106. #endif
  107. if (g_light_para.speed > LIGHT_SPEED_MAX)
  108. {
  109. light_effect_timer_stop();
  110. return;
  111. }
  112. switch (g_light_para.effect)
  113. {
  114. // case LIGHT_EFFECT_NULL:
  115. // {
  116. // u_analog_timer_stop(&g_ag_timer_light_effect);
  117. // }
  118. // break;
  119. case LIGHT_EFFECT_JUMP:
  120. {
  121. light_mode_jump_cfg(&g_light_info, 0, 0, g_light_para.speed*2, 0);
  122. }
  123. break;
  124. case LIGHT_EFFECT_GRADUAL:
  125. {
  126. light_mode_gradual_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  127. }
  128. break;
  129. case LIGHT_EFFECT_BREATH:
  130. {
  131. light_mode_breath_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  132. }
  133. break;
  134. case LIGHT_EFFECT_BLINK:
  135. {
  136. light_mode_blink_cfg(&g_light_info, 0, 0, 0, g_light_para.speed, 0);
  137. }
  138. break;
  139. default:
  140. {
  141. #ifdef DEBUG_DRV_APP
  142. U_UART_PRINTF("speed_false\n");
  143. #endif
  144. //u_analog_timer_stop(&g_ag_timer_light_effect);
  145. }
  146. break;
  147. }
  148. }
  149. void light_bright_ctrl(uint8_t light_bright)
  150. {
  151. if(light_bright == 1)
  152. {
  153. light_bright=2;
  154. }
  155. g_light_para.bright = light_bright;
  156. #ifdef DEBUG_DRV_APP
  157. U_UART_PRINTF("g_bright = %d\n", g_light_para.bright);
  158. #endif
  159. switch (g_light_para.effect)
  160. {
  161. case LIGHT_EFFECT_JUMP:
  162. {
  163. light_mode_jump_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
  164. }
  165. break;
  166. case LIGHT_EFFECT_GRADUAL:
  167. {
  168. light_mode_gradual_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
  169. }
  170. break;
  171. case LIGHT_EFFECT_STATIC:
  172. {
  173. light_mode_static_cfg(&g_light_info, 0, g_light_para.bright);
  174. }
  175. break;
  176. case LIGHT_EFFECT_BREATH:
  177. {
  178. light_mode_breath_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
  179. }
  180. break;
  181. case LIGHT_EFFECT_BLINK:
  182. {
  183. light_mode_blink_cfg(&g_light_info, 0, 0, 0, 0, g_light_para.bright);
  184. }
  185. break;
  186. default:
  187. {
  188. //dream_mode_rainbow_spectra_cfg(&g_effect_dream_rainbow_info, 0, 0, 0, 0);
  189. }
  190. break;
  191. }
  192. }
  193. void light_rhythm_enter(uint8_t rhythm_mode)
  194. {
  195. g_light_para.rhythm_mode = rhythm_mode;
  196. light_effect_timer_stop();
  197. //u_rhythm_timer_ctrl(GLO_EN); //开启律动
  198. //u_rhythm_timer_ctrl(GLO_DIS);
  199. app_rhythm_val_up(0);
  200. switch (rhythm_mode)
  201. {
  202. case RHYTHM_MODE_STOP:
  203. {
  204. u_rhythm_timer_ctrl(GLO_DIS);
  205. }
  206. break;
  207. case RHYTHM_MODE_GRADUAL_7:
  208. {
  209. //light_rhythm_mode_one_clr_cfg(&g_normal_rhythm, &g_light_para.one_rhythm_clr, NULL);
  210. light_rhythm_mode_gradual_cfg(&g_normal_rhythm, app_static_clr, 7, NULL);
  211. }
  212. break;
  213. case RHYTHM_MODE_JUMP_7://RHYTHM_MODE_JUMP_7:
  214. {
  215. light_rhythm_mode_jump_cfg(&g_normal_rhythm, base_clr, 7, NULL);
  216. light_set_color( light_color_bright_create( 0xff0000 , LIGHT_BRIGHT_MIN_MIN));
  217. }
  218. break;
  219. case RHYTHM_MODE_FADE_7://RHYTHM_MODE_GRADUAL_7:
  220. {
  221. light_rhythm_mode_fade_cfg(&g_normal_rhythm, base_clr, 7, NULL);
  222. light_set_color( light_color_bright_create( 0x00ffff , LIGHT_BRIGHT_MIN_MIN));
  223. }
  224. break;
  225. case RHYTHM_MODE_JUMP_3:
  226. {
  227. light_rhythm_mode_jump_cfg(&g_normal_rhythm, base_clr, 3, NULL);
  228. light_set_color( light_color_bright_create( 0x0000ff , LIGHT_BRIGHT_MIN_MIN));
  229. }
  230. break;
  231. case RHYTHM_MODE_FADE_3:
  232. {
  233. light_rhythm_mode_fade_cfg(&g_normal_rhythm, base_clr, 3, NULL);
  234. light_set_color( light_color_bright_create( 0x00ff00 , LIGHT_BRIGHT_MIN_MIN));
  235. }
  236. break;
  237. default:
  238. {
  239. u_rhythm_timer_ctrl(GLO_DIS);
  240. }
  241. break;
  242. }
  243. #ifdef DEBUG_DRV_APP
  244. U_UART_PRINTF("Rhythm_mode = 0x%X\n", rhythm_mode);
  245. #endif
  246. }
  247. void rc_mode_enter(uint8_t rc_mode)
  248. {
  249. unsigned char glo_s=0;
  250. unsigned char cnt_temp=0;
  251. u_rhythm_timer_ctrl(GLO_DIS);
  252. g_light_para.rc_mode = rc_mode;
  253. #ifdef DEBUG_DRV_APP
  254. U_UART_PRINTF("s_rc_mode = %d\n", g_light_para.rc_mode);
  255. #endif
  256. switch(g_light_para.rc_mode)
  257. {
  258. case RC_MODE_COLOR_R:
  259. case RC_MODE_COLOR_G:
  260. case RC_MODE_COLOR_B:
  261. case RC_MODE_COLOR_W:
  262. case RC_MODE_COLOR_1:
  263. case RC_MODE_COLOR_2:
  264. case RC_MODE_COLOR_3:
  265. case RC_MODE_COLOR_4:
  266. case RC_MODE_COLOR_5:
  267. case RC_MODE_COLOR_6:
  268. case RC_MODE_COLOR_7:
  269. case RC_MODE_COLOR_8:
  270. case RC_MODE_COLOR_9:
  271. case RC_MODE_COLOR_10:
  272. case RC_MODE_COLOR_11:
  273. case RC_MODE_COLOR_12:
  274. {
  275. light_mode_static_cfg(&g_light_info, &rc_static_clr[g_light_para.rc_mode], g_light_para.bright);
  276. g_light_para.app_mode[0] = LIGHT_APP_MODE_RC_STATIC;
  277. }
  278. break;
  279. g_light_para.app_mode[0] = LIGHT_APP_MODE_RC_DYNAMIC;
  280. case RC_MODE_FLASH:
  281. {
  282. static uint8_t s_flash_color_ind = 0;
  283. cnt_temp = ++s_flash_color_ind;
  284. s_flash_color_ind = cnt_temp % 7;
  285. light_mode_jump_cfg(&g_light_info, &base_clr[s_flash_color_ind], 1, g_light_para.speed, g_light_para.bright);
  286. #ifdef DEBUG_DRV_APP
  287. U_UART_PRINTF("s_flash_color_ind = %d\n", s_flash_color_ind);
  288. #endif
  289. }
  290. break;
  291. case RC_MODE_STROBE:
  292. {
  293. static uint8_t s_strobe_color_ind = 0;
  294. s_strobe_color_ind = (s_strobe_color_ind + 3) % 21;
  295. //s_strobe_color_ind = ++s_strobe_color_ind % 7;
  296. light_mode_blink_cfg(&g_light_info, &STROBE_clr[s_strobe_color_ind], 3, 1, g_light_para.speed, g_light_para.bright);
  297. //light_mode_blink_cfg(&g_light_info, &base_clr[s_strobe_color_ind], 1, 1, g_light_para.speed, g_light_para.bright);
  298. }
  299. break;
  300. case RC_MODE_FADE:
  301. {
  302. static uint8_t s_fade_color_ind = 0;
  303. cnt_temp = ++s_fade_color_ind;
  304. s_fade_color_ind = cnt_temp % 2;
  305. if (s_fade_color_ind)
  306. {
  307. light_mode_breath_cfg(&g_light_info, &rc_clr_smooth[0], 7, g_light_para.speed, g_light_para.bright);
  308. }
  309. else
  310. {
  311. light_mode_breath_cfg(&g_light_info, &base_clr[0], 3, g_light_para.speed, g_light_para.bright);
  312. }
  313. }
  314. break;
  315. case RC_MODE_SMOOTH:
  316. {
  317. light_mode_gradual_cfg(&g_light_info, rc_clr_smooth, 7, g_light_para.speed, g_light_para.bright);
  318. }
  319. break;
  320. case RC_CODE_FADE3:
  321. {
  322. light_mode_breath_cfg(&g_light_info, base_clr, 3, g_light_para.speed, g_light_para.bright);
  323. }
  324. break;
  325. case RC_CODE_FADE7:
  326. {
  327. light_mode_breath_cfg(&g_light_info, base_clr, 7, g_light_para.speed, g_light_para.bright);
  328. }
  329. break;
  330. case RC_CODE_JUMP3:
  331. {
  332. light_mode_jump_cfg(&g_light_info, base_clr, 3, g_light_para.speed*2, g_light_para.bright);
  333. }
  334. break;
  335. case RC_CODE_JUMP7:
  336. {
  337. light_mode_jump_cfg(&g_light_info, base_clr, 7, g_light_para.speed*2, g_light_para.bright);
  338. }
  339. break;
  340. case RC_MODE_RHYTM_MUSIC1:
  341. {
  342. g_light_para.mic_AppOrDriver = 1;
  343. light_rhythm_enter(RHYTHM_MODE_FADE_7);
  344. u_rhythm_timer_ctrl(GLO_EN);
  345. }
  346. break;
  347. case RC_MODE_RHYTM_MUSIC2:
  348. {
  349. g_light_para.mic_AppOrDriver = 1;
  350. light_rhythm_enter(RHYTHM_MODE_FADE_3);
  351. u_rhythm_timer_ctrl(GLO_EN);
  352. }
  353. break;
  354. case RC_MODE_RHYTM_MUSIC3:
  355. {
  356. g_light_para.mic_AppOrDriver = 1;
  357. light_rhythm_enter(RHYTHM_MODE_JUMP_3);
  358. u_rhythm_timer_ctrl(GLO_EN);
  359. }
  360. break;
  361. case RC_MODE_RHYTM_MUSIC4:
  362. {
  363. g_light_para.mic_AppOrDriver = 1;
  364. light_rhythm_enter(RHYTHM_MODE_JUMP_7);
  365. u_rhythm_timer_ctrl(GLO_EN);
  366. }
  367. break;
  368. default:
  369. {
  370. }
  371. break;
  372. }
  373. }
  374. /********************************* ir_decode **********************************/
  375. #include "u_time.h"
  376. void ir_decode(const uint8_t *ir_code)
  377. {
  378. #define RC_USER_CODE_0 (0x00)
  379. #define RC_USER_CODE_1 (0xFF) //无麦
  380. #define RC_USER_CODE_2 (0xF7) //有麦
  381. if(g_light_para.mic == 0)
  382. {
  383. if (ir_code[0] == RC_USER_CODE_0 && ir_code[1] == RC_USER_CODE_1 )
  384. {
  385. if (ir_code[2] == (~ir_code[3] & 0xff))
  386. {
  387. //U_UART_PRINTF("ir_code = %02X\n", ir_code[2]);
  388. if (g_light_para.power_st == GLO_DIS && ir_code[2] != RC_CODE_ON)
  389. {
  390. return;
  391. }
  392. switch(ir_code[2])
  393. {
  394. case RC_CODE_UP:
  395. {
  396. if (g_light_para.effect == LIGHT_EFFECT_STATIC)
  397. {
  398. g_light_para.bright = (g_light_para.bright + 10) >= LIGHT_BRIGHT_MAX ? LIGHT_BRIGHT_MAX : (g_light_para.bright + 10);
  399. light_bright_ctrl(g_light_para.bright);
  400. }
  401. else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
  402. {
  403. //rhythm_sensit_ctrl(g_light_para.app_music_mode, -2, 0);
  404. }
  405. else
  406. {
  407. 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);
  408. light_speed_ctrl(g_light_para.app_speed);
  409. }
  410. }
  411. break;
  412. case RC_CODE_DOWN:
  413. {
  414. if (g_light_para.effect == LIGHT_EFFECT_STATIC)
  415. {
  416. g_light_para.bright = (g_light_para.bright - 10) <= LIGHT_BRIGHT_MIN ? LIGHT_BRIGHT_MIN : (g_light_para.bright - 10);
  417. light_bright_ctrl(g_light_para.bright);
  418. }
  419. else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
  420. {
  421. //rhythm_sensit_ctrl(g_light_para.app_music_mode, -2, 0);
  422. }
  423. else
  424. {
  425. g_light_para.app_speed = (g_light_para.app_speed - 10) < LIGHT_SPEED_MIN ? LIGHT_SPEED_MIN : (g_light_para.app_speed - 10);
  426. light_speed_ctrl(g_light_para.app_speed);
  427. }
  428. }
  429. break;
  430. case RC_CODE_OFF:
  431. {
  432. light_power_set(GLO_DIS);
  433. light_state_upload();
  434. }
  435. break;
  436. case RC_CODE_ON:
  437. {
  438. light_power_set(GLO_EN);
  439. light_state_upload();
  440. }
  441. break;
  442. case RC_CODE_FLASH:
  443. {
  444. rc_mode_enter(RC_MODE_FLASH);
  445. }
  446. break;
  447. case RC_CODE_STROBE:
  448. {
  449. rc_mode_enter(RC_MODE_STROBE);
  450. }
  451. break;
  452. case RC_CODE_FADE:
  453. {
  454. rc_mode_enter(RC_MODE_FADE);
  455. }
  456. break;
  457. case RC_CODE_SMOOTH:
  458. {
  459. rc_mode_enter(RC_MODE_SMOOTH);
  460. }
  461. break;
  462. case RC_CODE_COLOR_R:
  463. {
  464. rc_mode_enter(RC_MODE_COLOR_R);
  465. }
  466. break;
  467. case RC_CODE_COLOR_G:
  468. {
  469. rc_mode_enter(RC_MODE_COLOR_G);
  470. }
  471. break;
  472. case RC_CODE_COLOR_B:
  473. {
  474. rc_mode_enter(RC_MODE_COLOR_B);
  475. }
  476. break;
  477. case RC_CODE_W:
  478. {
  479. rc_mode_enter(RC_MODE_COLOR_W);
  480. }
  481. break;
  482. case RC_CODE_COLOR_1:
  483. {
  484. rc_mode_enter(RC_MODE_COLOR_1);
  485. }
  486. break;
  487. case RC_CODE_COLOR_2:
  488. {
  489. rc_mode_enter(RC_MODE_COLOR_2);
  490. }
  491. break;
  492. case RC_CODE_COLOR_3:
  493. {
  494. rc_mode_enter(RC_MODE_COLOR_3);
  495. }
  496. break;
  497. case RC_CODE_COLOR_4:
  498. {
  499. rc_mode_enter(RC_MODE_COLOR_4);
  500. }
  501. break;
  502. case RC_CODE_COLOR_5:
  503. {
  504. rc_mode_enter(RC_MODE_COLOR_5);
  505. }
  506. break;
  507. case RC_CODE_COLOR_6:
  508. {
  509. rc_mode_enter(RC_MODE_COLOR_6);
  510. }
  511. break;
  512. case RC_CODE_COLOR_7:
  513. {
  514. rc_mode_enter(RC_MODE_COLOR_7);
  515. }
  516. break;
  517. case RC_CODE_COLOR_8:
  518. {
  519. rc_mode_enter(RC_MODE_COLOR_8);
  520. }
  521. break;
  522. case RC_CODE_COLOR_9:
  523. {
  524. rc_mode_enter(RC_MODE_COLOR_9);
  525. }
  526. break;
  527. case RC_CODE_COLOR_10:
  528. {
  529. rc_mode_enter(RC_MODE_COLOR_10);
  530. }
  531. break;
  532. case RC_CODE_COLOR_11:
  533. {
  534. rc_mode_enter(RC_MODE_COLOR_11);
  535. }
  536. break;
  537. case RC_CODE_COLOR_12:
  538. {
  539. rc_mode_enter(RC_MODE_COLOR_12);
  540. }
  541. break;
  542. }
  543. light_info_save_set();
  544. }
  545. }
  546. }
  547. else
  548. {
  549. if (ir_code[0] == RC_USER_CODE_0 && ( ir_code[1] == RC_USER_CODE_2 ))
  550. {
  551. if (ir_code[2] == (~ir_code[3] & 0xff))
  552. {
  553. //U_UART_PRINTF("ir_code = %02X\n", ir_code[2]);
  554. if (g_light_para.power_st == GLO_DIS && ir_code[2] != RC_CODE_ON_20)
  555. {
  556. return;
  557. }
  558. switch(ir_code[2])
  559. {
  560. case RC_CODE_UP_20:
  561. {
  562. if (g_light_para.effect == LIGHT_EFFECT_STATIC)
  563. {
  564. g_light_para.bright = (g_light_para.bright + 10) >= LIGHT_BRIGHT_MAX ? LIGHT_BRIGHT_MAX : (g_light_para.bright + 10);
  565. light_bright_ctrl(g_light_para.bright);
  566. }
  567. else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
  568. {
  569. rhythm_sensit_ctrl(-5,g_light_para.rhythm_sensit);
  570. //rhythm_sensit_ctrl(g_light_para.app_music_mode, -2, 0);
  571. }
  572. else
  573. {
  574. 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);
  575. ctrl_light_speed_ctrl(g_light_para.app_speed);
  576. }
  577. }
  578. break;
  579. case RC_CODE_DOWN_20:
  580. {
  581. if (g_light_para.effect == LIGHT_EFFECT_STATIC)
  582. {
  583. g_light_para.bright = (g_light_para.bright - 10) <= LIGHT_BRIGHT_MIN ? LIGHT_BRIGHT_MIN : (g_light_para.bright - 10);
  584. light_bright_ctrl(g_light_para.bright);
  585. }
  586. else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
  587. {
  588. rhythm_sensit_ctrl(5,g_light_para.rhythm_sensit);
  589. }
  590. else
  591. {
  592. g_light_para.app_speed = (g_light_para.app_speed - 10) < LIGHT_SPEED_MIN ? LIGHT_SPEED_MIN : (g_light_para.app_speed - 10);
  593. ctrl_light_speed_ctrl(g_light_para.app_speed);
  594. }
  595. }
  596. break;
  597. case RC_CODE_OFF_20:
  598. {
  599. light_power_set(GLO_DIS);
  600. light_state_upload();
  601. }
  602. break;
  603. case RC_CODE_ON_20:
  604. {
  605. light_power_set(GLO_EN);
  606. light_state_upload();
  607. }
  608. break;
  609. case RC_CODE_COLOR_R_20:
  610. {
  611. rc_mode_enter(RC_MODE_COLOR_R);
  612. }
  613. break;
  614. case RC_CODE_COLOR_G_20:
  615. {
  616. rc_mode_enter(RC_MODE_COLOR_G);
  617. }
  618. break;
  619. case RC_CODE_COLOR_B_20:
  620. {
  621. rc_mode_enter(RC_MODE_COLOR_B);
  622. }
  623. break;
  624. case RC_CODE_W_20:
  625. {
  626. rc_mode_enter(RC_MODE_COLOR_W);
  627. }
  628. break;
  629. case RC_CODE_COLOR_ORANGE_20:
  630. {
  631. rc_mode_enter(RC_MODE_COLOR_4);
  632. }
  633. break;
  634. case RC_CODE_COLOR_YELLOW_20:
  635. {
  636. rc_mode_enter(RC_MODE_COLOR_10);
  637. }
  638. break;
  639. case RC_CODE_COLOR_CYAN_20:
  640. {
  641. rc_mode_enter(RC_MODE_COLOR_5);
  642. }
  643. break;
  644. case RC_CODE_COLOR_PURPLE_20:
  645. {
  646. rc_mode_enter(RC_MODE_COLOR_6);
  647. }
  648. break;
  649. // case RC_CODE_MUSIC1_20:
  650. // {
  651. // g_light_para.mic_AppOrDriver = 1;
  652. // light_rhythm_enter(RHYTHM_MODE_FADE_7);
  653. // u_rhythm_timer_ctrl(GLO_EN);
  654. // }
  655. // break;
  656. // case RC_CODE_MUSIC2_20:
  657. // {
  658. // g_light_para.mic_AppOrDriver = 1;
  659. // light_rhythm_enter(RHYTHM_MODE_FADE_3);
  660. // u_rhythm_timer_ctrl(GLO_EN);
  661. // }
  662. // break;
  663. // case RC_CODE_MUSIC3_20:
  664. // {
  665. // g_light_para.mic_AppOrDriver = 1;
  666. // light_rhythm_enter(RHYTHM_MODE_JUMP_3);
  667. // u_rhythm_timer_ctrl(GLO_EN);
  668. // }
  669. // break;
  670. // case RC_CODE_MUSIC4_20:
  671. // {
  672. // g_light_para.mic_AppOrDriver = 1;
  673. // light_rhythm_enter(RHYTHM_MODE_JUMP_7);
  674. // u_rhythm_timer_ctrl(GLO_EN);
  675. // }
  676. // break;
  677. case RC_CODE_MUSIC1_20:
  678. {
  679. //g_light_para.mic_AppOrDriver = 1;
  680. //light_rhythm_enter(RHYTHM_MODE_FADE_7);
  681. //u_rhythm_timer_ctrl(GLO_EN);
  682. rc_mode_enter(RC_MODE_RHYTM_MUSIC1);
  683. }
  684. break;
  685. case RC_CODE_MUSIC2_20:
  686. {
  687. //g_light_para.mic_AppOrDriver = 1;
  688. //light_rhythm_enter(RHYTHM_MODE_FADE_3);
  689. //u_rhythm_timer_ctrl(GLO_EN);
  690. rc_mode_enter(RC_MODE_RHYTM_MUSIC2);
  691. }
  692. break;
  693. case RC_CODE_MUSIC3_20:
  694. {
  695. //g_light_para.mic_AppOrDriver = 1;
  696. //light_rhythm_enter(RHYTHM_MODE_JUMP_3);
  697. //u_rhythm_timer_ctrl(GLO_EN);
  698. rc_mode_enter(RC_MODE_RHYTM_MUSIC3);
  699. }
  700. break;
  701. case RC_CODE_MUSIC4_20:
  702. {
  703. //g_light_para.mic_AppOrDriver = 1;
  704. //light_rhythm_enter(RHYTHM_MODE_JUMP_7);
  705. //u_rhythm_timer_ctrl(GLO_EN);
  706. rc_mode_enter(RC_MODE_RHYTM_MUSIC4);
  707. }
  708. break;
  709. case RC_CODE_FADE7_20:
  710. {
  711. rc_mode_enter(RC_CODE_FADE7);
  712. }
  713. break;
  714. case RC_CODE_FADE3_20:
  715. {
  716. rc_mode_enter(RC_CODE_FADE3);
  717. }
  718. break;
  719. case RC_CODE_JUMP3_20:
  720. {
  721. rc_mode_enter(RC_CODE_JUMP3);
  722. }
  723. break;
  724. case RC_CODE_JUMP7_20:
  725. {
  726. rc_mode_enter(RC_CODE_JUMP7);
  727. }
  728. break;
  729. }
  730. light_info_save_set();
  731. }
  732. }
  733. }
  734. }
  735. /********************************* ir_decode end **********************************/
  736. uint8_t rgb_line_order_check(void)
  737. {
  738. uint8_t order_err = 0;
  739. if (g_light_para.rgb_order[0] == 0)
  740. {
  741. 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))
  742. {
  743. order_err = 1;
  744. }
  745. else
  746. {
  747. order_err = 0;
  748. }
  749. }
  750. else if (g_light_para.rgb_order[0] == 1)
  751. {
  752. 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))
  753. {
  754. order_err = 1;
  755. }
  756. else
  757. {
  758. order_err = 0;
  759. }
  760. }
  761. else if (g_light_para.rgb_order[0] == 2)
  762. {
  763. 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))
  764. {
  765. order_err = 1;
  766. }
  767. else
  768. {
  769. order_err = 0;
  770. }
  771. }
  772. else
  773. {
  774. order_err = 0;
  775. }
  776. if (order_err == 0)
  777. {
  778. g_light_para.rgb_order[0] = 0;
  779. g_light_para.rgb_order[1] = 1;
  780. g_light_para.rgb_order[2] = 2;
  781. }
  782. #ifdef DEBUG_DRV_APP
  783. U_UART_PRINTF("order_err = %d\n", order_err);
  784. #endif
  785. return order_err;
  786. }
  787. /********************************* app_ctrl end **********************************/
  788. /********************************* flash_save **********************************/
  789. #include "u_time.h"
  790. #define FLASH_SAVE_BASE_ADDR (0x27800)
  791. #define FLASH_SAVE_FLAG (0x5A)
  792. extern AlarmTime_t m_alarm_cfg[2]; //3个闹钟结构体定义
  793. void flash_printf(void)
  794. {
  795. // U_UART_PRINTF("save_flag = %d, clr_data = %d, effect = %d\n", \
  796. // g_light_para.save_flag, m_app_colour_info.clr_data[0], m_app_mode_info[0].effect);
  797. //
  798. // U_UART_PRINTF("dow_st = %d, alarm_st = %d\n", \
  799. // m_count_down.alarm_state, m_alarm_cfg[0].alarm_state);
  800. }
  801. static uint32_t flash_offset_addr_set(uint32_t data_size)
  802. {
  803. if (data_size % 4 == 0)
  804. {
  805. return data_size;
  806. }
  807. else
  808. {
  809. return data_size + (4 - (data_size % 4));
  810. }
  811. }
  812. /********************************* flash_save **********************************/
  813. /********************************* flash_save **********************************/
  814. #include "user_driver.h"
  815. #define BT_LIGHT_FLASH_ADDR (0x3f000) //芯片最后一次扇区
  816. static uint8_t m_flash_save_flg = 0;
  817. void light_info_save_set(void)
  818. {
  819. m_flash_save_flg = 1;
  820. }
  821. void light_info_save(void)
  822. {
  823. // flash_set_line_mode(1);
  824. flash_erase_sector(BT_LIGHT_FLASH_ADDR);
  825. flash_write_data((uint8_t *)&g_light_para, BT_LIGHT_FLASH_ADDR , sizeof(LightPara_t));
  826. // flash_set_line_mode(4);
  827. }
  828. void light_flash_save_cb(void)
  829. {
  830. if (m_flash_save_flg)
  831. {
  832. m_flash_save_flg = 0;
  833. light_info_save();
  834. }
  835. }
  836. /********************************* flash_save end **********************************/
  837. void light_info_init(void)
  838. {
  839. // flash_set_line_mode(1);
  840. flash_read_data((uint8_t *)&g_light_para, BT_LIGHT_FLASH_ADDR , sizeof(LightPara_t));
  841. delay_us(20);
  842. // flash_set_line_mode(4);
  843. if (g_light_para.save_flag == FLASH_SAVE_FLAG)
  844. {
  845. //flash_printf();
  846. }
  847. else
  848. {
  849. #ifdef DEBUG_DRV_APP
  850. U_UART_PRINTF("flash_init\n");
  851. #endif
  852. memset(&g_light_para, 0, sizeof(LightPara_t));
  853. g_light_para.save_flag = FLASH_SAVE_FLAG;
  854. g_light_para.power_st = GLO_EN;
  855. g_light_para.bright = LIGHT_BRIGHT_MAX;
  856. g_light_para.speed = LIGHT_DEF_SPEED;
  857. g_light_para.rhythm_sensit = 15;
  858. g_light_para.app_speed = 109 - LIGHT_DEF_SPEED * 10;
  859. g_light_para.app_mode[0] = LIGHT_APP_MODE_COLORUR;
  860. g_light_para.app_mode[1] = 0x01;
  861. g_light_para.clr_temp[0] = 0xFF;
  862. g_light_para.clr_temp[1] = 0x00;
  863. g_light_para.clr_temp[2] = 0x00;
  864. g_light_para.rgb_order[0] = 0;
  865. g_light_para.rgb_order[1] = 1;
  866. g_light_para.rgb_order[2] = 2;
  867. //app_mode_info_init();
  868. light_info_save();
  869. }
  870. rgb_line_order_check();
  871. #ifdef DEBUG_DRV_APP
  872. U_UART_PRINTF("app_mode = %02X, rc_mode = %d\n", g_light_para.app_mode[0], g_light_para.rc_mode);
  873. #endif
  874. light_power_set(g_light_para.power_st);
  875. }
  876. #if 0
  877. void light_power_set(uint8_t set_state)
  878. {
  879. if (set_state == GLO_EN)
  880. {
  881. g_light_para.power_st = GLO_EN;
  882. if (g_light_para.app_mode[0] < LIGHT_APP_MODE_RC_MIN)
  883. {
  884. light_mode_set(g_light_para.app_mode);
  885. }
  886. else
  887. {
  888. rc_mode_enter(g_light_para.rc_mode);
  889. }
  890. }
  891. else
  892. {
  893. g_light_para.power_st = GLO_DIS;
  894. u_rhythm_timer_ctrl(GLO_DIS);
  895. light_effect_timer_stop();
  896. light_set_color(0x00);
  897. }
  898. U_UART_PRINTF("power_st = %d\n", g_light_para.power_st);
  899. }
  900. void light_speed_ctrl(uint8_t light_speed)
  901. {
  902. // if (change_speed <= 0 || change_speed > 11 || g_light_para.effect == LIGHT_EFFECT_STATIC || g_light_para.effect == LIGHT_EFFECT_RHYTHM)
  903. // {
  904. // return;
  905. // }
  906. g_light_para.app_speed = light_speed;
  907. g_light_para.speed = (110 - light_speed) / 10;
  908. U_UART_PRINTF("g_speed = %d\n", g_light_para.speed);
  909. if (g_light_para.speed > LIGHT_SPEED_MAX)
  910. {
  911. light_effect_timer_stop();
  912. return;
  913. }
  914. switch (g_light_para.effect)
  915. {
  916. // case LIGHT_EFFECT_NULL:
  917. // {
  918. // u_analog_timer_stop(&g_ag_timer_light_effect);
  919. // }
  920. // break;
  921. case LIGHT_EFFECT_JUMP:
  922. {
  923. light_mode_jump_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  924. }
  925. break;
  926. case LIGHT_EFFECT_GRADUAL:
  927. {
  928. light_mode_gradual_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  929. }
  930. break;
  931. case LIGHT_EFFECT_BREATH:
  932. {
  933. light_mode_breath_cfg(&g_light_info, 0, 0, g_light_para.speed, 0);
  934. }
  935. break;
  936. case LIGHT_EFFECT_BLINK:
  937. {
  938. light_mode_blink_cfg(&g_light_info, 0, 0, 0, g_light_para.speed, 0);
  939. }
  940. break;
  941. default:
  942. {
  943. U_UART_PRINTF("speed_false\n");
  944. //u_analog_timer_stop(&g_ag_timer_light_effect);
  945. }
  946. break;
  947. }
  948. }
  949. void light_bright_ctrl(uint8_t light_bright)
  950. {
  951. g_light_para.bright = light_bright;
  952. U_UART_PRINTF("g_bright = %d\n", g_light_para.bright);
  953. switch (g_light_para.effect)
  954. {
  955. case LIGHT_EFFECT_JUMP:
  956. {
  957. light_mode_jump_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
  958. }
  959. break;
  960. case LIGHT_EFFECT_GRADUAL:
  961. {
  962. light_mode_gradual_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
  963. }
  964. break;
  965. case LIGHT_EFFECT_STATIC:
  966. {
  967. light_mode_static_cfg(&g_light_info, 0, g_light_para.bright);
  968. }
  969. break;
  970. case LIGHT_EFFECT_BREATH:
  971. {
  972. light_mode_breath_cfg(&g_light_info, 0, 0, 0, g_light_para.bright);
  973. }
  974. break;
  975. case LIGHT_EFFECT_BLINK:
  976. {
  977. light_mode_blink_cfg(&g_light_info, 0, 0, 0, 0, g_light_para.bright);
  978. }
  979. break;
  980. default:
  981. {
  982. //dream_mode_rainbow_spectra_cfg(&g_effect_dream_rainbow_info, 0, 0, 0, 0);
  983. }
  984. break;
  985. }
  986. }
  987. void light_rhythm_enter(uint8_t rhythm_mode)
  988. {
  989. g_light_para.rhythm_mode = rhythm_mode;
  990. light_effect_timer_stop();
  991. u_rhythm_timer_ctrl(GLO_EN);
  992. app_rhythm_val_up(0);
  993. switch (rhythm_mode)
  994. {
  995. case RHYTHM_MODE_STOP:
  996. {
  997. u_rhythm_timer_ctrl(GLO_DIS);
  998. }
  999. break;
  1000. case RHYTHM_MODE_GRADUAL_7:
  1001. {
  1002. //light_rhythm_mode_one_clr_cfg(&g_normal_rhythm, &g_light_para.one_rhythm_clr, NULL);
  1003. light_rhythm_mode_gradual_cfg(&g_normal_rhythm, app_static_clr, 7, NULL);
  1004. }
  1005. break;
  1006. case RHYTHM_MODE_JUMP_7://RHYTHM_MODE_JUMP_7:
  1007. {
  1008. light_rhythm_mode_jump_cfg(&g_normal_rhythm, base_clr, 7, NULL);
  1009. }
  1010. break;
  1011. case RHYTHM_MODE_FADE_7://RHYTHM_MODE_GRADUAL_7:
  1012. {
  1013. light_rhythm_mode_fade_cfg(&g_normal_rhythm, base_clr, 7, NULL);
  1014. }
  1015. break;
  1016. case RHYTHM_MODE_JUMP_3:
  1017. {
  1018. light_rhythm_mode_jump_cfg(&g_normal_rhythm, base_clr, 3, NULL);
  1019. }
  1020. break;
  1021. case RHYTHM_MODE_FADE_3:
  1022. {
  1023. light_rhythm_mode_fade_cfg(&g_normal_rhythm, base_clr, 3, NULL);
  1024. }
  1025. break;
  1026. default:
  1027. {
  1028. u_rhythm_timer_ctrl(GLO_DIS);
  1029. }
  1030. break;
  1031. }
  1032. U_UART_PRINTF("Rhythm_mode = 0x%X\n", rhythm_mode);
  1033. }
  1034. void rc_mode_enter(uint8_t rc_mode)
  1035. {
  1036. uint8_t cnt_tmp=0;
  1037. u_rhythm_timer_ctrl(GLO_DIS);//节奏控制
  1038. g_light_para.rc_mode = rc_mode;
  1039. U_UART_PRINTF("s_rc_mode = %d\n", g_light_para.rc_mode);
  1040. switch(g_light_para.rc_mode)
  1041. {
  1042. case RC_MODE_COLOR_R:
  1043. case RC_MODE_COLOR_G:
  1044. case RC_MODE_COLOR_B:
  1045. case RC_MODE_COLOR_W:
  1046. case RC_MODE_COLOR_1:
  1047. case RC_MODE_COLOR_2:
  1048. case RC_MODE_COLOR_3:
  1049. case RC_MODE_COLOR_4:
  1050. case RC_MODE_COLOR_5:
  1051. case RC_MODE_COLOR_6:
  1052. case RC_MODE_COLOR_7:
  1053. case RC_MODE_COLOR_8:
  1054. case RC_MODE_COLOR_9:
  1055. case RC_MODE_COLOR_10:
  1056. case RC_MODE_COLOR_11:
  1057. case RC_MODE_COLOR_12:
  1058. {
  1059. light_mode_static_cfg(&g_light_info, &rc_static_clr[g_light_para.rc_mode], g_light_para.bright);
  1060. g_light_para.app_mode[0] = LIGHT_APP_MODE_RC_STATIC;
  1061. }
  1062. break;
  1063. //g_light_para.app_mode[0] = LIGHT_APP_MODE_RC_DYNAMIC; //bug
  1064. case RC_MODE_FLASH:
  1065. {
  1066. static uint8_t s_flash_color_ind = 0;
  1067. cnt_tmp = ++s_flash_color_ind;
  1068. s_flash_color_ind = cnt_tmp % 7;
  1069. light_mode_jump_cfg(&g_light_info, &base_clr[s_flash_color_ind], 1, g_light_para.speed, g_light_para.bright);
  1070. U_UART_PRINTF("s_flash_color_ind = %d\n", s_flash_color_ind);
  1071. }
  1072. break;
  1073. case RC_MODE_STROBE:
  1074. {
  1075. static uint8_t s_strobe_color_ind = 0;
  1076. cnt_tmp = ++s_strobe_color_ind;
  1077. s_strobe_color_ind = cnt_tmp % 7;
  1078. light_mode_blink_cfg(&g_light_info, &base_clr[s_strobe_color_ind], 1, 5, g_light_para.speed, g_light_para.bright);
  1079. }
  1080. break;
  1081. case RC_MODE_FADE:
  1082. {
  1083. static uint8_t s_fade_color_ind = 0;
  1084. cnt_tmp = ++s_fade_color_ind;
  1085. s_fade_color_ind =cnt_tmp % 2;
  1086. if (s_fade_color_ind)
  1087. {
  1088. light_mode_breath_cfg(&g_light_info, &rc_clr_smooth[0], 7, g_light_para.speed, g_light_para.bright);
  1089. }
  1090. else
  1091. {
  1092. light_mode_breath_cfg(&g_light_info, &base_clr[0], 3, g_light_para.speed, g_light_para.bright);
  1093. }
  1094. }
  1095. break;
  1096. case RC_MODE_SMOOTH:
  1097. {
  1098. light_mode_gradual_cfg(&g_light_info, rc_clr_smooth, 7, g_light_para.speed, g_light_para.bright);
  1099. }
  1100. break;
  1101. default:
  1102. {
  1103. }
  1104. break;
  1105. }
  1106. }
  1107. /********************************* ir_decode **********************************/
  1108. #include "u_time.h"
  1109. void ir_decode(const uint8_t *ir_code)
  1110. {
  1111. #define RC_USER_CODE_0 (0x00)
  1112. // #define RC_USER_CODE_1 (0xFF) //
  1113. #define RC_USER_CODE_1 (0xEF)
  1114. #define RC_USER_CODE_2 (0x7F)
  1115. if (ir_code[0] == RC_USER_CODE_0 && (ir_code[1] == RC_USER_CODE_1 || ir_code[1] == RC_USER_CODE_2))
  1116. {
  1117. if (ir_code[2] == (~ir_code[3] & 0xff))
  1118. {
  1119. //U_UART_PRINTF("ir_code = %02X\n", ir_code[2]);
  1120. if (g_light_para.power_st == GLO_DIS && ir_code[2] != RC_CODE_ON)
  1121. {
  1122. return;
  1123. }
  1124. switch(ir_code[2])
  1125. {
  1126. case RC_CODE_UP:
  1127. {
  1128. if (g_light_para.effect == LIGHT_EFFECT_STATIC)
  1129. {
  1130. g_light_para.bright = (g_light_para.bright + 10) >= LIGHT_BRIGHT_MAX ? LIGHT_BRIGHT_MAX : (g_light_para.bright + 10);
  1131. light_bright_ctrl(g_light_para.bright);
  1132. }
  1133. else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
  1134. {
  1135. //rhythm_sensit_ctrl(g_light_para.app_music_mode, -2, 0);
  1136. }
  1137. else
  1138. {
  1139. 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);
  1140. light_speed_ctrl(g_light_para.app_speed);
  1141. }
  1142. }
  1143. break;
  1144. case RC_CODE_DOWN:
  1145. {
  1146. if (g_light_para.effect == LIGHT_EFFECT_STATIC)
  1147. {
  1148. g_light_para.bright = (g_light_para.bright - 10) <= LIGHT_BRIGHT_MIN ? LIGHT_BRIGHT_MIN : (g_light_para.bright - 10);
  1149. light_bright_ctrl(g_light_para.bright);
  1150. }
  1151. else if(g_light_para.effect >= LIGHT_EFFECT_RHYTHM_MIN)
  1152. {
  1153. //rhythm_sensit_ctrl(g_light_para.app_music_mode, -2, 0);
  1154. }
  1155. else
  1156. {
  1157. g_light_para.app_speed = (g_light_para.app_speed - 10) < LIGHT_SPEED_MIN ? LIGHT_SPEED_MIN : (g_light_para.app_speed - 10);
  1158. light_speed_ctrl(g_light_para.app_speed);
  1159. }
  1160. }
  1161. break;
  1162. case RC_CODE_OFF:
  1163. {
  1164. light_power_set(GLO_DIS);
  1165. light_state_upload();
  1166. }
  1167. break;
  1168. case RC_CODE_ON:
  1169. {
  1170. light_power_set(GLO_EN);
  1171. light_state_upload();
  1172. }
  1173. break;
  1174. case RC_CODE_FLASH:
  1175. {
  1176. rc_mode_enter(RC_MODE_FLASH);
  1177. }
  1178. break;
  1179. case RC_CODE_STROBE:
  1180. {
  1181. rc_mode_enter(RC_MODE_STROBE);
  1182. }
  1183. break;
  1184. case RC_CODE_FADE:
  1185. {
  1186. rc_mode_enter(RC_MODE_FADE);
  1187. }
  1188. break;
  1189. case RC_CODE_SMOOTH:
  1190. {
  1191. rc_mode_enter(RC_MODE_SMOOTH);
  1192. }
  1193. break;
  1194. case RC_CODE_COLOR_R:
  1195. {
  1196. rc_mode_enter(RC_MODE_COLOR_R);
  1197. }
  1198. break;
  1199. case RC_CODE_COLOR_G:
  1200. {
  1201. rc_mode_enter(RC_MODE_COLOR_G);
  1202. }
  1203. break;
  1204. case RC_CODE_COLOR_B:
  1205. {
  1206. rc_mode_enter(RC_MODE_COLOR_B);
  1207. }
  1208. break;
  1209. case RC_CODE_W:
  1210. {
  1211. rc_mode_enter(RC_MODE_COLOR_W);
  1212. }
  1213. break;
  1214. case RC_CODE_COLOR_1:
  1215. {
  1216. rc_mode_enter(RC_MODE_COLOR_1);
  1217. }
  1218. break;
  1219. case RC_CODE_COLOR_2:
  1220. {
  1221. rc_mode_enter(RC_MODE_COLOR_2);
  1222. }
  1223. break;
  1224. case RC_CODE_COLOR_3:
  1225. {
  1226. rc_mode_enter(RC_MODE_COLOR_3);
  1227. }
  1228. break;
  1229. case RC_CODE_COLOR_4:
  1230. {
  1231. rc_mode_enter(RC_MODE_COLOR_4);
  1232. }
  1233. break;
  1234. case RC_CODE_COLOR_5:
  1235. {
  1236. rc_mode_enter(RC_MODE_COLOR_5);
  1237. }
  1238. break;
  1239. case RC_CODE_COLOR_6:
  1240. {
  1241. rc_mode_enter(RC_MODE_COLOR_6);
  1242. }
  1243. break;
  1244. case RC_CODE_COLOR_7:
  1245. {
  1246. rc_mode_enter(RC_MODE_COLOR_7);
  1247. }
  1248. break;
  1249. case RC_CODE_COLOR_8:
  1250. {
  1251. rc_mode_enter(RC_MODE_COLOR_8);
  1252. }
  1253. break;
  1254. case RC_CODE_COLOR_9:
  1255. {
  1256. rc_mode_enter(RC_MODE_COLOR_9);
  1257. }
  1258. break;
  1259. case RC_CODE_COLOR_10:
  1260. {
  1261. rc_mode_enter(RC_MODE_COLOR_10);
  1262. }
  1263. break;
  1264. case RC_CODE_COLOR_11:
  1265. {
  1266. rc_mode_enter(RC_MODE_COLOR_11);
  1267. }
  1268. break;
  1269. case RC_CODE_COLOR_12:
  1270. {
  1271. rc_mode_enter(RC_MODE_COLOR_12);
  1272. }
  1273. break;
  1274. }
  1275. light_info_save_set();
  1276. }
  1277. }
  1278. }
  1279. /********************************* ir_decode end **********************************/
  1280. uint8_t rgb_line_order_check(void)
  1281. {
  1282. uint8_t order_err = 0;
  1283. if (g_light_para.rgb_order[0] == 0)
  1284. {
  1285. 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))
  1286. {
  1287. order_err = 1;
  1288. }
  1289. else
  1290. {
  1291. order_err = 0;
  1292. }
  1293. }
  1294. else if (g_light_para.rgb_order[0] == 1)
  1295. {
  1296. 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))
  1297. {
  1298. order_err = 1;
  1299. }
  1300. else
  1301. {
  1302. order_err = 0;
  1303. }
  1304. }
  1305. else if (g_light_para.rgb_order[0] == 2)
  1306. {
  1307. 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))
  1308. {
  1309. order_err = 1;
  1310. }
  1311. else
  1312. {
  1313. order_err = 0;
  1314. }
  1315. }
  1316. else
  1317. {
  1318. order_err = 0;
  1319. }
  1320. if (order_err == 0)
  1321. {
  1322. g_light_para.rgb_order[0] = 0;
  1323. g_light_para.rgb_order[1] = 1;
  1324. g_light_para.rgb_order[2] = 2;
  1325. }
  1326. U_UART_PRINTF("order_err = %d\n", order_err);
  1327. return order_err;
  1328. }
  1329. /********************************* app_ctrl end **********************************/
  1330. /********************************* flash_save **********************************/
  1331. #include "u_time.h"
  1332. #define FLASH_SAVE_BASE_ADDR (0x27800)
  1333. #define FLASH_SAVE_FLAG (0x5A)
  1334. extern AlarmTime_t m_alarm_cfg[2]; //3个闹钟结构体定义
  1335. void flash_printf(void)
  1336. {
  1337. // U_UART_PRINTF("save_flag = %d, clr_data = %d, effect = %d\n", \
  1338. // g_light_para.save_flag, m_app_colour_info.clr_data[0], m_app_mode_info[0].effect);
  1339. //
  1340. // U_UART_PRINTF("dow_st = %d, alarm_st = %d\n", \
  1341. // m_count_down.alarm_state, m_alarm_cfg[0].alarm_state);
  1342. }
  1343. static uint32_t flash_offset_addr_set(uint32_t data_size)
  1344. {
  1345. if (data_size % 4 == 0)
  1346. {
  1347. return data_size;
  1348. }
  1349. else
  1350. {
  1351. return data_size + (4 - (data_size % 4));
  1352. }
  1353. }
  1354. /********************************* flash_save **********************************/
  1355. #include "user_driver.h"
  1356. //#define BT_LIGHT_FLASH_ADDR (0x7f000)
  1357. #define BT_LIGHT_FLASH_ADDR (0x3f000) //芯片最后一次扇区
  1358. static uint8_t m_flash_save_flg = 0;
  1359. void light_info_save_set(void)
  1360. {
  1361. m_flash_save_flg = 1;
  1362. }
  1363. void light_info_save(void)
  1364. {
  1365. //flash_set_line_mode(1);
  1366. flash_erase_sector(BT_LIGHT_FLASH_ADDR);
  1367. flash_write_data((uint8_t *)&g_light_para, BT_LIGHT_FLASH_ADDR , sizeof(LightPara_t));
  1368. U_UART_PRINTF("save_ok\r\n");
  1369. //flash_set_line_mode(4);
  1370. }
  1371. void light_flash_save_cb(void)
  1372. {
  1373. if (m_flash_save_flg)
  1374. {
  1375. m_flash_save_flg = 0;
  1376. light_info_save();
  1377. }
  1378. }
  1379. /********************************* flash_save end **********************************/
  1380. void light_info_init(void)
  1381. {
  1382. //flash_set_line_mode(1);
  1383. flash_read_data((uint8_t *)&g_light_para, BT_LIGHT_FLASH_ADDR , sizeof(LightPara_t));
  1384. delay_us(20);
  1385. //flash_set_line_mode(4);
  1386. if (g_light_para.save_flag == FLASH_SAVE_FLAG)
  1387. {
  1388. //flash_printf();
  1389. }
  1390. else
  1391. {
  1392. U_UART_PRINTF("flash_init\n");
  1393. memset(&g_light_para, 0, sizeof(LightPara_t));
  1394. g_light_para.save_flag = FLASH_SAVE_FLAG;
  1395. g_light_para.power_st = GLO_EN;
  1396. g_light_para.bright = LIGHT_BRIGHT_MAX;
  1397. g_light_para.speed = LIGHT_DEF_SPEED;
  1398. g_light_para.rhythm_sensit = 25;
  1399. g_light_para.app_speed = 109 - LIGHT_DEF_SPEED * 10;
  1400. g_light_para.app_mode[0] = LIGHT_APP_MODE_COLORUR;
  1401. g_light_para.app_mode[1] = 0x01;
  1402. g_light_para.clr_temp[0] = 0xFF;
  1403. g_light_para.clr_temp[1] = 0x00;
  1404. g_light_para.clr_temp[2] = 0x00;
  1405. g_light_para.rgb_order[0] = 0;
  1406. g_light_para.rgb_order[1] = 1;
  1407. g_light_para.rgb_order[2] = 2;
  1408. light_info_save();
  1409. }
  1410. g_light_para.rebootCnt++;
  1411. rgb_line_order_check();
  1412. 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);
  1413. light_power_set(g_light_para.power_st);
  1414. light_info_save();
  1415. //U_UART_PRINTF("size:%d\r\n",sizeof(g_light_para));
  1416. }
  1417. /********************************* flash_save end **********************************/
  1418. #endif