|
@@ -16,14 +16,13 @@ uint32_t _light_total = TOTAl_LEVEL;
|
|
|
light_data_t light_data = {true, TEMP_MAX, 100, LIGHT_MODE_DEFAULT, 100};
|
|
|
|
|
|
// 通知回调函数
|
|
|
-CallbackFunc notify_callback = NULL;
|
|
|
+LightCallbackFunc notify_callback = NULL;
|
|
|
|
|
|
int light_init(int taskId){
|
|
|
LOG("[light_init]\n");
|
|
|
- task_light_id = taskId
|
|
|
+ task_light_id = taskId;
|
|
|
// 初始化pwm
|
|
|
int ret = 0;
|
|
|
- // if()
|
|
|
ret = pwm_light_init(WARM_CH, GPIO_WARM, _light_total, _light_total, 5, PWM_CLK_DIV_16);
|
|
|
ret = pwm_light_init(WARM_CH, GPIO_WARM2, _light_total, _light_total, 5, PWM_CLK_DIV_16);
|
|
|
if(ret != 0){
|
|
@@ -102,12 +101,12 @@ int comLightVal(){
|
|
|
// }
|
|
|
|
|
|
// 计算命令响应码
|
|
|
-uint16 comCmdResCode(uint8_t cmd, uint8_t sn, uint8* data, uint16 len uint8_t *res){
|
|
|
+uint16 comCmdResCode(uint8_t cmd, uint8_t sn, uint8* data, uint16 len, uint8_t *res){
|
|
|
// 响应码 `起始码` `长度` `命令码` `sn码` `数据1` `数据2`
|
|
|
// 0x6c 0x06 0x01 0x64
|
|
|
if (res == NULL)
|
|
|
{
|
|
|
- return;
|
|
|
+ return -1;
|
|
|
}
|
|
|
// 判断是否有sn码,有则为响应,没有则为通知
|
|
|
if(sn == 0)
|
|
@@ -156,7 +155,7 @@ uint16 close_light(uint8_t sn , uint8 *res){
|
|
|
resLen = comCmdResCode(CMD_CLOSE, sn, NULL, 0, res);
|
|
|
notify_callback(res, resLen);
|
|
|
}else{
|
|
|
- resLen = (CMD_CLOSE, sn, NULL, 0, res);
|
|
|
+ resLen = comCmdResCode(CMD_CLOSE, sn, NULL, 0, res);
|
|
|
}
|
|
|
return resLen;
|
|
|
}
|
|
@@ -210,7 +209,7 @@ uint16 temp_set(int temp, uint8_t sn , uint8 *res){
|
|
|
if(res == NULL && notify_callback != NULL)
|
|
|
{
|
|
|
resLen = comCmdResCode(CMD_TEMP, sn, data, 2, res);
|
|
|
- notify_callback(res);
|
|
|
+ notify_callback(res,resLen);
|
|
|
}else{
|
|
|
resLen = comCmdResCode(CMD_TEMP, sn, data, 2, res);
|
|
|
}
|
|
@@ -232,7 +231,7 @@ uint16 change_light_mode (light_cmd_start_code mode, uint8_t sn, uint8 *res)
|
|
|
{
|
|
|
// 全亮模式, 切换至最大模式
|
|
|
light_data.light = 100;
|
|
|
- light_data.fun = 100;
|
|
|
+ light_data.fan = 100;
|
|
|
// 添加定时器, 1分钟后切换至默认模式
|
|
|
osal_start_timerEx( task_light_id, LIGHT_EVT_DEFAULT_MODE, FULL_MODE_WAIT_TIME * 1000);
|
|
|
}
|
|
@@ -242,7 +241,7 @@ uint16 change_light_mode (light_cmd_start_code mode, uint8_t sn, uint8 *res)
|
|
|
if(res == NULL && notify_callback != NULL)
|
|
|
{
|
|
|
resLen = comCmdResCode(CMD_MODE, sn, data, 1, res);
|
|
|
- notify_callback(res);
|
|
|
+ notify_callback(res, resLen);
|
|
|
}else{
|
|
|
resLen = comCmdResCode(CMD_MODE, sn, data, 1, res);
|
|
|
}
|
|
@@ -269,7 +268,7 @@ uint16 parse_light_code(uint8* data, uint16 len, uint8 *res)
|
|
|
}
|
|
|
|
|
|
light_cmd_t light_cmd;
|
|
|
-
|
|
|
+ uint16 resLen = 0;
|
|
|
memcpy(&light_cmd, data, len);
|
|
|
// 现在你可以使用 light_cmd 结构体中的数据了
|
|
|
printf("Start Code: %d\n", light_cmd.startCode);
|
|
@@ -279,29 +278,29 @@ uint16 parse_light_code(uint8* data, uint16 len, uint8 *res)
|
|
|
switch (light_cmd.cmd)
|
|
|
{
|
|
|
case CMD_OPEN:
|
|
|
- return open_light(light_cmd.sn, &res);
|
|
|
+ resLen = open_light(light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_CLOSE:
|
|
|
- return close_light(light_cmd.sn, &res);
|
|
|
+ resLen = close_light(light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_QUERY:
|
|
|
- return query_light(light_cmd.sn, &res);
|
|
|
+ resLen = query_light(light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_LIGTH:
|
|
|
- return light_set(light_cmd.data[0], light_cmd.sn, &res);
|
|
|
+ resLen = light_set(light_cmd.data[0], light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_TEMP:
|
|
|
- return temp_set(light_cmd.data[0] << 8 | light_cmd.data[1], light_cmd.sn, &res);
|
|
|
+ resLen = temp_set(light_cmd.data[0] << 8 | light_cmd.data[1], light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_MODE:
|
|
|
- return change_light_mode(light_cmd.data[0], light_cmd.sn, &res);
|
|
|
+ resLen = change_light_mode(light_cmd.data[0], light_cmd.sn, res);
|
|
|
break;
|
|
|
}
|
|
|
- return -1;
|
|
|
+ return resLen;
|
|
|
}
|
|
|
|
|
|
// 注册通知回调函数,用于再某些情况下通知上位机
|
|
|
-void light_register_notify_callback(CallbackFunc callback)
|
|
|
+void light_register_notify_callback(LightCallbackFunc callback)
|
|
|
{
|
|
|
notify_callback = callback;
|
|
|
}
|
|
@@ -316,9 +315,10 @@ uint16 Light_ProcessEvent( uint8 task_id, uint16 events )
|
|
|
if( events & LIGHT_EVT_DEFAULT_MODE){
|
|
|
// 切换至默认模式
|
|
|
uint8 *res;
|
|
|
- change_light_mode(LIGHT_MODE_DEFAULT, 0, res);
|
|
|
+ uint16 resLen = 0;
|
|
|
+ resLen = change_light_mode(LIGHT_MODE_DEFAULT, 0, res);
|
|
|
if(notify_callback != NULL){
|
|
|
- notify_callback(res);
|
|
|
+ notify_callback(res, resLen);
|
|
|
}
|
|
|
return (events ^ LIGHT_EVT_DEFAULT_MODE);
|
|
|
}
|