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

【修改内容】调整根据product type来获取物模型数据,json文件必须用product type命令,如:a1OYuSBt23u.json。

【提交人】陈伟灿
parent d573fc8b
......@@ -144,7 +144,7 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
dm_mgr_dev_node_t *node = NULL;
char *tsl_str = NULL;
int idx = 0;
char name[TSL_PATH_MAXLEN] = {0};
if (product_key == NULL || device_name == NULL ||
strlen(product_key) >= PRODUCT_KEY_MAXLEN ||
strlen(device_name) >= DEVICE_NAME_MAXLEN) {
......@@ -163,7 +163,7 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
if (devid) {
*devid = node->devid;
}
return FAIL_RETURN;
return TSL_ALREADY_EXIST;
}
node = malloc(sizeof(dm_mgr_dev_node_t));
......@@ -188,9 +188,7 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
}
//node->dev_status = IOTX_DM_DEV_STATUS_AUTHORIZED;
memset(name,0x0,sizeof(name));
kk_get_tsl_by_productKey(product_key,name);
tsl_str = kk_load_json(name);
tsl_str = kk_load_json(product_key);
if(tsl_str != NULL)
{
res = kk_tsl_create(tsl_str,strlen(tsl_str),&node->dev_shadow);
......@@ -199,7 +197,6 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
return FAIL_RETURN;
}
}
INIT_LIST_HEAD(&node->linked_list);
list_add_tail(&node->linked_list, &ctx->dev_list);
......@@ -954,10 +951,9 @@ int dm_mgr_subdev_create(_IN_ char product_key[PRODUCT_KEY_MAXLEN],
int res = 0;
res = dm_mgr_device_create(KK_DM_DEVICE_SUBDEV,product_key,device_name,device_secret,device_mac, devid);
if (res != SUCCESS_RETURN) {
printf("subdev open Failed\n");
return FAIL_RETURN;
}
if(TSL_ALREADY_EXIST == res)
{
printf("SUBDEV ALREADY EXIST!!!\n");
}
return res;
}
......@@ -124,7 +124,6 @@ void kk_platMsg_handle(void* data){
proCode = cJSON_GetObjectItem(jsonPay, "productCode");
printf("productType productCode mac: [%s][%s] [%s] \n",proType->valuestring, proCode->valuestring, mac->valuestring);
kk_set_tsl_by_productKey(proType->valuestring,"model.json");
kk_mid_subdev_add(proType->valuestring,proCode->valuestring,"", mac->valuestring);
}else if (method != NULL && mac != NULL){
......@@ -223,7 +222,6 @@ static int kk_set_product_info(void)
{
HAL_SetProduct_Type(PRODUCT_TPYE);
HAL_SetProduct_Code(PRODUCT_CODE);
kk_set_tsl_by_productKey(PRODUCT_TPYE,"gateway.json");
return 0;
}
......@@ -238,10 +236,12 @@ int main(const int argc, const char **argv)
kk_set_product_info();
kk_tsl_api_init();
kk_ipc_init(IPC_MID2APP, mid_cb);
kk_ipc_init(IPC_MID2PLAT, mid2p_cb);
//DB_Init();
//test_tcp();
/* when Connect to app and platfrom */
......@@ -253,6 +253,7 @@ int main(const int argc, const char **argv)
}
} while (res < 0);*/
kk_init_dmproc();
kk_subDb_init();
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) {
......
......@@ -18,8 +18,6 @@
#define DEVICE_MAC_MAXLEN (16 + 1)
#define DEVICE_SN_MAXLEN (32 + 1)
#define TSL_PATH_MAXLEN (64 + 1)
#define DM_UTILS_UINT16_STRLEN (5)
#define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT64_STRLEN (20)
......@@ -77,6 +75,7 @@ typedef enum {
} kk_tsl_data_target_e;
typedef enum {
TSL_ALREADY_EXIST = -14,
TSL_SERVICE_GET_FAILED = -13,
TSL_SERVICE_SET_FAILED = -12,
TSL_EVENT_GET_FAILED = -11,
......
......@@ -3,64 +3,27 @@
#include <stdio.h>
#include "kk_tsl_common.h"
typedef struct{
char product_key[PRODUCT_KEY_MAXLEN];
char name[TSL_PATH_MAXLEN];
}kk_json_map_t;
kk_json_map_t s_tsl_list[];
int s_tsl_num = 0;
int kk_set_tsl_by_productKey(const char* key,const char* name)
{
if(key == NULL || name == NULL)
{
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return FAIL_RETURN;
}
if(strlen(key) >= PRODUCT_KEY_MAXLEN || strlen(name) >= TSL_PATH_MAXLEN)
{
printf("[%s][%d]length error!!!\n",__FUNCTION__,__LINE__);
return FAIL_RETURN;
}
memset(s_tsl_list[s_tsl_num].product_key,0x0,sizeof(s_tsl_list[s_tsl_num].product_key));
memset(s_tsl_list[s_tsl_num].name,0x0,sizeof(s_tsl_list[s_tsl_num].name));
memcpy(s_tsl_list[s_tsl_num].product_key,key,strlen(key));
memcpy(s_tsl_list[s_tsl_num].name,name,strlen(name));
s_tsl_num++;
return SUCCESS_RETURN;
}
int kk_get_tsl_by_productKey(const char* key, char* name)
{
int index = 0;
if(key == NULL)
{
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return FAIL_RETURN;
}
for(index = 0;index < s_tsl_num;index++)
{
if((strlen(key) == strlen(s_tsl_list[index].product_key))&&
(memcmp(s_tsl_list[index].product_key,key,strlen(key)) == 0))
{
memcpy(name,s_tsl_list[index].name,strlen(s_tsl_list[index].name));
return SUCCESS_RETURN;
}
}
printf("[%s][%d]Not exist!!!\n",__FUNCTION__,__LINE__);
return FAIL_RETURN;
}
char* kk_load_json(const char *tslFile)
#define TSL_PATH_FILE "/home/tsl/%s.json"
char* kk_load_json(const char *product_type)
{
FILE *fp;
char *buf = NULL;
char *tslPath = NULL;
int path_len = 0;
unsigned int filesize;
printf("[%s][%d]tslFile:%s!!!\n",__FUNCTION__,__LINE__,tslFile);
if(!(fp = fopen(tslFile,"a+")))
path_len = strlen(TSL_PATH_FILE)+strlen(product_type)+1;
tslPath = malloc(path_len);
if(tslPath == NULL){
return NULL;
}
memset(tslPath,0x0,path_len);
snprintf(tslPath,path_len,TSL_PATH_FILE,product_type);
printf("\n[%s][%d]tslPath:%s!!!\n",__FUNCTION__,__LINE__,tslPath);
if(!(fp = fopen(tslPath,"a+")))
{
printf("can't open the file account.txt\n");
free(tslPath);
return NULL;
}
fseek(fp, 0L, SEEK_END);
......@@ -70,6 +33,7 @@ char* kk_load_json(const char *tslFile)
if(buf == NULL)
{
printf("MALLOC FAIL!!!\n");
free(tslPath);
return NULL;
}
......@@ -77,7 +41,7 @@ char* kk_load_json(const char *tslFile)
fseek(fp, 0L, SEEK_SET);
fread(buf, 1, filesize, fp);
//printf("%s!!!\n",buf);
//free(buf);
free(tslPath);
return buf;
}
#ifndef __TSL_DATA_LOAD__
#define __TSL_DATA_LOAD__
extern char* kk_load_json(const char *tslFile);
extern int kk_get_tsl_by_productKey(const char* key, char* name);
extern int kk_set_tsl_by_productKey(const char* key,const char* name);
char* kk_load_json(const char *product_type);
#endif
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