user_led.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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_ERROR_ITEMS_COLOR 0x00FFA500 //物资错误
  18. #define LED_VIEW_NO_BOARD_COLOR 0x00FFFF00 //无光敏传感器
  19. #define LED_VIEW_ITEMS_COLOR 0x00FF0000 //有物品
  20. #define LED_VIEW_PUT_ITEMS_COLOR 0x00FF0000 //存物资
  21. #define LED_VIEW_TAKE_ITEMS_COLOR 0x0000FF00 //取物资
  22. #define LED_VIEW_NO_ITEMS_COLOR 0x0000FF00 //无物品
  23. #define FLICKER_DELAYTIME_DEFAULT 100 / USER_WS2812B_INTERVAL
  24. #define ID_ERROR_FLICKER_DEFAULT 1000 / USER_WS2812B_INTERVAL
  25. #define OFFLINE_FLICKER_DEFAULT 200 / USER_WS2812B_INTERVAL
  26. #define BREATH_SPEED_DEFAULT 2000 / USER_WS2812B_INTERVAL
  27. typedef enum
  28. {
  29. LED_QUEUE_TIME = 0,
  30. }LED_QUEUE_TYPE;
  31. typedef struct{
  32. uint8_t red;
  33. uint8_t green;
  34. uint8_t blue;
  35. }led_color_s;
  36. typedef enum{
  37. LED_STAT_OFF = 0,
  38. LED_STAT_ON = 1
  39. }LED_STAT;
  40. typedef enum{
  41. LED_WORK_OFF = 0, //暗
  42. LED_WORK_ON = 1, //亮
  43. LED_WORK_INVERT = 2, //闪烁
  44. LED_WORK_BREATHE = 4, //呼吸模式
  45. LED_WORK_MAX = 5,
  46. }LED_WORK_STAT;
  47. typedef enum{
  48. LED_VIEW_NULL = 0,
  49. LED_VIEW_NO_ITEMS, //无物品
  50. LED_VIEW_ITEMS, //有物品
  51. LED_VIEW_TAKE_ITEMS, //取物资
  52. LED_VIEW_PUT_ITEMS, //存物资
  53. LED_VIEW_NO_BOARD, //无光敏传感器
  54. LED_VIEW_ERROR_ITEMS, //物资错误
  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. LED_STAT stat;
  64. led_color_s color;
  65. LED_WORK_STAT workStat;
  66. led_view_stat_e viewStat;
  67. uint32_t single_flicker_period;
  68. uint32_t flicker_period ;
  69. uint32_t flicker_onperiod;
  70. uint32_t flicker_count;
  71. uint8_t duty_value;
  72. uint32_t single_on_durationTime; //PWM变化结束后持续时间,单位:ms
  73. uint32_t on_durationTime; //PWM变化结束后持续时间,单位:ms
  74. uint32_t single_off_durationTime; //PWM变化结束后持续时间,单位:ms
  75. uint32_t off_durationTime; //PWM变化结束后持续时间,单位:ms
  76. }led_work_s;
  77. void led_init(void);
  78. void led_task_tick(void);
  79. void vLed_task_pro(void);
  80. bool set_led_indication(uint8_t idx, uint32_t color, LED_WORK_STAT work_stat, ...);
  81. void vUser_led_set_view_stat(uint8_t idx, led_view_stat_e stat);
  82. void vUser_led_set_alarm_view(led_all_alarm_stat_e alarmStat, bool stat);
  83. #ifdef __cplusplus
  84. }
  85. #endif
  86. #endif // LED_H__
  87. /** @} */