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

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

【提交人】陈伟灿
parent 8b94e9dc
......@@ -147,6 +147,9 @@ int _kk_sendto_cloud(cJSON *root)
//If topo delete,need UnSubscribe the topic
if(strstr(msgTypeStr->valuestring,KK_FILTER_DELETE_TOPIC) != NULL){
KK_Subdev_UnSubscribe(pData);
char* out=cJSON_Print(pData);
KK_MQTT_SendMsg(topic,(const char*)out);
free(out);
free(topic);
return RETURN_SUCCESS;
......@@ -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);
return RETURN_SUCCESS;
}
......
......@@ -148,6 +148,7 @@ static int _dm_init_tsl_params(kk_tsl_t * dev_shadow)
}
return res;
}
/*目前支持到三级结构体的属性解析保存到数据库*/
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
return INVALID_PARAMETER;
}
num = dev_shadow->property_number;
INFO_PRINT("dm_mgr_properities_db_create num:%d!!\n",num);
for(idx = 0; idx < num; 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
}
}
}else
}
else
{
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],
_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
}
node->timestamp = 0;
//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);
if(tsl_str != NULL)
{
int heartbeat = 0;
kk_msg_parse_productType(tsl_str,node->productType);
res = kk_tsl_create(tsl_str,strlen(tsl_str),&node->dev_shadow,&heartbeat);
free(tsl_str);
if(res != 0){
......
......@@ -26,6 +26,7 @@ typedef struct {
char productCode[PRODUCT_CODE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN];
char fatherDeviceCode[DEVICE_CODE_MAXLEN];
char productType[PRODUCT_TYPE_MAXLEN];
char isOffline;
int hb_timeout; //heartbeat time
uint64_t timestamp;
......
......@@ -1016,6 +1016,24 @@ int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,c
free(req_info);
free(payload);
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
int res = 0;
int devid = 0;
int heartbeat = 0;
dm_mgr_dev_node_t *node = NULL;
res = dm_mgr_subdev_create(devType,productCode,deviceCode,mac,fatherDeviceCode,0,&devid,&heartbeat);
if (res != SUCCESS_RETURN && TSL_ALREADY_EXIST != res) {
ERROR_PRINT("subdev create Failed\n");
......@@ -2185,6 +2186,11 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d
if (res != SUCCESS_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();
......
......@@ -23,8 +23,8 @@ typedef enum{
DB_FATHERDEVICECODE,
DB_VERSION,
DB_AUTH,
DB_DEVTYPE,
DB_DEVTYPE,
DB_PRODUCTTYPE
};
static kk_subDb_ctx_t s_kk_subDb_ctx = {NULL,0,NULL};
......@@ -69,7 +69,8 @@ static int kk_subDev_db_Init(void)
version varchar(33), \
isAuth INTEGER, \
devType INTEGER, \
heartbeat INTEGER)";
heartbeat INTEGER,\
productType varchar(33))";
char *pcErr;
......@@ -254,6 +255,29 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode)
//_kk_subDb_unlock();
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)
{
char *sqlCmd = NULL;
......
......@@ -28,6 +28,7 @@
#define KK_TSL_KEY_SCHEMA "schema"
#define KK_TSL_KEY_LINK "link"
#define KK_TSL_KEY_PRODUCTTYPE "productType"
#define KK_TSL_KEY_PROFILE "profile"
#define KK_TSL_KEY_PROPERTIES "properties"
#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