You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

196 lines
5.1 KiB

3 years ago
  1. #include "light.h"
  2. rgb_message_t rgb_message;
  3. TIMING_MODE_T timing_mode;
  4. ERROR_MODE_T error_mode;
  5. timing_message_t timing_message;
  6. /**
  7. * @brief ,
  8. *
  9. */
  10. void light_module_set_rgb_mode(RGB_MODE_T mode) {
  11. if (mode == OPEN_RED_LIGHT) {
  12. port_led_r_set(true);
  13. port_led_g_set(false);
  14. port_led_b_set(false);
  15. rgb_message.turn_off_the_mode_before_rgb = OPEN_RED_LIGHT;
  16. } else if (mode == OPEN_GREEN_LIGHT) {
  17. port_led_r_set(false);
  18. port_led_g_set(true);
  19. port_led_b_set(false);
  20. rgb_message.turn_off_the_mode_before_rgb = OPEN_GREEN_LIGHT;
  21. } else if (mode == OPEN_BLUE_LIGHT) {
  22. port_led_r_set(false);
  23. port_led_g_set(false);
  24. port_led_b_set(true);
  25. rgb_message.turn_off_the_mode_before_rgb = OPEN_BLUE_LIGHT;
  26. } else if (mode == CLOSE_RGB_LIGHT) {
  27. rgb_message.turn_off_the_mode_before_rgb = OPEN_BLUE_LIGHT;
  28. port_led_r_set(false);
  29. port_led_g_set(false);
  30. port_led_b_set(false);
  31. }
  32. }
  33. /**
  34. * @brief rgb闪烁或者不闪烁
  35. *
  36. * @param mode
  37. */
  38. void light_module_set_rgb_flicker_mode(bool state) {
  39. if (state == false) {
  40. rgb_message.rgb_flicker_mode = false;
  41. } else if (state == true) {
  42. rgb_message.rgb_flicker_mode = true;
  43. }
  44. }
  45. void process_rgb_flicker_mode() {
  46. static uint32_t rgb_flicker_ticket = 0;
  47. static uint8_t rgb_ticket_count = 0;
  48. if (port_haspassedms(rgb_flicker_ticket) > 1000) {
  49. rgb_flicker_ticket = get_sys_ticket();
  50. if (rgb_ticket_count < 3) {
  51. // turn_off_the_mode_before_rgb保存了关闭之前的RGB亮灯的模式
  52. light_module_set_rgb_mode(rgb_message.turn_off_the_mode_before_rgb);
  53. } else {
  54. light_module_set_rgb_mode(CLOSE_RGB_LIGHT);
  55. rgb_ticket_count = 0;
  56. }
  57. rgb_ticket_count++;
  58. }
  59. }
  60. /**
  61. * @brief 30min 60min 90min 120min分别打开led3 led2 led1 led0灯
  62. *
  63. * @param mode
  64. */
  65. void light_module_set_timing_light_mode(TIMING_MODE_T mode) {
  66. if (mode == OPEN_ONE_LED) {
  67. port_led0_set(true);
  68. port_led1_set(false);
  69. port_led2_set(false);
  70. port_led3_set(false);
  71. } else if (mode == OPEN_TWO_LED) {
  72. port_led0_set(true);
  73. port_led1_set(true);
  74. port_led2_set(false);
  75. port_led3_set(false);
  76. } else if (mode == OPEN_THREE_LED) {
  77. port_led0_set(true);
  78. port_led1_set(true);
  79. port_led2_set(true);
  80. port_led3_set(false);
  81. } else if (mode == OPEN_FOUR_LED) {
  82. port_led0_set(true);
  83. port_led1_set(true);
  84. port_led2_set(true);
  85. port_led3_set(true);
  86. } else if (mode == CLOSE_ALL_LED) {
  87. port_led0_set(false);
  88. port_led1_set(false);
  89. port_led2_set(false);
  90. port_led3_set(false);
  91. }
  92. timing_message.now_timing_mode=mode;
  93. }
  94. /**
  95. * @brief
  96. *
  97. * @param mode
  98. */
  99. void light_module_set_error_light_mode(uint8_t mode) {
  100. if (mode == ERROR_MODE0) {
  101. port_led0_set(false);
  102. port_led1_set(false);
  103. port_led2_set(false);
  104. port_led3_set(false);
  105. } else if (mode == ERROR_MODE1) {
  106. port_led0_set(false);
  107. port_led1_set(false);
  108. port_led2_set(false);
  109. port_led3_set(false);
  110. } else if (mode == ERROR_MODE2) {
  111. port_led0_set(false);
  112. port_led1_set(false);
  113. port_led2_set(false);
  114. port_led3_set(false);
  115. } else if (mode == ERROR_MODE3) {
  116. port_led0_set(false);
  117. port_led1_set(false);
  118. port_led2_set(false);
  119. port_led3_set(false);
  120. }
  121. }
  122. /**
  123. * @brief rgbled0~led3
  124. *
  125. */
  126. void light_module_close_all_light(void) {
  127. light_module_set_rgb_mode(CLOSE_RGB_LIGHT);
  128. light_module_set_timing_light_mode(CLOSE_ALL_LED);
  129. light_module_set_rgb_flicker_mode(false);
  130. }
  131. /**
  132. * @brief RGB的亮灭
  133. *
  134. */
  135. void test_set_rgb_mode(void) {
  136. printf("try_test_set_rgb_mode\r\n");
  137. static int i = 0;
  138. if (i == 0) {
  139. i = 1;
  140. light_module_set_rgb_mode(OPEN_RED_LIGHT);
  141. } else if (i == 1) {
  142. i = 2;
  143. light_module_set_rgb_mode(OPEN_GREEN_LIGHT);
  144. } else if (i == 2) {
  145. i = 3;
  146. light_module_set_rgb_mode(OPEN_BLUE_LIGHT);
  147. } else if (i == 3) {
  148. i = 0;
  149. light_module_set_rgb_mode(CLOSE_RGB_LIGHT);
  150. }
  151. }
  152. /**
  153. * @brief led0~led3的亮灭
  154. *
  155. */
  156. void test_set_led_mode(void) {
  157. printf("try_test_set_led_mode\r\n");
  158. static int j = 0;
  159. if (j == 0) {
  160. j = 1;
  161. light_module_set_timing_light_mode(OPEN_ONE_LED);
  162. } else if (j == 1) {
  163. j = 2;
  164. light_module_set_timing_light_mode(OPEN_TWO_LED);
  165. } else if (j == 2) {
  166. j = 3;
  167. light_module_set_timing_light_mode(OPEN_THREE_LED);
  168. } else if (j == 3) {
  169. j = 4;
  170. light_module_set_timing_light_mode(OPEN_FOUR_LED);
  171. } else if (j == 4) {
  172. j = 0;
  173. light_module_set_timing_light_mode(CLOSE_ALL_LED);
  174. }
  175. }
  176. /**
  177. * @brief rgb闪烁或者不闪烁
  178. *
  179. */
  180. void test_set_rgb_flicker_mode(void) {
  181. printf("test_light_module_set_rgb_flicker_mode\r\n");
  182. static bool m = false;
  183. if (m == 0) {
  184. light_module_set_rgb_flicker_mode(true);
  185. } else if (m == 1) {
  186. light_module_set_rgb_flicker_mode(false);
  187. }
  188. m = !m;
  189. }