Commit 1cb9ada1 authored by chen.weican's avatar chen.weican

【修改内容】1,去掉productType相关设置;2,增加mac的数据保存

parent 19e63444
......@@ -23,7 +23,7 @@
#define KK_CLOUDSTATE_MSG "/thing/ccu/cloudstate"
const char DM_MSG_TO_MIDDWARE[] = "{\"msgtype\":\"%s\",\"productType\":\"%s\",\"productCode\":\"%s\",\"deviceCode\":\"%s\"}";
const char DM_MSG_TO_MIDDWARE[] = "{\"msgtype\":\"%s\",\"productCode\":\"%s\",\"deviceCode\":\"%s\"}";
#define KK_TOPIC_SERVICE_DELIMITER '/'
int _kk_sendto_cloud(cJSON *root)
......@@ -136,11 +136,11 @@ static int _kk_topic_parse_msgType(_IN_ char *topic, _IN_ int start_deli,_OU_ ch
}
static int _kk_topic_parse_pkdn(_IN_ char *topic, _IN_ int start_deli,
_OU_ char productType[PRODUCT_TYPE_LEN], _OU_ char productCode[PRODUCT_CODE_LEN],_OU_ char deviceCode[DEVICE_CODE_LEN])
_OU_ char productCode[PRODUCT_CODE_LEN],_OU_ char deviceCode[DEVICE_CODE_LEN])
{
int res = 0, start = 0, end = 0, slice = 0,slice1 = 0;
int res = 0, start = 0, end = 0, slice = 0;
if (topic == NULL || productType == NULL || deviceCode == NULL) {
if (topic == NULL || deviceCode == NULL) {
return -1;
}
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli, &start);
......@@ -151,18 +151,14 @@ static int _kk_topic_parse_pkdn(_IN_ char *topic, _IN_ int start_deli,
if (res != 0) {
return -1;
}
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli + 2, &slice1);
if (res != 0) {
return -1;
}
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli + 3, &end);
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli + 2, &end);
if (res != 0) {
return -1;
}
memcpy(productType, topic + start + 1, slice - start - 1);
memcpy(productCode, topic + slice + 1, slice1 - slice - 1);
memcpy(deviceCode, topic + slice1 + 1, end - slice1 - 1);
memcpy(productCode, topic + start + 1, slice - start - 1);
memcpy(deviceCode, topic + slice + 1, end - slice - 1);
return 0;
}
......@@ -174,14 +170,13 @@ static char * _kk_data_create(const char *topic,const char *data)
char *infoStr = NULL;
int infoStr_len = 0;
int res = 0;
char productType[PRODUCT_TYPE_LEN] = {0};
char productCode[PRODUCT_CODE_LEN] = {0};
char deviceCode[DEVICE_CODE_LEN] = {0};
char * msgStr = NULL;
res =_kk_topic_parse_pkdn((char *)topic,2, productType,productCode,deviceCode);
res =_kk_topic_parse_pkdn((char *)topic,3,productCode,deviceCode);
res|=_kk_topic_parse_msgType((char *)topic,5,&msgStr);
infoStr_len = strlen(DM_MSG_TO_MIDDWARE)+strlen(productType)+strlen(productCode)+strlen(deviceCode)+strlen(msgStr)+10;
infoStr_len = strlen(DM_MSG_TO_MIDDWARE)+strlen(productCode)+strlen(deviceCode)+strlen(msgStr)+10;
infoStr = malloc(infoStr_len);
if(infoStr == NULL){
ERROR_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__);
......@@ -189,7 +184,7 @@ static char * _kk_data_create(const char *topic,const char *data)
return NULL;
}
memset(infoStr,0x0,infoStr_len);
snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,msgStr,productType,productCode,deviceCode);
snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,msgStr,productCode,deviceCode);
root=cJSON_CreateObject();
cJSON* infoObj = cJSON_Parse(infoStr);
......@@ -222,7 +217,7 @@ int KK_Send_CloudState(int state)
return -1;
}
memset(infoStr,0x0,infoStr_len);
snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,KK_CLOUDSTATE_MSG,"","","");
snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,KK_CLOUDSTATE_MSG,"","");
payloadStr_len = strlen(DM_MSG_CLOUDSTATE) + 10;
payloadStr = malloc(payloadStr_len);
......
......@@ -10,18 +10,6 @@
const char KK_URI_SYS_PREFIX[] = "/sys/kk/%s/%s/#";
const char KK_URI_SYS_PREFIX_EX[] = "/sys/kk/%s/%s";
const char DM_URI_THING_SUB_REGISTER[] = "thing/sub/register";
const char DM_URI_THING_SUB_UNREGISTER[] = "thing/sub/unregister";
const char DM_URI_THING_TOPO_ADD[] = "thing/topo/add";
const char DM_URI_THING_TOPO_DELETE[] = "thing/topo/delete";
const char DM_URI_THING_TOPO_GET[] = "thing/topo/get";
const char DM_URI_THING_LIST_FOUND[] = "thing/list/found";
const char DM_URI_COMBINE_LOGIN[] = "combine/login";
const char DM_URI_COMBINE_LOGOUT[] = "combine/logout";
const char DM_URI_THING_EVENT_PROPERTY_POST[] = "thing/event/property/post";
const char DM_URI_THING_EVENT_POST[] = "thing/event/%.*s/post";
const char DM_URI_THING_SERVICE_RESPONSE[] = "thing/service/%.*s_reply";
const char DM_URI_THING_SERVICE_PROPERTY_SET_REPLY[] = "thing/service/property/set_reply";
const char KK_URI_OTA_PREFIX[] = "/ota/device/upgrade/kk/%s/%s/#";
const char KK_URI_OTA_PROCESS[] = "/ota/device/progress/%s/%s";
const char KK_URI_OTA_INFORM[] = "/ota/device/inform/%s/%s";
......
......@@ -537,7 +537,7 @@ int HAL_Get_mac(char* mac)
int HAL_Get_SN(char sn[SN_ADDR_LEN])
{
strncpy(sn,"11111111111111111111111111111111",SN_ADDR_LEN);
strncpy(sn,"15",SN_ADDR_LEN);
return 0;//just for test
}
......
......@@ -302,12 +302,12 @@ int iotx_dm_subscribe(_IN_ int devid)
//send app to subscribe mqtt
const char subscribe_cmd[] =
"{\"cmd\":\"subscribe\",\"data\":{\"productType\":\"%s\",\"productCode\":\"%s\",\"deviceCode\":\"%s\"}}";
int len = strlen(subscribe_cmd) + strlen(node->productType) +strlen(node->productCode)+ strlen(node->deviceCode) + 1;
"{\"cmd\":\"subscribe\",\"data\":{\"productCode\":\"%s\",\"deviceCode\":\"%s\"}}";
int len = strlen(subscribe_cmd) +strlen(node->productCode)+ strlen(node->deviceCode) + 1;
void* buf = malloc(len);
if (buf){
HAL_Snprintf(buf, len, subscribe_cmd, node->productType, node->productCode,node->deviceCode);
HAL_Snprintf(buf, len, subscribe_cmd, node->productCode,node->deviceCode);
kk_ipc_send(IPC_MID2APP, buf, len);
free(buf);
}else{
......
This diff is collapsed.
......@@ -20,10 +20,10 @@ typedef struct {
int devid;
int dev_type;
kk_tsl_t *dev_shadow;
char productType[PRODUCT_TYPE_MAXLEN];
char mac[DEVICE_MAC_MAXLEN];
char productCode[PRODUCT_CODE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN];
char fatherMac[DEVICE_MAC_MAXLEN];
char fatherDeviceCode[DEVICE_CODE_MAXLEN];
struct list_head linked_list;
} dm_mgr_dev_node_t;
......@@ -40,7 +40,6 @@ typedef struct {
//const char *service_name;
char *msgTypeStr;
char identity[IDENTIFY_MAXLEN];
char productType[PRODUCT_TYPE_MAXLEN];
char productCode[PRODUCT_CODE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN];
char *params;
......@@ -50,7 +49,6 @@ typedef struct {
} dm_msg_request_t;
typedef struct {
char *msgTypeStr;
char productType[PRODUCT_TYPE_MAXLEN];
char productCode[PRODUCT_CODE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN];
......
This diff is collapsed.
......@@ -249,7 +249,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
//get devicececret and save it
INFO_PRINT(" topic:register_reply \n");
dm_msg_response_payload_t response;
res = dm_msg_response_parse((char *)payload_Str, strlen(payload_Str)+1, &response);
res = dm_msg_response_parse((char *)payload_Str, strlen(payload->valuestring)+1, &response);
if (res != SUCCESS_RETURN) {
goto directReturn;
}
......@@ -263,7 +263,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
//
INFO_PRINT(" topic:add_reply \n");
dm_msg_response_payload_t response;
res = dm_msg_response_parse((char *)payload_Str, strlen(payload_Str)+1, &response);
res = dm_msg_response_parse((char *)payload_Str, strlen(payload->valuestring)+1, &response);
if (res != SUCCESS_RETURN) {
goto directReturn;
}
......@@ -272,12 +272,12 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
_iotx_linkkit_upstream_callback_remove(atoi(response.id.value), response.code.value_int);
_iotx_linkkit_upstream_mutex_unlock();
}else if (strstr(typeJson->valuestring,KK_LOGIN_TOPIC_REPLY) || strstr(typeJson->valuestring,KK_ONLINE_TOPIC_REPLY)){
}else if (strstr(typeJson->valuestring,KK_LOGIN_TOPIC_REPLY)){
//====todo======
//
INFO_PRINT(" topic:login_reply \n");
dm_msg_response_payload_t response;
res = dm_msg_response_parse((char *)payload_Str, strlen(payload_Str)+1, &response);
res = dm_msg_response_parse((char *)payload_Str, strlen(payload->valuestring)+1, &response);
if (res != SUCCESS_RETURN) {
goto directReturn;
}
......@@ -305,6 +305,9 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
{
ERROR_PRINT("[%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
}
iotx_dm_dev_online(0);//first online,report the online status
usleep(200000);
kk_tsl_post_property(0,NULL);
}else if (strstr(typeJson->valuestring,KK_THING_OTA_DEVICE_UPGRADE)){
INFO_PRINT("ota upgrade... \n");
kk_dm_ota_send(data, strlen(data)+1);
......@@ -1035,7 +1038,6 @@ int _iotx_linkkit_slave_connect(int devid)
return FAIL_RETURN;
}
#if 0
/* Subdev Register */
res = kk_dm_subdev_register(devid);
if (res < SUCCESS_RETURN) {
......@@ -1076,9 +1078,7 @@ int _iotx_linkkit_slave_connect(int devid)
_iotx_linkkit_upstream_mutex_unlock();
}
#endif
/* Subdev Add Topo */
res = kk_dm_subdev_topo_add(devid);
if (res < SUCCESS_RETURN) {
......@@ -1339,7 +1339,7 @@ static int _iotx_linkkit_subdev_login(int devid)
void *semaphore = NULL;
void *callback = NULL;
res = iotx_dm_dev_online(devid);//iotx_dm_subdev_login(devid);
res = iotx_dm_subdev_login(devid);
if (res < SUCCESS_RETURN) {
return FAIL_RETURN;
}
......@@ -1672,18 +1672,18 @@ int iot_linkkit_subdev_query_id(char product_key[IOTX_PRODUCT_KEY_LEN + 1], char
#endif /* #ifdef DEVICE_MODEL_GATEWAY */
int kk_mid_subdev_add(int devType, char productType[PRODUCT_TYPE_MAXLEN], char productCode[PRODUCT_CODE_MAXLEN], char deviceCode[DEVICE_CODE_MAXLEN],char fatherMac[DEVICE_MAC_MAXLEN]){
int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char deviceCode[DEVICE_CODE_MAXLEN],char mac[DEVICE_MAC_MAXLEN],char fatherDeviceCode[DEVICE_CODE_MAXLEN]){
int res = 0;
int devid = 0;
res = dm_mgr_subdev_create(devType, productType,productCode,deviceCode,fatherMac,&devid);
res = dm_mgr_subdev_create(devType,productCode,deviceCode,mac,fatherDeviceCode,&devid);
if (res != SUCCESS_RETURN) {
ERROR_PRINT("subdev create Failed\n");
return FAIL_RETURN;
}
INFO_PRINT("subdev open susseed, devid = %d\n", devid);
res = kk_subDev_insert_db(devType,productCode,deviceCode,fatherMac,"1.1.0");
res = kk_subDev_insert_db(KK_DM_DEVICE_SUBDEV,productCode,deviceCode,fatherDeviceCode,mac,"1.1.0");
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
......@@ -1703,3 +1703,4 @@ int kk_mid_subdev_add(int devType, char productType[PRODUCT_TYPE_MAXLEN], char p
return SUCCESS_RETURN;
}
......@@ -12,6 +12,18 @@ typedef struct {
int subDevNum;
sqlite3 *pDb;
} kk_subDb_ctx_t;
typedef enum{
DB_IDX = 0,
DB_ONLINE,
DB_PRODUCTCODE,
DB_DEVICECODE,
DB_MAC,
DB_FATHERDEVICECODE,
DB_VERSION,
DB_AUTH,
DB_DEVTYPE,
};
static kk_subDb_ctx_t s_kk_subDb_ctx = {NULL,0,NULL};
static kk_subDb_ctx_t *_kk_subDb_get_ctx(void)
......@@ -54,7 +66,8 @@ static int kk_subDev_db_Init(void)
isOnline INTEGER, \
productCode varchar(33), \
deviceCode varchar(33), \
fatherMac varchar(17), \
mac varchar(17), \
fatherDeviceCode varchar(33), \
version varchar(33), \
isAuth INTEGER, \
devType INTEGER)";
......@@ -90,8 +103,9 @@ static int _kk_load_subDevice(void)
INFO_PRINT("_kk_load_subDevice total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
res = dm_mgr_subdev_create(sqlite3_column_int(stmt, 7), "",sqlite3_column_text(stmt, 2),sqlite3_column_text(stmt, 3),
sqlite3_column_text(stmt, 4),&devId);
res = dm_mgr_subdev_create(sqlite3_column_int(stmt, DB_DEVTYPE),sqlite3_column_text(stmt, DB_PRODUCTCODE),
sqlite3_column_text(stmt, DB_DEVICECODE),
sqlite3_column_text(stmt, DB_MAC),sqlite3_column_text(stmt, DB_FATHERDEVICECODE),&devId);
if(res != SUCCESS_RETURN){
ERROR_PRINT("[%s][%d]dm_mgr_subdev_create FAIL!!!\n",__FUNCTION__,__LINE__);
......@@ -104,7 +118,7 @@ static int _kk_load_subDevice(void)
//再上线
iotx_dm_subscribe(devId);
kk_dm_ota_report_version(devId,sqlite3_column_text(stmt, 5));//version
kk_dm_ota_report_version(devId,sqlite3_column_text(stmt, DB_VERSION));//version
//usleep(100000);
}
sqlite3_finalize(stmt);
......@@ -142,7 +156,7 @@ static int _kk_check_subDev_exist(const char* deviceCode)
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
pmac = sqlite3_column_text(stmt, 3);
pmac = sqlite3_column_text(stmt, DB_DEVICECODE);
if(!strcmp(deviceCode,pmac))
{
isExist = 1;
......@@ -159,10 +173,10 @@ static int _kk_check_subDev_exist(const char* deviceCode)
}
int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
char deviceCode[DEVICE_CODE_MAXLEN],char fatherMac[DEVICE_MAC_MAXLEN],char version[DEVICE_VERSION_MAXLEN])
char deviceCode[DEVICE_CODE_MAXLEN],char fatherDeviceCode[DEVICE_CODE_MAXLEN],char version[DEVICE_VERSION_MAXLEN])
{
const char *insertCmd = "insert into SubDeviceInfo (idx,isOnline,productCode,deviceCode,fatherMac,version,isAuth,devType) \
values ('%d','%d', '%s','%s','%s','%s','%d','%d');";
const char *insertCmd = "insert into SubDeviceInfo (idx,isOnline,productCode,deviceCode,mac,fatherMac,version,isAuth,devType) \
values ('%d','%d', '%s','%s','%s','%s','%s','%d','%d');";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
......@@ -175,7 +189,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
return SUCCESS_RETURN;
}
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(insertCmd,ctx->subDevNum,0,productCode,deviceCode,fatherMac,version,0,devType);
sqlCmd = sqlite3_mprintf(insertCmd,ctx->subDevNum,0,productCode,deviceCode,fatherDeviceCode,version,0,devType);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
......@@ -189,7 +203,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
int kk_subDev_delete_byMac(char deviceCode[DEVICE_CODE_MAXLEN])
int kk_subDev_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN])
{
const char *deleteCmd = "delete from SubDeviceInfo where deviceCode = %s;";
char *sqlCmd = NULL;
......@@ -213,7 +227,7 @@ int kk_subDev_delete_byMac(char deviceCode[DEVICE_CODE_MAXLEN])
return SUCCESS_RETURN;
}
int kk_subDev_update_online(int isOnline,const char *device_mac)
int kk_subDev_update_online(int isOnline,const char *deviceCode)
{
char *sqlCmd = NULL;
int len =0;
......@@ -222,7 +236,7 @@ int kk_subDev_update_online(int isOnline,const char *device_mac)
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf("UPDATE SubDeviceInfo SET isOnline=%d WHERE deviceCode=%s",isOnline,device_mac);
sqlCmd = sqlite3_mprintf("UPDATE SubDeviceInfo SET isOnline=%d WHERE deviceCode=%s",isOnline,deviceCode);
INFO_PRINT("kk_subDev_update_online sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
......
This diff is collapsed.
......@@ -1240,14 +1240,14 @@ int kk_msg_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int start_deli,
return SUCCESS_RETURN;
}
int kk_tsl_property_set_byMac(const char mac[DEVICE_MAC_MAXLEN], const char *payload, unsigned int payload_len)
int kk_tsl_property_set_by_devicecode(const char deviceCode[DEVICE_CODE_MAXLEN], const char *payload, unsigned int payload_len)
{
kk_msg_request_payload_t request;
int res = 0, devid = 0;
memset(&request, 0, sizeof(kk_msg_request_payload_t));
res = dm_mgr_get_devId_by_mac(mac, &devid);
res = dm_mgr_get_devId_by_devicecode(deviceCode, &devid);
if(res != SUCCESS_RETURN){
return FAIL_RETURN;
}
......
......@@ -356,7 +356,7 @@ $(TARGET_FILE): $(APPLICATION_OBJECTS) $(LIBRARIES)
@echo -e '\n$@ build success'
else
$(TARGET_FILE): $(APPLICATION_OBJECTS) $(LIBRARIES)
$(LD) $^ $(LINKER_FLAGS) -lm -L. -static -lapi_com -static -lnanomsg -lanl -pthread -static -lev -ltinfo -o $(TARGET_FILE)
$(LD) $^ $(LINKER_FLAGS) -lm -L. -lapi_com -lnanomsg -lanl -pthread -lev -ltinfo -o $(TARGET_FILE)
@echo -e '\n$@ build success'
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