Commit e012c0df authored by chen.weican's avatar chen.weican

【修改内容】增加区域设置功能,包括添加房间,删除房间,添加设备到房间,删除设备从房间等

【提交人】陈伟灿
parent 45a5c82e
#include <stdio.h>
#include "kk_tsl_api.h"
#include "kk_dm_mng.h"
#include "sqlite3.h"
#include "kk_log.h"
#include "kk_area_handle.h"
#define KK_AREA_DB_FILE "kk_area.db"
static kk_dev_list_t *s_device_list = NULL;
typedef struct {
void *mutex;
int roomNum;
sqlite3 *pDb;
} kk_area_ctx_t;
typedef enum{
DB_IDX = 0,
DB_ROOM_NAME,
DB_ROOM_ID,
};
typedef enum{
DB_DEV_IDX = 0,
DB_DEV_ROOM_ID,
DB_DEV_DEVICECODE,
DB_DEV_EPNUM,
};
static kk_area_ctx_t s_kk_area_ctx = {NULL,0,NULL};
static kk_area_ctx_t *_kk_area_get_ctx(void)
{
return &s_kk_area_ctx;
}
static void _kk_area_lock(void)
{
kk_area_ctx_t *ctx = _kk_area_get_ctx();
if (ctx->mutex) {
HAL_MutexLock(ctx->mutex);
}
}
static void _kk_area_unlock(void)
{
kk_area_ctx_t *ctx = _kk_area_get_ctx();
if (ctx->mutex) {
HAL_MutexUnlock(ctx->mutex);
}
}
static int _kk_area_db_init(void)
{
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *pcErr;
//eUtils_LockLock(&sLock);
_kk_area_lock();
if (sqlite3_open_v2(KK_AREA_DB_FILE, &ctx->pDb, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX, NULL) != SQLITE_OK)
{
ERROR_PRINT("Error initialising linkage database (%s)", sqlite3_errmsg(ctx->pDb));
_kk_area_unlock();
return FAIL_RETURN;
}
INFO_PRINT("area db Database opened\n");
const char *pAreaTable = "CREATE TABLE IF NOT EXISTS AreaInfo( \
idx INTEGER PRIMARY KEY, \
name varchar(256), \
roomId varchar(256))";
if (sqlite3_exec(ctx->pDb, pAreaTable, NULL, NULL, &pcErr) != SQLITE_OK)
{
ERROR_PRINT("Error creating table (%s)\n", pcErr);
sqlite3_free(pcErr);
//eUtils_LockUnlock(&sLock);
_kk_area_unlock();
return FAIL_RETURN;
}
const char *pAreaDevTable = "CREATE TABLE IF NOT EXISTS AreaDevInfo( \
idx INTEGER PRIMARY KEY, \
roomId varchar(256), \
deviceCode varchar(33), \
epNum varchar(10))";
if (sqlite3_exec(ctx->pDb, pAreaDevTable, NULL, NULL, &pcErr) != SQLITE_OK)
{
ERROR_PRINT("Error creating table (%s)\n", pcErr);
sqlite3_free(pcErr);
//eUtils_LockUnlock(&sLock);
_kk_area_unlock();
return FAIL_RETURN;
}
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_area_init(void)
{
int res = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
/* Create Mutex */
ctx->mutex = HAL_MutexCreate();
if (ctx->mutex == NULL) {
return FAIL_RETURN;
}
res = _kk_area_db_init();
if(res != SUCCESS_RETURN){
ERROR_PRINT("[%s][%d]kk_area_init FAIL!!!\n",__FUNCTION__,__LINE__);
}
return SUCCESS_RETURN;
}
int kk_room_add(const char *name)
{
int res = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
char roomId[10] = {0};
char *zErrMsg = 0;
const char *insertCmd = "insert into AreaInfo (name, roomId) \
values ('%s','%s');";
_kk_area_lock();
ctx->roomNum++;
sprintf(roomId,"%d",ctx->roomNum);
sqlCmd = sqlite3_mprintf(insertCmd,name,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 ctx->roomNum;
}
int kk_room_delete(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 AreaInfo where roomId = '%s';";
_kk_area_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,roomId);
INFO_PRINT("Table delete data sqlCmd:%s\n",sqlCmd);
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("Table delete data successfully\n");
ctx->roomNum--;
}
sqlite3_free(sqlCmd);
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_room_dev_add(const char *roomId,const char *deviceCode,const char *epNum)
{
int res = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
char *zErrMsg = 0;
const char *insertCmd = "insert into AreaDevInfo (roomId, deviceCode, epNum) \
values ('%s','%s','%s');";
_kk_area_lock();
sqlCmd = sqlite3_mprintf(insertCmd,roomId,deviceCode,epNum);
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 res = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
char *zErrMsg = 0;
const char *insertCmd = "delete from AreaDevInfo where deviceCode = '%s' and epNum = '%s';";
_kk_area_lock();
sqlCmd = sqlite3_mprintf(insertCmd,deviceCode,epNum);
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_device_list_add(const char *deviceCode)
{
int len;
kk_dev_list_t *ptr,*pre;
ptr = pre = s_device_list;
if(deviceCode == NULL){
return FAIL_RETURN;
}
while(ptr!=NULL){
pre = ptr;
if(strcmp(ptr->deviceCode,deviceCode) == 0){
return SUCCESS_RETURN;
}
ptr = ptr->next;
}
ptr = (kk_dev_list_t*)malloc(sizeof(kk_dev_list_t));
memset(ptr,0,sizeof(kk_dev_list_t));
memcpy(ptr->deviceCode,deviceCode,strlen(deviceCode));
if(s_device_list==NULL){
s_device_list = ptr;
}else{
pre->next = ptr;
}
return SUCCESS_RETURN;
}
kk_dev_list_t* kk_get_room_deviceCode(const char* roomId)
{
sqlite3_stmt *stmt;
char *sqlCmd = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo;";
printf("");
_kk_area_lock();
sqlCmd = sqlite3_mprintf(searchCmd,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){
if(strcmp(sqlite3_column_text(stmt, DB_DEV_ROOM_ID),roomId) == 0){
kk_room_device_list_add(sqlite3_column_text(stmt, DB_DEV_DEVICECODE));
}
}
sqlite3_finalize(stmt);
_kk_area_unlock();
return s_device_list;
}
void kk_free_room_dev_list(void)
{
kk_dev_list_t *ptr = s_device_list;
kk_dev_list_t *ptmp = NULL;
while(ptr != NULL){
ptmp = ptr->next;
free(ptr);
ptr = NULL;
ptr = ptmp;
}
s_device_list = NULL;
}
#ifndef __KK_AREA_H__
#define __KK_AREA_H__
#include "kk_tsl_common.h"
typedef struct kk_dev_list{
char deviceCode[DEVICE_CODE_MAXLEN];
struct kk_dev_list * next;
}kk_dev_list_t;
#endif
...@@ -865,11 +865,11 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params) ...@@ -865,11 +865,11 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
kk_property_db_update_value(deviceCode,property->identifier,tmpValue); kk_property_db_update_value(deviceCode,property->identifier,tmpValue);
} }
else if(property->data_value.type == KK_TSL_DATA_TYPE_FLOAT){ else if(property->data_value.type == KK_TSL_DATA_TYPE_FLOAT){
sprintf(tmpValue,"%d",property->data_value.value_float); sprintf(tmpValue,"%f",property->data_value.value_float);
kk_property_db_update_value(deviceCode,property->identifier,tmpValue); kk_property_db_update_value(deviceCode,property->identifier,tmpValue);
} }
else if(property->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){ else if(property->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
sprintf(tmpValue,"%d",property->data_value.value_double); sprintf(tmpValue,"%u",property->data_value.value_double);
kk_property_db_update_value(deviceCode,property->identifier,tmpValue); kk_property_db_update_value(deviceCode,property->identifier,tmpValue);
} }
else if(property->data_value.type == KK_TSL_DATA_TYPE_TEXT|| else if(property->data_value.type == KK_TSL_DATA_TYPE_TEXT||
...@@ -897,11 +897,11 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params) ...@@ -897,11 +897,11 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue); kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue);
} }
else if(current_data->data_value.type == KK_TSL_DATA_TYPE_FLOAT){ else if(current_data->data_value.type == KK_TSL_DATA_TYPE_FLOAT){
sprintf(tmpValue,"%d",current_data->data_value.value_float); sprintf(tmpValue,"%f",current_data->data_value.value_float);
kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue); kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue);
} }
else if(current_data->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){ else if(current_data->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
sprintf(tmpValue,"%d",current_data->data_value.value_double); sprintf(tmpValue,"%u",current_data->data_value.value_double);
kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue); kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue);
} }
else if(current_data->data_value.type == KK_TSL_DATA_TYPE_TEXT|| else if(current_data->data_value.type == KK_TSL_DATA_TYPE_TEXT||
...@@ -927,11 +927,11 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params) ...@@ -927,11 +927,11 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue); kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue);
} }
else if(current_data_1->data_value.type == KK_TSL_DATA_TYPE_FLOAT){ else if(current_data_1->data_value.type == KK_TSL_DATA_TYPE_FLOAT){
sprintf(tmpValue,"%d",current_data_1->data_value.value_float); sprintf(tmpValue,"%f",current_data_1->data_value.value_float);
kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue); kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue);
} }
else if(current_data_1->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){ else if(current_data_1->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
sprintf(tmpValue,"%d",current_data_1->data_value.value_double); sprintf(tmpValue,"%u",current_data_1->data_value.value_double);
kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue); kk_property_db_update_value(deviceCode,tmp_identifiers,tmpValue);
} }
else if(current_data_1->data_value.type == KK_TSL_DATA_TYPE_TEXT|| else if(current_data_1->data_value.type == KK_TSL_DATA_TYPE_TEXT||
...@@ -965,3 +965,42 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params) ...@@ -965,3 +965,42 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
} }
int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,const char* params,const char *fatherDeviceCode)
{
char *method = "thing.service.property.set";
char *req_info = NULL,*payload = NULL;
int req_info_len = 0,payload_len = 0;
req_info_len = strlen(DM_MSG_INFO)+10+strlen(productCode)+strlen(productCode)+strlen(KK_THING_SERVICE_PROPERTY_SET)+1;
req_info = malloc(req_info_len);
if (req_info == NULL) {
return MEMORY_NOT_ENOUGH;
}
memset(req_info, 0, req_info_len);
snprintf(req_info, req_info_len, DM_MSG_INFO, KK_THING_SERVICE_PROPERTY_SET,productCode, deviceCode);
payload_len = strlen(DM_MSG_REQUEST) + 10 + strlen(DM_MSG_VERSION) + strlen(params) + strlen(
method) + 1 + 20;
payload = malloc(payload_len);
if (payload == NULL) {
free(req_info);
return MEMORY_NOT_ENOUGH;
}
memset(payload, 0, payload_len);
snprintf(payload, payload_len, DM_MSG_REQUEST, iotx_report_id(),
DM_MSG_VERSION, params,HAL_GetTime(), method);
cJSON *root=cJSON_CreateObject();
cJSON* infoObj = cJSON_Parse(req_info);
cJSON* payloadObj = cJSON_Parse(payload);
cJSON_AddItemToObject(root, "info", infoObj);
cJSON_AddItemToObject(root, "payload",payloadObj);
void *buf = cJSON_Print(root);
kk_sendData2gw(buf, strlen(buf), fatherDeviceCode);
free(buf);
free(req_info);
free(payload);
cJSON_Delete(root);
}
...@@ -56,6 +56,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -56,6 +56,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_TOPO_BATCH_DELETE_MSG "/thing/topo/batch_delete" #define KK_THING_TOPO_BATCH_DELETE_MSG "/thing/topo/batch_delete"
#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_DELETEROOM "/thing/service/deleteRoom"
#define KK_THING_SERVICE_ADDDEVICETOROOM "/thing/service/addDeviceToRoom"
#define KK_THING_SERVICE_REMOVEDEVICEFROMROOM "/thing/service/removeDeviceFromRoom"
#define KK_THING_SERVICE_EXECUTEROOM "/thing/service/executeRoom"
//const char DM_URI_SYS_PREFIX[] DM_READ_ONLY = "/sys/%s/%s/"; //const char DM_URI_SYS_PREFIX[] DM_READ_ONLY = "/sys/%s/%s/";
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "kk_tsl_api.h" #include "kk_tsl_api.h"
#include "com_api.h" #include "com_api.h"
#include "kk_log.h" #include "kk_log.h"
#include "kk_area_handle.h"
#define IOTX_LINKKIT_KEY_ID "id" #define IOTX_LINKKIT_KEY_ID "id"
...@@ -234,7 +235,7 @@ int kk_get_cloud_recv_status(void){ ...@@ -234,7 +235,7 @@ int kk_get_cloud_recv_status(void){
return s_CloudStatusRecv; return s_CloudStatusRecv;
} }
static int _iotx_linkkit_delete_handle(cJSON *payload) static int kk_topo_delete_handle(cJSON *payload)
{ {
if(payload == NULL){ if(payload == NULL){
return FAIL_RETURN; return FAIL_RETURN;
...@@ -258,7 +259,153 @@ static int _iotx_linkkit_delete_handle(cJSON *payload) ...@@ -258,7 +259,153 @@ static int _iotx_linkkit_delete_handle(cJSON *payload)
} }
static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params)
{
dm_mgr_dev_node_t *node = NULL;
char roomId[10] = {0};
int res = 0;
int idx = 0,idxIpt = 0;
int start = 0,serverNum = 0;
kk_tsl_service_t *serviceItem = NULL;
kk_tsl_data_t* pinputData = NULL;
cJSON *currentItem =NULL;
if(deviceCode == NULL||params == NULL){
return INVALID_PARAMETER;
}
res = dm_mgr_get_device_by_devicecode(deviceCode, &node);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("dm_mgr_get_device_by_devicecode failed\n");
return res;
}
cJSON *roomInfoStr = cJSON_GetObjectItem(params, MSG_AREA_ADDROOM_ROOMNAME);
if(roomInfoStr == NULL){
return FAIL_RETURN;
}
int id = kk_room_add(roomInfoStr->valuestring);
sprintf(roomId,"%d",id);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,MSG_AREA_ADDROOM_NOTIFICATION_ROOMID,NULL,roomId);
return SUCCESS_RETURN;
}
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;
}
static int kk_service_addDeviceToRoom_handle(cJSON *params)
{
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON *roomId = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomId == NULL){
return FAIL_RETURN;
}
cJSON *deviceCode = cJSON_GetObjectItem(params, MSG_DEVICE_CODE_STR);
if(deviceCode == NULL){
return FAIL_RETURN;
}
cJSON *epNum = cJSON_GetObjectItem(params, MSG_AREA_ROOM_EPNUM);
if(epNum == NULL){
return FAIL_RETURN;
}
kk_room_dev_add(roomId->valuestring,deviceCode->valuestring,epNum->valuestring);
return SUCCESS_RETURN;
}
static int kk_service_removeDeviceFromRoom_handle(cJSON *params)
{
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON *deviceCode = cJSON_GetObjectItem(params, MSG_DEVICE_CODE_STR);
if(deviceCode == NULL){
return FAIL_RETURN;
}
cJSON *epNum = cJSON_GetObjectItem(params, MSG_AREA_ROOM_EPNUM);
if(epNum == NULL){
return FAIL_RETURN;
}
kk_room_dev_remove(deviceCode->valuestring,epNum->valuestring);
return SUCCESS_RETURN;
}
static int kk_service_execute_action(cJSON *action,dm_mgr_dev_node_t *node)
{
int idx = 0;
kk_tsl_data_t *pCurrentItem = NULL;
cJSON *pCurrentData = NULL;
if(node == NULL){
return INVALID_PARAMETER;
}
void *param = cJSON_Print(action);
kk_msg_execute_property_set(node->productCode,node->deviceCode,param,node->fatherDeviceCode);
#if 0
for(idx = 0; idx < shadow->property_number; idx++){
pCurrentItem = shadow->properties + idx;
if(pCurrentItem != NULL){
cJSON *pCurrentData = cJSON_GetObjectItem(action, pCurrentItem->identifier);
if(pCurrentData != NULL){
}
}
}
#endif
free(param);
return SUCCESS_RETURN;
}
static int kk_service_executeRoom_handle(cJSON *params)
{
int res = 0;
kk_dev_list_t *pList = NULL;
dm_mgr_dev_node_t *search_node = NULL;
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON *roomId = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomId == NULL){
return FAIL_RETURN;
}
cJSON *productCodeStr = cJSON_GetObjectItem(params, MSG_PRODUCT_TYPE_STR);
if(productCodeStr == NULL){
return FAIL_RETURN;
}
pList = kk_get_room_deviceCode(roomId->valuestring);
if(pList != NULL){
while(pList != NULL){
res = dm_mgr_get_device_by_devicecode(pList->deviceCode,&search_node);
if (res != SUCCESS_RETURN) {
pList = pList->next;
continue;
}
if(strcmp(search_node->productCode,productCodeStr->valuestring) == 0){
cJSON *action = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ACTION);
if(action != NULL){
kk_service_execute_action(action,search_node);
}
}
pList = pList->next;
}
}
kk_free_room_dev_list();
return SUCCESS_RETURN;
}
static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
{ {
//INFO_PRINT("_iotx_linkkit_event_callback ================== [%s]\n",data); //INFO_PRINT("_iotx_linkkit_event_callback ================== [%s]\n",data);
...@@ -352,19 +499,45 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -352,19 +499,45 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT("ota upgrade... \n"); INFO_PRINT("ota upgrade... \n");
kk_dm_ota_send(data, strlen(data)+1); kk_dm_ota_send(data, strlen(data)+1);
}else if(strstr(typeJson->valuestring,KK_THING_TOPO_CHANGE_MSG)){ }else if(strcmp(typeJson->valuestring,KK_THING_TOPO_CHANGE_MSG) == 0){
INFO_PRINT(" topo change \n"); INFO_PRINT(" topo change \n");
_iotx_linkkit_delete_handle(payload); kk_topo_delete_handle(payload);
}else if(strstr(typeJson->valuestring,KK_THING_SERVICE_REBOOT)){ }else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_REBOOT) == 0){
INFO_PRINT(" reboot called!!!\n"); INFO_PRINT(" reboot called!!!\n");
cJSON *deviceCode = cJSON_GetObjectItem(info_root, MSG_DEVICE_CODE_STR); cJSON *deviceCode = cJSON_GetObjectItem(info_root, MSG_DEVICE_CODE_STR);
dm_msg_thing_event_post(deviceCode->valuestring,"rebootNotification"); dm_msg_thing_event_post(deviceCode->valuestring,"rebootNotification");
sleep(3); sleep(3);
HAL_Reboot(); HAL_Reboot();
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_ADDROOM) == 0){
INFO_PRINT(" addRoom called!!!\n");
cJSON *deviceCode = cJSON_GetObjectItem(info_root, MSG_DEVICE_CODE_STR);
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
kk_service_addRoom_handle(deviceCode->valuestring,paramStr);
dm_msg_thing_event_post(deviceCode->valuestring,MSG_AREA_ADDROOM_NOTIFICATION);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_DELETEROOM) == 0){
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
kk_service_deleteRoom_handle(paramStr);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_ADDDEVICETOROOM) == 0){
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
kk_service_addDeviceToRoom_handle(paramStr);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_REMOVEDEVICEFROMROOM) == 0){
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
kk_service_removeDeviceFromRoom_handle(paramStr);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_EXECUTEROOM) == 0){
INFO_PRINT(" executeroom \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
kk_service_executeRoom_handle(paramStr);
}
else{ else{
INFO_PRINT("Error 222222222222222 \n"); INFO_PRINT("Error msgtype!!! \n");
} }
......
...@@ -282,3 +282,7 @@ int kk_subDev_update_auth(int isAuth,const char *deviceCode) ...@@ -282,3 +282,7 @@ int kk_subDev_update_auth(int isAuth,const char *deviceCode)
......
...@@ -778,6 +778,7 @@ int main(const int argc, const char **argv) ...@@ -778,6 +778,7 @@ int main(const int argc, const char **argv)
kk_init_dmproc(); kk_init_dmproc();
kk_subDb_init(); kk_subDb_init();
kk_heartbeat_init(); kk_heartbeat_init();
kk_area_init();
mid_ctx->g_mid_dispatch_thread_running = 1; mid_ctx->g_mid_dispatch_thread_running = 1;
res = pthread_create(&mid_ctx->g_mid_dispatch_thread, NULL, mid_dispatch_yield, NULL); res = pthread_create(&mid_ctx->g_mid_dispatch_thread, NULL, mid_dispatch_yield, NULL);
if (res < 0) { if (res < 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