Commit 116f3e58 authored by 尹佳钦's avatar 尹佳钦

1、局域网支持多ep devices status解析

2、离线语音支持调光灯
parent 717a02b9
......@@ -457,7 +457,7 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
//同步设备状态
//
cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node,int ch)
{
int i,num=0,n_num = 0,o_num = 0;
cJSON *newccu,*oldccu;
......@@ -480,11 +480,13 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
o_num = cJSON_GetArraySize(oldccu);
num = (n_num>o_num)?o_num:n_num;
//channelNum
for(i=0;i<num;i++){
cJSON * newccuItem = cJSON_GetArrayItem(newccu,i);
cJSON * oldccuItem = cJSON_GetArrayItem(oldccu,i);
cJSON * newccuItemCh = cJSON_GetObjectItem(newccuItem,"channel");
cJSON * oldccuItemCh = cJSON_GetObjectItem(oldccuItem,"channel");
cJSON *val = NULL;
cJSON *synType = cJSON_GetObjectItem(oldccuItem,"synType");
......@@ -493,6 +495,11 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
if(synType->type!=cJSON_String ||synKey==NULL ||synKey->type!=cJSON_String) {
continue ;
}
if(newccuItemCh==NULL||oldccuItemCh==NULL||
newccuItemCh->type!=cJSON_String||
oldccuItemCh->type!=cJSON_String){
continue ;
}
//todo:
if(strcmp(synType->valuestring,"timing_shutdown")==0) {
cJSON *syn_obj = cJSON_CreateObject();
......@@ -513,12 +520,15 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
cJSON_AddItemToObject(arg, synKey->valuestring,syn_obj);
}else{
if(atoi(newccuItemCh->valuestring)==atoi(oldccuItemCh->valuestring) &&
atoi(newccuItemCh->valuestring)==ch){
if((val = val_conver_new2old(newccuItem,oldccuItem,1))!=NULL){
kk_lan_add_val_to_obj(arg,val,synKey->valuestring);
}
}
}
}
}
return arg;
}
......@@ -585,18 +595,17 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
static int _kk_sync_devices_status_arg_obj(kk_map_dev_node_t *node,cJSON *devStatusAry,int *aryIx)
static int _kk_sync_devices_status_arg_obj(kk_map_dev_node_t *node,cJSON *devStatusAry,int *aryIx,int ch)
{
char indexId[16] = {0};
char nodeid[32] = {0};
cJSON *arg = NULL;
cJSON *dev_status = NULL;
if(node==NULL ||devStatusAry==NULL||aryIx==NULL){
return -1;
}
if((arg = _kk_sync_devicestatus_arg_build(node))==NULL){
if((arg = _kk_sync_devicestatus_arg_build(node,ch))==NULL){
return -2;
}
dev_status = cJSON_CreateObject();
......@@ -608,7 +617,7 @@ static int _kk_sync_devices_status_arg_obj(kk_map_dev_node_t *node,cJSON *devSta
if(strcmp(node->productCode,AIR_FRESH_MUTI_DEVICE) == 0){
kk_creater_nodeid(node->deviceCode,3,nodeid);
}else{
kk_creater_nodeid(node->deviceCode,1,nodeid);
kk_creater_nodeid(node->deviceCode,ch,nodeid);
}
cJSON_AddNumberToObject(dev_status, NODEID_STRING, atoi(nodeid));
......@@ -624,6 +633,7 @@ static int _kk_sync_devices_status_arg_obj(kk_map_dev_node_t *node,cJSON *devSta
int kk_sync_devices_status_to_sdk(cJSON *root)
{
int idx = 1;
int i;
kk_map_dev_node_t *node = NULL;
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
kk_map_dev_node_t *n = NULL;
......@@ -635,7 +645,11 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){
if(node->syn_type==1){
_kk_sync_devices_status_arg_obj(node,devStatusAry,&idx);
for(i=0;i<node->channelNum;i++){
_kk_sync_devices_status_arg_obj(node,devStatusAry,&idx,i+1);
}
}else{
_kk_sync_devices_status_arg_str(node,devStatusAry,&idx);
//_kk_sync_devicestatus(node,devStatusAry);
......
......@@ -121,6 +121,7 @@ static cJSON *temperature_msg_build(int ep,int tmp)
return params;
}
static cJSON *ColorTemperature_msg_build(int ep,int val)
{
char epNum[12] = {0};
......@@ -549,10 +550,12 @@ static cJSON *dimming_light_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
}
uint8_t mode = arg[2];
debug_log(LOG_CRIT_LEVEL,"[VP] set mode=%d\n",mode);
if(mode==VP_SKILLTYPE_1C_WORKMODE_AUTO){
return workMode_msg_build(ep,0);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_MANUAL){
return workMode_msg_build(ep,1);
if(mode==0x01){
return ColorTemperature_msg_build(ep,20);
}else if(mode==0x02){
return ColorTemperature_msg_build(ep,50);
}else if(mode==0x03){
return ColorTemperature_msg_build(ep,100);
}
break;
}
......@@ -561,7 +564,7 @@ static cJSON *dimming_light_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
return NULL;
}
uint8_t bri = arg[2];
Brightness_msg_build(ep,bri);
return Brightness_msg_build(ep,bri);
break;
default:break;
......
......@@ -39,8 +39,8 @@
#define VP_CTRL_TMP_DOWN 0x24
#define VP_CTRL_TMP_SET 0x25
#define VP_CTRL_SET_COLOR 0x26
#define VP_CTRL_SET_COLOR_TMP 0x27
#define VP_CTRL_ALTITUDE 0x28
//#define VP_CTRL_SET_COLOR_TMP 0x27
#define VP_CTRL_SET_COLOR_TMP 0x28
......@@ -97,7 +97,7 @@
#define DIMMING_LIGHT_DEV_PID {\
3092\
3018,3028,3091,3092,3093,3094,3102\
}
......
......@@ -194,7 +194,7 @@ static int _kk_lan_check_channel(cJSON *channelObj,cJSON *epNumObj)
}
static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t *devNode)
static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t *devNode,int ch)
{
cJSON *msg = NULL;
cJSON *arg = NULL;
......@@ -206,7 +206,7 @@ static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t *
return -1;
}
if((arg =_kk_sync_devicestatus_arg_build(devNode))==NULL){
if((arg =_kk_sync_devicestatus_arg_build(devNode,ch))==NULL){
debug_log(LOG_DEBUG_LEVEL,"[err] arg.\n");
return -1;
}
......@@ -216,7 +216,7 @@ static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t *
return -1;
}
}else{
if((nodeId = kk_lan_db_node_get(deviceCode,1))==-1){
if((nodeId = kk_lan_db_node_get(deviceCode,ch))==-1){
debug_log(LOG_DEBUG_LEVEL,"[err] nodeId.\n");
return -1;
}
......@@ -239,7 +239,7 @@ static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t *
//属性转换
static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *devNode,cJSON *params)
{
int i = 0,channel = -1,nodeId = -1;
int i = 0,k=0,channel = -1,nodeId = -1;
cJSON *args = NULL,*valObj = NULL;
cJSON *newccu = NULL,*oldccu = NULL;
......@@ -366,8 +366,13 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
}
debug_log(LOG_EMERG_LEVEL,"devNode->channelNum=%d\n",devNode->channelNum);
for(k=0;k<devNode->channelNum;k++){
debug_log(LOG_EMERG_LEVEL,"k=%d\n",k);
_kk_lan_sync_device_status(deviceCode,devNode,k+1);
}
_kk_lan_sync_device_status(deviceCode,devNode);
return 0;
}
......
......@@ -25,7 +25,7 @@ int kk_lan_device_delete_notify(cJSON *payload);
cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node);
cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node,int ch);
int kk_send_indoorAir_status(cJSON *info,const char *deviceCode);
......
......@@ -402,7 +402,7 @@ void vp_send_data_build(uint16_t opCode,uint8_t len,uint8_t *data)
debug_log(LOG_INFO_LEVEL,"\n[LAN->VP]len=%d\n",data_len);
uint8_t dataStr[512] = {0};
for(int i=0;i<data_len;i++){
snprintf(dataStr + strlen(dataStr), sizeof(dataStr), "%02X ",data_buf[i]);
snprintf((char *)dataStr + strlen((char *)dataStr), sizeof(dataStr), "%02X ",data_buf[i]);
}
debug_log(LOG_INFO_LEVEL,"%s\n\n",dataStr);
eSerial_WriteBuffer(data_buf, data_len);
......@@ -431,10 +431,11 @@ void vp_reply_data_build(uint16_t seq,uint8_t ch,uint16_t opCode,uint8_t len,uin
debug_log(LOG_INFO_LEVEL,"\n[LAN->VP]len=%d\n",data_len);
uint8_t dataStr[512] = {0};
for(int i=0;i<data_len;i++){
debug_log(LOG_INFO_LEVEL,"%02X ",data_buf[i]);
snprintf((char *)dataStr + strlen((char *)dataStr), sizeof(dataStr), "%02X ",data_buf[i]);
}
debug_log(LOG_INFO_LEVEL,"\n\n");
debug_log(LOG_INFO_LEVEL,"%s\n\n",dataStr);
eSerial_WriteBuffer(data_buf, data_len);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment