Commit 5dcf9fd9 authored by chen.weican's avatar chen.weican

【修改内容】修改房间设置相关

【提交人】陈伟灿
parent d3176669
...@@ -71,7 +71,9 @@ typedef enum { ...@@ -71,7 +71,9 @@ typedef enum {
#define MSG_PROPERTY_STR "property" #define MSG_PROPERTY_STR "property"
#define MSG_PROPERTIES_STR "properties" #define MSG_PROPERTIES_STR "properties"
#define MSG_ONLINE_STATUS_STR "onlineStatus" #define MSG_ONLINE_STATUS_STR "onlineStatus"
#define MSG_AREA_ROOM_FLOORS "floors"
#define MSG_AREA_ROOM_FLOOR_ID "floorId"
#define MSG_AREA_ROOM_FLOOR_ROOMS "rooms"
/************************LOCK KEY*************************/ /************************LOCK KEY*************************/
#define MSG_KEYDELETE_NOTIFICATION_KEYID "KeyDeletedNotification.KeyID" #define MSG_KEYDELETE_NOTIFICATION_KEYID "KeyDeletedNotification.KeyID"
#define MSG_KEYDELETE_NOTIFICATION_KEYTYPE "KeyDeletedNotification.KeyType" #define MSG_KEYDELETE_NOTIFICATION_KEYTYPE "KeyDeletedNotification.KeyType"
......
...@@ -56,7 +56,9 @@ static int _kk_area_db_init(void) ...@@ -56,7 +56,9 @@ static int _kk_area_db_init(void)
idx INTEGER PRIMARY KEY, \ idx INTEGER PRIMARY KEY, \
name varchar(256), \ name varchar(256), \
roomId varchar(256), \ roomId varchar(256), \
armingstate INTEGER)"; armingstate INTEGER, \
floorId varchar(256), \
floorName varchar(256))";
if (sqlite3_exec(ctx->pDb, pAreaTable, NULL, NULL, &pcErr) != SQLITE_OK) if (sqlite3_exec(ctx->pDb, pAreaTable, NULL, NULL, &pcErr) != SQLITE_OK)
{ {
...@@ -212,6 +214,35 @@ int kk_room_add(const char *name,const char *roomId) ...@@ -212,6 +214,35 @@ int kk_room_add(const char *name,const char *roomId)
} }
} }
int kk_get_roomname_by_id(const char *roomid,char *roomname,int len)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *pRoomname = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
int tlen = 0;
if(roomname == NULL){
return -1;
}
_kk_area_lock();
sqlCmd = sqlite3_mprintf("select * from AreaInfo WHERE roomId= '%s'",roomid);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
pRoomname = (char*)sqlite3_column_text(stmt, DB_ROOM_NAME);
}
if(pRoomname != NULL && strlen(pRoomname) > 0){
tlen = strlen(pRoomname) > len?len:strlen(pRoomname);
strncpy(roomname,pRoomname,tlen);
}else{
strcpy(roomname,"");
}
sqlite3_finalize(stmt);
sqlite3_free(sqlCmd);
_kk_area_unlock();
return 0;
}
int kk_room_update_armingstate(int state,const char *roomid) int kk_room_update_armingstate(int state,const char *roomid)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
...@@ -232,6 +263,26 @@ int kk_room_update_armingstate(int state,const char *roomid) ...@@ -232,6 +263,26 @@ int kk_room_update_armingstate(int state,const char *roomid)
_kk_area_unlock(); _kk_area_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int kk_room_set_floor_info(const char*floorId,const char* floorName,const char *roomid)
{
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
_kk_area_lock();
sqlCmd = sqlite3_mprintf("UPDATE AreaInfo SET floorId=%s,floorName=%s WHERE roomId= '%s'",floorId,floorName,roomid);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
INFO_PRINT("Table updata data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_room_delete(const char *roomId) int kk_room_delete(const char *roomId)
{ {
int res = 0; int res = 0;
...@@ -239,7 +290,7 @@ int kk_room_delete(const char *roomId) ...@@ -239,7 +290,7 @@ int kk_room_delete(const char *roomId)
char *sqlCmd = NULL; char *sqlCmd = NULL;
char *zErrMsg = 0; char *zErrMsg = 0;
const char *deleteCmd = "delete from AreaInfo where roomId = '%s';"; const char *deleteCmd = "delete from AreaInfo where roomId = '%s';";
kk_room_dev_remove_by_roomid(roomId);
_kk_area_lock(); _kk_area_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,roomId); sqlCmd = sqlite3_mprintf(deleteCmd,roomId);
...@@ -276,6 +327,7 @@ static int _kk_check_dev_exist(const char* deviceCode,const char *epNum) ...@@ -276,6 +327,7 @@ static int _kk_check_dev_exist(const char* deviceCode,const char *epNum)
if(!strcmp(deviceCode,pDeviceCode) && !strcmp(pEpNum,epNum)) if(!strcmp(deviceCode,pDeviceCode) && !strcmp(pEpNum,epNum))
{ {
isExist = 1; isExist = 1;
INFO_PRINT("_kk_check_dev_exist\n");
break; break;
} }
} }
...@@ -294,7 +346,7 @@ int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCo ...@@ -294,7 +346,7 @@ int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCo
if(_kk_check_dev_exist(deviceCode,epNum)){ if(_kk_check_dev_exist(deviceCode,epNum)){
sqlCmd = sqlite3_mprintf("UPDATE AreaDevInfo SET roomId='%s', devName='%s', devName='%s'\ sqlCmd = sqlite3_mprintf("UPDATE AreaDevInfo SET roomId='%s', roomName='%s', devName='%s'\
WHERE deviceCode= '%s' and epNum = '%s'",roomId,roomName,devName,deviceCode,epNum); WHERE deviceCode= '%s' and epNum = '%s'",roomId,roomName,devName,deviceCode,epNum);
} }
else{ else{
...@@ -440,6 +492,27 @@ int kk_get_device_roomInfo(const char* deviceCode,int epNum,char *roomName,char ...@@ -440,6 +492,27 @@ int kk_get_device_roomInfo(const char* deviceCode,int epNum,char *roomName,char
_kk_area_unlock(); _kk_area_unlock();
return isGet; return isGet;
} }
int kk_room_dev_remove_by_roomid(const char *roomid)
{
int res = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
char *zErrMsg = 0;
const char *deleteCmd = "delete from AreaDevInfo where roomId = '%s';";
_kk_area_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,roomid);
res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( res != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
//INFO_PRINT("sub device insert data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_room_dev_remove(const char *deviceCode,const char *epNum) int kk_room_dev_remove(const char *deviceCode,const char *epNum)
{ {
int res = 0; int res = 0;
...@@ -448,9 +521,6 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum) ...@@ -448,9 +521,6 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum)
char *zErrMsg = 0; char *zErrMsg = 0;
const char *insertCmd = NULL; const char *insertCmd = NULL;
printf("deviceCode---->%s,%s\n",deviceCode,epNum);
if(epNum == NULL){ if(epNum == NULL){
insertCmd = "delete from AreaDevInfo where deviceCode = '%s';"; insertCmd = "delete from AreaDevInfo where deviceCode = '%s';";
} }
......
...@@ -12,6 +12,8 @@ enum{ ...@@ -12,6 +12,8 @@ enum{
DB_ROOM_NAME, DB_ROOM_NAME,
DB_ROOM_ID, DB_ROOM_ID,
DB_ROOM_ARMING, DB_ROOM_ARMING,
DB_ROOM_FLOORID,
DB_ROOM_FLOORNAME,
}; };
enum{ enum{
...@@ -36,5 +38,7 @@ int kk_get_room_armingstate(const char* roomId); ...@@ -36,5 +38,7 @@ int kk_get_room_armingstate(const char* roomId);
int kk_get_roomId_by_deviceCode(const char* deviceCode,const char *epNum,char *roomId,int size); int kk_get_roomId_by_deviceCode(const char* deviceCode,const char *epNum,char *roomId,int size);
int kk_get_device_roomInfo(const char* deviceCode,int epNum,char *roomName,char *roomId); int kk_get_device_roomInfo(const char* deviceCode,int epNum,char *roomName,char *roomId);
int kk_room_reset_armingstate(void); int kk_room_reset_armingstate(void);
int kk_room_dev_remove_by_roomid(const char *roomid);
int kk_room_set_floor_info(const char*floorId,const char* floorName,const char *roomid);
#endif #endif
...@@ -59,10 +59,15 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -59,10 +59,15 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_TOPO_CHANGE_MSG "/thing/topo/change" #define KK_THING_TOPO_CHANGE_MSG "/thing/topo/change"
#define KK_THING_SERVICE_REBOOT "/thing/service/reboot" #define KK_THING_SERVICE_REBOOT "/thing/service/reboot"
#define KK_THING_SERVICE_ADDROOM "/thing/service/addRoom" #define KK_THING_SERVICE_ADDROOM "/thing/service/addRoom"
#define KK_THING_SERVICE_ADDROOM_REPLY "/thing/service/addRoom_reply"
#define KK_THING_SERVICE_UPDATEROOM "/thing/service/updateRoom"
#define KK_THING_SERVICE_UPDATEROOM_REPLY "/thing/service/updateRoom_reply"
#define KK_THING_SERVICE_DELETEROOM "/thing/service/deleteRoom" #define KK_THING_SERVICE_DELETEROOM "/thing/service/deleteRoom"
#define KK_THING_SERVICE_DELETEROOM_REPLY "/thing/service/deleteRoom_reply"
#define KK_THING_SERVICE_ADDDEVICETOROOM "/thing/service/addDeviceToRoom" #define KK_THING_SERVICE_ADDDEVICETOROOM "/thing/service/addDeviceToRoom"
#define KK_THING_SERVICE_ADDDEVICETOROOM_REPLY "/thing/service/addDeviceToRoom_reply" #define KK_THING_SERVICE_ADDDEVICETOROOM_REPLY "/thing/service/addDeviceToRoom_reply"
#define KK_THING_SERVICE_REMOVEDEVICEFROMROOM "/thing/service/removeDeviceFromRoom" #define KK_THING_SERVICE_REMOVEDEVICEFROMROOM "/thing/service/removeDeviceFromRoom"
#define KK_THING_SERVICE_REMOVEDEVICEFROMROOM_REPLY "/thing/service/removeDeviceFromRoom_reply"
#define KK_THING_SERVICE_EXECUTEROOM "/thing/service/executeRoom" #define KK_THING_SERVICE_EXECUTEROOM "/thing/service/executeRoom"
#define KK_THING_SERVICE_SETLOCALTIMER "/thing/service/setLocalTimer" #define KK_THING_SERVICE_SETLOCALTIMER "/thing/service/setLocalTimer"
#define KK_THING_SERVICE_GETLOCALTIMER "/thing/service/getLocalTimer" #define KK_THING_SERVICE_GETLOCALTIMER "/thing/service/getLocalTimer"
...@@ -73,10 +78,14 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -73,10 +78,14 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_DELETEKEY "/thing/service/DeleteKey" #define KK_THING_SERVICE_DELETEKEY "/thing/service/DeleteKey"
#define KK_THING_SERVICE_MODIFYKEY "/thing/service/ModifyKey" #define KK_THING_SERVICE_MODIFYKEY "/thing/service/ModifyKey"
#define KK_THING_SERVICE_ADDSCENC "/thing/service/addScene" #define KK_THING_SERVICE_ADDSCENC "/thing/service/addScene"
#define KK_THING_SERVICE_ADDSCENC_REPLY "/thing/service/addScene_reply"
#define KK_THING_SERVICE_DELETESCENC "/thing/service/deleteScene" #define KK_THING_SERVICE_DELETESCENC "/thing/service/deleteScene"
#define KK_THING_SERVICE_DELETESCENC_REPLY "/thing/service/deleteScene_reply"
#define KK_THING_SERVICE_UPDATESCENC "/thing/service/updateScene" #define KK_THING_SERVICE_UPDATESCENC "/thing/service/updateScene"
#define KK_THING_SERVICE_UPDATESCENC_REPLY "/thing/service/updateScene_reply"
#define KK_THING_SERVICE_PROPERTY_GET_REPLY "/thing/service/property/get_reply" #define KK_THING_SERVICE_PROPERTY_GET_REPLY "/thing/service/property/get_reply"
#define KK_THING_SERVICE_EXECUTESCENE "/thing/service/executeScene" #define KK_THING_SERVICE_EXECUTESCENE "/thing/service/executeScene"
#define KK_THING_SERVICE_EXECUTESCENE_REPLY "/thing/service/executeScene_reply"
#define KK_THING_SERVICE_NEGATIVE "/thing/service/negativeProperty" #define KK_THING_SERVICE_NEGATIVE "/thing/service/negativeProperty"
#define KK_THING_METHOD_DELETESCENC "thing.service.deleteScene" #define KK_THING_METHOD_DELETESCENC "thing.service.deleteScene"
#define KK_THING_METHOD_UPDATESCENC "thing.service.updateScene" #define KK_THING_METHOD_UPDATESCENC "thing.service.updateScene"
...@@ -88,9 +97,10 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -88,9 +97,10 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_SYNCDEVICEINFO_REPLY "/thing/service/syncDeviceInfo_reply" #define KK_THING_SERVICE_SYNCDEVICEINFO_REPLY "/thing/service/syncDeviceInfo_reply"
#define KK_THING_SERVICE_CLOUDSTATUS "/thing/service/cloudStatus" #define KK_THING_SERVICE_CLOUDSTATUS "/thing/service/cloudStatus"
#define KK_THING_SERVICE_EXECUTEDNDMODE "/thing/service/executeDNDMode" #define KK_THING_SERVICE_EXECUTEDNDMODE "/thing/service/executeDNDMode"
#define KK_THING_SERVICE_SETFLOOR "/thing/service/setAllFloors"
#define KK_THING_SERVICE_SETFLOOR_REPLY "/thing/service/setAllFloors_reply"
#define KK_THING_SERVICE_GETFLOOR "/thing/service/getAllFloors"
#define KK_THING_SERVICE_GETFLOOR_REPLY "/thing/service/getAllFloors_reply"
#define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply" #define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply"
#define KK_THING_SERVICE_SYNCINFOPUSH_REPLY "/thing/service/syncinfopush_reply" #define KK_THING_SERVICE_SYNCINFOPUSH_REPLY "/thing/service/syncinfopush_reply"
......
...@@ -414,7 +414,47 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf) ...@@ -414,7 +414,47 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf)
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_service_addRoom_reply(cJSON *param,cJSON *msgId,char *roomid,int type)
{
int res = 0;
int i = 0,num = 0;
if(param == NULL || msgId == NULL){
return INVALID_PARAMETER;
}
cJSON *deviceCode = cJSON_GetObjectItem(param, MSG_DEVICE_CODE_STR);
if(deviceCode == NULL){
return FAIL_RETURN;
}
cJSON *productCode = cJSON_GetObjectItem(param, MSG_PRODUCT_CODE_STR);
if(productCode == NULL){
return FAIL_RETURN;
}
cJSON *info = cJSON_CreateObject();
if( type == 0){
cJSON_AddStringToObject(info, MSG_TYPE_STR, KK_THING_SERVICE_ADDROOM_REPLY);
}else{
cJSON_AddStringToObject(info, MSG_TYPE_STR, KK_THING_SERVICE_UPDATEROOM_REPLY);
}
cJSON_AddStringToObject(info, MSG_DEVICE_CODE_STR, deviceCode->valuestring);
cJSON_AddStringToObject(info, MSG_PRODUCT_CODE_STR, productCode->valuestring);
char *infff=cJSON_Print(info);
cJSON *payload = cJSON_CreateObject();
cJSON_AddStringToObject(payload, "desc", "success");
cJSON_AddStringToObject(payload, "version", "1.0");
cJSON_AddStringToObject(payload, "code", "0");
cJSON_AddStringToObject(payload, "msgId", msgId->valuestring);
cJSON *Item = cJSON_CreateObject();
cJSON_AddStringToObject(Item, "roomId", roomid);
cJSON_AddItemToObject(payload, "params", Item);
char *payload11=cJSON_Print(payload);
kk_sendData2app(infff,payload11,0);
free(payload11);
free(infff);
cJSON_Delete(payload);
cJSON_Delete(info);
return res;
}
/************************************************************ /************************************************************
*功能描述:添加房间处理函数 *功能描述:添加房间处理函数
*输入参数:params:云端传下来JSON数据,主要包含房间名称 *输入参数:params:云端传下来JSON数据,主要包含房间名称
...@@ -422,7 +462,7 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf) ...@@ -422,7 +462,7 @@ int kk_topo_delete_handle(cJSON *payload,cJSON *buf)
*返 回 值: 0:成功;其他:失败 *返 回 值: 0:成功;其他:失败
*其他说明: *其他说明:
*************************************************************/ *************************************************************/
static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params) static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params,cJSON *inforoot,cJSON *msgid)
{ {
dm_mgr_dev_node_t *node = NULL; dm_mgr_dev_node_t *node = NULL;
char roomId[32] = {0}; char roomId[32] = {0};
...@@ -441,39 +481,53 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params) ...@@ -441,39 +481,53 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params)
return res; return res;
} }
cJSON *roomInfoStr = cJSON_GetObjectItem(params, MSG_AREA_ADDROOM_ROOMNAME); cJSON *roomInfoStr = cJSON_GetObjectItem(params, MSG_AREA_ADDROOM_ROOMNAME);
cJSON *roomIdStr = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID); //cJSON *roomIdStr = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomInfoStr == NULL){ if(roomInfoStr == NULL){
return FAIL_RETURN; return FAIL_RETURN;
} }
memcpy(roomId,roomIdStr->valuestring,strlen(roomIdStr->valuestring)); //memcpy(roomId,roomIdStr->valuestring,strlen(roomIdStr->valuestring));
//HAL_GetTime_s((char*)roomId); HAL_GetTime_s((char*)roomId);
kk_room_add(roomInfoStr->valuestring,roomId); kk_room_add(roomInfoStr->valuestring,roomId);
kk_service_addRoom_reply(inforoot,msgid,roomId,0);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,MSG_AREA_ADDROOM_NOTIFICATION_ROOMID,NULL,roomId); kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,MSG_AREA_ADDROOM_NOTIFICATION_ROOMID,NULL,roomId);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/************************************************************ /************************************************************
*功能描述:删除房间处理函数 *功能描述:更新房间处理函数
*输入参数:params:云端传下来JSON数据,主要包含房间ID *输入参数:params:云端传下来JSON数据,主要包含房间名称
*输出参数:无 *输出参数:无
*返 回 值: 0:成功;其他:失败 *返 回 值: 0:成功;其他:失败
*其他说明: *其他说明:
*************************************************************/ *************************************************************/
static int kk_service_deleteRoom_handle(cJSON *params) static int kk_service_updateRoom_handle(const char *deviceCode, cJSON *params,cJSON *inforoot,cJSON *msgid)
{ {
if(params == NULL){ dm_mgr_dev_node_t *node = NULL;
char roomId[32] = {0};
int res = 0;
if(deviceCode == NULL||params == NULL){
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
cJSON *roomInfoStr = cJSON_GetObjectItem(params, MSG_AREA_ADDROOM_ROOMNAME);
cJSON *roomInfoStr = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID); cJSON *roomIdStr = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomInfoStr == NULL){ if(roomInfoStr == NULL || roomIdStr == NULL){
return FAIL_RETURN; return FAIL_RETURN;
} }
kk_room_delete(roomInfoStr->valuestring); //memcpy(roomId,roomIdStr->valuestring,strlen(roomIdStr->valuestring));
//INFO_PRINT(" update room 111!!! %s.%s\n",roomInfoStr->valuestring,roomIdStr->valuestring);
kk_room_add(roomInfoStr->valuestring,roomIdStr->valuestring);
//INFO_PRINT(" update room 111!!!\n");
kk_service_addRoom_reply(inforoot,msgid,roomIdStr->valuestring,1);
//INFO_PRINT(" update room 111!!!\n");
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/************************************************************
static int kk_service_addDeviceToRoom_reply(cJSON *param,cJSON *msgId) *功能描述:删除房间处理函数
*输入参数:params:云端传下来JSON数据,主要包含房间ID
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static int kk_service_deleteRoom_reply(cJSON *param,cJSON *msgId)
{ {
int res = 0; int res = 0;
int i = 0,num = 0; int i = 0,num = 0;
...@@ -489,7 +543,7 @@ static int kk_service_addDeviceToRoom_reply(cJSON *param,cJSON *msgId) ...@@ -489,7 +543,7 @@ static int kk_service_addDeviceToRoom_reply(cJSON *param,cJSON *msgId)
return FAIL_RETURN; return FAIL_RETURN;
} }
cJSON *info = cJSON_CreateObject(); cJSON *info = cJSON_CreateObject();
cJSON_AddStringToObject(info, MSG_TYPE_STR, KK_THING_SERVICE_ADDDEVICETOROOM_REPLY); cJSON_AddStringToObject(info, MSG_TYPE_STR, KK_THING_SERVICE_DELETEROOM_REPLY);
cJSON_AddStringToObject(info, MSG_DEVICE_CODE_STR, deviceCode->valuestring); cJSON_AddStringToObject(info, MSG_DEVICE_CODE_STR, deviceCode->valuestring);
cJSON_AddStringToObject(info, MSG_PRODUCT_CODE_STR, productCode->valuestring); cJSON_AddStringToObject(info, MSG_PRODUCT_CODE_STR, productCode->valuestring);
char *infff=cJSON_Print(info); char *infff=cJSON_Print(info);
...@@ -509,6 +563,20 @@ static int kk_service_addDeviceToRoom_reply(cJSON *param,cJSON *msgId) ...@@ -509,6 +563,20 @@ static int kk_service_addDeviceToRoom_reply(cJSON *param,cJSON *msgId)
cJSON_Delete(info); cJSON_Delete(info);
return res; return res;
} }
static int kk_service_deleteRoom_handle(cJSON *params)
{
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON *roomInfoStr = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomInfoStr == NULL){
return FAIL_RETURN;
}
kk_room_delete(roomInfoStr->valuestring);
return SUCCESS_RETURN;
}
/************************************************************ /************************************************************
*功能描述:添加设备到房间处理函数 *功能描述:添加设备到房间处理函数
*输入参数:params:云端传下来JSON数据,主要包含房间ID和设备deviceCode *输入参数:params:云端传下来JSON数据,主要包含房间ID和设备deviceCode
...@@ -519,6 +587,7 @@ static int kk_service_addDeviceToRoom_reply(cJSON *param,cJSON *msgId) ...@@ -519,6 +587,7 @@ static int kk_service_addDeviceToRoom_reply(cJSON *param,cJSON *msgId)
static int kk_service_addDeviceToRoom_handle(cJSON *params) static int kk_service_addDeviceToRoom_handle(cJSON *params)
{ {
char epNumStr[10] = {0}; char epNumStr[10] = {0};
//char roomName[256] = {0};
int isAirGwFlag = 0; int isAirGwFlag = 0;
int res = 0; int res = 0;
dm_mgr_dev_node_t *node = NULL; dm_mgr_dev_node_t *node = NULL;
...@@ -538,7 +607,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params) ...@@ -538,7 +607,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
if(roomId == NULL){ if(roomId == NULL){
return FAIL_RETURN; return FAIL_RETURN;
} }
kk_room_add(room_name->valuestring,roomId->valuestring); //kk_room_add(room_name->valuestring,roomId->valuestring);
cJSON *deviceCode = cJSON_GetObjectItem(params, MSG_DEVICE_CODE_STR); cJSON *deviceCode = cJSON_GetObjectItem(params, MSG_DEVICE_CODE_STR);
if(deviceCode == NULL){ if(deviceCode == NULL){
return FAIL_RETURN; return FAIL_RETURN;
...@@ -690,7 +759,92 @@ static int kk_service_executeDNDMode_handle(cJSON *params) ...@@ -690,7 +759,92 @@ static int kk_service_executeDNDMode_handle(cJSON *params)
kk_free_room_dev_list(); kk_free_room_dev_list();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/************************************************************
*功能描述:设置楼层
*输入参数:params:云端下发数据,包含房间号等
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static int kk_service_setFloor_handle(cJSON *params)
{
int res = 0;
char roomIdStr[16] = {0};
kk_dev_list_t *pList = NULL;
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON *floorArray = cJSON_GetObjectItem(params, MSG_AREA_ROOM_FLOORS);
if(floorArray == NULL){
ERROR_PRINT("DATA ERROR!!!\n");
return INVALID_PARAMETER;
}
cJSON * item = floorArray->child;
while(item != NULL){
cJSON * floorId = cJSON_GetObjectItem(item,MSG_AREA_ROOM_FLOOR_ID);
if(floorId == NULL) return INVALID_PARAMETER;
cJSON * name = cJSON_GetObjectItem(item,MSG_AREA_ADDROOM_DEVICENAME);
if(name == NULL) return INVALID_PARAMETER;
cJSON * rooms = cJSON_GetObjectItem(item,MSG_AREA_ROOM_FLOOR_ROOMS);
if(rooms == NULL) return INVALID_PARAMETER;
cJSON * itemroom = rooms->child;
while(itemroom != NULL){
cJSON * roomid = cJSON_GetObjectItem(itemroom,MSG_AREA_ROOM_ROOMID);
if(roomid == NULL){
return INVALID_PARAMETER;
}
kk_room_set_floor_info(floorId->valuestring,name->valuestring,roomid->valuestring);
itemroom = itemroom->next;
}
item = item->next;
}
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:设置楼层
*输入参数:params:云端下发数据,包含房间号等
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static int kk_service_getFloor_handle(cJSON *params)
{
int res = 0;
char roomIdStr[16] = {0};
kk_dev_list_t *pList = NULL;
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON *floorArray = cJSON_GetObjectItem(params, MSG_AREA_ROOM_FLOORS);
if(floorArray == NULL){
ERROR_PRINT("DATA ERROR!!!\n");
return INVALID_PARAMETER;
}
cJSON * item = floorArray->child;
while(item != NULL){
cJSON * floorId = cJSON_GetObjectItem(item,MSG_AREA_ROOM_FLOOR_ID);
if(floorId == NULL) return INVALID_PARAMETER;
cJSON * name = cJSON_GetObjectItem(item,MSG_AREA_ADDROOM_DEVICENAME);
if(name == NULL) return INVALID_PARAMETER;
cJSON * rooms = cJSON_GetObjectItem(item,MSG_AREA_ROOM_FLOOR_ROOMS);
if(rooms == NULL) return INVALID_PARAMETER;
cJSON * itemroom = rooms->child;
while(itemroom != NULL){
cJSON * roomid = cJSON_GetObjectItem(itemroom,MSG_AREA_ROOM_ROOMID);
if(roomid == NULL){
return INVALID_PARAMETER;
}
kk_room_set_floor_info(floorId->valuestring,name->valuestring,roomid->valuestring);
itemroom = itemroom->next;
}
item = item->next;
}
return SUCCESS_RETURN;
}
/************************************************************ /************************************************************
*功能描述:批量执行房间设备处理 *功能描述:批量执行房间设备处理
*输入参数:params:云端下发数据,包含房间号,productCode等 *输入参数:params:云端下发数据,包含房间号,productCode等
...@@ -1372,25 +1526,37 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -1372,25 +1526,37 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT(" add room!!!\n"); INFO_PRINT(" add room!!!\n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_addRoom_handle(deviceCode->valuestring,paramStr); kk_service_addRoom_handle(deviceCode->valuestring,paramStr,info_root,msgId);
dm_msg_thing_event_post(deviceCode->valuestring,MSG_AREA_ADDROOM_NOTIFICATION,msgId->valuestring); dm_msg_thing_event_post(deviceCode->valuestring,MSG_AREA_ADDROOM_NOTIFICATION,msgId->valuestring);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_UPDATEROOM) == 0){
INFO_PRINT(" update room!!!\n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_updateRoom_handle(deviceCode->valuestring,paramStr,info_root,msgId);
//dm_msg_thing_event_post(deviceCode->valuestring,MSG_AREA_ADDROOM_NOTIFICATION,msgId->valuestring);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_DELETEROOM) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_DELETEROOM) == 0){
INFO_PRINT(" delete room \n"); INFO_PRINT(" delete room \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_deleteRoom_handle(paramStr); kk_service_deleteRoom_handle(paramStr);
kk_service_deleteRoom_reply(info_root,msgId);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_ADDDEVICETOROOM) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_ADDDEVICETOROOM) == 0){
INFO_PRINT(" adddevicetoroom \n"); INFO_PRINT(" adddevicetoroom \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_addDeviceToRoom_handle(paramStr); kk_service_addDeviceToRoom_handle(paramStr);
kk_service_addDeviceToRoom_reply(info_root,msgId); kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_ADDDEVICETOROOM_REPLY);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_REMOVEDEVICEFROMROOM) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_REMOVEDEVICEFROMROOM) == 0){
INFO_PRINT(" removedevicefromroom \n"); INFO_PRINT(" removedevicefromroom \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_removeDeviceFromRoom_handle(paramStr); kk_service_removeDeviceFromRoom_handle(paramStr);
//kk_service_addDeviceToRoom_reply(info_root,msgId,1);
kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_REMOVEDEVICEFROMROOM_REPLY);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_EXECUTEROOM) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_EXECUTEROOM) == 0){
INFO_PRINT(" executeroom \n"); INFO_PRINT(" executeroom \n");
...@@ -1402,24 +1568,28 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -1402,24 +1568,28 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_addScene_handle(paramStr,msgId); kk_service_addScene_handle(paramStr,msgId);
kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_ADDSCENC_REPLY);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_UPDATESCENC) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_UPDATESCENC) == 0){
INFO_PRINT(" update scene \n"); INFO_PRINT(" update scene \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_updateScene_handle(paramStr,msgId); kk_service_updateScene_handle(paramStr,msgId);
kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_UPDATESCENC_REPLY);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_DELETESCENC) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_DELETESCENC) == 0){
INFO_PRINT("delete scene \n"); INFO_PRINT("delete scene \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_deleteScene_handle(paramStr,msgId); kk_service_deleteScene_handle(paramStr,msgId);
kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_DELETESCENC_REPLY);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_EXECUTESCENE) == 0){ else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_EXECUTESCENE) == 0){
INFO_PRINT("execute scene \n"); INFO_PRINT("execute scene \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_executeScene_handle(paramStr,msgId); kk_service_executeScene_handle(paramStr,msgId);
kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_EXECUTESCENE_REPLY);
}else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_SYNCDEVICEINFO) == 0){ }else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_SYNCDEVICEINFO) == 0){
INFO_PRINT("SYNCDEVICEINFO service \n"); INFO_PRINT("SYNCDEVICEINFO service \n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID); cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
...@@ -1529,6 +1699,19 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -1529,6 +1699,19 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON *paramStr = cJSON_GetObjectItem(payload,MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload,MSG_PARAMS_STR);
kk_service_executeDNDMode_handle(paramStr); kk_service_executeDNDMode_handle(paramStr);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_SETFLOOR) == 0){
INFO_PRINT("SETFLOOR \n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
cJSON *paramStr = cJSON_GetObjectItem(payload,MSG_PARAMS_STR);
kk_service_setFloor_handle(paramStr);
kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_SETFLOOR_REPLY);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_GETFLOOR) == 0){
INFO_PRINT("GETFLOOR \n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
//kk_service_setFloor_handle();
//kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_SETFLOOR_REPLY);
}
else{ else{
INFO_PRINT("Error msgtype!!! \n"); INFO_PRINT("Error msgtype!!! \n");
} }
......
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