|
@@ -18,7 +18,7 @@ light_data_t light_data = {true, TEMP_MAX, 100, LIGHT_MODE_DEFAULT, 100};
|
|
|
|
|
|
LightCallbackFunc notify_callback = NULL;
|
|
|
|
|
|
-int light_init(int taskId){
|
|
|
+void light_init(uint8 taskId){
|
|
|
LOG("[light_init]\n");
|
|
|
task_light_id = taskId;
|
|
|
|
|
@@ -27,21 +27,20 @@ int light_init(int taskId){
|
|
|
ret = pwm_light_init(WARM_CH, GPIO_WARM2, _light_total, _light_total, 5, PWM_CLK_DIV_16);
|
|
|
if(ret != 0){
|
|
|
LOG("[light_init] pwm_light_init warm failed %d \n", ret);
|
|
|
- return ret;
|
|
|
+ return ;
|
|
|
}
|
|
|
|
|
|
ret = pwm_light_init(COLD_CH, GPIO_COLD, _light_total, _light_total, 5, PWM_CLK_DIV_16);
|
|
|
ret = pwm_light_init(COLD_CH, GPIO_COLD2, _light_total, _light_total, 5, PWM_CLK_DIV_16);
|
|
|
if(ret != 0){
|
|
|
LOG("[light_init] pwm_light_init cold failed %d \n", ret);
|
|
|
- return ret;
|
|
|
+ return ;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- return ret;
|
|
|
}
|
|
|
|
|
|
int light_ch_set(uint8_t ch, uint16_t val){
|
|
@@ -54,7 +53,7 @@ int light_ch_set(uint8_t ch, uint16_t val){
|
|
|
|
|
|
|
|
|
|
|
|
-int comLightVal(){
|
|
|
+uint8_t comLightVal(){
|
|
|
int light_val = light_data.light, temp_val = light_data.temp;
|
|
|
|
|
|
|
|
@@ -104,11 +103,9 @@ int comLightVal(){
|
|
|
uint16 comCmdResCode(uint8_t cmd, uint8_t sn, uint8* data, uint16 len, uint8_t *res){
|
|
|
|
|
|
|
|
|
- if (res == NULL)
|
|
|
- {
|
|
|
- return -1;
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
+ res = (uint8_t *)osal_mem_alloc(len + 4);
|
|
|
if(sn == 0)
|
|
|
{
|
|
|
res[0] = START_CODE_NOTIFY;
|
|
@@ -124,8 +121,10 @@ uint16 comCmdResCode(uint8_t cmd, uint8_t sn, uint8* data, uint16 len, uint8_t *
|
|
|
res[3] = sn;
|
|
|
|
|
|
if(len > 0){
|
|
|
+
|
|
|
memcpy(res + 4, data, len);
|
|
|
}
|
|
|
+
|
|
|
return len + 4;
|
|
|
}
|
|
|
|
|
@@ -172,7 +171,7 @@ uint16 query_light(uint8_t sn , uint8 *res){
|
|
|
}
|
|
|
|
|
|
|
|
|
-uint16 light_set(uint8_t val, uint8_t sn , uint8 *res){
|
|
|
+uint16 light_set(uint8 val, uint8_t sn , uint8 *res){
|
|
|
|
|
|
|
|
|
if(val > 100){
|
|
@@ -180,7 +179,7 @@ uint16 light_set(uint8_t val, uint8_t sn , uint8 *res){
|
|
|
}
|
|
|
light_data.light = val;
|
|
|
comLightVal();
|
|
|
- uint8_t data[1] = {val};
|
|
|
+ uint8 data[1] = {val};
|
|
|
uint16 resLen = 0;
|
|
|
if(res == NULL && notify_callback != NULL)
|
|
|
{
|
|
@@ -219,12 +218,13 @@ uint16 temp_set(int temp, uint8_t sn , uint8 *res){
|
|
|
|
|
|
* led 模式切换
|
|
|
*/
|
|
|
-uint16 change_light_mode (light_cmd_start_code mode, uint8_t sn, uint8 *res)
|
|
|
+uint16 change_light_mode (int mode, uint8_t sn, uint8 *res)
|
|
|
{
|
|
|
+ uint16 resLen = 0;
|
|
|
if (mode == light_data.mode)
|
|
|
{
|
|
|
|
|
|
- return -1;
|
|
|
+ return resLen;
|
|
|
}
|
|
|
light_data.mode = mode;
|
|
|
if (mode == LIGHT_MODE_FULL)
|
|
@@ -237,7 +237,7 @@ uint16 change_light_mode (light_cmd_start_code mode, uint8_t sn, uint8 *res)
|
|
|
}
|
|
|
comLightVal();
|
|
|
uint8_t data[1] = {mode};
|
|
|
- uint16 resLen = 0;
|
|
|
+
|
|
|
if(res == NULL && notify_callback != NULL)
|
|
|
{
|
|
|
resLen = comCmdResCode(CMD_MODE, sn, data, 1, res);
|
|
@@ -260,48 +260,65 @@ uint16 change_light_mode (light_cmd_start_code mode, uint8_t sn, uint8 *res)
|
|
|
*/
|
|
|
uint16 parse_light_code(uint8* data, uint16 len, uint8 *res)
|
|
|
{
|
|
|
+ light_cmd_t light_cmd;
|
|
|
+ uint16 resLen = 0;
|
|
|
|
|
|
if (len < 4 || data[0] != START_CODE_CMD)
|
|
|
{
|
|
|
LOG("[parse_light_code] not light cmd \n");
|
|
|
- return -1;
|
|
|
+ return resLen;
|
|
|
}
|
|
|
-
|
|
|
- light_cmd_t light_cmd;
|
|
|
- uint16 resLen = 0;
|
|
|
+
|
|
|
memcpy(&light_cmd, data, len);
|
|
|
+ LOG("[parse_light_code] cmd: %d, sn: %d, len: %d \n", light_cmd.cmd, light_cmd.sn, light_cmd.len);
|
|
|
+
|
|
|
+ light_cmd.data = (uint8_t *)osal_mem_alloc(light_cmd.len - 2);
|
|
|
+ memcpy(light_cmd.data, data + 4, light_cmd.len - 2);
|
|
|
+
|
|
|
+ LOG("[parse_light_code] data: ");
|
|
|
+ for (int i = 0; i < light_cmd.len - 2; i++)
|
|
|
+ {
|
|
|
+ LOG("%02x ", light_cmd.data[i]);
|
|
|
+ }
|
|
|
+ LOG("\n");
|
|
|
|
|
|
- printf("Start Code: %d\n", light_cmd.startCode);
|
|
|
- printf("Length: %d\n", light_cmd.len);
|
|
|
- printf("Command Code: %d\n", light_cmd.cmd);
|
|
|
|
|
|
switch (light_cmd.cmd)
|
|
|
{
|
|
|
case CMD_OPEN:
|
|
|
+ LOG("[parse_light_code] CMD_OPEN \n");
|
|
|
resLen = open_light(light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_CLOSE:
|
|
|
+ LOG("[parse_light_code] CMD_CLOSE \n");
|
|
|
resLen = close_light(light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_QUERY:
|
|
|
+ LOG("[parse_light_code] CMD_QUERY \n");
|
|
|
resLen = query_light(light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_LIGTH:
|
|
|
+ LOG("[parse_light_code] CMD_LIGTH %d\n", light_cmd.data[0]);
|
|
|
resLen = light_set(light_cmd.data[0], light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_TEMP:
|
|
|
+ LOG("[parse_light_code] CMD_TEMP %d\n", light_cmd.data[0] << 8 | light_cmd.data[1]);
|
|
|
resLen = temp_set(light_cmd.data[0] << 8 | light_cmd.data[1], light_cmd.sn, res);
|
|
|
break;
|
|
|
case CMD_MODE:
|
|
|
+ LOG("[parse_light_code] CMD_MODE %d\n", light_cmd.data[0]);
|
|
|
resLen = change_light_mode(light_cmd.data[0], light_cmd.sn, res);
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+ osal_mem_free(light_cmd.data);
|
|
|
return resLen;
|
|
|
}
|
|
|
|
|
|
|
|
|
void light_register_notify_callback(LightCallbackFunc callback)
|
|
|
{
|
|
|
+ LOG("init light notify callback \n");
|
|
|
notify_callback = callback;
|
|
|
}
|
|
|
|