Commit 604f4d05 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'yjq' into 'master'

20210910,克隆。

See merge request chenweican/k-sdk!102
parents 06b76807 7549830f
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
#define GUARD_STATUS_ARMING_LEAVE_HOME "ARMING_LEAVE_HOME" #define GUARD_STATUS_ARMING_LEAVE_HOME "ARMING_LEAVE_HOME"
#define GUARD_STATUS_DISARMING "DISARMING" #define GUARD_STATUS_DISARMING "DISARMING"
#define GUARD_STATUS_ARMING_IN_HOME "ARMING_IN_HOME" #define GUARD_STATUS_ARMING_IN_HOME "ARMING_IN_HOME"
#define ARMING_STATUS_GUARD_ZONE "ARMING_CUSTOM_GUARD_ZONE"
#define EMPTY_STR "" #define EMPTY_STR ""
......
...@@ -249,11 +249,14 @@ int kk_zb_devs_hw_ack_all(int sockfd) ...@@ -249,11 +249,14 @@ int kk_zb_devs_hw_ack_all(int sockfd)
cJSON *array = cJSON_CreateArray(); cJSON *array = cJSON_CreateArray();
cJSON *item; cJSON *item;
_kk_map_dev_mutex_lock();
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if((item = kk_zb_dev_hw_info_build(search_node->deviceCode,search_node->productCode,search_node->online_status,NULL,NULL))!=NULL){ if((item = kk_zb_dev_hw_info_build(search_node->deviceCode,search_node->productCode,search_node->online_status,NULL,NULL))!=NULL){
cJSON_AddItemToArray(array,item); cJSON_AddItemToArray(array,item);
} }
} }
_kk_map_dev_mutex_unlock();
_kk_zb_devs_hw_ack(sockfd,array); _kk_zb_devs_hw_ack(sockfd,array);
return -1; return -1;
} }
...@@ -266,6 +269,7 @@ int kk_zb_dev_hw_info_build_by_deviceCode(int sockfd,const char *deviceCode) ...@@ -266,6 +269,7 @@ int kk_zb_dev_hw_info_build_by_deviceCode(int sockfd,const char *deviceCode)
unsigned char online_status = 0; unsigned char online_status = 0;
int pid =-1; int pid =-1;
_kk_map_dev_mutex_lock();
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) && if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) &&
(memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) { (memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) {
...@@ -275,6 +279,7 @@ int kk_zb_dev_hw_info_build_by_deviceCode(int sockfd,const char *deviceCode) ...@@ -275,6 +279,7 @@ int kk_zb_dev_hw_info_build_by_deviceCode(int sockfd,const char *deviceCode)
return item; return item;
} }
} }
_kk_map_dev_mutex_unlock();
return NULL; return NULL;
} }
...@@ -436,7 +441,7 @@ int is_arming_status_notify(cJSON *payload) ...@@ -436,7 +441,7 @@ int is_arming_status_notify(cJSON *payload)
cJSON *params = NULL; cJSON *params = NULL;
cJSON *ArmingState = NULL; cJSON *ArmingState = NULL;
if((params = cJSON_GetObjectItem(payload, MSG_PARAMS_STR))!=NULL){ if((params = cJSON_GetObjectItem(payload, MSG_PARAMS_STR))!=NULL){
if((ArmingState = cJSON_GetObjectItem(payload, "ArmingState"))!=NULL){ if((ArmingState = cJSON_GetObjectItem(params, "ArmingState"))!=NULL){
if(ArmingState->type==cJSON_String && if(ArmingState->type==cJSON_String &&
ArmingState->valuestring!=NULL){ ArmingState->valuestring!=NULL){
return atoi(ArmingState->valuestring); return atoi(ArmingState->valuestring);
...@@ -482,9 +487,11 @@ void KK_Data_FromMid(void* str,int len) ...@@ -482,9 +487,11 @@ void KK_Data_FromMid(void* str,int len)
if (strstr(msgtype->valuestring,SYNC_MSG_TYPE_REPLY) != NULL){ if (strstr(msgtype->valuestring,SYNC_MSG_TYPE_REPLY) != NULL){
kk_parse_syncinfo(payload); kk_parse_syncinfo(payload);
kk_create_syncinfo_to_sdk(payload); kk_create_syncinfo_to_sdk(payload);
}else if(strstr(msgtype->valuestring,"/thing/event/property/post")!= NULL){ }
else if(strstr(msgtype->valuestring,"/thing/event/property/post")!= NULL){
if(is_ccu_msg(productCode,deviceCode)){ if(is_ccu_msg(productCode,deviceCode)){
int type; int type;
if((type = is_arming_status_notify(payload))!=-1){ if((type = is_arming_status_notify(payload))!=-1){
arming_status_notify(type); arming_status_notify(type);
...@@ -492,8 +499,6 @@ void KK_Data_FromMid(void* str,int len) ...@@ -492,8 +499,6 @@ void KK_Data_FromMid(void* str,int len)
}else{ }else{
property_post_deal(deviceCode->valuestring,payload); property_post_deal(deviceCode->valuestring,payload);
} }
}else if(strstr(msgtype->valuestring,"/thing/topo/delete")!= NULL){ }else if(strstr(msgtype->valuestring,"/thing/topo/delete")!= NULL){
device_delete_sync(payload); device_delete_sync(payload);
}else if(strstr(msgtype->valuestring,"/thing/status/online")!= NULL){ }else if(strstr(msgtype->valuestring,"/thing/status/online")!= NULL){
......
...@@ -18,14 +18,14 @@ kk_map_dev_ctx *_kk_map_dev_ctx(void) ...@@ -18,14 +18,14 @@ kk_map_dev_ctx *_kk_map_dev_ctx(void)
return &g_map_dev_mgr; return &g_map_dev_mgr;
} }
static void _kk_map_dev_mutex_lock(void) void _kk_map_dev_mutex_lock(void)
{ {
kk_map_dev_ctx *ctx = _kk_map_dev_ctx(); kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
if (ctx->mutex) { if (ctx->mutex) {
kk_MutexLock(ctx->mutex); kk_MutexLock(ctx->mutex);
} }
} }
static void _kk_map_dev_mutex_unlock(void) void _kk_map_dev_mutex_unlock(void)
{ {
kk_map_dev_ctx *ctx = _kk_map_dev_ctx(); kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
if (ctx->mutex) { if (ctx->mutex) {
...@@ -53,7 +53,6 @@ void kk_map_dev_deinit(void) ...@@ -53,7 +53,6 @@ void kk_map_dev_deinit(void)
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf("[lock]_kk_map_dev_mutex_lock\n");
_kk_map_dev_mutex_lock(); _kk_map_dev_mutex_lock();
list_for_each_entry_safe(node,n,&ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry_safe(node,n,&ctx->dev_list, linked_list, kk_map_dev_node_t) {
...@@ -74,7 +73,6 @@ void kk_map_dev_deinit(void) ...@@ -74,7 +73,6 @@ void kk_map_dev_deinit(void)
} }
} }
printf("[unlock]_kk_map_dev_mutex_lock\n");
_kk_map_dev_mutex_unlock(); _kk_map_dev_mutex_unlock();
} }
...@@ -87,6 +85,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch ...@@ -87,6 +85,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch
cJSON *newccu = NULL,*oldccu = NULL,*channel = NULL,*optype = NULL; cJSON *newccu = NULL,*oldccu = NULL,*channel = NULL,*optype = NULL;
cJSON *syn_type = NULL,*syn_opcode = NULL; cJSON *syn_type = NULL,*syn_opcode = NULL;
printf("kk_map_dev_node_create\n");
node = malloc(sizeof(kk_map_dev_node_t)); node = malloc(sizeof(kk_map_dev_node_t));
if (node == NULL) { if (node == NULL) {
return NULL; return NULL;
...@@ -410,17 +409,21 @@ int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node) ...@@ -410,17 +409,21 @@ int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node)
kk_map_dev_node_t *n = NULL; kk_map_dev_node_t *n = NULL;
//list_for_each_entry_safe //list_for_each_entry_safe
printf("[QAQ] kk_map_dev_search_by_deviceCode\n");
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
printf("+++\n");
if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) && if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) &&
(memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) { (memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) {
/* dm_log_debug("Device Found, devid: %d", devid); */ /* dm_log_debug("Device Found, devid: %d", devid); */
if (node) { if (node) {
*node = search_node; *node = search_node;
} }
printf("[find]%s\n",search_node->deviceCode);
return 0; return 0;
} }
} }
ERROR_PRINT("Device Not Found, deviceCode: %s\n", deviceCode); ERROR_PRINT("Device Not Found, deviceCode: %s\n", deviceCode);
return -1; return -1;
} }
......
...@@ -64,6 +64,7 @@ int main(int argc, char* argv[]) ...@@ -64,6 +64,7 @@ int main(int argc, char* argv[])
char *ppp; char *ppp;
open("kk_lan",LOG_PID,LOG_USER); open("kk_lan",LOG_PID,LOG_USER);
kk_lan_ccuid_init();
/*set the callback to get the device date to cloud*/ /*set the callback to get the device date to cloud*/
kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromMid,NULL,NULL); kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromMid,NULL,NULL);
......
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
/*******获取同步数据json*******/ /*******获取同步数据json*******/
static cJSON *kk_get_sync_data(cJSON *payload) static cJSON *kk_get_sync_data(cJSON *payload)
{ {
cJSON *data = cJSON_GetObjectItem(payload,DATA_STR); return cJSON_GetObjectItem(payload,DATA_STR);
return cJSON_GetObjectItem(data,DATA_STR);
} }
...@@ -66,6 +65,7 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data) ...@@ -66,6 +65,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 +79,9 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data) ...@@ -79,6 +79,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 +172,7 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id) ...@@ -169,6 +172,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 +207,26 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id) ...@@ -203,20 +207,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 +269,10 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -259,7 +269,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 +287,16 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -274,16 +287,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,48 +307,113 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data) ...@@ -294,48 +307,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();
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);
} }
} }
} }
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)
...@@ -344,7 +422,6 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node) ...@@ -344,7 +422,6 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
cJSON *newccu,*oldccu; cJSON *newccu,*oldccu;
cJSON *arg = cJSON_CreateObject(); cJSON *arg = cJSON_CreateObject();
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
if(node == NULL ||node->syn_type!=1||node->syn_opcode==NULL){ if(node == NULL ||node->syn_type!=1||node->syn_opcode==NULL){
return arg; return arg;
...@@ -409,7 +486,6 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta ...@@ -409,7 +486,6 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
cJSON *newccu = NULL,*oldccu = NULL; cJSON *newccu = NULL,*oldccu = NULL;
cJSON *dev_status = NULL; cJSON *dev_status = NULL;
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
if(node == NULL ||devStatusAry==NULL||index==NULL){ if(node == NULL ||devStatusAry==NULL||index==NULL){
return -1; return -1;
...@@ -503,6 +579,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root) ...@@ -503,6 +579,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
cJSON *devStatusAry = cJSON_CreateArray(); cJSON *devStatusAry = cJSON_CreateArray();
_kk_map_dev_mutex_lock();
list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){ list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){
if(node->syn_type==1){ if(node->syn_type==1){
...@@ -513,7 +590,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root) ...@@ -513,7 +590,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
} }
} }
_kk_map_dev_mutex_unlock();
cJSON_AddItemToObject(root, DEVICE_STATUS_STRING, devStatusAry); cJSON_AddItemToObject(root, DEVICE_STATUS_STRING, devStatusAry);
...@@ -585,65 +662,94 @@ typedef struct{ ...@@ -585,65 +662,94 @@ typedef struct{
char *nodeId; char *nodeId;
char *sensor_type; char *sensor_type;
}SYN_GUARD_SENSORS; }SYN_GUARD_SENSORS;
static cJSON *_kk_guard_sensors_build(int num,SYN_GUARD_SENSORS *sensors) static int _kk_guard_sensors_build(cJSON *guard_sensors,int num,SYN_GUARD_SENSORS *sensors)
{ {
int i; int i;
cJSON *item; SYN_GUARD_SENSORS *pSensor;
cJSON *guard_sensors = cJSON_CreateArray();
SYN_GUARD_SENSORS *pSensor = sensors;
if(num<=0 || sensors==NULL){
return -1;
}
pSensor = sensors;
for(i=0;i<num;i++,pSensor++){ for(i=0;i<num;i++,pSensor++){
item = cJSON_CreateObject(); cJSON *item = cJSON_CreateObject();
cJSON_AddStringToObject(item,"nodeid",(pSensor->nodeId)?pSensor->nodeId:"-1"); cJSON_AddStringToObject(item,"nodeid",(pSensor->nodeId)?pSensor->nodeId:"-1");
cJSON_AddStringToObject(item,"sensor_type",(pSensor->sensor_type)?pSensor->sensor_type:"0"); cJSON_AddStringToObject(item,"sensor_type",(pSensor->sensor_type)?pSensor->sensor_type:"0");
cJSON_AddItemToArray(guard_sensors,item); cJSON_AddItemToArray(guard_sensors,item);
} }
return guard_sensors; return 0;
} }
static cJSON *_kk_guard_custom_zone_build(int num,char *roomId)
{
int i;
cJSON *custom_guard_zone = cJSON_CreateArray();
char *pRoomId = roomId;
for(i=0;i<num;i++,pRoomId++){
cJSON_AddItemToArray(custom_guard_zone,cJSON_CreateString(pRoomId));
}
return custom_guard_zone;
}
cJSON *kk_sync_guard_to_sdk(cJSON *root,cJSON *data) int kk_sync_guard_to_sdk(cJSON *root,cJSON *data)
{ {
char modeStr[8] = {0}; char *armingStr = NULL;
cJSON *guard = cJSON_CreateObject(); cJSON *guard = cJSON_CreateObject();
cJSON *custom_guard_zone; cJSON *custom_guard_zone = cJSON_CreateArray();
cJSON *guard_sensors; cJSON *guard_sensors = cJSON_CreateArray();
//todo 撤防布防
int guardMode = 0; cJSON *properties = cJSON_GetObjectItem(data,"properties");
snprintf(modeStr,sizeof(modeStr),"%d",guardMode); cJSON *ArmingState = NULL,*RoomIdsAry = NULL;
cJSON_AddStringToObject(guard, "arming_status", modeStr); cJSON_AddStringToObject(guard, "arming_status", "1");
cJSON_AddItemToObject(guard,"custom_guard_zone",custom_guard_zone);
cJSON_AddItemToObject(guard,"guard_sensors",guard_sensors);
SYN_GUARD_SENSORS sensors; cJSON_AddItemToObject(root, "guard", guard);
sensors.nodeId = malloc(10);
memset(sensors.nodeId,0,10);
memcpy(sensors.nodeId,"1234",strlen("1234"));
sensors.sensor_type = malloc(10);
memset(sensors.sensor_type,0,10);
memcpy(sensors.sensor_type,"5678",strlen("5678"));
guard_sensors = _kk_guard_sensors_build(1,&sensors); if(properties==NULL||properties->type!=cJSON_Object){
char roomId[12] = "abcd"; return -1;
custom_guard_zone = _kk_guard_custom_zone_build(1,roomId); }
cJSON_AddItemToObject(guard, "custom_guard_zone", custom_guard_zone);
cJSON_AddItemToObject(guard, "guard_sensors", guard_sensors);
cJSON_AddItemToObject(root, "guard", guard); ArmingState = cJSON_GetObjectItem(properties,"ArmingState");
if(ArmingState==NULL||ArmingState->type!=cJSON_Number){
return -1;
}
/*
"0": "离家布防",
"1": "撤防",
"2": "在家布防",
"3": "区域布防"
*/
//1:离家布防,2:撤防,3:在家布防,4:自定义防区布防。
if(ArmingState->valueint==0){
armingStr = "1";
}else if(ArmingState->valueint==2){
armingStr = "3";
}else if(ArmingState->valueint==3){
armingStr = "4";
}else {
armingStr = "2";
}
cJSON_ReplaceItemInObject(guard, "arming_status", cJSON_CreateString(armingStr));
if(ArmingState->valueint == 3){
int i,num;
cJSON *item = NULL;
char roomIdStr[16] = {0};
RoomIdsAry = cJSON_GetObjectItem(properties,"RoomIds");
if(RoomIdsAry==NULL||RoomIdsAry->type!=cJSON_Array){
return -1;
}
num = cJSON_GetArraySize(RoomIdsAry);
for(i=0;i<num;i++){
item = cJSON_GetArrayItem(RoomIdsAry,i);
if(item->type!=cJSON_Number){
continue ;
}
memset(roomIdStr,0,sizeof(roomIdStr));
snprintf(roomIdStr,sizeof(roomIdStr),"%d",item->valueint);
cJSON_AddItemToArray(custom_guard_zone,cJSON_CreateString(roomIdStr));
}
}
//新中控同步接口未有安防类传感器列表,故只保留实现接口,未具体实现转换
_kk_guard_sensors_build(guard_sensors,-1,NULL);
return 0;
} }
...@@ -944,6 +1050,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -944,6 +1050,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);
...@@ -960,31 +1067,49 @@ int kk_create_syncinfo_to_sdk(cJSON *payload) ...@@ -960,31 +1067,49 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON_AddStringToObject(ccu_link_status, "link_type", "broadband_net"); cJSON_AddStringToObject(ccu_link_status, "link_type", "broadband_net");
cJSON_AddItemToObject(root, "ccu_link_status", ccu_link_status); cJSON_AddItemToObject(root, "ccu_link_status", ccu_link_status);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cnwise_music_controllers = cJSON_CreateArray(); cnwise_music_controllers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "cnwise_music_controllers", cnwise_music_controllers); cJSON_AddItemToObject(root, "cnwise_music_controllers", cnwise_music_controllers);
code_lib_controllers = cJSON_CreateArray(); code_lib_controllers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "code_lib_controllers", code_lib_controllers); cJSON_AddItemToObject(root, "code_lib_controllers", code_lib_controllers);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
controllers = cJSON_CreateArray(); controllers = cJSON_CreateArray();
cJSON_AddItemToObject(root, "controllers", controllers); cJSON_AddItemToObject(root, "controllers", controllers);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_devices_status_to_sdk(root); kk_sync_devices_status_to_sdk(root);
kk_sync_devices_to_sdk(root); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON *data = kk_get_sync_data(payload);
kk_sync_devices_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_rooms_to_sdk(root,data); kk_sync_rooms_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_scence_to_sdk(root,data); kk_sync_scence_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_gw_version_to_sdk(root,data); kk_sync_gw_version_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_ccu_version_to_sdk(root,data); kk_sync_ccu_version_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_sync_guard_to_sdk(root,data); kk_sync_guard_to_sdk(root,data);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
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);
......
...@@ -138,7 +138,6 @@ cJSON *kk_devicestatus_build(kk_map_dev_node_t *node) ...@@ -138,7 +138,6 @@ cJSON *kk_devicestatus_build(kk_map_dev_node_t *node)
cJSON *newccu,*oldccu; cJSON *newccu,*oldccu;
cJSON *dev_status; cJSON *dev_status;
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
printf("@@@@kk_devicestatus_build\n"); printf("@@@@kk_devicestatus_build\n");
if (node == NULL ||node->syn_opcode==NULL){ if (node == NULL ||node->syn_opcode==NULL){
...@@ -263,6 +262,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS ...@@ -263,6 +262,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
cJSON *val; cJSON *val;
cJSON *item_size; cJSON *item_size;
cJSON *channel; cJSON *channel;
cJSON *epNum=NULL;
cJSON *opcode; cJSON *opcode;
...@@ -278,6 +278,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS ...@@ -278,6 +278,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
newccu = devNode->newccu; newccu = devNode->newccu;
item_size = cJSON_GetArraySize(oldccu); item_size = cJSON_GetArraySize(oldccu);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
for(i=0;i<item_size;i++){ for(i=0;i<item_size;i++){
o_item = cJSON_GetArrayItem(oldccu,i); o_item = cJSON_GetArrayItem(oldccu,i);
...@@ -287,7 +288,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS ...@@ -287,7 +288,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
n_id = cJSON_GetObjectItem(params,o_id_map->valuestring); n_id = cJSON_GetObjectItem(params,o_id_map->valuestring);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(n_id!=NULL){ if(n_id!=NULL){
n_dataType = cJSON_GetObjectItem(n_item,"dataType"); n_dataType = cJSON_GetObjectItem(n_item,"dataType");
...@@ -298,6 +299,16 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS ...@@ -298,6 +299,16 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
channel = cJSON_GetObjectItem(o_item,"channel"); channel = cJSON_GetObjectItem(o_item,"channel");
epNum = cJSON_GetObjectItem(params,"epNum");
if(channel==NULL||epNum==NULL){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
continue;
}
if(strlen(channel->valuestring)!=strlen(epNum->valuestring) ||
strcmp(channel->valuestring,epNum->valuestring)!=0){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
continue;
}
ch = atoi(channel->valuestring); ch = atoi(channel->valuestring);
nodeId = kk_lan_db_node_get(deviceCode,ch); nodeId = kk_lan_db_node_get(deviceCode,ch);
...@@ -465,6 +476,7 @@ void property_syn_deal(const char *deviceCode,cJSON *properties) ...@@ -465,6 +476,7 @@ void property_syn_deal(const char *deviceCode,cJSON *properties)
kk_map_dev_node_t *dev; kk_map_dev_node_t *dev;
if(kk_map_dev_search_by_deviceCode(deviceCode, &dev)==0){ if(kk_map_dev_search_by_deviceCode(deviceCode, &dev)==0){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
attr_report_conver(deviceCode,dev,properties); attr_report_conver(deviceCode,dev,properties);
} }
} }
...@@ -495,10 +507,14 @@ int arming_status_notify(int type) ...@@ -495,10 +507,14 @@ int arming_status_notify(int type)
msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,GUARD_STATUS_DISARMING,SUCCESS_STR,WILDCARD_CHARACTER_STR); msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,GUARD_STATUS_DISARMING,SUCCESS_STR,WILDCARD_CHARACTER_STR);
}else if(type==2){ }else if(type==2){
msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,GUARD_STATUS_ARMING_IN_HOME,SUCCESS_STR,WILDCARD_CHARACTER_STR); msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,GUARD_STATUS_ARMING_IN_HOME,SUCCESS_STR,WILDCARD_CHARACTER_STR);
}else if(type==3){
msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,ARMING_STATUS_GUARD_ZONE,SUCCESS_STR,WILDCARD_CHARACTER_STR);
}else{ }else{
printf("[unkown arming type]!!!\n"); printf("[unkown arming type]!!!\n");
return -1; return -1;
} }
send_msg_to_module(msg); send_msg_to_module(msg);
cJSON_Delete(msg); cJSON_Delete(msg);
return 0; return 0;
......
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