Commit 96769efb authored by chen.weican's avatar chen.weican

【修改内容】增加内场景的设置

【提交人】陈伟灿
parent 6d57df34
...@@ -93,7 +93,8 @@ typedef enum { ...@@ -93,7 +93,8 @@ typedef enum {
#define MSG_KEYMODIFY_NOTIFICATION "KeyModifyNotification" #define MSG_KEYMODIFY_NOTIFICATION "KeyModifyNotification"
/************************SCENE RELATION*************************/ /************************SCENE RELATION*************************/
#define MSG_SCENE_ARGS "args" #define MSG_SCENE_SUPPORT "sceneSupport"
#define MSG_SCENE_MSGID "msgId"
#define MSG_SCENE_NAME "name" #define MSG_SCENE_NAME "name"
#define MSG_SCENE_SCENCTYPE "sceneType" #define MSG_SCENE_SCENCTYPE "sceneType"
#define MSG_SCENE_ENABLE "enable" #define MSG_SCENE_ENABLE "enable"
...@@ -123,9 +124,6 @@ typedef enum { ...@@ -123,9 +124,6 @@ typedef enum {
typedef void ipc_cb(void* data, int len, char* chalMark); typedef void ipc_cb(void* data, int len, char* chalMark);
int kk_ipc_init(ipc_type type, ipc_cb cb, char* chalMark, char* ip); int kk_ipc_init(ipc_type type, ipc_cb cb, char* chalMark, char* ip);
int kk_ipc_deinit(ipc_type type); int kk_ipc_deinit(ipc_type type);
......
...@@ -133,16 +133,14 @@ uint64_t HAL_GetTime(void) ...@@ -133,16 +133,14 @@ uint64_t HAL_GetTime(void)
} }
uint64_t HAL_GetTimeMs(char *outStr) time_t HAL_GetTime_s(char *outStr)
{ {
uint64_t time_ms; time_t t;
struct timeval tv; t = time(NULL);
gettimeofday(&tv, NULL); sprintf(outStr,"%d",t);
time_ms = ((uint64_t)tv.tv_sec * (uint64_t)1000) + (tv.tv_usec / 1000 );
sprintf(outStr,"%lld",time_ms);
return time_ms; return t;
} }
......
...@@ -128,7 +128,7 @@ int kk_room_add(const char *name,const char *roomId) ...@@ -128,7 +128,7 @@ int kk_room_add(const char *name,const char *roomId)
values ('%s','%s');"; values ('%s','%s');";
_kk_area_lock(); _kk_area_lock();
ctx->roomNum++; ctx->roomNum++;
HAL_GetTimeMs(roomId); HAL_GetTime_s(roomId);
sqlCmd = sqlite3_mprintf(insertCmd,name,roomId); sqlCmd = sqlite3_mprintf(insertCmd,name,roomId);
res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg); res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
......
This diff is collapsed.
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#define KK_DM_GW_DEVICE_PRODUCT_CODE "2" #define KK_DM_GW_DEVICE_PRODUCT_CODE "2"
#define KK_DM_DEVICE_CCU_DEVICEID (0x00) #define KK_DM_DEVICE_CCU_DEVICEID (0x00)
#define MSG_MAX_LEN (64)
typedef struct { typedef struct {
int devid; int devid;
...@@ -40,7 +41,7 @@ typedef struct { ...@@ -40,7 +41,7 @@ typedef struct {
} dm_mgr_ctx; } dm_mgr_ctx;
typedef struct { typedef struct {
int msgid; char msgid[MSG_MAX_LEN];
int devid; int devid;
//const char *service_prefix; //const char *service_prefix;
//const char *service_name; //const char *service_name;
......
This diff is collapsed.
...@@ -73,6 +73,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -73,6 +73,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_DELETESCENC "/thing/service/deleteScene" #define KK_THING_SERVICE_DELETESCENC "/thing/service/deleteScene"
#define KK_THING_SERVICE_UPDATESCENC "/thing/service/updateScene" #define KK_THING_SERVICE_UPDATESCENC "/thing/service/updateScene"
#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_METHOD_DELETESCENC "thing.service.deleteScene"
#define KK_THING_METHOD_UPDATESCENC "thing.service.updateScene"
#define KK_THING_METHOD_EXECUTESCENE "thing.service.executeScene"
#define KK_THING_METHOD_ADDSCENC "thing.service.addScene"
#define KK_THING_EVENT_MESSAGE "/thing/event/" #define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_EVENT_POST "/post" #define KK_THING_EVENT_POST "/post"
......
This diff is collapsed.
...@@ -163,7 +163,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d ...@@ -163,7 +163,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d
if(_kk_check_property_exist(deviceCode,identifier) == 1) if(_kk_check_property_exist(deviceCode,identifier) == 1)
{ {
WARNING_PRINT("[%s][%d] DATA ALREADY EXIST!!!\n",__FUNCTION__,__LINE__); //WARNING_PRINT("[%s][%d] DATA ALREADY EXIST!!!\n",__FUNCTION__,__LINE__);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
_kk_property_db_lock(); _kk_property_db_lock();
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#include "kk_tsl_api.h" #include "kk_tsl_api.h"
#include "kk_sub_db.h" #include "kk_sub_db.h"
#include "kk_dm_mng.h" #include "kk_dm_mng.h"
#include "kk_scene_handle.h"
#include "sqlite3.h" #include "sqlite3.h"
#include "kk_log.h" #include "kk_log.h"
...@@ -25,7 +25,8 @@ typedef enum{ ...@@ -25,7 +25,8 @@ typedef enum{
DB_AUTH, DB_AUTH,
DB_DEVTYPE, DB_DEVTYPE,
DB_HEARTBEAT, DB_HEARTBEAT,
DB_PRODUCTTYPE DB_PRODUCTTYPE,
DB_SCENESUPPORT
}; };
static kk_subDb_ctx_t s_kk_subDb_ctx = {NULL,0,NULL}; static kk_subDb_ctx_t s_kk_subDb_ctx = {NULL,0,NULL};
...@@ -71,7 +72,8 @@ static int kk_subDev_db_Init(void) ...@@ -71,7 +72,8 @@ static int kk_subDev_db_Init(void)
isAuth INTEGER, \ isAuth INTEGER, \
devType INTEGER, \ devType INTEGER, \
heartbeat INTEGER,\ heartbeat INTEGER,\
productType varchar(33))"; productType varchar(33),\
sceneSupport INTEGER)";
char *pcErr; char *pcErr;
...@@ -187,8 +189,8 @@ static int _kk_check_subDev_exist(const char* deviceCode) ...@@ -187,8 +189,8 @@ static int _kk_check_subDev_exist(const char* deviceCode)
int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
char deviceCode[DEVICE_CODE_MAXLEN],char fatherDeviceCode[DEVICE_CODE_MAXLEN],char mac[DEVICE_MAC_MAXLEN],char version[DEVICE_VERSION_MAXLEN],int heartbeat) char deviceCode[DEVICE_CODE_MAXLEN],char fatherDeviceCode[DEVICE_CODE_MAXLEN],char mac[DEVICE_MAC_MAXLEN],char version[DEVICE_VERSION_MAXLEN],int heartbeat)
{ {
const char *insertCmd = "insert into SubDeviceInfo (idx,isOffline,productCode,deviceCode,mac,fatherDeviceCode,version,isAuth,devType,heartbeat) \ const char *insertCmd = "insert into SubDeviceInfo (idx,isOffline,productCode,deviceCode,mac,fatherDeviceCode,version,isAuth,devType,heartbeat,sceneSupport) \
values ('%d','%d', '%s','%s','%s','%s','%s','%d','%d','%d');"; values ('%d','%d', '%s','%s','%s','%s','%s','%d','%d','%d','%d');";
char *sqlCmd = NULL; char *sqlCmd = NULL;
int rc = 0; int rc = 0;
char *zErrMsg = 0; char *zErrMsg = 0;
...@@ -201,7 +203,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \ ...@@ -201,7 +203,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
_kk_subDb_lock(); _kk_subDb_lock();
sqlCmd = sqlite3_mprintf(insertCmd,ctx->subDevNum,0,productCode,deviceCode,mac,fatherDeviceCode,version,0,devType,heartbeat); sqlCmd = sqlite3_mprintf(insertCmd,ctx->subDevNum,0,productCode,deviceCode,mac,fatherDeviceCode,version,0,devType,heartbeat,0);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg); rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){ if( rc != SQLITE_OK ){
...@@ -307,6 +309,29 @@ int kk_subDev_update_auth(int isAuth,const char *deviceCode) ...@@ -307,6 +309,29 @@ int kk_subDev_update_auth(int isAuth,const char *deviceCode)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int kk_subDev_update_sceneSupport(int sceneSupport,const char *deviceCode)
{
char *sqlCmd = NULL;
int len =0;
int rc = 0;
char *zErrMsg = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf("UPDATE SubDeviceInfo SET sceneSupport=%d WHERE deviceCode= '%s'",sceneSupport,deviceCode);
INFO_PRINT("kk_subDev_update_sceneSupport sqlCmd:%s\n",sqlCmd);
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_subDb_unlock();
return SUCCESS_RETURN;
}
int kk_subDev_send_property_get_from_db(void) int kk_subDev_send_property_get_from_db(void)
{ {
const char *searchCmd = "select * from SubDeviceInfo;"; const char *searchCmd = "select * from SubDeviceInfo;";
...@@ -376,6 +401,84 @@ int kk_subDev_send_property_get(const char *fatherDeviceCode) ...@@ -376,6 +401,84 @@ int kk_subDev_send_property_get(const char *fatherDeviceCode)
} }
int kk_subDev_check_scene_support(const char *deviceCode)
{
int res = 0;
sqlite3_stmt *stmt;
char *sqlCmd = NULL;
char *pDeviceCode = NULL;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
const char *searchCmd = "select * from SubDeviceInfo WHERE devType= '%d' and sceneSupport = '%d'";
if(deviceCode == NULL){
ERROR_PRINT("ERROR [%s][%d]\n",__FUNCTION__,__LINE__);
return INVALID_PARAMETER;
}
sqlCmd = sqlite3_mprintf(searchCmd,KK_DM_DEVICE_GATEWAY,1);
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){
pDeviceCode = sqlite3_column_text(stmt, DB_DEVICECODE);
if (!strcmp(deviceCode,pDeviceCode)) {
return 1;
}
}
sqlite3_finalize(stmt);
sqlite3_free(sqlCmd);
return 0;
}
int kk_subDev_set_action_by_productType(const char *productType,const char *sceneId,const char *propertyName,const char *propertyValue,const char *type)
{
int res = 0;
sqlite3_stmt *stmt;
char *sqlCmd = NULL;
char *pDeviceCode = NULL;
dm_mgr_dev_node_t *node = NULL;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
const char *searchCmd = "select * from SubDeviceInfo WHERE productType= '%s'";
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(productType == NULL){
ERROR_PRINT("ERROR [%s][%d]\n",__FUNCTION__,__LINE__);
return INVALID_PARAMETER;
}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
sqlCmd = sqlite3_mprintf(searchCmd,productType);
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){
pDeviceCode = sqlite3_column_text(stmt, DB_DEVICECODE);
res = dm_mgr_get_device_by_devicecode(pDeviceCode,&node);
if (res != SUCCESS_RETURN) {
continue;
}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(kk_subDev_check_scene_support(node->fatherDeviceCode) == 1){
kk_scene_action_detail_t info = {0};
memcpy(info.deviceCode,node->deviceCode,strlen(node->deviceCode));
memcpy(info.propertyName,propertyName,strlen(propertyName));
memcpy(info.propertyValue,propertyValue,strlen(propertyValue));
info.epNum = 1;
info.delay = 0;
kk_scene_action_add(node->fatherDeviceCode,sceneId,info);
res = kk_scene_insert_scene_action(type,node->deviceCode,info.epNum,
propertyName,propertyValue,info.delay,sceneId,node->fatherDeviceCode);
if(res != SUCCESS_RETURN){
INFO_PRINT("kk_subDev_set_action_by_productType fail!!!\n");
//return res;
continue;
}
}
}
sqlite3_finalize(stmt);
sqlite3_free(sqlCmd);
return SUCCESS_RETURN;
}
......
...@@ -49,6 +49,7 @@ static int _kk_filter_to_plat(const char* msgtype) ...@@ -49,6 +49,7 @@ static int _kk_filter_to_plat(const char* msgtype)
for(i =0; i < num; i++){ for(i =0; i < num; i++){
if(strstr(msgtype,g_filerToPlatTable[i])) if(strstr(msgtype,g_filerToPlatTable[i]))
{ {
INFO_PRINT("this msg do not send to platform!!!\n");
return 1; return 1;
} }
} }
...@@ -153,12 +154,13 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){ ...@@ -153,12 +154,13 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
} }
} }
}else if(property->data_value.type == KK_TSL_DATA_TYPE_INT){ }
value = propertyItem->valueint; else if(property->data_value.type == KK_TSL_DATA_TYPE_INT){
if(value < property->data_value.mix ||value > property->data_value.max ){ value = propertyItem->valueint;
ERROR_PRINT("ERROR ------------>value:%d,mix:%d,max:%d\n",value,property->data_value.mix,property->data_value.max); if(value < property->data_value.mix ||value > property->data_value.max ){
return INVALID_PARAMETER; ERROR_PRINT("ERROR ------------>value:%d,mix:%d,max:%d\n",value,property->data_value.mix,property->data_value.max);
} return INVALID_PARAMETER;
}
} }
else if(property->data_value.type == KK_TSL_DATA_TYPE_TEXT){ else if(property->data_value.type == KK_TSL_DATA_TYPE_TEXT){
if(strlen(propertyItem->valuestring) > property->data_value.length ){ if(strlen(propertyItem->valuestring) > property->data_value.length ){
...@@ -313,23 +315,19 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -313,23 +315,19 @@ void kk_platMsg_handle(void* data, char* chalMark){
msgType = cJSON_GetObjectItem(info, MSG_TYPE_STR); msgType = cJSON_GetObjectItem(info, MSG_TYPE_STR);
info_dcode = cJSON_GetObjectItem(info, MSG_DEVICE_CODE_STR); info_dcode = cJSON_GetObjectItem(info, MSG_DEVICE_CODE_STR);
if (msgType == NULL || info_dcode == NULL){ if (msgType == NULL || info_dcode == NULL){
ERROR_PRINT("msgType info_dcode or jsonPay params are error\n"); ERROR_PRINT("msgType info_dcode or jsonPay params are error\n");
goto error; goto error;
} }
if (chalMark != NULL){ if (chalMark != NULL){
dm_mgr_update_timestamp_by_devicecode(chalMark,HAL_Uptimes()); dm_mgr_update_timestamp_by_devicecode(chalMark,HAL_Uptimes());
} }
dm_mgr_update_timestamp_by_devicecode(info_dcode->valuestring,HAL_Uptimes()); dm_mgr_update_timestamp_by_devicecode(info_dcode->valuestring,HAL_Uptimes());
if (strcmp(msgType->valuestring, KK_THING_TOPO_ADD_MSG)==0){ if (strcmp(msgType->valuestring, KK_THING_TOPO_ADD_MSG)==0){
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error;
proCode = cJSON_GetObjectItem(jsonPay, MSG_PRODUCT_CODE_STR); proCode = cJSON_GetObjectItem(jsonPay, MSG_PRODUCT_CODE_STR);
devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR); devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR);
mac = cJSON_GetObjectItem(jsonPay, "mac"); mac = cJSON_GetObjectItem(jsonPay, "mac");
...@@ -343,6 +341,10 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -343,6 +341,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
char ccu_deviceCode[DEVICE_CODE_MAXLEN] = {0}; char ccu_deviceCode[DEVICE_CODE_MAXLEN] = {0};
HAL_GetDevice_Code(ccu_deviceCode); HAL_GetDevice_Code(ccu_deviceCode);
kk_mid_subdev_add(KK_DM_DEVICE_GATEWAY,proCode->valuestring,devCode->valuestring, mac->valuestring,ccu_deviceCode); kk_mid_subdev_add(KK_DM_DEVICE_GATEWAY,proCode->valuestring,devCode->valuestring, mac->valuestring,ccu_deviceCode);
cJSON * sceneSupportStr = cJSON_GetObjectItem(jsonPay, MSG_SCENE_SUPPORT);
if(sceneSupportStr != NULL&&sceneSupportStr->valueint == 1){
kk_subDev_update_sceneSupport(1,devCode->valuestring);
}
}else{ }else{
kk_mid_subdev_add(KK_DM_DEVICE_SUBDEV,proCode->valuestring,devCode->valuestring, mac->valuestring,info_dcode->valuestring); kk_mid_subdev_add(KK_DM_DEVICE_SUBDEV,proCode->valuestring,devCode->valuestring, mac->valuestring,info_dcode->valuestring);
} }
...@@ -352,7 +354,9 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -352,7 +354,9 @@ void kk_platMsg_handle(void* data, char* chalMark){
else if (strstr(msgType->valuestring, KK_THING_TOPO_BATCH_ADD_MSG) != NULL){ else if (strstr(msgType->valuestring, KK_THING_TOPO_BATCH_ADD_MSG) != NULL){
kk_ipc_send(IPC_MID2APP,data,strlen(data)); kk_ipc_send(IPC_MID2APP,data,strlen(data));
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error;
cJSON *devices = cJSON_GetObjectItem(jsonPay, MSG_TOPO_CHANGE_DEVICES_STR); cJSON *devices = cJSON_GetObjectItem(jsonPay, MSG_TOPO_CHANGE_DEVICES_STR);
if(devices == NULL) goto error;
cJSON * item = devices->child; cJSON * item = devices->child;
while(item != NULL){ while(item != NULL){
char *deviceCode = cJSON_GetObjectItem(item,MSG_DEVICE_CODE_STR)->valuestring; char *deviceCode = cJSON_GetObjectItem(item,MSG_DEVICE_CODE_STR)->valuestring;
...@@ -366,6 +370,7 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -366,6 +370,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}else if (strstr(msgType->valuestring, KK_THING_PROPERTY_POST) != NULL){ }else if (strstr(msgType->valuestring, KK_THING_PROPERTY_POST) != NULL){
INFO_PRINT("save property and send to cloud \n"); INFO_PRINT("save property and send to cloud \n");
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error;
char* outstr = cJSON_Print(payload); char* outstr = cJSON_Print(payload);
dm_mgr_dev_node_t *search_node = NULL; dm_mgr_dev_node_t *search_node = NULL;
dm_mgr_get_device_by_devicecode(info_dcode->valuestring,&search_node); dm_mgr_get_device_by_devicecode(info_dcode->valuestring,&search_node);
...@@ -380,6 +385,7 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -380,6 +385,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}else if(strstr(msgType->valuestring, KK_THING_TOPO_DELETE_MSG) != NULL){ }else if(strstr(msgType->valuestring, KK_THING_TOPO_DELETE_MSG) != NULL){
INFO_PRINT("kk_platMsg_handle data: handle delete\n"); INFO_PRINT("kk_platMsg_handle data: handle delete\n");
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error;
devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR); devCode = cJSON_GetObjectItem(jsonPay, MSG_DEVICE_CODE_STR);
kk_ipc_send(IPC_MID2APP,data,strlen(data)+1); kk_ipc_send(IPC_MID2APP,data,strlen(data)+1);
dm_mgr_subdev_delete(devCode->valuestring); dm_mgr_subdev_delete(devCode->valuestring);
...@@ -392,6 +398,7 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -392,6 +398,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
char tmpStr[128] = {0}; char tmpStr[128] = {0};
cJSON * itemStr = NULL; cJSON * itemStr = NULL;
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error;
res = dm_mgr_get_device_by_devicecode(info_dcode->valuestring,&node); res = dm_mgr_get_device_by_devicecode(info_dcode->valuestring,&node);
if (res < SUCCESS_RETURN) { if (res < SUCCESS_RETURN) {
goto error; goto error;
...@@ -408,7 +415,6 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -408,7 +415,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
eventItem->output_data_number > 0){ eventItem->output_data_number > 0){
int index = 0; int index = 0;
kk_tsl_data_t *itemData = NULL; kk_tsl_data_t *itemData = NULL;
for(index = 0; index < eventItem->output_data_number;index++){ for(index = 0; index < eventItem->output_data_number;index++){
itemStr = cJSON_GetObjectItem(jsonPay, eventItem->identifier); itemStr = cJSON_GetObjectItem(jsonPay, eventItem->identifier);
itemData = eventItem->output_datas + index; itemData = eventItem->output_datas + index;
...@@ -416,7 +422,20 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -416,7 +422,20 @@ void kk_platMsg_handle(void* data, char* chalMark){
memset(tmpStr,0x0,sizeof(tmpStr)); memset(tmpStr,0x0,sizeof(tmpStr));
sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier); sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemStr->valueint,NULL); if(itemData->data_value.type == KK_TSL_DATA_TYPE_INT||
itemData->data_value.type == KK_TSL_DATA_TYPE_ENUM||
itemData->data_value.type == KK_TSL_DATA_TYPE_BOOL){
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemStr->valueint,NULL);
}
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_FLOAT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemStr->valuedouble,NULL);
}
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_TEXT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DATE){
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,NULL,itemStr->valuestring);
}
INFO_PRINT("kk_platMsg_handle data: event post\n"); INFO_PRINT("kk_platMsg_handle data: event post\n");
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier); dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier);
kk_scene_iftt_check(info_dcode->valuestring,jsonPay); kk_scene_iftt_check(info_dcode->valuestring,jsonPay);
...@@ -426,8 +445,20 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -426,8 +445,20 @@ void kk_platMsg_handle(void* data, char* chalMark){
if(itemDataIdentifier != NULL){ if(itemDataIdentifier != NULL){
memset(tmpStr,0x0,sizeof(tmpStr)); memset(tmpStr,0x0,sizeof(tmpStr));
sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier); sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier);
if(itemData->data_value.type == KK_TSL_DATA_TYPE_INT||
itemData->data_value.type == KK_TSL_DATA_TYPE_ENUM||
itemData->data_value.type == KK_TSL_DATA_TYPE_BOOL){
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valueint,NULL);
}
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_FLOAT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valuedouble,NULL);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valueint,NULL); }
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_TEXT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DATE){
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,NULL,itemDataIdentifier->valuestring);
}
INFO_PRINT("kk_platMsg_handle data: event post\n"); INFO_PRINT("kk_platMsg_handle data: event post\n");
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier); dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier);
kk_scene_iftt_check(info_dcode->valuestring,jsonPay); kk_scene_iftt_check(info_dcode->valuestring,jsonPay);
...@@ -452,6 +483,7 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -452,6 +483,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
else if(strstr(msgType->valuestring, KK_THING_TOPO_BATCH_DELETE_MSG) != NULL){ else if(strstr(msgType->valuestring, KK_THING_TOPO_BATCH_DELETE_MSG) != NULL){
kk_ipc_send(IPC_MID2APP,data,strlen(data)); kk_ipc_send(IPC_MID2APP,data,strlen(data));
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error;
cJSON *devices = cJSON_GetObjectItem(jsonPay, MSG_TOPO_CHANGE_DEVICES_STR); cJSON *devices = cJSON_GetObjectItem(jsonPay, MSG_TOPO_CHANGE_DEVICES_STR);
cJSON * item = devices->child; cJSON * item = devices->child;
while(item != NULL){ while(item != NULL){
...@@ -468,7 +500,7 @@ void kk_platMsg_handle(void* data, char* chalMark){ ...@@ -468,7 +500,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
res = dm_mgr_get_device_by_devicecode(info_dcode->valuestring,&node); res = dm_mgr_get_device_by_devicecode(info_dcode->valuestring,&node);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res); ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
return; goto error;
} }
/*开机先获取网关属性,网关返回relay,置网关状态在线*/ /*开机先获取网关属性,网关返回relay,置网关状态在线*/
if(node->dev_type == KK_DM_DEVICE_GATEWAY){ if(node->dev_type == KK_DM_DEVICE_GATEWAY){
...@@ -514,13 +546,6 @@ void kk_platMsg_dispatch(void) ...@@ -514,13 +546,6 @@ void kk_platMsg_dispatch(void)
} }
time_t getSysTime(){
time_t t;
t = time(NULL);
return t;
}
typedef struct { typedef struct {
int auto_add_subdev; int auto_add_subdev;
int master_devid; int master_devid;
......
This diff is collapsed.
...@@ -3,6 +3,25 @@ ...@@ -3,6 +3,25 @@
#include "kk_tsl_common.h" #include "kk_tsl_common.h"
typedef struct kk_scene_action_detail{
char deviceCode[DEVICE_CODE_MAXLEN];
char propertyName[DEVICE_PROPERTY_NAME_MAX];
char propertyValue[DEVICE_PROPERTY_VALUE_MAX];
int epNum;
int delay;
} kk_scene_action_detail_t;
typedef struct kk_scene_action_info_ex{
kk_scene_action_detail_t info;
struct kk_scene_action_info_ex * next;
} kk_scene_action_info_ex_t;
typedef struct kk_scene_action{
char gwdeviceCode[DEVICE_CODE_MAXLEN];
char sceneId[16];
kk_scene_action_info_ex_t *actionInfo;
struct kk_scene_action * next;
} kk_scene_action_t;
typedef struct { typedef struct {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
*/ */
#include "infra_config.h" #include "infra_config.h"
#ifdef INFRA_SHA256
#define INFRA_SHA256_SMALLER #define INFRA_SHA256_SMALLER
...@@ -317,5 +317,5 @@ void utils_hmac_sha256(const uint8_t *msg, uint32_t msg_len, const uint8_t *key, ...@@ -317,5 +317,5 @@ void utils_hmac_sha256(const uint8_t *msg, uint32_t msg_len, const uint8_t *key,
utils_sha256_finish(&context, output); /* finish up 2nd pass */ utils_sha256_finish(&context, output); /* finish up 2nd pass */
} }
#endif
#include "infra_config.h" #include "infra_config.h"
#ifdef INFRA_TIMER
/* /*
* *
*/ */
...@@ -91,5 +90,5 @@ uint32_t utils_time_get_ms(void) ...@@ -91,5 +90,5 @@ uint32_t utils_time_get_ms(void)
{ {
return HAL_UptimeMs(); return HAL_UptimeMs();
} }
#endif
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
#define DM_UTILS_UINT16_STRLEN (5) #define DM_UTILS_UINT16_STRLEN (5)
#define DM_UTILS_UINT32_STRLEN (10) #define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT64_STRLEN (20) #define DM_UTILS_UINT64_STRLEN (20)
#define DEVICE_PROPERTY_NAME_MAX (64+1)
#define DEVICE_PROPERTY_VALUE_MAX (64+1)
#define KK_TSL_KEY_SCHEMA "schema" #define KK_TSL_KEY_SCHEMA "schema"
#define KK_TSL_KEY_LINK "link" #define KK_TSL_KEY_LINK "link"
......
...@@ -793,7 +793,7 @@ int dm_tls_set_event_output_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ in ...@@ -793,7 +793,7 @@ int dm_tls_set_event_output_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ in
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Key: %.*s", key_len, key); //printf("Key: %.*s", key_len, key);
res = _kk_tsl_event_search(shadow, key, offset, &event); res = _kk_tsl_event_search(shadow, key, offset, &event);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <string.h> #include <string.h>
#include "lite-cjson.h" #include "lite-cjson.h"
#include "kk_tsl_common.h" #include "kk_tsl_common.h"
#include "kk_log.h"
typedef int (*kk_tsl_data_parse)(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cjson_t *root); typedef int (*kk_tsl_data_parse)(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cjson_t *root);
...@@ -470,7 +471,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro ...@@ -470,7 +471,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
printf("Number: %d", lite_properties.size); INFO_PRINT("property number: %d\n", lite_properties.size);
if (lite_properties.size == 0) { if (lite_properties.size == 0) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -490,7 +491,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro ...@@ -490,7 +491,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Index: %d\n", index); //printf("Index: %d\n", index);
_kk_tsl_property_parse(shadow->properties + index, &lite_property); _kk_tsl_property_parse(shadow->properties + index, &lite_property);
} }
...@@ -537,7 +538,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev ...@@ -537,7 +538,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev
lite_cjson_t lite_item; lite_cjson_t lite_item;
kk_tsl_data_t *output_data = NULL; kk_tsl_data_t *output_data = NULL;
printf("event outputdata Number: %d\n", event->output_data_number); //printf("event outputdata Number: %d\n", event->output_data_number);
if (event->output_data_number == 0) { if (event->output_data_number == 0) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -558,7 +559,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev ...@@ -558,7 +559,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Index: %d\n", index); //printf("Index: %d\n", index);
_kk_tsl_event_outputdata_parse(shadow, output_data, &lite_item); _kk_tsl_event_outputdata_parse(shadow, output_data, &lite_item);
} }
...@@ -595,6 +596,7 @@ static int _dm_shw_event_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_event_t *event ...@@ -595,6 +596,7 @@ static int _dm_shw_event_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_event_t *event
if (res != SUCCESS_RETURN || !lite_cjson_is_array(&lite_item)) { if (res != SUCCESS_RETURN || !lite_cjson_is_array(&lite_item)) {
return JSON_PARSE_FAILED; return JSON_PARSE_FAILED;
} }
//INFO_PRINT("event output number: %d\n", lite_item.size);
event->output_data_number = lite_item.size; event->output_data_number = lite_item.size;
res = _kk_tsl_event_outputdatas_parse(shadow, event, &lite_item); res = _kk_tsl_event_outputdatas_parse(shadow, event, &lite_item);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
...@@ -618,8 +620,7 @@ static int _kk_tsl_events_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root) ...@@ -618,8 +620,7 @@ static int _kk_tsl_events_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root)
} else { } else {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
INFO_PRINT("event Number: %d\n");
printf("\nevent Number: %d\n", lite_events.size);
if (lite_events.size == 0) { if (lite_events.size == 0) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -788,7 +789,7 @@ static int _kk_tsl_service_inputdatas_get_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_t ...@@ -788,7 +789,7 @@ static int _kk_tsl_service_inputdatas_get_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_t
lite_cjson_t lite_item; lite_cjson_t lite_item;
kk_tsl_data_t *input_data = NULL; kk_tsl_data_t *input_data = NULL;
printf("input Number: %d\n", service->input_data_number); //printf("input Number: %d\n", service->input_data_number);
if (service->input_data_number == 0) { if (service->input_data_number == 0) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -810,7 +811,7 @@ static int _kk_tsl_service_inputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_s ...@@ -810,7 +811,7 @@ static int _kk_tsl_service_inputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_s
lite_cjson_t lite_item; lite_cjson_t lite_item;
kk_tsl_data_t *input_data = NULL; kk_tsl_data_t *input_data = NULL;
printf("input Number: %d\n", service->input_data_number); //printf("input Number: %d\n", service->input_data_number);
if (service->input_data_number == 0) { if (service->input_data_number == 0) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -874,6 +875,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s ...@@ -874,6 +875,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s
memset(&lite_item, 0, sizeof(lite_cjson_t)); memset(&lite_item, 0, sizeof(lite_cjson_t));
res = lite_cjson_object_item(root, KK_TSL_KEY_OUTPUTDATA, strlen(KK_TSL_KEY_OUTPUTDATA), &lite_item); res = lite_cjson_object_item(root, KK_TSL_KEY_OUTPUTDATA, strlen(KK_TSL_KEY_OUTPUTDATA), &lite_item);
if (res == SUCCESS_RETURN && lite_cjson_is_array(&lite_item)) { if (res == SUCCESS_RETURN && lite_cjson_is_array(&lite_item)) {
//INFO_PRINT("services output Number: %d\n", lite_item.size);
service->output_data_number = lite_item.size; service->output_data_number = lite_item.size;
res = _kk_tsl_service_outputdatas_parse(shadow, service, &lite_item); res = _kk_tsl_service_outputdatas_parse(shadow, service, &lite_item);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
...@@ -886,7 +888,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s ...@@ -886,7 +888,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s
res = lite_cjson_object_item(root, KK_TSL_KEY_INPUTDATA, strlen(KK_TSL_KEY_INPUTDATA), &lite_item); res = lite_cjson_object_item(root, KK_TSL_KEY_INPUTDATA, strlen(KK_TSL_KEY_INPUTDATA), &lite_item);
if (res == SUCCESS_RETURN && lite_cjson_is_array(&lite_item)) { if (res == SUCCESS_RETURN && lite_cjson_is_array(&lite_item)) {
service->input_data_number = lite_item.size; service->input_data_number = lite_item.size;
//INFO_PRINT("services input Number: %d\n", lite_item.size);
if(isGetService && service->input_data_number > 0){ if(isGetService && service->input_data_number > 0){
res = _kk_tsl_service_inputdatas_get_parse(shadow, service, &lite_item); res = _kk_tsl_service_inputdatas_get_parse(shadow, service, &lite_item);
}else }else
...@@ -914,7 +916,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root ...@@ -914,7 +916,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
printf("_kk_tsl_services_parse Number: %d\n", lite_services.size); INFO_PRINT("services Number: %d\n", lite_services.size);
if (lite_services.size == 0) { if (lite_services.size == 0) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -936,7 +938,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root ...@@ -936,7 +938,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root
return FAIL_RETURN; return FAIL_RETURN;
} }
printf(" Index: %d\n", index); //printf(" Index: %d\n", index);
_kk_tsl_service_parse(shadow, service, &lite_service); _kk_tsl_service_parse(shadow, service, &lite_service);
} }
...@@ -1669,6 +1671,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow ...@@ -1669,6 +1671,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow
int res = 0; int res = 0;
lite_cjson_t lite_root; lite_cjson_t lite_root;
INFO_PRINT("kk_tsl_create start!!\n");
if (shadow == NULL || *shadow != NULL || tsl == NULL || tsl_len <= 0) { if (shadow == NULL || *shadow != NULL || tsl == NULL || tsl_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
...@@ -1707,6 +1710,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow ...@@ -1707,6 +1710,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
INFO_PRINT("kk_tsl_create successful!!\n");
return SUCCESS_RETURN; 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