Commit f7abf54d authored by 尹佳钦's avatar 尹佳钦

20210727

parent af5cfaad
......@@ -67,7 +67,6 @@ static char *s_split_product[] = {
"3024" //肖邦系列三路面板
};
static int kk_utils_memtok(_IN_ char *input, _IN_ int input_len, _IN_ char delimiter, _IN_ int index, _OU_ int *offset)
{
int item_index = 0;
......@@ -232,7 +231,6 @@ int _kk_sendto_cloud(cJSON *root)
free(out);
free(topic);
return RETURN_SUCCESS;
}
else if(strstr(msgTypeStr->valuestring,KK_FILTER_TOPO_BATCH_DELETE) != NULL){
cJSON *params = NULL;
......@@ -507,7 +505,6 @@ static char * _kk_data_create(const char *topic,const char *data)
free(msgStr);
return NULL;
}
memset(infoStr,0x0,infoStr_len);
snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,msgStr,productCode,deviceCode);
......
......@@ -61,7 +61,6 @@ extern int kk_info_report_start(void);
int main(int argc, char* argv[])
{
int rc = 0;
open("kcloud",LOG_PID,LOG_USER);
/*set the callback to get the device date to cloud*/
kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromDev,NULL,NULL);
......
......@@ -315,13 +315,11 @@ int kk_start_ccu_register(void)
if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){
printf("--inet_pton error!\n");
close(sockfd);
return -1;
};
if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
printf("connect error!\n");
close(sockfd);
return -1;
}
printf("connect successful\n");
......
......@@ -63,10 +63,12 @@ int KK_Subdev_Subscribe(const cJSON *root)
snprintf(url, url_len, KK_URI_SYS_PREFIX, productCode->valuestring, deviceCode->valuestring);
INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
res = KK_MQTT_SubTopic(url);
memset(url, 0, url_len);
snprintf(url, url_len, KK_URI_SYS_PREFIX_SERVICE, productCode->valuestring, deviceCode->valuestring);
INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
res = KK_MQTT_SubTopic(url);
memset(url, 0, url_len);
snprintf(url, url_len, KK_URI_SYS_PREFIX_TOPO_CHANGE, productCode->valuestring, deviceCode->valuestring);
INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
......
......@@ -180,7 +180,6 @@ static void mqtt_set_callbacks(void)
MQTTAsync_setDeliveryCompleteCallback(s_Client,NULL,onDeliveryComplete);
MQTTAsync_setConnected(s_Client,NULL,onConnectBuild);
MQTTAsync_setDisconnected(s_Client,NULL,onDisConnected);
}
void KK_Get_MqttClient(MQTTAsync *pClient)
{
......
......@@ -478,7 +478,7 @@ static int kk_create_scene_to_sdk(cJSON *root)
cJSON_AddItemToObject(root, "scenes", scenes);
return 0;
}
int kk_create_syncinfo_to_sdk(void)
int kk_create_syncinfo_to_sdk(cJSON *payload)
{
cJSON *air_box_devices;
cJSON *alarms;
......@@ -529,6 +529,9 @@ int kk_create_syncinfo_to_sdk(void)
kk_create_devices_to_sdk(root);
kk_create_rooms_to_sdk(root);
#if 1
......@@ -593,14 +596,17 @@ void KK_Data_FromMid(void* str,int len)
if(typeJson == NULL) return;
if (strstr(typeJson->valuestring,SYNC_MSG_TYPE_REPLY) != NULL){
kk_parse_syncinfo(payload);
kk_create_syncinfo_to_sdk();
kk_create_syncinfo_to_sdk(payload);
printf("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n");
}else if((typeJson->valuestring,"/thing/event/property/post")!= NULL){
}else if(strstr(typeJson->valuestring,"/thing/event/property/post")!= NULL){
property_post_deal(deviceCode->valuestring,payload);
}else if(strstr(typeJson->valuestring,"/thing/topo/delete")!= NULL){
device_delete_sync(payload);
}else if(strstr(typeJson->valuestring,"/thing/status/online")!= NULL){
device_add_sync(payload);
}
}
......@@ -162,7 +162,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId)
printf("channel=%d\n",channel);
printf("deviceCode=%s\n",deviceCode);
printf(",,,,\n");
//INFO_PRINT("-------------->deviceCode=%s,channel=%d\n",deviceCode,channel);
INFO_PRINT("-------------->deviceCode=%s,channel=%d\n",deviceCode,channel);
printf("aaa-1\n");
if(kk_check_lan_node_exist(deviceCode,channel)){
......@@ -187,7 +187,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId)
sprintf(nodeId,"%d",node);
printf("aaa-4\n");
//INFO_PRINT("[node]deviceCode=%s,channel=%d,node=%d,nodeId=%s\n",deviceCode,channel,node,nodeId);
INFO_PRINT("[node]deviceCode=%s,channel=%d,node=%d,nodeId=%s\n",deviceCode,channel,node,nodeId);
return 0;
......@@ -280,6 +280,73 @@ int _deviceCode_switchto_mac(char * deviceCode,char *mac)
}
typedef struct{
char *floor_id;
char *room_id;
char *room_icon;
char *room_name;
cJSON *room_status;
}ROOM_ITEM;
cJSON *_room_build(ROOM_ITEM *item)
{
cJSON *room = cJSON_CreateObject();
cJSON_AddStringToObject(room, "floor_id", item->floor_id);
cJSON_AddStringToObject(room, "id", item->room_id);
cJSON_AddStringToObject(room, "room_icon", item->room_icon);
cJSON_AddStringToObject(room, "name", item->room_name);
cJSON_AddItemToObject(room, "room_status", item->room_status);
return room;
}
cJSON *_rooms_build(int num,ROOM_ITEM **items)
{
cJSON *rooms = cJSON_CreateArray();
cJSON *room;
int i;
for(int i=0;i<num;i++){
room = _room_build(items[i]);
if(room!=NULL){
cJSON_AddItemToArray(rooms,room);
}
}
return rooms;
}
cJSON *kk_create_rooms_to_sdk(cJSON *payload)
{
cJSON *data_1 = cJSON_GetObjectItem(payload,"data");
cJSON *data_2 = cJSON_GetObjectItem(data_1,"data");
cJSON *rooms = cJSON_GetObjectItem(data_2,"rooms");
cJSON *room;
cJSON *roomId,*name,*devices,*scenes;
int i;
int num = cJSON_GetArraySize(rooms);
ROOM_ITEM* items = (ROOM_ITEM*)malloc(sizeof(ROOM_ITEM)*num);
ROOM_ITEM* item = item;
memset(items,0,(sizeof(ROOM_ITEM)*num));
for(i=0;i<num;i++,item++){
room = cJSON_GetArrayItem(rooms,i);
roomId = cJSON_GetObjectItem(room,"roomId");
name = cJSON_GetObjectItem(room,"name");
devices = cJSON_GetObjectItem(room,"devices");
scenes= cJSON_GetObjectItem(room,"scenes");
memcpy(item->floor_id,"",sizeof(""));
memcpy(item->room_id,roomId->valuestring,sizeof(roomId->valuestring));
memcpy(item->room_icon,"",sizeof(""));
memcpy(item->room_name,name->valuestring,sizeof(name->valuestring));
memcpy(item->room_status,"",sizeof(""));
}
_rooms_build(num,&items);
}
int kk_create_devices_to_sdk(cJSON *root)
{
......@@ -426,6 +493,8 @@ int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node)
{
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
kk_map_dev_node_t *search_node = NULL;
kk_map_dev_node_t *n = NULL;
//list_for_each_entry_safe
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) &&
......
......@@ -35,11 +35,15 @@ static void sig_handler(int sig)
abort();
}
extern void ttttt_test();
int main(int argc, char* argv[])
{
int rc = 0;
char *ppp;
open("kk_lan",LOG_PID,LOG_USER);
ttttt_test();
/*set the callback to get the device date to cloud*/
kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromMid,NULL,NULL);
kk_findccu_handle_init();
......@@ -59,6 +63,8 @@ int main(int argc, char* argv[])
while(1){
extern void kk_scene_build_test(void);
kk_scene_build_test();
//count++;
//if(count == 10){
//kk_ipc_send(IPC_APP2MID, "wooooooooooooooooooooooooooooooooooollllll!", strlen("wooooooooooooooooooooooooooooooooooollllll!")+1);
......
......@@ -137,7 +137,6 @@ void __loop_init(Bloop_ctrl_t *loop_ctrl, struct ev_loop* loop)
int __nanomsg_init(Bloop_ctrl_t *loop_ctrl, ipc_type type,char* chlMark, char* ip)
{
loop_ctrl->ba.n = -1;
loop_ctrl->ba.s = -1;
loop_ctrl->ab.n = -1;
......@@ -329,7 +328,6 @@ int kk_ipc_init(ipc_type type, ipc_cb cb, char* chlMark, char* ip)
if(loop_ctrl->cb != NULL){
WARNING_PRINT("middleware to platform ipc has been inited!\r\n");
return -1;
}
if (__nanomsg_init(loop_ctrl, type, chlMark, ip) < 0) {
......@@ -457,11 +455,9 @@ int kk_ipc_send_ex(ipc_type type, void* data, int len, char* chalMark)
loop_ctrl->sendErrCnt = 0;
loop_ctrl->isconnect = 1;
}
}
return 0;
}
......
......@@ -49,6 +49,7 @@ typedef enum {
#define MSG_TOPO_CHANGE_DEVICES_STR "devices"
#define MSG_DEVICE_MAC "mac"
#define MSG_DEVICE_PARENTCODE "parentCode"
#define MSG_AREA_ADDROOM_DEVICENAME "name"
#define MSG_AREA_ADDROOM_ROOMNAME "roomName"
#define MSG_AREA_ROOM_ROOMID "roomId"
#define MSG_AREA_ROOM_EPNUM "epNum"
......
......@@ -267,7 +267,6 @@ static kk_tcp_ctrl_t* get_channel_by_deviceCode(char deviceCode[DEVICE_CODE_LEN]
}
}
return NULL;
}
static kk_tcp_ctrl_t* get_channel_by_ip(char ip[MAX_IP_LEN]){
......@@ -285,7 +284,6 @@ static kk_tcp_ctrl_t* get_channel_by_ip(char ip[MAX_IP_LEN]){
}
}
return NULL;
}
#if 0
......@@ -321,7 +319,6 @@ static int reset_by_sock(int sock){
}
}
return -1;
}
static int set_sock_by_ip(char ip[MAX_IP_LEN], int sock){
int i = 0;
......@@ -332,7 +329,6 @@ static int set_sock_by_ip(char ip[MAX_IP_LEN], int sock){
INFO_PRINT("[%s] ip=%s \n", __FUNCTION__,ip);
for(;i < MAX_LISTEN_NUM; i++){
if(strcmp(ip, g_tcp_ctrl[i].ip) == 0){
g_tcp_ctrl[i].sock = sock;
INFO_PRINT("[%s] idx=%d ip=%s sock=%d\n", __FUNCTION__,i, ip, g_tcp_ctrl[i].sock);
//create mutex
......@@ -343,12 +339,10 @@ static int set_sock_by_ip(char ip[MAX_IP_LEN], int sock){
return -1;
}
}
return 0;
}
}
return -1;
}
int kk_is_tcp_channel(char devCode[DEVICE_CODE_LEN]){
......@@ -361,7 +355,6 @@ int kk_is_tcp_channel(char devCode[DEVICE_CODE_LEN]){
INFO_PRINT("[%s] devCode=%s \n", __FUNCTION__,devCode);
for(;i < MAX_LISTEN_NUM; i++){
if(strcmp(devCode, g_tcp_ctrl[i].deviceCode) == 0){
INFO_PRINT("[%s] idx=%d ip=%s sock=%d\n", __FUNCTION__,i, g_tcp_ctrl[i].ip, g_tcp_ctrl[i].sock);
return g_tcp_ctrl[i].sock;
}
......@@ -396,7 +389,6 @@ int kk_set_tcp_channel(char devCode[DEVICE_CODE_LEN], char ip[MAX_IP_LEN]){
}
for(;i < MAX_LISTEN_NUM; i++){
if(strcmp(devCode, g_tcp_ctrl[i].deviceCode) == 0){
strncpy(g_tcp_ctrl[i].ip, ip, strlen(ip));
INFO_PRINT("find and replace it [%d][%s][%s] \n",i, g_tcp_ctrl[i].ip, devCode);
......@@ -414,7 +406,6 @@ int kk_set_tcp_channel(char devCode[DEVICE_CODE_LEN], char ip[MAX_IP_LEN]){
}
if (isEmptyIdx != -1){
strncpy(g_tcp_ctrl[isEmptyIdx].ip, ip, strlen(ip));
strncpy(g_tcp_ctrl[isEmptyIdx].deviceCode, devCode, strlen(devCode));
INFO_PRINT("idx deviceCode ip[%d][%s][%s]",isEmptyIdx, g_tcp_ctrl[isEmptyIdx].deviceCode, g_tcp_ctrl[isEmptyIdx].ip);
......@@ -423,7 +414,6 @@ int kk_set_tcp_channel(char devCode[DEVICE_CODE_LEN], char ip[MAX_IP_LEN]){
}
return -1;
}
......@@ -698,7 +688,6 @@ int kk_tcp_channel_ser_send(char* data, int len, char chalMark[DEVICE_CODE_LEN])
printf("[%s] write failed!!!! \n",__FUNCTION__);
}*/
}
}
return ret;
}
......
......@@ -69,8 +69,10 @@ static int _kk_area_db_init(void)
const char *pAreaDevTable = "CREATE TABLE IF NOT EXISTS AreaDevInfo( \
idx INTEGER PRIMARY KEY, \
roomId varchar(256), \
roomName varchar(256), \
deviceCode varchar(33), \
epNum varchar(10))";
epNum varchar(10), \
devName varchar(256))";
if (sqlite3_exec(ctx->pDb, pAreaDevTable, NULL, NULL, &pcErr) != SQLITE_OK)
{
......@@ -84,8 +86,6 @@ static int _kk_area_db_init(void)
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_area_init(void)
{
int res = 0;
......@@ -103,20 +103,17 @@ int kk_area_init(void)
}
return SUCCESS_RETURN;
}
int kk_room_add(const char *name,const char *roomId)
{
int res = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
char *zErrMsg = 0;
printf("--->kk_room_add,name=%s,roomid=%s\n",name,roomId);
const char *insertCmd = "insert into AreaInfo (name, roomId) \
values ('%s','%s');";
_kk_area_lock();
ctx->roomNum++;
HAL_GetTime_s((char*)roomId);
sqlCmd = sqlite3_mprintf(insertCmd,name,roomId);
res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
......@@ -130,7 +127,6 @@ int kk_room_add(const char *name,const char *roomId)
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_room_delete(const char *roomId)
{
int res = 0;
......@@ -139,7 +135,6 @@ int kk_room_delete(const char *roomId)
char *zErrMsg = 0;
const char *deleteCmd = "delete from AreaInfo where roomId = '%s';";
_kk_area_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,roomId);
......@@ -158,11 +153,12 @@ int kk_room_delete(const char *roomId)
return SUCCESS_RETURN;
}
static int _kk_check_dev_exist(const char* deviceCode)
static int _kk_check_dev_exist(const char* deviceCode,const char *epNum)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *pDeviceCode = NULL;
char *pEpNum = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo;";
_kk_area_lock();
......@@ -171,9 +167,9 @@ static int _kk_check_dev_exist(const char* deviceCode)
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
if(!strcmp(deviceCode,pDeviceCode))
{
pEpNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
if(!strcmp(deviceCode,pDeviceCode) && !strcmp(pEpNum,epNum))
{
isExist = 1;
break;
}
......@@ -184,22 +180,22 @@ static int _kk_check_dev_exist(const char* deviceCode)
return isExist;
}
int kk_room_dev_add(const char *roomId,const char *deviceCode,const char *epNum)
int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCode,const char *epNum,const char *devName)
{
int res = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
char *zErrMsg = 0;
if(_kk_check_dev_exist(deviceCode)){
sqlCmd = sqlite3_mprintf("UPDATE AreaDevInfo SET roomId='%s', epNum='%s' \
WHERE deviceCode= '%s'",roomId,epNum,deviceCode);
if(_kk_check_dev_exist(deviceCode,epNum)){
sqlCmd = sqlite3_mprintf("UPDATE AreaDevInfo SET roomId='%s', devName='%s', devName='%s'\
WHERE deviceCode= '%s' and epNum = '%s'",roomId,roomName,devName,deviceCode,epNum);
}
else{
const char *insertCmd = "insert into AreaDevInfo (roomId, deviceCode, epNum) \
values ('%s','%s','%s');";
sqlCmd = sqlite3_mprintf(insertCmd,roomId,deviceCode,epNum);
const char *insertCmd = "insert into AreaDevInfo (roomId, roomName, deviceCode, epNum, devName) \
values ('%s','%s','%s','%s','%s');";
sqlCmd = sqlite3_mprintf(insertCmd,roomId,roomName,deviceCode,epNum,devName);
}
_kk_area_lock();
......@@ -223,6 +219,9 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum)
char *zErrMsg = 0;
const char *insertCmd = NULL;
printf("deviceCode---->%s,%s\n",deviceCode,epNum);
if(epNum == NULL){
insertCmd = "delete from AreaDevInfo where deviceCode = '%s';";
}
......@@ -244,8 +243,6 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum)
return SUCCESS_RETURN;
}
int kk_room_device_list_add(const char *deviceCode)
{
//int len;
......
......@@ -16,14 +16,15 @@ enum{
enum{
DB_DEV_IDX = 0,
DB_DEV_ROOM_ID,
DB_DEV_ROOM_NAME,
DB_DEV_DEVICECODE,
DB_DEV_EPNUM,
DB_DEV_DEV_NAME,
};
int kk_room_delete(const char *roomId);
int kk_room_add(const char *name,const char *roomId);
int kk_area_init(void);
int kk_room_dev_add(const char *roomId,const char *deviceCode,const char *epNum);
int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCode,const char *epNum,const char *devName);
int kk_room_dev_remove(const char *deviceCode,const char *epNum);
int kk_room_device_list_add(const char *deviceCode);
kk_dev_list_t* kk_get_room_deviceCode(const char* roomId);
......
......@@ -199,14 +199,11 @@ void dm_ota_handle(void *data){
}else{
printf("parse params error !! \n");
}
}else {
printf("invaild ota type: [%d]\n", atoi(typeJson->valuestring));
}
cJSON_Delete(json);
cJSON_Delete(info);
}
int dm_ota_check(void* payload, int len, iotx_ota_topic_types_t type){
......@@ -217,7 +214,6 @@ int dm_ota_check(void* payload, int len, iotx_ota_topic_types_t type){
dm_ota_get_ota_handle(&otaHandle);
return ota_callback(otaHandle, payload, len,type);
}
int dm_ota_yield(int timeout_ms)
......@@ -236,7 +232,6 @@ int dm_ota_yield(int timeout_ms)
printf("dm_ota_yield call \n");
dm_ota_handle(data);
free(data);
data = NULL;
} else {
......
......@@ -342,15 +342,11 @@ int iotx_dm_subscribe(_IN_ int devid)
dm_queue_msg_insert4(buf);
#endif
}else{
ERROR_PRINT("\n [%d][%s] malloc faild kk_ipc_send \n", __LINE__, __FUNCTION__);
return FAIL_RETURN;
}
INFO_PRINT("\n [%d][%s] [%lu] send app to subscribe mqtt \n", __LINE__, __FUNCTION__, HAL_UptimeMs());
return SUCCESS_RETURN;
}
......@@ -368,7 +364,6 @@ void kk_dm_ota_send(void *data, int len){
free(buf);
return ;
}
}
}
......
......@@ -25,7 +25,6 @@
*************************************************************/
typedef struct {
void *mutex;
void *hearbeat_thread;
int hearbeat_thread_running;
......@@ -90,7 +89,6 @@ void *kk_heartbeat_yield(void *args)
list_for_each_entry(gw, &ctx->gw_status_list, linked_list, kk_gw_status_ctx_t){
if(gw->isOnline == KK_DEV_ONLINE){
list_del(&gw->linked_list);
//kk_subDev_send_property_get(gw->deviceCode);
free(gw);
}
......@@ -155,7 +153,6 @@ int kk_heartbeat_init(void)
/* Init Device List */
// INIT_LIST_HEAD(&ctx->dev_list);
}
/************************************************************
*功能描述: 上电把需要查询状态的网关加入队列,load设备的时候调用此函数
......
......@@ -166,7 +166,6 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy
}
num = dev_shadow->property_number;
for(idx = 0; idx < num; idx++){
pProperty = dev_shadow->properties+idx;
//INFO_PRINT("dm_mgr_properities_db_create pProperty->identifier:%s!!\n",pProperty->identifier);
if(pProperty){
......@@ -661,7 +660,6 @@ static unsigned int g_report_id = 1;
int iotx_report_id(void)
{
return g_report_id++;
}
......@@ -933,9 +931,13 @@ int dm_mgr_upstream_thing_sub_unregister(_IN_ int devid)
memset(&request, 0, sizeof(dm_msg_request_t));
request.msgTypeStr = (char*)DM_URI_THING_SUB_UNREGISTER;
if(devid == KK_DM_DEVICE_CCU_DEVICEID){
memcpy(request.productCode,node->productCode,strlen(node->productCode));
memcpy(request.deviceCode,node->deviceCode,strlen(node->deviceCode));
}else{
memcpy(request.productCode,gw_node->productCode,strlen(gw_node->productCode));
memcpy(request.deviceCode,gw_node->deviceCode,strlen(gw_node->deviceCode));
}
/* Get Params And Method */
res = dm_msg_thing_sub_unregister(node->deviceCode, &request);
......@@ -1573,6 +1575,5 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
free(node);
node = NULL;
return SUCCESS_RETURN;
}
......@@ -263,9 +263,9 @@ int dm_msg_thing_topo_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN],_OU_ dm_ms
const char DM_MSG_STATUS_CLOUD_METHOD[] DM_READ_ONLY = "thing.ccu.cloudstate";
const char DM_MSG_STATUS_CLOUD[] DM_READ_ONLY =
"{\"deviceCode\":\"%s\"}";
int dm_msg_status_cloud(_IN_ char productCode[PRODUCT_CODE_MAXLEN],
int dm_msg_status_cloud(_IN_ char productCode[PRODUCT_CODE_MAXLEN],
_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _OU_ dm_msg_request_t *request)
{
{
char *params = NULL;
int params_len = 0;
......@@ -292,13 +292,13 @@ const char DM_MSG_STATUS_CLOUD[] DM_READ_ONLY =
request->params_len = strlen(request->params);
return SUCCESS_RETURN;
}
}
const char DM_MSG_COMBINE_STATUS_ONLINE_METHOD[] DM_READ_ONLY = "thing.status.online";
const char DM_MSG_COMBINE_STATUS_ONLINE[] DM_READ_ONLY =
"{\"deviceCode\":\"%s\"}";
int dm_msg_status_online(_IN_ char productCode[PRODUCT_CODE_MAXLEN],
int dm_msg_status_online(_IN_ char productCode[PRODUCT_CODE_MAXLEN],
_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _OU_ dm_msg_request_t *request)
{
{
char *params = NULL;
int params_len = 0;
char timestamp[DM_UTILS_UINT64_STRLEN] = {0};
......@@ -331,7 +331,7 @@ const char DM_MSG_COMBINE_STATUS_ONLINE[] DM_READ_ONLY =
request->params_len = strlen(request->params);
return SUCCESS_RETURN;
}
}
const char DM_MSG_COMBINE_STATUS_OFFLINE_METHOD[] DM_READ_ONLY = "thing.status.offline";
const char DM_MSG_COMBINE_STATUS_OFFLINE[] DM_READ_ONLY =
......@@ -902,7 +902,6 @@ int dm_msg_ccu_property_post(dm_mgr_dev_node_t *node)
{
if(node == NULL){
return INVALID_PARAMETER;
}
char *payload_property = kk_tsl_get_post_property_str(node->dev_shadow,NULL);
if(payload_property != NULL){
......@@ -1088,7 +1087,6 @@ int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,c
free(payload);
cJSON_Delete(root);
return SUCCESS_RETURN;
}
......@@ -1121,11 +1119,9 @@ int kk_msg_execute_property_get(dm_mgr_dev_node_t *node)
for(i = 0; i < serviceNum; i++){
kk_tsl_service_t *item = node->dev_shadow->services + i;
if(!strcmp(item->identifier,"get")){
int inputNum = item->input_data_number;
if(inputNum == 0){
paramS = "{}";
}else{
for(j = 0; j < inputNum; j++){
kk_tsl_data_t *inputItem = item->input_datas + j;
......@@ -1293,7 +1289,6 @@ int kk_msg_execute_scene_action(const char* params,const char *fatherDeviceCode)
free(payload);
cJSON_Delete(root);
return SUCCESS_RETURN;
}
int kk_msg_execute_scene_delete(const char* params,const char *fatherDeviceCode)
......
......@@ -209,9 +209,6 @@ void dm_queue_deinit(void)
list_del(&del_node->linked_list);
free(del_node);
}
}
int dm_queue_msg_insert(void *data)
......
......@@ -333,8 +333,6 @@ int kk_topo_delete_handle(cJSON *payload)
}
return SUCCESS_RETURN;
}
/************************************************************
......@@ -363,13 +361,14 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params)
return res;
}
cJSON *roomInfoStr = cJSON_GetObjectItem(params, MSG_AREA_ADDROOM_ROOMNAME);
cJSON *roomIdStr = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomInfoStr == NULL){
return FAIL_RETURN;
}
kk_room_add(roomInfoStr->valuestring,roomId);
memcpy(roomId,roomIdStr->valuestring,strlen(roomIdStr->valuestring));
kk_room_add(roomInfoStr->valuestring,roomIdStr->valuestring);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,MSG_AREA_ADDROOM_NOTIFICATION_ROOMID,NULL,roomId);
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:删除房间处理函数
......@@ -406,6 +405,14 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
return INVALID_PARAMETER;
}
cJSON *dev_name = cJSON_GetObjectItem(params, MSG_AREA_ADDROOM_DEVICENAME);
if(dev_name == NULL){
return FAIL_RETURN;
}
cJSON *room_name = cJSON_GetObjectItem(params, MSG_AREA_ADDROOM_ROOMNAME);
if(room_name == NULL){
return FAIL_RETURN;
}
cJSON *roomId = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ROOMID);
if(roomId == NULL){
return FAIL_RETURN;
......@@ -420,7 +427,7 @@ static int kk_service_addDeviceToRoom_handle(cJSON *params)
}else{
strcpy(epNumStr,epNum->valuestring);
}
kk_room_dev_add(roomId->valuestring,deviceCode->valuestring,epNumStr);
kk_room_dev_add(roomId->valuestring,room_name->valuestring,deviceCode->valuestring,epNumStr,dev_name->valuestring);
return SUCCESS_RETURN;
}
/************************************************************
......@@ -525,7 +532,6 @@ static int kk_service_executeRoom_handle(cJSON *params)
cJSON *action = cJSON_GetObjectItem(params, MSG_AREA_ROOM_ACTION);
if(action != NULL){
kk_service_execute_action(action,search_node);
}
}
pList = pList->next;
......@@ -954,11 +960,9 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
usleep(200000);
dm_msg_ccu_property_post(node);
}
}else if (strstr(typeJson->valuestring,KK_THING_OTA_DEVICE_UPGRADE)){
INFO_PRINT("ota upgrade... \n");
kk_dm_ota_send(data, strlen(data)+1);
}else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_REBOOT) == 0){
INFO_PRINT(" reboot called!!!\n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
......@@ -977,7 +981,6 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT(" delete room \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
kk_service_deleteRoom_handle(paramStr);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_ADDDEVICETOROOM) == 0){
INFO_PRINT(" adddevicetoroom \n");
......@@ -993,7 +996,6 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
INFO_PRINT(" executeroom \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
kk_service_executeRoom_handle(paramStr);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_ADDSCENC) == 0){
INFO_PRINT(" add scene \n");
......@@ -1040,7 +1042,6 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON_Delete(root_);
free(out_);
}
}
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_SYNCINFO) == 0){
......@@ -1049,7 +1050,6 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
}
else{
INFO_PRINT("Error msgtype!!! \n");
}
directReturn:
......@@ -1508,12 +1508,10 @@ int kk_mid_subdev_batch_add( char productCode[PRODUCT_CODE_MAXLEN], char deviceC
res = _iotx_linkkit_subdev_login(devid);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
_iotx_linkkit_mutex_unlock();
return SUCCESS_RETURN;
}
......@@ -60,8 +60,6 @@ static int _kk_property_db_Init(void)
_kk_property_db_lock();
ctx->pDb = g_kk_pDb;
const char *pPrpertyTable = "CREATE TABLE IF NOT EXISTS PropertiesInfo( \
idx INTEGER PRIMARY KEY, \
deviceCode varchar(33), \
......@@ -129,7 +127,6 @@ int kk_property_db_init(void)
res = _kk_property_db_Init();
if(res != SUCCESS_RETURN){
ERROR_PRINT("[%s][%d]kk_wlist_db_Init FAIL!!!\n",__FUNCTION__,__LINE__);
}
//_kk_load_subDevice();
return SUCCESS_RETURN;
......@@ -157,7 +154,6 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_DEVICECODE);
pIdentifier = (char*)sqlite3_column_text(stmt, DB_IDENTIFITER);
if(!strcmp(deviceCode,pDeviceCode)&&!strcmp(identifier,pIdentifier))
{
isExist = 1;
break;
......@@ -303,7 +299,6 @@ int kk_property_db_get_value(const char *deviceCode,const char *identifier,void*
valueType == KK_TSL_DATA_TYPE_BOOL){
int value_int = atoi(valueStr);
*(int*)value = value_int;
}
else if(valueType == KK_TSL_DATA_TYPE_FLOAT){
float value_float = atoi(valueStr);
......@@ -360,7 +355,6 @@ int kk_property_db_get_rawdata(const char *identifier,const int dev_type, kk_pro
memcpy(curData->deviceCode,devcode, strlen(devcode));
memcpy(curData->raw,valueStr, strlen(valueStr));
curData->type = valueType;
curData++;
idx++;
}
......@@ -378,7 +372,6 @@ int kk_property_db_get_rawdata(const char *identifier,const int dev_type, kk_pro
*其他说明:
*************************************************************/
int kk_property_db_update(const char *deviceCode)
{
int res = 0;
int idx = 0;
......@@ -403,8 +396,6 @@ int kk_property_db_update(const char *deviceCode)
else if(property->data_value.type == KK_TSL_DATA_TYPE_FLOAT){
sprintf(tmpValue,"%f",property->data_value.value_float);
kk_property_db_update_value(deviceCode,property->identifier,tmpValue);
}
else if(property->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
sprintf(tmpValue,"%f",property->data_value.value_double);
......
......@@ -94,7 +94,6 @@ static int kk_subDev_db_Init(void)
_kk_subDb_unlock();
return FAIL_RETURN;
}
}
//eUtils_LockUnlock(&sLock);
......@@ -134,7 +133,7 @@ static int _kk_load_subDevice(void)
ctx->subDevNum++;
}
usleep(100000);
// send the topc info
// send the topo info
iotx_dm_subscribe(devId);
//sync the data from property db
......
......@@ -84,7 +84,9 @@ static int kk_get_rooms_devices(cJSON *roomDevicesArray,char *roomId)
deviceObj = cJSON_CreateObject();
deviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
cJSON_AddStringToObject(deviceObj, KK_SYNC_DEVICECODE_STR, deviceCode);
//cJSON_AddItemToArray(roomDevicesArray,deviceObj);
}
sqlite3_free(sqlCmd);
sqlite3_finalize(stmt);
return SUCCESS_RETURN;
......@@ -413,7 +415,6 @@ static int kk_get_scenes_info(cJSON *data)
static int kk_get_ccu_properties(cJSON *property)
{
char *sqlCmd = NULL;
//char *zErrMsg = 0;
sqlite3_stmt *stmt;
char *propertyStr = NULL;
char *valueStr = NULL;
......@@ -474,10 +475,11 @@ char *kk_sync_get_info()
cJSON_AddStringToObject(data, KK_SYNC_ONLINE_STR, cloudstatus_str);
cJSON_AddStringToObject(data, KK_SYNC_PRODUCTCODE_STR, ccu_productCode);
cJSON_AddStringToObject(data, KK_SYNC_VERSION_STR, version);
cJSON *property = cJSON_CreateObject();
cJSON *property = cJSON_CreateObject();
kk_get_ccu_properties(property);
cJSON_AddItemToObject(data, KK_SYNC_PROPERTY_STR, property);
out=cJSON_Print(root);
printf("kk_sync_get_info:%s\n",out);
cJSON_Delete(root);
......
......@@ -203,7 +203,6 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
return INVALID_PARAMETER;
}
}
}
else{
kk_tsl_data_value_complex_t *complex_struct_1 = NULL;
......@@ -246,7 +245,6 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
}
else if(property->data_value.type == KK_TSL_DATA_TYPE_TEXT){
if(strlen(propertyItem->valuestring) > property->data_value.length ){
ERROR_PRINT("ERROR !!!strlen(propertyItem->valuestring):%d,property->data_value.length:%d\n",strlen(propertyItem->valuestring),property->data_value.length );
return INVALID_PARAMETER;
}
......@@ -339,7 +337,6 @@ void mid_cb(void* data, int len){
ERROR_PRINT("wrong type\n");
}
cJSON_Delete(json);
}
}
}
......@@ -353,7 +350,6 @@ void mid_cb(void* data, int len){
*返 回 值: 无
*其他说明:
*************************************************************/
void mid2p_cb(void* data, int len, char* chalMark){
if (data != NULL){
//printf("mid2plat_cb: %s RECEIVED \r\n", data);
......@@ -413,7 +409,6 @@ void gw2mid_cb(void* data, int len, char* chalMark){
*其他说明:
*************************************************************/
void kk_platMsg_handle(void* data, char* chalMark){
int res = 0;
cJSON *json;
cJSON *info;
......@@ -472,7 +467,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_mid_subdev_add(KK_DM_DEVICE_SUBDEV,proCode->valuestring,devCode->valuestring, mac->valuestring,info_dcode->valuestring);
}
dm_mgr_update_timestamp_by_devicecode(devCode->valuestring,HAL_Uptimes());
}
else if (strstr(msgType->valuestring, KK_THING_TOPO_BATCH_ADD_MSG) != NULL){
kk_ipc_send(IPC_MID2APP,data,strlen(data));
......@@ -489,7 +483,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_mid_subdev_batch_add(productCode,deviceCode,mac_s,fatherMac);
item = item->next;
}
}else if (strstr(msgType->valuestring, KK_THING_PROPERTY_POST) != NULL){
INFO_PRINT("save property and send to cloud \n");
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
......@@ -621,8 +614,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
}
}
else if(strcmp(eventItem->identifier,MSG_PROPERTY_STR) != 0 &&
eventItem->output_data_number == 0){
......@@ -672,7 +663,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
else{
INFO_PRINT("kk_platMsg_handle data: don't handle it\n");
}
error:
cJSON_Delete(json);
......@@ -692,12 +682,10 @@ void kk_platMsg_dispatch(void)
void *data = NULL;
while (CONFIG_DISPATCH_QUEUE_MAXLEN == 0 || count++ < CONFIG_DISPATCH_QUEUE_MAXLEN) {
if (dm_queue_msg_next2(&data) == SUCCESS_RETURN) {
dm_queue_msg_t *msg = (dm_queue_msg_t *)data;
//INFO_PRINT("kk_handle_platMsg_dispatch get call \n");
kk_platMsg_handle(msg->data,(char*)msg->chalMark);
if (msg->data != NULL){
free(msg->data);
}
......@@ -785,8 +773,6 @@ void *ota_dispatch_yield(void *args)
*其他说明:
*************************************************************/
void *udp_dispatch_yield(void *args){
INFO_PRINT("udp_dispatch_yield udp thread create\n");
// 绑定地址
......@@ -845,7 +831,6 @@ void *udp_dispatch_yield(void *args){
while(1)
{
//从广播地址接受消息
memset(szDec, 0 , sizeof(szDec));
int size=recvfrom(sock, szDec, sizeof(szDec), 0, (struct sockaddr*)&from,(socklen_t*)&len);
......@@ -855,12 +840,10 @@ void *udp_dispatch_yield(void *args){
}
else
{
DEBUG_PRINT("lan recmsg: %s\n", szDec);
//DEBUG_PRINT("udp client ip:%s ,port is :%d htons(UDP_LAN_PORT)=%d \n",inet_ntoa(from.sin_addr),from.sin_port, htons(UDP_LAN_PORT));
//"search_kk_ccu|deviceCode=1122334455667788;protocol=tcp"
if(strstr(szDec, "search_kk_ccu|") != NULL){
char* getConnet = szDec + strlen("search_kk_ccu|");
char* tmp = NULL;
char* endIdx = NULL;
......@@ -870,7 +853,6 @@ void *udp_dispatch_yield(void *args){
char proto[10] = {0};
char portStr[10] = {0};
tmp = strstr(getConnet, "deviceCode=");
itemLen = strlen("deviceCode=");
if (tmp != NULL){
......@@ -910,7 +892,6 @@ void *udp_dispatch_yield(void *args){
DEBUG_PRINT("gwDevCode =%s proto=%s portStr=%s \n",gwDevCode,proto,portStr);
if(strcmp(proto,"tcp") == 0){
//
kk_set_tcp_channel(gwDevCode,inet_ntoa(from.sin_addr));
}
......@@ -941,12 +922,10 @@ void *udp_dispatch_yield(void *args){
// DEBUG_PRINT("udp client is not local ip , refused send ack to it\n");
//}
}
}
usleep(100000);
}
close(sock);
close(sock_host);
}
......@@ -1054,6 +1033,7 @@ int main(const int argc, const char **argv)
kk_history_db_init();
kk_scene_init();
g_timezone = HAL_Get_TimeZone();
mid_ctx->g_mid_dispatch_thread_running = 1;
res = pthread_create(&mid_ctx->g_mid_dispatch_thread, NULL, mid_dispatch_yield, NULL);
if (res < 0) {
......@@ -1088,48 +1068,6 @@ int main(const int argc, const char **argv)
for (;;) {
usleep(200000);
kk_platMsg_dispatch();
/*
if (ct == 0){
ct =1;
void* buf = "{\
\"info\": {\
\"msgtype\": \"/thing/service/property/post\",\
\"productCode\": \"130\",\
\"deviceCode\": \"086BD7FFFE916442\"\
},\
\"payload\": {\
\"msgId\": \"1\",\
\"version\": \"1.0\",\
\"params\": {\
\"LockKeys\": [\
{\
\"KeyID\": \"1\",\
\"KeyType\": 0, \
\"KeyRole\": 0, \
\"IsValid\": 1, \
\"KeyName\": \"test1\", \
\"KeyEffectiveTime\": 0, \
\"KeyExpiryTime\": 1 \
},\
{\
\"KeyID\": \"2\",\
\"KeyType\": 1, \
\"KeyRole\": 1, \
\"IsValid\": 1, \
\"KeyName\": \"test2\", \
\"KeyEffectiveTime\": 3, \
\"KeyExpiryTime\": 4 \
} \
]\
}\
}\
}";
kk_platMsg_handle(buf, "086BD7FFFE916442");
//kk_set_tsl_by_productKey("a1OYuSallan","model.json");
//kk_mid_subdev_add("a1OYuSallan","allanWno8yDdsjCX15iq","","aabbccddeeff1122");
}*/
}
}
......@@ -231,7 +231,6 @@ int kk_scene_insert_scene_info(const char* name,int sceneType,int enable,const c
sqlite3_free(sqlCmd);
_kk_scene_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述: 检查场景触发是否已经存在
......@@ -245,7 +244,6 @@ int kk_scene_insert_scene_info(const char* name,int sceneType,int enable,const c
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const char* propertyName,
const char* compareType,const char* compareValue,const char* sceneId)
{
......@@ -281,7 +279,6 @@ static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const c
_kk_scene_unlock();
return res;
}
/************************************************************
......@@ -297,7 +294,6 @@ static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const c
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_scene_insert_scene_trigger(const char* type,const char* deviceCode,int epNum,const char* propertyName,
const char* compareType,const char* compareValue,const char* sceneId,int isAnd)
{
......@@ -475,7 +471,6 @@ int kk_scene_insert_scene_invokeService(const char* type,const char* identifier,
_kk_scene_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述: 添加场景执行动作到数据库
......@@ -526,7 +521,6 @@ int kk_scene_insert_scene_action(const char* type,const char* deviceCode,int epN
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_scene_delete_scene_info(const char *sceneId)
{
int res = 0;
......@@ -703,7 +697,6 @@ int kk_scene_delete_scene_invokeservice(const char *sceneId)
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_scene_delete_scene_action(const char *sceneId,int isforword)
{
int res = 0;
......
......@@ -118,7 +118,6 @@ static int kk_scene_tsl_load(void)
}
}
return SUCCESS_RETURN;
}
/******************************************************************************/
/* 函 数 名: kk_scene_timer_check_able */
......@@ -589,7 +588,9 @@ static int kk_scene_parse_trigger_detail(const char *type,const cJSON *item,cons
deviceCode = cJSON_GetObjectItem(item,MSG_DEVICE_CODE_STR);
if(deviceCode == NULL) return FAIL_RETURN;
epNum = cJSON_GetObjectItem(item,MSG_SCENE_EPNUM);
if(epNum == NULL) return FAIL_RETURN;
if(epNum == NULL){
epNum = cJSON_CreateNumber(1);
}
propertyName = cJSON_GetObjectItem(item,MSG_SCENE_PROPERTYNAME);
if(propertyName == NULL) return FAIL_RETURN;
compareType = cJSON_GetObjectItem(item,MSG_SCENE_COMPARETYPE);
......@@ -633,14 +634,14 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
while(item != NULL){
type = cJSON_GetObjectItem(item,MSG_SCENE_TYPE);
if(type == NULL) return FAIL_RETURN;
if(!strcmp("trigger/thing/property",type->valuestring)){
res = kk_scene_parse_trigger_detail(type->valuestring,item,sceneId,0);
if(res != SUCCESS_RETURN){
ERROR_PRINT("kk_scene_parse_scene_trigger fail!!!\n");
return res;
}
}
else if(!strcmp("trigger/timing",type->valuestring)){
}else if(!strcmp("trigger/timing",type->valuestring)){
week = cJSON_GetObjectItem(item,MSG_SCENE_WEEK);
if(week == NULL) return FAIL_RETURN;
weekflag = kk_scene_parse_repeatday(week);
......@@ -729,7 +730,6 @@ static int kk_scene_parse_repeatday(cJSON *repeatday)
*返 回 值: 无
*其他说明:
*************************************************************/
void kk_scene_remove_timer_info(char *sceneId,int lockflag)
{
kk_scene_timer_list_t *ptr = NULL,*ptemp = NULL;
......@@ -891,6 +891,8 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
cJSON *epNum;
int iepnum;
printf("----->kk_scene_parse_scene_action\r\n");
dm_mgr_dev_node_t *node = NULL;
if(str == NULL || sceneId == NULL){
ERROR_PRINT("kk_scene_parse_scene_action failed\n");
......@@ -901,6 +903,7 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
if(action == NULL) return FAIL_RETURN;
item = action->child;
while(item != NULL){
printf("+++\r\n");
type = cJSON_GetObjectItem(item,MSG_SCENE_TYPE);
if(type == NULL) return FAIL_RETURN;
/*内嵌场景设置*/
......@@ -944,23 +947,41 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
delay = cJSON_GetObjectItem(item,MSG_SCENE_DELAY);
if(delay == NULL) return FAIL_RETURN;
int idelay = delay->valueint;
res = dm_mgr_get_device_by_devicecode(deviceCode->valuestring,&node);
if (res != SUCCESS_RETURN) {
item = item->next;
continue;
}
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->valuestring,strlen(propertyName->valuestring));
if(propertyValue->type==cJSON_Number){
char temp[64] = {0};
snprintf(temp,64,"%d",propertyValue->valueint);
memcpy(info.propertyValue,temp,strlen(temp));
}else{
memcpy(info.propertyValue,propertyValue->valuestring,strlen(propertyValue->valuestring));
}
info.epNum = iepnum;
info.delay = idelay;
kk_scene_action_add(node->fatherDeviceCode,sceneId,info);
}
res = kk_scene_insert_scene_action(type->valuestring,node->deviceCode,iepnum,
propertyName->valuestring,propertyValue->valuestring,idelay,sceneId,node->fatherDeviceCode);
if(res != SUCCESS_RETURN){
INFO_PRINT("kk_scene_insert_scene_action fail!!!\n");
return res;
......@@ -1093,7 +1114,6 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
}
}
return SUCCESS_RETURN;
}
/************************************************************
......@@ -1540,7 +1560,6 @@ static int kk_scene_check_value(const char * compareType,const char * compareVal
}
return res;
}
/************************************************************
*功能描述:发送action内容到网关,此函数只有不支持内场景的网关用到
......@@ -1678,8 +1697,6 @@ static int kk_scene_start_action(const char *deviceCode,const char *propertyName
kk_scene_push_action_list(actionInfo,delay);
}
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:触发完成并符合条件后调用此函数执行场景
......@@ -1697,7 +1714,8 @@ int kk_scene_execute_action(const char* sceneId,char *msgId)
char *gwdeviceCode = NULL;
int delay = 0;
char *sqlCmd = NULL;
char gwdevice[][DEVICE_CODE_MAXLEN] = {0};
//
char gwdevice[5][DEVICE_CODE_MAXLEN] = {0};
int idx=0,num = 0;
sqlite3_stmt *stmt;
kk_scene_ctx_t *ctx = _kk_scene_get_ctx();
......@@ -1779,7 +1797,6 @@ static int kk_scene_push_embed_list(int delay,const char* sceneId)
}
_kk_scene_unlock();
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:查找是否有场景嵌套
......@@ -1931,7 +1948,6 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
}
}
}
}
sqlite3_finalize(stmt);
sqlite3_free(sqlCmd);
......@@ -2000,6 +2016,5 @@ void kk_scene_execute_event_post(const char* sceneId,const char *msgId)
kk_tsl_set_value(kk_tsl_set_event_output_value,pSceneShadow,MSG_SCENE_EXECUTENOTIFICATION_SCENEID,NULL,sceneId);
dm_msg_scene_event_post(MSG_SCENE_EXECUTENOTIFICATION,pSceneShadow,msgIdbuf);
}
}
......@@ -55,7 +55,6 @@ static int _kk_msg_get_service_input_data(_IN_ kk_tsl_t *dev_shadow, _IN_ char *
{
int res = 0;
if (key == NULL || key_len <= 0) {
return INVALID_PARAMETER;
}
......@@ -1040,6 +1039,7 @@ int kk_tsl_get_value(kk_tsl_get_t method_get, kk_tsl_t * dev_shadow, const char
return SUCCESS_RETURN;
}
//kk_tsl_set_value(kk_tsl_set_event_output_value,pSceneShadow,MSG_SCENE_ADDNOTIFICATION_SCENEID,NULL,sceneId);
int kk_tsl_set_value(kk_tsl_set_t set, kk_tsl_t * dev_shadow, const char *identifier,
const void *value,
......@@ -1064,7 +1064,7 @@ int kk_tsl_set_value(kk_tsl_set_t set, kk_tsl_t * dev_shadow, const char *identi
property = dev_shadow->events + index;
if(strcmp(property->identifier,"property") == 0 ||
strcmp(property->identifier,"post") == 0)
{
{
e_identifier = property->identifier;
break;
}
......@@ -1288,7 +1288,7 @@ int kk_tsl_post_property_add(_IN_ void *handle, _IN_ char *identifier, _IN_ int
event = dapi_property->shadow->events + index;
if(strcmp(event->identifier,"property") == 0 ||
strcmp(event->identifier,"post") == 0)
{
{
pEventoutput = (kk_tsl_data_t *)(event->output_datas);
number = event->output_data_number;
break;
......@@ -1347,7 +1347,6 @@ char* kk_tsl_get_post_property_str(kk_tsl_t *dev_shadow, const char *propert
_kk_tsl_api_unlock();
return kk_tsl_post_property_end(property_handle);
}
static int kk_tsl_event_output(_IN_ kk_tsl_t *dev_shadow, _IN_ char *identifier, _IN_ int identifier_len,
_IN_ lite_cjson_item_t *lite)
......
......@@ -85,7 +85,7 @@
#define KK_TSL_GATAWAY_SN_IDENTIFIER "SN"
#define KK_TSL_GATAWAY_WHITELIST_IDENTIFIER "WhiteListState"
#define DEFAULT_HEARTBEAT_TIMEOUT (60*10)// ten minutes
#define DEFAULT_HEARTBEAT_TIMEOUT (60*1)// ten minutes
typedef enum {
KK_DEV_ONLINE = 0,
......
......@@ -50,7 +50,6 @@ char* kk_load_json(const char *productCode,int type)
snprintf(tslPath,path_len,TSL_SCENE_PATH_FILE,productCode);
}
INFO_PRINT("\n[%s][%d]tslPath:%s!!!\n",__FUNCTION__,__LINE__,tslPath);
if(!(fp = fopen(tslPath,"r")))
{
......
......@@ -364,7 +364,6 @@ static int _kk_tsl_opt_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cjs
else if(data_value->type == KK_TSL_DATA_TYPE_INT){
res = lite_cjson_object_item(root, KK_TSL_KEY_MIN, strlen(KK_TSL_KEY_MIN), &lite_item);
if(res == SUCCESS_RETURN){
data_value->mix = atoi(lite_item.value);
//printf("------------>[%s][%d]data_value->mix:%d\n",__FUNCTION__,__LINE__,data_value->mix);
}
......@@ -374,11 +373,19 @@ static int _kk_tsl_opt_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cjs
//printf("------------>[%s][%d]data_value->max:%d\n",__FUNCTION__,__LINE__,data_value->max);
}
}else if(data_value->type == KK_TSL_DATA_TYPE_FLOAT||
data_value->type == KK_TSL_DATA_TYPE_DOUBLE){
res = lite_cjson_object_item(root, KK_TSL_KEY_MIN, strlen(KK_TSL_KEY_MIN), &lite_item);
if(res == SUCCESS_RETURN){
data_value->mix = atof(lite_item.value);
//printf("------------>[%s][%d]data_value->mix:%d\n",__FUNCTION__,__LINE__,data_value->mix);
}
res = lite_cjson_object_item(root, KK_TSL_KEY_MAX, strlen(KK_TSL_KEY_MAX), &lite_item);
if(res == SUCCESS_RETURN){
data_value->max = atof(lite_item.value);
//printf("------------>[%s][%d]data_value->max:%d\n",__FUNCTION__,__LINE__,data_value->max);
}
}
return SUCCESS_RETURN;
......@@ -408,7 +415,6 @@ static int _kk_tsl_data_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cj
res = lite_cjson_object_item(root, KK_TSL_KEY_SPECS, strlen(KK_TSL_KEY_SPECS), &lite_item);
if (res == SUCCESS_RETURN) {
_kk_tsl_opt_parse(data_value,&lite_item);
}
//Parse Type And Value
......@@ -862,7 +868,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s
}
//printf("Identifier: %s", service->identifier);
/* Check If Current Service Id Is Set Or Get */
/* Check If Current Service Id Is Set */
if ((strlen(service->identifier) == strlen(KK_TSL_SPECIAL_SERVICE_SET_IDENTIFIER)) &&
(memcmp(service->identifier, KK_TSL_SPECIAL_SERVICE_SET_IDENTIFIER,
strlen(KK_TSL_SPECIAL_SERVICE_SET_IDENTIFIER)) == 0)) {
......@@ -1213,14 +1219,12 @@ static int _kk_tsl_float_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cj
return SUCCESS_RETURN;
}
static int _kk_tsl_double_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cjson_item_t *lite)
{
lite_cjson_add_number_to_object(lite, data->identifier, data->data_value.value_double);
return SUCCESS_RETURN;
}
static int _kk_tsl_string_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cjson_item_t *lite)
{
char *value = (data->data_value.value == NULL) ? ("") : (data->data_value.value);
......@@ -1263,7 +1267,6 @@ static int _kk_check_data(_IN_ kk_tsl_data_t *data)
}
static int _kk_tsl_array_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cjson_item_t *lite)
{
int res = SUCCESS_RETURN, index = 0;
lite_cjson_item_t *array = NULL, *array_item = NULL;
kk_tsl_data_value_complex_t *complex_array = NULL;
......@@ -1454,7 +1457,6 @@ static int _kk_tsl_data_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cjs
case KK_TSL_DATA_TYPE_BOOL:
case KK_TSL_DATA_TYPE_ENUM: {
if (lite->type == cJSON_Array) {
res = _kk_tsl_int_insert_json_item(data, data_object);
if (res == SUCCESS_RETURN) {
lite_cjson_add_item_to_array(lite, data_object);
......@@ -1523,7 +1525,6 @@ static int _kk_tsl_data_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cjs
lite_cjson_add_item_to_array(lite, data_object);
}
} else {
res = _kk_tsl_struct_insert_json_item(data, lite);
lite_cjson_delete(data_object);
}
......@@ -1553,7 +1554,7 @@ int kk_tsl_assemble_property(_IN_ kk_tsl_t *shadow, _IN_ char *identifier, _IN_
property = shadow->events + index;
if(strcmp(property->identifier,"property") == 0 ||
strcmp(property->identifier,"post") == 0)
{
{
for(indexE = 0; indexE < property->output_data_number;indexE++){
output_data = property->output_datas + indexE;
if ((strlen(output_data->identifier) == identifier_len) &&
......@@ -1566,7 +1567,6 @@ int kk_tsl_assemble_property(_IN_ kk_tsl_t *shadow, _IN_ char *identifier, _IN_
return FAIL_RETURN;
}
}
}
}
......
......@@ -266,7 +266,7 @@ int kk_utils_ftoa_direct(_IN_ double input, _OU_ char **output)
}
int kk_utils_json_parse(_IN_ const char *payload, _IN_ int payload_len, _IN_ int type, _OU_ lite_cjson_t *lite)
{
{
int res = 0;
if (payload == NULL || payload_len <= 0 || type < 0 || lite == NULL) {
......@@ -286,11 +286,11 @@ int kk_utils_json_parse(_IN_ const char *payload, _IN_ int payload_len, _IN_ int
}
return SUCCESS_RETURN;
}
}
int kk_utils_json_object_item(_IN_ lite_cjson_t *lite, _IN_ const char *key, _IN_ int key_len, _IN_ int type,
int kk_utils_json_object_item(_IN_ lite_cjson_t *lite, _IN_ const char *key, _IN_ int key_len, _IN_ int type,
_OU_ lite_cjson_t *lite_item)
{
{
int res = 0;
if (lite == NULL || lite->type != cJSON_Object || key == NULL || key_len <= 0 || type < 0 || lite_item == NULL) {
......@@ -316,4 +316,4 @@ int kk_utils_json_parse(_IN_ const char *payload, _IN_ int payload_len, _IN_ int
}
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