light.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef __LIGHT_H__
  2. #define __LIGHT_H__
  3. #include "types.h"
  4. // 灯光事件
  5. #define LIGHT_EVT_DEFAULT_MODE 0x0008 // 恢复为默认模式事件
  6. // 保存灯光数据事件
  7. #define LIGHT_EVT_SAVE_DATA 0x0010
  8. // 保存数据等待时间 秒
  9. #define SAVE_DATA_WAIT_TIME 5
  10. // 暖光 pwm脚
  11. #define GPIO_WARM P18
  12. #define GPIO_WARM2 P15
  13. #define WARM_CH 0
  14. // 冷光 pwm脚
  15. #define GPIO_COLD P20
  16. #define GPIO_COLD2 P31
  17. #define COLD_CH 1
  18. // 风扇 pwm
  19. #define GPIO_FAN P23
  20. // 亮度分级 0~100 翻 100倍
  21. #define TOTAl_LEVEL 100
  22. // 亮度更改步长
  23. #define LIGHT_STEP 5
  24. #define TEMP_MIN 2700
  25. #define TEMP_MAX 6500
  26. // 色温更改步长
  27. #define TEMP_STEP 50
  28. // adc 电源监测脚
  29. #define GPIO_POWER P28
  30. // 工作模式
  31. // 默认工作模式
  32. #define LIGHT_MODE_DEFAULT 0
  33. // 全亮模式(色温无效)
  34. #define LIGHT_MODE_FULL 1
  35. // 全亮模式下自动关闭时间 秒
  36. #define FULL_MODE_WAIT_TIME 60
  37. // 灯光控制命令起始码
  38. typedef enum {
  39. // 下发命令
  40. START_CODE_CMD = 0x6c,
  41. // 响应命令
  42. START_CODE_RES = 0xc6,
  43. // 通知命令
  44. START_CODE_NOTIFY = 0x66
  45. }light_cmd_start_code;
  46. // 灯光控制命令码
  47. typedef enum{
  48. CMD_OPEN = 0x01,
  49. CMD_CLOSE = 0x02,
  50. CMD_QUERY = 0x03,
  51. CMD_LIGTH = 0x04,
  52. CMD_TEMP = 0x05,
  53. CMD_FAN = 0x06,
  54. CMD_MODE = 0x07,
  55. CMD_CH = 0x08,
  56. CMD_HZ = 0x09,
  57. }light_cmd_code;
  58. // 灯光数据 色温, 亮度, 工作模式, 风扇
  59. typedef struct {
  60. bool open;
  61. uint16 temp;
  62. int light;
  63. int mode;
  64. int fan;
  65. } light_data_t;
  66. #define SAVE_FILE_ID 1
  67. // 命令头长度
  68. #define CMD_HEADER_LEN 4
  69. // 命令除去起始码与长度的长度
  70. #define CMD_LEN_LEN 2
  71. // 命令最大长度,包含起始码,长度,命令码,sn码,数据
  72. #define CMD_MAX_LEN 128
  73. typedef struct {
  74. light_cmd_start_code startCode;
  75. uint8_t len;
  76. light_cmd_code cmd;
  77. uint8_t sn;
  78. uint8 *data;
  79. } light_cmd_t;
  80. extern light_data_t light_data;
  81. // 通知回调函数
  82. typedef void (*LightCallbackFunc) (uint8 *res, uint16 len);
  83. extern void light_init(uint8 taskId);
  84. extern int light_ch_set(uint8_t ch, uint16_t val);
  85. // 计算冷暖光的亮度值,并且设置
  86. uint8_t comLightVal();
  87. uint16 comCmdResCode(uint8_t cmd, uint8_t sn, uint8* data, uint16 len, uint8_t *res);
  88. extern uint16 light_set(uint8_t val, uint8 sn, uint8 *res);
  89. extern uint16 temp_set(int temp, uint8_t sn, uint8 *res);
  90. extern uint16 open_light(uint8_t sn, uint8 *res);
  91. extern uint16 close_light(uint8_t sn, uint8 *res);
  92. extern uint16 change_light_mode (int mode, uint8_t sn, uint8 *res);
  93. extern uint16 parse_light_code(const uint8* data, uint16 len, uint8 *res);
  94. extern void light_register_notify_callback(LightCallbackFunc callback);
  95. uint16 Light_ProcessEvent( uint8 task_id, uint16 events );
  96. #endif