u_main.c 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. //#include "driver_gpio.h"
  2. //#include "Driver_uart.h"
  3. //#include "le_gap.h"
  4. #include "u_main.h"
  5. #include "u_time.h"
  6. #include "t_lev_decode.h"
  7. #include "u_pwm_drive.h"
  8. #include "u_effect_normal.h"
  9. #include "u_app_handler.h"
  10. #include "u_effect_rhythm.h"
  11. #include "u_light_ctrl.h"
  12. #include "u_power.h"
  13. #include "u_rc.h"
  14. LightPara_t g_light_para = {0x00};
  15. void ag_timer_glo_task_cb(void)
  16. {
  17. //sys_event_sched();
  18. if (g_ir_recv_done_flag == 1)
  19. {
  20. //红外接收
  21. g_ir_recv_done_flag = 0;
  22. ir_decode(rc_decode());
  23. U_UART_PRINTF("ir_code = %02X, %02X, %02X, %02X\n", g_ir_code[0], g_ir_code[1], g_ir_code[2], g_ir_code[3]);
  24. }
  25. }
  26. void ag_timer_sy_event_sched_cb(void)
  27. {
  28. }
  29. void ag_timer_test_cb(void)
  30. {
  31. static uint8_t s_run_cnt = 0;
  32. uint8_t tmp=0;
  33. tmp= ++s_run_cnt;
  34. s_run_cnt = tmp % 3;
  35. switch (s_run_cnt)
  36. {
  37. case 0:
  38. light_set_color(0x00FF00);
  39. break;
  40. case 1:
  41. light_set_color(0x0000FF);
  42. break;
  43. case 2:
  44. light_set_color(0xFF0000);
  45. break;
  46. default:
  47. break;
  48. }
  49. }
  50. /********************* 连接 断开 回调 ***********************/
  51. #if 1
  52. //蓝牙连接成功回调
  53. void u_gapc_connection_cd(void)
  54. {
  55. U_UART_PRINTF("gapc_connect\n");
  56. if (g_light_para.app_seting & 0xF0)
  57. {
  58. light_power_set(GLO_EN);
  59. }
  60. u_ag_timer_stop(AG_TIMER_ID_FLASH_SAVE);
  61. }
  62. //蓝牙连接断开回调
  63. void u_gapc_disconnect_cd(uint8_t reason)
  64. {
  65. U_UART_PRINTF("gapc_disconnect = %d\n", reason);
  66. if (g_light_para.app_seting & 0x0F)
  67. {
  68. light_power_set(GLO_DIS);
  69. }
  70. light_info_save();
  71. u_ag_timer_start(AG_TIMER_ID_FLASH_SAVE, TIMER_TIME_FLASH_SAVE, light_flash_save_cb);
  72. }
  73. #endif
  74. void u_rhythm_timer_ctrl(uint8_t timer_en)
  75. {
  76. if (timer_en)
  77. {
  78. u_ag_timer_start(AG_TIMER_ID_RHYTHM, TIMER_TIME_RHYTHM, rhythm_timer_cd);
  79. }
  80. else
  81. {
  82. u_ag_timer_stop(AG_TIMER_ID_RHYTHM);
  83. }
  84. }
  85. void light_time_timer_start(void)
  86. {
  87. u_ag_timer_start(AG_TIMER_ID_LIGHT_TIME, TIMER_TIME_LIGHT_TIME, alarm_time_task);
  88. }
  89. static void light_effect_timer_cb(void)
  90. {
  91. switch (g_light_para.effect)
  92. {
  93. case LIGHT_EFFECT_JUMP:
  94. {
  95. light_mode_jump_timer_cb(&g_light_info);
  96. }
  97. break;
  98. case LIGHT_EFFECT_GRADUAL:
  99. {
  100. light_mode_gradual_timer_cb(&g_light_info);
  101. }
  102. break;
  103. case LIGHT_EFFECT_BREATH:
  104. {
  105. light_mode_breath_timer_cb(&g_light_info);
  106. }
  107. break;
  108. case LIGHT_EFFECT_BLINK:
  109. {
  110. light_mode_blink_timer_cb(&g_light_info);
  111. }
  112. break;
  113. default:
  114. {
  115. light_effect_timer_stop();
  116. }
  117. break;
  118. }
  119. // if (g_light_para.app_mode == LIGHT_APP_MODE_RC_AUOT)
  120. // {
  121. // rc_mode_auot_ctrl(0);
  122. // }
  123. }
  124. static uint16_t m_light_timeing = 0;
  125. void light_effect_timer_start(uint16_t timing)
  126. {
  127. if (timing != NULL)
  128. {
  129. m_light_timeing = timing;
  130. }
  131. u_ag_timer_start(AG_TIMER_ID_LIGHT_EFFECT, m_light_timeing, light_effect_timer_cb);
  132. }
  133. void light_effect_timer_stop(void)
  134. {
  135. u_ag_timer_stop(AG_TIMER_ID_LIGHT_EFFECT);
  136. }
  137. void alarm_time_reach_cb(uint8_t execute_st)
  138. {
  139. uint8_t reply_len = 0, alarm_st[24] = {0x00};
  140. U_UART_PRINTF("alarm_time_reach_cb\n");
  141. light_power_set(execute_st);
  142. light_state_upload();
  143. time_alarm_state_query(alarm_st, &reply_len);
  144. reply_app_encode(0x35, alarm_st, reply_len);
  145. }
  146. //void uart_recv_handle(uint8_t *uart_data, uint8_t recv_len);
  147. //void u_while(void)
  148. //{
  149. // if (uart_rx_buff_header >= 3)
  150. // {
  151. // uart_recv_handle(uart_rx_buff, uart_rx_buff_header);
  152. // uart_rx_buff_header = 0;
  153. // }
  154. //}
  155. void u_init(void)
  156. {
  157. sys_param_init();//软件定时器任务列表初始化
  158. //Timer_Initial();//定时器初始化
  159. rc_init();//红外解码相关初始化
  160. power_check_init();//电源检测初始化
  161. light_info_init();//灯控信息初始化
  162. light_time_init();//灯控倒计时和闹钟1秒钟任务初始化
  163. u_ag_timer_start(AG_TIMER_ID_GLO_TASK, TIMER_TIME_GLO_TASK, ag_timer_glo_task_cb);//启动红外接收任务 20ms
  164. u_ag_timer_start(AG_TIMER_ID_FLASH_SAVE, TIMER_TIME_FLASH_SAVE, light_flash_save_cb);//启动保存flash任务 2000ms
  165. //u_ag_timer_start(AG_TIMER_ID_TEST, TIMER_TIME_LIGHT_TEST, ag_timer_test_cb);
  166. }
  167. uint8_t g_speed = 0;
  168. void uart_recv_handle(uint8_t *uart_data, uint8_t recv_len)
  169. {
  170. if (uart_data[0] == 0x55 && uart_data[1] == 0xAA)
  171. {
  172. if (uart_data[2] == 0x01)
  173. {
  174. light_rhythm_enter(uart_data[3]);
  175. }
  176. else if (uart_data[2] == 0x02)
  177. {
  178. //rhythm_sensit_ctrl(NULL, uart_data[3]);
  179. g_speed = uart_data[3];
  180. }
  181. else if (uart_data[2] == 0x03)
  182. {
  183. app_rhythm_val_up(uart_data[3]);
  184. }
  185. }
  186. U_UART_PRINTF("uart_recv %x\n", uart_data[2]);
  187. }