light.h 2.3 KB

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