light.h 3.1 KB

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