Commit 5bba8740 authored by 尹佳钦's avatar 尹佳钦

20210804

parent fcafb8ee
...@@ -66,6 +66,7 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data) ...@@ -66,6 +66,7 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
for(i=0;i<num;i++,item++){ for(i=0;i<num;i++,item++){
room = cJSON_GetArrayItem(rooms,i); room = cJSON_GetArrayItem(rooms,i);
roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR); roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR);
name = cJSON_GetObjectItem(room,NAME_STR); name = cJSON_GetObjectItem(room,NAME_STR);
devices = cJSON_GetObjectItem(room,DEVICES_STR); devices = cJSON_GetObjectItem(room,DEVICES_STR);
...@@ -79,6 +80,9 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data) ...@@ -79,6 +80,9 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
item->room_status = NULL; item->room_status = NULL;
} }
roomsAry = _kk_syn_rooms_info(num,items); roomsAry = _kk_syn_rooms_info(num,items);
cJSON_AddItemToObject(root, ROOMS_STR, roomsAry); cJSON_AddItemToObject(root, ROOMS_STR, roomsAry);
return root; return root;
...@@ -169,6 +173,7 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id) ...@@ -169,6 +173,7 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id)
for(i=0;i<num;i++,ptr++){ for(i=0;i<num;i++,ptr++){
cJSON *item; cJSON *item;
item = cJSON_GetArrayItem(actions,i); item = cJSON_GetArrayItem(actions,i);
...@@ -203,20 +208,26 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id) ...@@ -203,20 +208,26 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id)
static int kk_sync_scene_condition(cJSON *condition,SYN_SCENE_ITEM **build) static int kk_sync_scene_condition(cJSON *condition,SYN_SCENE_ITEM **build)
{ {
cJSON *itemAry = NULL;
cJSON *startTime,*endTime,*crossDay,*repeat_days; cJSON *startTime,*endTime,*crossDay,*repeat_days;
if(condition==NULL ||build==NULL||*build==NULL){ if(condition==NULL ||build==NULL||*build==NULL){
return -1; return -1;
} }
int i,j,num = cJSON_GetArraySize(condition); if((itemAry = cJSON_GetObjectItem(condition,"items"))==NULL){
return -1;
}
int i,j,num = cJSON_GetArraySize(itemAry);
int repeat; int repeat;
int get_flag = 0; int get_flag = 0;
SYN_SCENE_ITEM *ptr=*build; SYN_SCENE_ITEM *ptr=*build;
printf("kk_sync_scene_condition,num=%d\n",num);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
cJSON *item; cJSON *item;
printf("i=%d\n",i);
item = cJSON_GetArrayItem(condition,i); item = cJSON_GetArrayItem(condition,i);
startTime = cJSON_GetObjectItem(item,"startTime"); startTime = cJSON_GetObjectItem(item,"startTime");
...@@ -259,7 +270,10 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -259,7 +270,10 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
cJSON *scenesAry = cJSON_CreateArray(); cJSON *scenesAry = cJSON_CreateArray();
cJSON *sceneItem; cJSON *sceneItem;
for(i=0;i<num;i++,build++){ SYN_SCENE_ITEM *pScene = build;
for(i=0;i<num;i++,pScene++){
printf("i=%d\n",i);
cJSON *item = cJSON_GetArrayItem(scenes,i); cJSON *item = cJSON_GetArrayItem(scenes,i);
actions = cJSON_GetObjectItem(item,ACTIONS_STR); actions = cJSON_GetObjectItem(item,ACTIONS_STR);
enable = cJSON_GetObjectItem(item,ENABLE_STR); enable = cJSON_GetObjectItem(item,ENABLE_STR);
...@@ -274,16 +288,16 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -274,16 +288,16 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
if(strcmp(sceneType->valuestring,"")==){ if(strcmp(sceneType->valuestring,"")==){
}*/ }*/
build->act_num = kk_sync_actions(actions,&build->act,&build->room_id); pScene->act_num = kk_sync_actions(actions,&pScene->act,&pScene->room_id);
kk_sync_scene_condition(condition,&build); kk_sync_scene_condition(condition,&pScene);
build->scene_id = sceneId->valuestring; pScene->scene_id = sceneId->valuestring;
build->name = name->valuestring; pScene->name = name->valuestring;
build->pannel_id = NULL; pScene->pannel_id = NULL;
sceneItem = kk_scene_build(&build); sceneItem = kk_scene_build(&pScene);
cJSON_AddItemToArray(scenesAry,sceneItem); cJSON_AddItemToArray(scenesAry,sceneItem);
...@@ -294,51 +308,113 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -294,51 +308,113 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
} }
//同步设备 //同步设备
int kk_sync_devices_to_sdk(cJSON *root) int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomId,cJSON *deviceAry)
{ {
kk_map_dev_node_t *node = NULL; kk_map_dev_node_t *node = NULL;
char nodeid[32] = {0}; char nodeid[32] = {0};
char gwmac[32] = {0}; char gwmac[32] = {0};
char submac[32] = {0}; char submac[32] = {0};
char channel[4] = {0};
int idx = 1;
kk_map_dev_ctx *ctx = _kk_map_dev_ctx(); kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
cJSON *devices = cJSON_CreateArray();
_kk_map_dev_mutex_lock(); if(deviceCode == NULL || deviceAry==NULL){
return -1;
}
list_for_each_entry(node, &ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry(node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if (node != NULL) { if (node != NULL) {
for(idx = 1; idx <= node->channelNum; idx++){ if(strlen(node->deviceCode)==strlen(deviceCode->valuestring) &&
!strcmp(node->deviceCode,deviceCode->valuestring)){
cJSON *subdevicesItem = cJSON_CreateObject(); cJSON *subdevicesItem = cJSON_CreateObject();
snprintf(channel,sizeof(channel),"%d",idx);
cJSON_AddStringToObject(subdevicesItem, CHANNEL_STRING, channel); if(epNum==NULL ||epNum->type!=cJSON_String){
cJSON_AddStringToObject(subdevicesItem, CHANNEL_STRING, "1");
kk_creater_nodeid(node->deviceCode,1,nodeid);
}else{
cJSON_AddStringToObject(subdevicesItem, CHANNEL_STRING, epNum->valuestring);
kk_creater_nodeid(node->deviceCode,atoi(epNum->valuestring),nodeid);
}
cJSON_AddStringToObject(subdevicesItem, NODEID_STRING, nodeid);
if(name==NULL ||name->type!=cJSON_String){
cJSON_AddStringToObject(subdevicesItem, NAME_STRING, "unkown");
}else{
cJSON_AddStringToObject(subdevicesItem, NAME_STRING, name->valuestring);
}
if(name==NULL ||name->type!=cJSON_String){
cJSON_AddStringToObject(subdevicesItem, ROOM_ID_STRING, "unkown");
}else{
cJSON_AddStringToObject(subdevicesItem, ROOM_ID_STRING, roomId->valuestring);
}
//todo
cJSON_AddStringToObject(subdevicesItem, DEVICE_FIELD_STRING, ""); cJSON_AddStringToObject(subdevicesItem, DEVICE_FIELD_STRING, "");
cJSON_AddStringToObject(subdevicesItem, DEVICE_FIELD_IDNDEX_STRING, "1"); cJSON_AddStringToObject(subdevicesItem, DEVICE_FIELD_IDNDEX_STRING, "");
cJSON_AddStringToObject(subdevicesItem, DEVICE_ICON_STRING, ""); cJSON_AddStringToObject(subdevicesItem, DEVICE_ICON_STRING, "");
cJSON_AddStringToObject(subdevicesItem, DEVICE_POS_STRING, "1"); cJSON_AddStringToObject(subdevicesItem, DEVICE_POS_STRING, "");
_deviceCode_switchto_mac(node->gwDeviceCode,gwmac); _deviceCode_switchto_mac(node->gwDeviceCode,gwmac);
cJSON_AddStringToObject(subdevicesItem, GW_MAC_STRING, gwmac); cJSON_AddStringToObject(subdevicesItem, GW_MAC_STRING, gwmac);
_deviceCode_switchto_mac(node->deviceCode,submac); _deviceCode_switchto_mac(node->deviceCode,submac);
cJSON_AddStringToObject(subdevicesItem, MAC_STRING, submac); cJSON_AddStringToObject(subdevicesItem, MAC_STRING, submac);
//todo name字段
cJSON_AddStringToObject(subdevicesItem, NAME_STRING, "默认灯");
memset(nodeid,0x0,sizeof(nodeid));
kk_creater_nodeid(node->deviceCode,idx,nodeid);
cJSON_AddStringToObject(subdevicesItem, NODEID_STRING, nodeid);
cJSON_AddStringToObject(subdevicesItem, OPERATE_TYPE_STRING, node->opearteType); cJSON_AddStringToObject(subdevicesItem, OPERATE_TYPE_STRING, node->opearteType);
cJSON_AddStringToObject(subdevicesItem, ROOM_ID_STRING, "1");
cJSON_AddItemToArray(devices, subdevicesItem); cJSON_AddItemToArray(deviceAry, subdevicesItem);
} }
} }
} }
_kk_map_dev_mutex_unlock();
cJSON_AddItemToObject(root, DEVICES_STRING, devices);
return 0; return 0;
} }
int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry)
{
kk_map_dev_node_t *node = NULL;
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
cJSON *deviceCode = NULL,*epNum = NULL,*name = NULL;
int i,num;
if(inDevAry==NULL||inDevAry->type!=cJSON_Array||
outDevAry==NULL||outDevAry->type!=cJSON_Array){
return -1;
}
num = cJSON_GetArraySize(inDevAry);
for(i=0;i<num;i++){
cJSON *item = cJSON_GetArrayItem(inDevAry,i);
deviceCode = cJSON_GetObjectItem(item,"deviceCode");
epNum = cJSON_GetObjectItem(item,"epNum");
name = cJSON_GetObjectItem(item,"name");
_kk_sync_device_item(deviceCode,epNum,name,roomId,outDevAry);
}
return 0;
}
int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
{
cJSON *rooms = cJSON_GetObjectItem(data,ROOMS_STR);
cJSON *deviceAry = cJSON_CreateArray();
int i,num = cJSON_GetArraySize(rooms);
cJSON *roomId,*devices;
for(i=0;i<num;i++){
cJSON *room = cJSON_GetArrayItem(rooms,i);
roomId = cJSON_GetObjectItem(room,ROOMS_ID_STR);
devices = cJSON_GetObjectItem(room,DEVICES_STR);
kk_sync_device(roomId,devices,deviceAry);
}
cJSON_AddItemToObject(root, DEVICES_STRING, deviceAry);
return root;
}
//同步设备状态 //同步设备状态
// //
cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node) cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
...@@ -946,6 +1022,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -946,6 +1022,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON *code_lib_controllers; cJSON *code_lib_controllers;
cJSON *controllers; cJSON *controllers;
cJSON *expand_rules; cJSON *expand_rules;
cJSON *data = kk_get_sync_data(payload);
char *out = NULL; char *out = NULL;
printf("!!!!!!!!!!!!!!!!!!!!------>%x\n",&out); printf("!!!!!!!!!!!!!!!!!!!!------>%x\n",&out);
...@@ -974,21 +1051,30 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -974,21 +1051,30 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
printf("kk_sync_devices_status_to_sdk\n");
kk_sync_devices_status_to_sdk(root); kk_sync_devices_status_to_sdk(root);
printf("kk_sync_devices_to_sdk\n");
kk_sync_devices_to_sdk(root); kk_sync_devices_to_sdk(root,data);
printf("kk_get_sync_data\n");
cJSON *data = kk_get_sync_data(payload);
kk_sync_rooms_to_sdk(root,data); kk_sync_rooms_to_sdk(root,data);
kk_sync_scence_to_sdk(root,data); kk_sync_scence_to_sdk(root,data);
kk_sync_gw_version_to_sdk(root,data); kk_sync_gw_version_to_sdk(root,data);
kk_sync_ccu_version_to_sdk(root,data); kk_sync_ccu_version_to_sdk(root,data);
kk_sync_guard_to_sdk(root,data); kk_sync_guard_to_sdk(root,data);
kk_sync_central_ac_to_sdk(root,data); kk_sync_central_ac_to_sdk(root,data);
kk_sync_central_ac_indoorunits_to_sdk(root,data); kk_sync_central_ac_indoorunits_to_sdk(root,data);
kk_sync_groups_to_sdk(root,data); kk_sync_groups_to_sdk(root,data);
kk_create_floors_to_sdk(root,data); kk_create_floors_to_sdk(root,data);
......
...@@ -42,7 +42,7 @@ cJSON *kk_get_raw_sync_data(cJSON *payload); ...@@ -42,7 +42,7 @@ cJSON *kk_get_raw_sync_data(cJSON *payload);
cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *payload); cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *payload);
cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data); cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data);
int kk_sync_devices_to_sdk(cJSON *root); int kk_sync_devices_to_sdk(cJSON *root,cJSON *data);
int kk_sync_devices_status_to_sdk(cJSON *root); int kk_sync_devices_status_to_sdk(cJSON *root);
int kk_create_syncinfo_to_sdk(cJSON *payload); int kk_create_syncinfo_to_sdk(cJSON *payload);
......
...@@ -391,6 +391,33 @@ int kk_room_device_list_add(const char *deviceCode) ...@@ -391,6 +391,33 @@ int kk_room_device_list_add(const char *deviceCode)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
cJSON *kk_get_roomIds_ary(void)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *proomId = NULL;
cJSON *roomIdsAry = cJSON_CreateArray();
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaInfo;";
_kk_area_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
proomId = (char*)sqlite3_column_text(stmt, DB_ROOM_ID);
cJSON_AddItemToArray(roomIdsAry,cJSON_CreateNumber(atoi(proomId)));
}
sqlite3_finalize(stmt);
_kk_area_unlock();
return roomIdsAry;
}
kk_dev_list_t* kk_get_room_deviceCode(const char* roomId) kk_dev_list_t* kk_get_room_deviceCode(const char* roomId)
{ {
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
......
...@@ -30,6 +30,7 @@ int kk_room_device_list_add(const char *deviceCode); ...@@ -30,6 +30,7 @@ int kk_room_device_list_add(const char *deviceCode);
kk_dev_list_t* kk_get_room_deviceCode(const char* roomId); kk_dev_list_t* kk_get_room_deviceCode(const char* roomId);
void kk_free_room_dev_list(void); void kk_free_room_dev_list(void);
int kk_get_device_name(const char* deviceCode,const char *epNum,char *devName,int size); int kk_get_device_name(const char* deviceCode,const char *epNum,char *devName,int size);
cJSON *kk_get_roomIds_ary(void);
#endif #endif
...@@ -879,6 +879,8 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -879,6 +879,8 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON *deviceCode = NULL; cJSON *deviceCode = NULL;
json=cJSON_Parse(data); json=cJSON_Parse(data);
printf("_iotx_linkkit_event_callback\n");
if (json == NULL) { if (json == NULL) {
WARNING_PRINT("Error before: [%s]\n","cJSON_Parse"); WARNING_PRINT("Error before: [%s]\n","cJSON_Parse");
return; return;
......
This diff is collapsed.
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