Commit 9d33ff08 authored by chen.weican's avatar chen.weican

【修改内容】增加productType的解析和数据库保存

【提交人】陈伟灿
parent 8b94e9dc
...@@ -147,6 +147,9 @@ int _kk_sendto_cloud(cJSON *root) ...@@ -147,6 +147,9 @@ int _kk_sendto_cloud(cJSON *root)
//If topo delete,need UnSubscribe the topic //If topo delete,need UnSubscribe the topic
if(strstr(msgTypeStr->valuestring,KK_FILTER_DELETE_TOPIC) != NULL){ if(strstr(msgTypeStr->valuestring,KK_FILTER_DELETE_TOPIC) != NULL){
KK_Subdev_UnSubscribe(pData); KK_Subdev_UnSubscribe(pData);
char* out=cJSON_Print(pData);
KK_MQTT_SendMsg(topic,(const char*)out);
free(out);
free(topic); free(topic);
return RETURN_SUCCESS; return RETURN_SUCCESS;
...@@ -166,6 +169,9 @@ int _kk_sendto_cloud(cJSON *root) ...@@ -166,6 +169,9 @@ int _kk_sendto_cloud(cJSON *root)
} }
} }
} }
char* out=cJSON_Print(pData);
KK_MQTT_SendMsg(topic,(const char*)out);
free(out);
free(topic); free(topic);
return RETURN_SUCCESS; return RETURN_SUCCESS;
} }
......
...@@ -148,6 +148,7 @@ static int _dm_init_tsl_params(kk_tsl_t * dev_shadow) ...@@ -148,6 +148,7 @@ static int _dm_init_tsl_params(kk_tsl_t * dev_shadow)
} }
return res; return res;
} }
/*目前支持到三级结构体的属性解析保存到数据库*/ /*目前支持到三级结构体的属性解析保存到数据库*/
int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devType ) int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devType )
{ {
...@@ -160,7 +161,6 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy ...@@ -160,7 +161,6 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
num = dev_shadow->property_number; num = dev_shadow->property_number;
INFO_PRINT("dm_mgr_properities_db_create num:%d!!\n",num);
for(idx = 0; idx < num; idx++){ for(idx = 0; idx < num; idx++){
pProperty = dev_shadow->properties+idx; pProperty = dev_shadow->properties+idx;
...@@ -194,13 +194,15 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy ...@@ -194,13 +194,15 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy
} }
} }
}else }
else
{ {
kk_property_db_insert(deviceCode,pProperty->identifier,pProperty->data_value.type,devType); kk_property_db_insert(deviceCode,pProperty->identifier,pProperty->data_value.type,devType);
} }
} }
} }
} }
int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MAXLEN], _IN_ char deviceCode[DEVICE_CODE_MAXLEN], int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MAXLEN], _IN_ char deviceCode[DEVICE_CODE_MAXLEN],
_IN_ char mac[DEVICE_MAC_MAXLEN],_IN_ char fatherDeviceCode[DEVICE_CODE_MAXLEN],_IN_ int isOffline, _OU_ int *devid,_OU_ int *heartbeat) _IN_ char mac[DEVICE_MAC_MAXLEN],_IN_ char fatherDeviceCode[DEVICE_CODE_MAXLEN],_IN_ int isOffline, _OU_ int *devid,_OU_ int *heartbeat)
{ {
...@@ -250,10 +252,18 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA ...@@ -250,10 +252,18 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA
} }
node->timestamp = 0; node->timestamp = 0;
//node->dev_status = IOTX_DM_DEV_STATUS_AUTHORIZED; //node->dev_status = IOTX_DM_DEV_STATUS_AUTHORIZED;
//if(strcmp(productCode,"1035") == 0){
//tsl_str = kk_load_json("130", dev_type);
//}else{
//tsl_str = kk_load_json(productCode, dev_type);
//}
tsl_str = kk_load_json(productCode, dev_type); tsl_str = kk_load_json(productCode, dev_type);
if(tsl_str != NULL) if(tsl_str != NULL)
{ {
int heartbeat = 0; int heartbeat = 0;
kk_msg_parse_productType(tsl_str,node->productType);
res = kk_tsl_create(tsl_str,strlen(tsl_str),&node->dev_shadow,&heartbeat); res = kk_tsl_create(tsl_str,strlen(tsl_str),&node->dev_shadow,&heartbeat);
free(tsl_str); free(tsl_str);
if(res != 0){ if(res != 0){
......
...@@ -26,6 +26,7 @@ typedef struct { ...@@ -26,6 +26,7 @@ typedef struct {
char productCode[PRODUCT_CODE_MAXLEN]; char productCode[PRODUCT_CODE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN]; char deviceCode[DEVICE_CODE_MAXLEN];
char fatherDeviceCode[DEVICE_CODE_MAXLEN]; char fatherDeviceCode[DEVICE_CODE_MAXLEN];
char productType[PRODUCT_TYPE_MAXLEN];
char isOffline; char isOffline;
int hb_timeout; //heartbeat time int hb_timeout; //heartbeat time
uint64_t timestamp; uint64_t timestamp;
......
...@@ -1016,6 +1016,24 @@ int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,c ...@@ -1016,6 +1016,24 @@ int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,c
free(req_info); free(req_info);
free(payload); free(payload);
cJSON_Delete(root); cJSON_Delete(root);
return SUCCESS_RETURN;
}
int kk_msg_parse_productType(char *str,char *productType)
{
cJSON *item = NULL;
cJSON *json=cJSON_Parse(str);
if(json == NULL){
return FAIL_RETURN;
}
item = cJSON_GetObjectItem(json, KK_TSL_KEY_PRODUCTTYPE);
if(item != NULL&&strlen(item->valuestring) < PRODUCT_TYPE_MAXLEN){
memcpy(productType,item->valuestring,strlen(item->valuestring));
}
cJSON_Delete(json);
return SUCCESS_RETURN;
} }
...@@ -2171,6 +2171,7 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d ...@@ -2171,6 +2171,7 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d
int res = 0; int res = 0;
int devid = 0; int devid = 0;
int heartbeat = 0; int heartbeat = 0;
dm_mgr_dev_node_t *node = NULL;
res = dm_mgr_subdev_create(devType,productCode,deviceCode,mac,fatherDeviceCode,0,&devid,&heartbeat); res = dm_mgr_subdev_create(devType,productCode,deviceCode,mac,fatherDeviceCode,0,&devid,&heartbeat);
if (res != SUCCESS_RETURN && TSL_ALREADY_EXIST != res) { if (res != SUCCESS_RETURN && TSL_ALREADY_EXIST != res) {
ERROR_PRINT("subdev create Failed\n"); ERROR_PRINT("subdev create Failed\n");
...@@ -2185,6 +2186,11 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d ...@@ -2185,6 +2186,11 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
res = dm_mgr_get_device_by_devicecode(deviceCode, &node);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
kk_subDev_update_productType(node->productType,deviceCode);
} }
_iotx_linkkit_mutex_lock(); _iotx_linkkit_mutex_lock();
......
...@@ -24,7 +24,7 @@ typedef enum{ ...@@ -24,7 +24,7 @@ typedef enum{
DB_VERSION, DB_VERSION,
DB_AUTH, DB_AUTH,
DB_DEVTYPE, DB_DEVTYPE,
DB_PRODUCTTYPE
}; };
static kk_subDb_ctx_t s_kk_subDb_ctx = {NULL,0,NULL}; static kk_subDb_ctx_t s_kk_subDb_ctx = {NULL,0,NULL};
...@@ -69,7 +69,8 @@ static int kk_subDev_db_Init(void) ...@@ -69,7 +69,8 @@ static int kk_subDev_db_Init(void)
version varchar(33), \ version varchar(33), \
isAuth INTEGER, \ isAuth INTEGER, \
devType INTEGER, \ devType INTEGER, \
heartbeat INTEGER)"; heartbeat INTEGER,\
productType varchar(33))";
char *pcErr; char *pcErr;
...@@ -254,6 +255,29 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode) ...@@ -254,6 +255,29 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode)
//_kk_subDb_unlock(); //_kk_subDb_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int kk_subDev_update_productType(char *productType,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 productType='%s' WHERE deviceCode= '%s'",productType,deviceCode);
INFO_PRINT("kk_subDev_update_offline 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_update_auth(int isAuth,const char *deviceCode) int kk_subDev_update_auth(int isAuth,const char *deviceCode)
{ {
char *sqlCmd = NULL; char *sqlCmd = NULL;
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#define KK_TSL_KEY_SCHEMA "schema" #define KK_TSL_KEY_SCHEMA "schema"
#define KK_TSL_KEY_LINK "link" #define KK_TSL_KEY_LINK "link"
#define KK_TSL_KEY_PRODUCTTYPE "productType"
#define KK_TSL_KEY_PROFILE "profile" #define KK_TSL_KEY_PROFILE "profile"
#define KK_TSL_KEY_PROPERTIES "properties" #define KK_TSL_KEY_PROPERTIES "properties"
#define KK_TSL_KEY_EVENTS "events" #define KK_TSL_KEY_EVENTS "events"
......
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