Commit 9e5016f1 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'cwc' into 'master'

【修改内容】修改内存泄漏

See merge request chenweican/k-sdk!209
parents 3df6f3ce cdd1e136
......@@ -758,13 +758,13 @@ static int kk_device_historyalarm_handle(cJSON *payload)
cJSON *productCodeJ = cJSON_GetObjectItem(client_list ,"productCode");
if(productCodeJ == NULL){
cJSON_Delete(infoItem);
printf("----------------->6\n");
cJSON_Delete(contentObj);
return -1;
}
cJSON * itime = cJSON_GetObjectItem(client_list ,"alarm_time");
if(itime == NULL){
cJSON_Delete(infoItem);
printf("----------------->1212\n");
cJSON_Delete(contentObj);
return -1;
}
sprintf(timerStr,"%d",itime->valueint);
......
......@@ -441,6 +441,9 @@ int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry)
int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
{
cJSON *rooms = cJSON_GetObjectItem(data,ROOMS_STR);
if(rooms == NULL|| rooms->type != cJSON_Array){
return -1;
}
cJSON *deviceAry = cJSON_CreateArray();
int i,num = cJSON_GetArraySize(rooms);
cJSON *roomId,*devices;
......@@ -653,8 +656,10 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
kk_map_dev_node_t *n = NULL;
if(root == NULL){
return -1;
}
cJSON *devStatusAry = cJSON_CreateArray();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_map_dev_mutex_lock();
list_for_each_entry_safe(node,n, &ctx->dev_list, linked_list, kk_map_dev_node_t){
......@@ -686,7 +691,7 @@ cJSON *kk_sync_gw_version_to_sdk(cJSON *root,cJSON *data)
cJSON *gw_version = cJSON_CreateArray();
int i,gw_num;
if(devicesAry->type!=cJSON_Array){
if(devicesAry == NULL || devicesAry->type!=cJSON_Array){
return NULL;
}
......@@ -787,6 +792,7 @@ int kk_sync_guard_to_sdk(cJSON *root,cJSON *data)
cJSON_AddItemToObject(root, "guard", guard);
if(properties==NULL||properties->type!=cJSON_Object){
return -1;
}
......@@ -1180,25 +1186,27 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
char roomId[32] = {0};
char deviceName[256] = {0};
cJSON *central_ac_gws = cJSON_CreateArray();
// SYN_CENTRAL_AC_GW ac;
if(data == NULL){
return NULL;
}
kk_clear_indoor_data();
cJSON *gwAry = cJSON_GetObjectItem(data,DEVICES_STR);
if(gwAry == NULL) return NULL;
cJSON *central_ac_gws = cJSON_CreateArray();
gw_num = cJSON_GetArraySize(gwAry);
for(i = 0; i < gw_num; i++){
cJSON *gwitem = cJSON_GetArrayItem(gwAry,i);
cJSON *gwDeviceCode = cJSON_GetObjectItem(gwitem,"deviceCode");
if(gwitem == NULL) return NULL;
if(gwitem == NULL) {cJSON_Delete(central_ac_gws);return NULL;}
cJSON *subAry = cJSON_GetObjectItem(gwitem,DEVICES_STR);
if(subAry == NULL) return NULL;
if(subAry == NULL) {cJSON_Delete(central_ac_gws);return NULL;}
sub_num = cJSON_GetArraySize(subAry);
for(j = 0; j < sub_num; j++){
cJSON *subitem = cJSON_GetArrayItem(subAry,j);
if(subitem == NULL) return NULL;
if(subitem == NULL) {cJSON_Delete(central_ac_gws);return NULL;}
cJSON *productCode = cJSON_GetObjectItem(subitem,"productCode");
if(productCode != NULL && strcmp(productCode->valuestring,"3062") == 0){//空调网关设备
cJSON *deviceCode = cJSON_GetObjectItem(subitem,"deviceCode");
......@@ -1225,6 +1233,7 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
int epsize = cJSON_GetArraySize(epsAry);
g_indoor_item = (CENTRAL_AC_INDOOR_ITEM *)malloc(sizeof(CENTRAL_AC_INDOOR_ITEM)*epsize);
if(g_indoor_item == NULL){
cJSON_Delete(central_ac_gws);
return NULL;
}
memset(g_indoor_item,0x0,sizeof(CENTRAL_AC_INDOOR_ITEM)*epsize);
......
......@@ -758,6 +758,7 @@ int dm_msg_thing_syncinfo_reply(void){
info = kk_sync_get_info();
dm_msg_response(&request, &response, info, strlen(info), NULL);
free(info);
info = NULL;
return SUCCESS_RETURN;
}
int dm_msg_thing_syncinfopush_reply(void){
......@@ -780,6 +781,7 @@ int dm_msg_thing_syncinfopush_reply(void){
info = kk_sync_get_info();
dm_msg_response(&request, &response, info, strlen(info), NULL);
free(info);
info = NULL;
return SUCCESS_RETURN;
}
......@@ -809,16 +811,14 @@ int dm_msg_thing_syncdeviceinfo_reply(cJSON *msgId){
//ERROR_PRINT("dm_msg_request_parse failed");
//return res ;
//}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
response.msgTypeStr = KK_THING_SERVICE_SYNCDEVICEINFO_REPLY;
memcpy(response.productCode, node->productCode, strlen( node->productCode));
memcpy(response.deviceCode, node->deviceCode, strlen(node->deviceCode));
response.code = (res == SUCCESS_RETURN) ? (IOTX_DM_ERR_CODE_SUCCESS) : (IOTX_DM_ERR_CODE_REQUEST_ERROR);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
info = kk_sync_get_info();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
dm_msg_sync_response(&request, &response, info, strlen(info), NULL);
free(info);
info = NULL;
return SUCCESS_RETURN;
}
......
......@@ -443,14 +443,16 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf)
cJSON_AddStringToObject(info, MSG_DEVICE_CODE_STR, gwnode->deviceCode);
cJSON_AddStringToObject(info, MSG_PRODUCT_CODE_STR, gwnode->productCode);
cJSON_AddItemToObject(rootData,"info",info);
cJSON_AddItemToObject(rootData,"payload",payload);
char *payload11=cJSON_Print(payload);
cJSON_AddItemToObject(rootData,"payload",cJSON_Parse(payload11));
char *pnewout=cJSON_Print(rootData);
kk_sendData2gw(pnewout, strlen(pnewout), node->fatherDeviceCode);//send to gw itself
kk_scene_update_device_active(deviceCode,-1,0);
kk_scene_rebuild_device_active(deviceCode,-1);
dm_mgr_subdev_delete(deviceCode);
free(pnewout);
//cJSON_Delete(rootData);
free(payload11);
cJSON_Delete(rootData);
return SUCCESS_RETURN;
}
......@@ -999,7 +1001,6 @@ static int kk_service_addFloor_reply(cJSON *root,cJSON *msgId,char *floorId,char
cJSON_AddStringToObject(paramInfo, "name", name);
cJSON_AddItemToObject(payload, "params", paramInfo);
char *payload11=cJSON_Print(payload);
printf("------------------------------>payload11:%s\n",payload11);
kk_sendData2app(infff,payload11,0);
free(payload11);
free(infff);
......@@ -1144,7 +1145,6 @@ static int kk_service_addScreen_handle_reply(cJSON *param,cJSON *msgId,char *ser
cJSON_AddItemToObject(payload, "params", paramInfo);
char *payload11=cJSON_Print(payload);
printf("------------------------------>payload11:%s\n",payload11);
kk_sendData2app(infff,payload11,0);
free(payload11);
free(infff);
......@@ -1189,7 +1189,6 @@ static int kk_service_client_online_push(cJSON *param,cJSON *msgId,char *serialI
cJSON_AddNumberToObject(paramInfo, "online", 1);
cJSON_AddItemToObject(payload, "params", paramInfo);
char *payload11=cJSON_Print(payload);
printf("------------------------------>payload11:%s\n",payload11);
kk_sendData2app(infff,payload11,0);
free(payload11);
free(infff);
......@@ -1723,7 +1722,6 @@ static int kk_service_getGuardSensors_handle(cJSON *param,cJSON *msgId)
cJSON_AddStringToObject(Item, "DeviceCode", pList[i].deviceCode);
cJSON_AddItemToArray(paramArray, Item);
}
char *paramArray22=cJSON_Print(paramArray);
cJSON_AddItemToObject(payload, "params", paramArray);
char *payload11=cJSON_Print(payload);
kk_sendData2app(infff,payload11,0);
......
......@@ -238,6 +238,7 @@ static int kk_property_sendtogw_handle(cJSON *payload,cJSON *info_root,char *dev
dm_mgr_dev_node_t *node = NULL;
res = dm_mgr_get_device_by_devicecode(deviceCode,&node);
if(res != SUCCESS_RETURN){
cJSON_Delete(rootData);
return res;
}
char *info_rootS=cJSON_Print(info_root);
......
......@@ -82,7 +82,7 @@ int kk_sync_init(void)
}
static cJSON * kk_get_room_devices(const char *roomId)
static int kk_get_room_devices(cJSON *item,const char *roomId)
{
dm_mgr_dev_node_t *node = NULL;
const char *selectCmd = "select * from AreaDevInfo WHERE roomId = '%s';";
......@@ -98,15 +98,15 @@ static cJSON * kk_get_room_devices(const char *roomId)
sqlCmd = sqlite3_mprintf(selectCmd,roomId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
char devName[64] = {0};
deviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
epNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
res = dm_mgr_get_device_by_devicecode((char*)deviceCode,&node);
if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
return NULL;
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return -1;
}
if(kk_check_multi_ep_num(deviceCode)){
dev = cJSON_CreateObject();
......@@ -123,13 +123,12 @@ static cJSON * kk_get_room_devices(const char *roomId)
//cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
kk_get_device_name(deviceCode,epNum,devName,sizeof(devName));
cJSON_AddStringToObject(dev,"name",devName);
cJSON_AddItemToArray(devs, dev);
}
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return devs;
cJSON_AddItemToObject(item, KK_SYNC_DEVICES_STR, devs);
return 0;
}
......@@ -190,10 +189,8 @@ static int kk_get_rooms_info(cJSON *data)
cJSON_AddStringToObject(roomItem, KK_SYNC_ROOMID_STR, roomId);
cJSON_AddStringToObject(roomItem, KK_SYNC_NANE_STR, roomName);
cJSON_AddStringToObject(roomItem, KK_SYNC_ROOMICON, roomIcon);
kk_get_room_devices(roomItem,roomId);
roomDevicesArray = kk_get_room_devices(roomId);
cJSON_AddItemToObject(roomItem, KK_SYNC_DEVICES_STR, roomDevicesArray);
scenesArray = kk_get_room_sences(roomId);
cJSON_AddItemToObject(roomItem, KK_SYNC_SCENE_STR, scenesArray);
......@@ -590,11 +587,12 @@ static cJSON * kk_get_properties_info_obj(char *deviceCode)
char *propertyStr = NULL;
char *valueStr = NULL;
int valueType = 0;
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
cJSON *obj = cJSON_CreateObject();
kk_sync_ctx_t *ctx = _kk_sync_get_ctx();
if(deviceCode == NULL ){
return NULL;
}
}
cJSON *obj = cJSON_CreateObject();
sqlCmd = sqlite3_mprintf("select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;",deviceCode,KK_DM_DEVICE_SUBDEV);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
......@@ -825,9 +823,7 @@ static int kk_get_gw_devices_info(cJSON *gwdevices)
gw_deviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE);
gw_productCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE);
gw_version = (char*)sqlite3_column_text(stmt, DB_SUB_VERSION);
gw_isline = (char*)sqlite3_column_text(stmt, DB_SUB_ONLINE);
printf("gw_deviceCode:%s\n",gw_deviceCode);
printf("gw_productCode:%s\n",gw_productCode);
gw_isline = (char*)sqlite3_column_text(stmt, DB_SUB_ONLINE);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_DEVICECODE_STR, gw_deviceCode);
cJSON_AddStringToObject(gwdevicesItem, KK_SYNC_VERSION_STR, gw_version);
_kk_deviceCode_switchto_mac(gw_deviceCode,macaddr);
......@@ -1506,9 +1502,10 @@ char *kk_sync_get_info()
char ccu_productCode[PRODUCT_CODE_MAXLEN] = {0};
char version[32] = {0};
char cloudstatus_str[16] = {0};
cJSON *data = cJSON_CreateObject();
kk_get_rooms_info(data);
kk_get_devices_info(data);
kk_get_scenes_info(data);
kk_get_group_info(data);
......@@ -1519,13 +1516,11 @@ char *kk_sync_get_info()
cJSON_AddStringToObject(data, KK_SYNC_NANE_STR, "newccu");
sprintf(cloudstatus_str, "%d", kk_get_cloudstatus());
cJSON_AddStringToObject(data, KK_SYNC_ONLINE_STR, cloudstatus_str);
cJSON_AddStringToObject(data, KK_SYNC_PRODUCTCODE_STR, ccu_productCode);
cJSON_AddStringToObject(data, KK_SYNC_PRODUCTCODE_STR, ccu_productCode);
cJSON_AddStringToObject(data, KK_SYNC_VERSION_STR, version);
kk_get_ccu_properties_info(data);
out=cJSON_Print(data);
INFO_PRINT("kk_sync_get_info:%s\n",out);
//INFO_PRINT("kk_sync_get_info:%s\n",out);
cJSON_Delete(data);
//free(out);
return out;
......
......@@ -482,9 +482,17 @@ static int kk_panel_bind_motor_delete(const char* deviceCode,int dummyId)
if(SUCCESS_RETURN!=dm_mgr_get_device_by_devicecode((char*)deviceCode,&node)){
cJSON_Delete(root);
cJSON_Delete(info);
cJSON_Delete(payload);
cJSON_Delete(paras);
return -1;
}
if(SUCCESS_RETURN!=dm_mgr_get_device_by_devicecode(node->fatherDeviceCode,&gw_node)){
cJSON_Delete(root);
cJSON_Delete(info);
cJSON_Delete(payload);
cJSON_Delete(paras);
return -1;
}
......@@ -530,9 +538,17 @@ static int kk_panel_bind_motor_add_actions(const char* deviceCode,cJSON* actions
cJSON *paras = cJSON_CreateObject();
if(SUCCESS_RETURN!=dm_mgr_get_device_by_devicecode((char*)deviceCode,&node)){
cJSON_Delete(root);
cJSON_Delete(info);
cJSON_Delete(payload);
cJSON_Delete(paras);
return -1;
}
if(SUCCESS_RETURN!=dm_mgr_get_device_by_devicecode(node->fatherDeviceCode,&gw_node)){
cJSON_Delete(root);
cJSON_Delete(info);
cJSON_Delete(payload);
cJSON_Delete(paras);
return -1;
}
......@@ -755,23 +771,28 @@ int kk_dm_device_subdev_filter(char *data)
cJSON *json;
cJSON *info_root;
cJSON *payload,*typeJson;
char *payload_Str = NULL;
cJSON *deviceCode = NULL;
if ((json=cJSON_Parse(data)) == NULL) {
WARNING_PRINT("Error before: [%s]\n","cJSON_Parse");
return -1;
}
if((info_root = cJSON_GetObjectItem(json, "info")) == NULL)
if((info_root = cJSON_GetObjectItem(json, "info")) == NULL){
cJSON_Delete(json);
return -1;
if((typeJson = cJSON_GetObjectItem(info_root, "msgtype"))== NULL)
}
if((typeJson = cJSON_GetObjectItem(info_root, "msgtype"))== NULL){
cJSON_Delete(json);
return -1;
if((payload = cJSON_GetObjectItem(json, "payload")) == NULL)
}
if((payload = cJSON_GetObjectItem(json, "payload")) == NULL){
cJSON_Delete(json);
return -1;
payload_Str = cJSON_Print(payload);
if((deviceCode = cJSON_GetObjectItem(info_root, "deviceCode")) == NULL)
}
if((deviceCode = cJSON_GetObjectItem(info_root, "deviceCode")) == NULL){
cJSON_Delete(json);
return -1;
}
if(strcmp(typeJson->valuestring,KK_THING_SERVICE_REBIND_MOTORS) == 0){
INFO_PRINT("REBIND_MOTORS \n");
......@@ -806,6 +827,7 @@ int kk_dm_device_subdev_filter(char *data)
struct kk_motor_bind_info *info = (struct kk_motor_bind_info *)malloc(sizeof(struct kk_motor_bind_info)*KK_MOTOR_BIND_INFO_MAX);
if(info == NULL){
cJSON_Delete(json);
return -1;
}
memset(info,0x0,sizeof(struct kk_motor_bind_info)*KK_MOTOR_BIND_INFO_MAX);
......@@ -823,9 +845,10 @@ int kk_dm_device_subdev_filter(char *data)
free(info);
}else{
cJSON_Delete(json);
return -1;
}
cJSON_Delete(json);
return 0;
}
......
......@@ -1028,6 +1028,7 @@ static int kk_scene_parse_trigger_event_type(const char *type,const cJSON *item,
char *compareValue = cJSON_PrintUnformatted(compares);
res = kk_scene_insert_scene_trigger(type,deviceCode->valuestring,ep,
propertyName->valuestring,"",compareValue,sceneId,isAnd);
free(compareValue);
return res;
}
/************************************************************
......@@ -2624,6 +2625,7 @@ static int _kk_check_lock_trigger_info(char *proName,char *value,char *keyId,cha
}
int array_size = cJSON_GetArraySize ( json );
if(array_size == 0){
cJSON_Delete(json);
return FAIL_RETURN;
}
for(cnt = 0; cnt < array_size; cnt++){
......@@ -2633,8 +2635,8 @@ static int _kk_check_lock_trigger_info(char *proName,char *value,char *keyId,cha
if(propertyName == NULL){continue ; }
if(strcmp(propertyName->valuestring,"KeyType") == 0){
compareValue = cJSON_GetObjectItem(pSub,"compareValue");
if(strcmp(compareValue->valuestring,keyType) != 0){
cJSON_Delete(json);
return FAIL_RETURN;
}else{
continue;
......@@ -2643,10 +2645,12 @@ static int _kk_check_lock_trigger_info(char *proName,char *value,char *keyId,cha
if(strcmp(propertyName->valuestring,"KeyID") == 0){
compareValue = cJSON_GetObjectItem(pSub,"compareValue");
if(strcmp(compareValue->valuestring,keyId) != 0){
cJSON_Delete(json);
return FAIL_RETURN;
}
}
}
cJSON_Delete(json);
return SUCCESS_RETURN;
}else if(!strcmp(proName,"LockState") && !strcmp(value,"1")){
return SUCCESS_RETURN;
......
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