user_led.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #ifndef USER_LED_H__
  2. #define USER_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_ELECT_FAULT_COLOR 0x00FFA500 //电磁锁故障
  18. #define LED_VIEW_LOCK_ELECT_COLOR 0x00FF0000 //有挂锁并上锁
  19. #define LED_VIEW_NOLOCK_ELECT_COLOR 0x00FF0000 //无挂锁并上锁
  20. #define LED_VIEW_LOCK_NOELECT_COLOR 0x0000FF00 //有挂锁没上锁
  21. #define LED_VIEW_NOLOCK_NOELECT_COLOR 0x0000FF00 //无挂锁没上锁
  22. #define FLICKER_DELAYTIME_DEFAULT 100 / USER_WS2812B_INTERVAL
  23. #define ID_ERROR_FLICKER_DEFAULT 1000 / USER_WS2812B_INTERVAL
  24. #define OFFLINE_FLICKER_DEFAULT 200 / USER_WS2812B_INTERVAL
  25. #define BREATH_SPEED_DEFAULT 2000 / USER_WS2812B_INTERVAL
  26. typedef enum
  27. {
  28. LED_QUEUE_TIME = 0,
  29. }LED_QUEUE_TYPE;
  30. typedef enum{
  31. DEV_LED = 0,
  32. LED_01 = 1,
  33. LED_02 = 2,
  34. LED_03 = 3,
  35. LED_04 = 4,
  36. LED_05 = 5,
  37. LED_TYPE_MAX = 6,
  38. }LED_TYPE;
  39. typedef struct{
  40. uint8_t red;
  41. uint8_t green;
  42. uint8_t blue;
  43. }led_color_s;
  44. typedef enum{
  45. LED_STAT_OFF = 0,
  46. LED_STAT_ON = 1
  47. }LED_STAT;
  48. typedef enum{
  49. LED_WORK_OFF = 0, //暗
  50. LED_WORK_ON = 1, //亮
  51. LED_WORK_INVERT = 2, //闪烁
  52. LED_WORK_BREATHE = 4, //呼吸模式
  53. LED_WORK_MAX = 5,
  54. }LED_WORK_STAT;
  55. typedef enum{
  56. LED_VIEW_NULL = 0,
  57. LED_VIEW_ALARM, //报警
  58. LED_VIEW_WARN, //警告
  59. LED_VIEW_ELECT_FAUIL, //电磁锁故障
  60. LED_VIEW_LOCK_ELECT, //有挂锁并上锁
  61. LED_VIEW_NOLOCK_ELECT, //无挂锁并上锁
  62. LED_VIEW_LOCK_NOELECT, //有挂锁没上锁
  63. LED_VIEW_NOLOCK_NOELECT, //无挂锁没上锁
  64. }led_view_stat_e;
  65. typedef enum{
  66. LED_ALL_ALARM_RST = 0,
  67. LED_ALL_ALARM_BLE = 1,
  68. LED_ALL_ALARM_CAN_IDX_ERROR = 2,
  69. LED_ALL_ALARM_OFFLINE = 3,
  70. }led_all_alarm_stat_e;
  71. typedef struct{
  72. const uint8_t idx;
  73. LED_STAT stat;
  74. led_color_s color;
  75. LED_WORK_STAT workStat;
  76. led_view_stat_e viewStat;
  77. uint32_t single_flicker_period;
  78. uint32_t flicker_period ;
  79. uint32_t flicker_onperiod;
  80. uint32_t flicker_count;
  81. uint8_t duty_value;
  82. uint32_t single_on_durationTime; //PWM变化结束后持续时间,单位:ms
  83. uint32_t on_durationTime; //PWM变化结束后持续时间,单位:ms
  84. uint32_t single_off_durationTime; //PWM变化结束后持续时间,单位:ms
  85. uint32_t off_durationTime; //PWM变化结束后持续时间,单位:ms
  86. }led_work_s;
  87. void led_task_init(void);
  88. void led_task_start(void);
  89. bool set_led_indication(LED_TYPE type, uint32_t color, LED_WORK_STAT work_stat, ...);
  90. void vUser_led_set_view_stat(LED_TYPE idx, led_view_stat_e stat);
  91. void vUser_led_set_alarm_view(led_all_alarm_stat_e alarmStat, bool stat);
  92. extern tmosTaskID led_task_id;
  93. #ifdef __cplusplus
  94. }
  95. #endif
  96. #endif // LED_H__
  97. /** @} */