led.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #ifndef _LED_H__
  2. #define _LED_H__
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "define.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #define LED_INTERVAL 10
  10. #define WS2812B_NORMAL_RGB 0x0000FF00
  11. #define WS2812B_RST_RGB 0x00FFFFCC
  12. #define WS2812B_BLE_RGB 0x0000FF40
  13. #define WS2812B_CANID_ERROR_RGB 0x00FFD700
  14. #define WS2812B_OFFLINE_RGB 0x00FFEC8B
  15. #define LED_VIEW_ALARM_COLOR 0x00FF9900 //报警
  16. #define LED_VIEW_WARN_COLOR 0x00FFFF00 //警告
  17. #define LED_VIEW_KEY_ELECT_COLOR 0x00FF0000 //有钥匙并上锁
  18. #define LED_VIEW_NOKEY_ELECT_COLOR 0x00FF0000 //无钥匙并上锁
  19. #define LED_VIEW_KEY_NOELECT_COLOR 0x0000FF00 //有钥匙没上锁
  20. #define LED_VIEW_NOKEY_NOELECT_COLOR 0x0000FF00 //无钥匙没上锁
  21. #define FLICKER_DELAYTIME_DEFAULT 100 / USER_WS2812B_INTERVAL
  22. #define ID_ERROR_FLICKER_DEFAULT 1000 / USER_WS2812B_INTERVAL
  23. #define OFFLINE_FLICKER_DEFAULT 200 / USER_WS2812B_INTERVAL
  24. #define BREATH_SPEED_DEFAULT 2000 / USER_WS2812B_INTERVAL
  25. typedef enum
  26. {
  27. LED_QUEUE_TIME = 0,
  28. }LED_QUEUE_TYPE;
  29. typedef enum{
  30. RIGHT_LED = 0,
  31. DEV_LED = 1,
  32. LEFT_LED = 2,
  33. LED_TYPE_MAX = 3,
  34. }LED_TYPE;
  35. typedef struct{
  36. uint8_t red;
  37. uint8_t green;
  38. uint8_t blue;
  39. }led_color_s;
  40. typedef enum{
  41. LED_STAT_OFF = 0,
  42. LED_STAT_ON = 1
  43. }LED_STAT;
  44. typedef enum{
  45. LED_WORK_OFF = 0, //暗
  46. LED_WORK_ON = 1, //亮
  47. LED_WORK_INVERT = 2, //闪烁
  48. LED_WORK_BREATHE = 4, //呼吸模式
  49. LED_WORK_MAX = 5,
  50. }LED_WORK_STAT;
  51. typedef enum{
  52. LED_VIEW_NULL = 0,
  53. LED_VIEW_ENTER_OTA,
  54. LED_VIEW_OTA,
  55. }led_view_stat_e;
  56. typedef enum{
  57. LED_ALL_ALARM_RST = 0,
  58. LED_ALL_ALARM_BLE = 1,
  59. LED_ALL_ALARM_CAN_IDX_ERROR = 2,
  60. LED_ALL_ALARM_OFFLINE = 3,
  61. }led_all_alarm_stat_e;
  62. typedef struct{
  63. const uint8_t idx;
  64. LED_STAT stat;
  65. led_color_s color;
  66. LED_WORK_STAT workStat;
  67. led_view_stat_e viewStat;
  68. uint32_t single_flicker_period;
  69. uint32_t flicker_period ;
  70. uint32_t flicker_onperiod;
  71. uint32_t flicker_count;
  72. uint8_t duty_on;
  73. uint32_t duty_value;
  74. uint32_t single_on_durationTime; //PWM变化结束后持续时间,单位:ms
  75. uint32_t on_durationTime; //PWM变化结束后持续时间,单位:ms
  76. uint32_t single_off_durationTime; //PWM变化结束后持续时间,单位:ms
  77. uint32_t off_durationTime; //PWM变化结束后持续时间,单位:ms
  78. }led_work_s;
  79. void led_task_init(void);
  80. void led_task_start(void);
  81. bool set_led_indication(LED_TYPE type, uint32_t color, LED_WORK_STAT work_stat, ...);
  82. void vUser_led_set_view_stat(led_view_stat_e stat);
  83. extern tmosTaskID led_task_id;
  84. #ifdef __cplusplus
  85. }
  86. #endif
  87. #endif // LED_H__
  88. /** @} */