Commit 47872e3f authored by 尹佳钦's avatar 尹佳钦
parents 8d64d301 681bb385
...@@ -30,9 +30,9 @@ ...@@ -30,9 +30,9 @@
#include "kk_product.h" #include "kk_product.h"
//#include "iot_import.h" //#include "iot_import.h"
char g_product_type[PRODUCT_TYPE_LEN]; char g_product_type[PRODUCT_TYPE_LEN]={0};
char g_product_code[PRODUCT_CODE_LEN]; char g_product_code[PRODUCT_CODE_LEN]={0};
char g_device_code[DEVICE_CODE_LEN]; char g_device_code[DEVICE_CODE_LEN] = {0};
#define PLATFORM_WAIT_INFINITE (~0) #define PLATFORM_WAIT_INFINITE (~0)
......
...@@ -221,11 +221,14 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA ...@@ -221,11 +221,14 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
memset(name,0x0,sizeof(name)); memset(name,0x0,sizeof(name));
kk_get_tsl_by_productKey(product_key,name); kk_get_tsl_by_productKey(product_key,name);
tsl_str = kk_load_json(name); tsl_str = kk_load_json(name);
if(tsl_str != NULL)
{
res = kk_tsl_create(tsl_str,strlen(tsl_str),&node->dev_shadow); res = kk_tsl_create(tsl_str,strlen(tsl_str),&node->dev_shadow);
free(tsl_str); free(tsl_str);
if(res != 0){ if(res != 0){
return FAIL_RETURN; return FAIL_RETURN;
} }
}
INIT_LIST_HEAD(&node->linked_list); INIT_LIST_HEAD(&node->linked_list);
list_add_tail(&node->linked_list, &ctx->dev_list); list_add_tail(&node->linked_list, &ctx->dev_list);
...@@ -267,8 +270,8 @@ int dm_mgr_search_mac_by_topic(_IN_ char* topic, _OU_ char mac[DEVI ...@@ -267,8 +270,8 @@ int dm_mgr_search_mac_by_topic(_IN_ char* topic, _OU_ char mac[DEVI
int res = 0; int res = 0;
dm_mgr_dev_node_t *node = NULL; dm_mgr_dev_node_t *node = NULL;
char product_key[PRODUCT_KEY_MAXLEN]; char product_key[PRODUCT_KEY_MAXLEN] = {0};
char device_name[DEVICE_NAME_MAXLEN]; char device_name[DEVICE_NAME_MAXLEN] = {0};
if (topic == NULL) { if (topic == NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
......
...@@ -144,7 +144,7 @@ int dm_queue_msg_insert(void *data) ...@@ -144,7 +144,7 @@ int dm_queue_msg_insert(void *data)
node = malloc(sizeof(dm_queue_msg_node_t)); node = malloc(sizeof(dm_queue_msg_node_t));
if (node == NULL) { if (node == NULL) {
_dm_queue_unlock(); _dm_queue_unlock();
return DM_MEMORY_NOT_ENOUGH; return MEMORY_NOT_ENOUGH;
} }
memset(node, 0, sizeof(dm_queue_msg_node_t)); memset(node, 0, sizeof(dm_queue_msg_node_t));
......
...@@ -1743,6 +1743,7 @@ int iot_linkkit_subdev_query_id(char product_key[IOTX_PRODUCT_KEY_LEN + 1], char ...@@ -1743,6 +1743,7 @@ int iot_linkkit_subdev_query_id(char product_key[IOTX_PRODUCT_KEY_LEN + 1], char
int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEVICE_NAME_MAXLEN], char device_secret[DEVICE_SECRET_MAXLEN],char device_mac[DEVICE_MAC_MAXLEN]){ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEVICE_NAME_MAXLEN], char device_secret[DEVICE_SECRET_MAXLEN],char device_mac[DEVICE_MAC_MAXLEN]){
int res = 0; int res = 0;
int devid = 0; int devid = 0;
res = dm_mgr_subdev_create(product_key,device_name,device_secret,device_mac,&devid); res = dm_mgr_subdev_create(product_key,device_name,device_secret,device_mac,&devid);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
printf("subdev create Failed\n"); printf("subdev create Failed\n");
...@@ -1750,7 +1751,11 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV ...@@ -1750,7 +1751,11 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV
} }
printf("subdev open susseed, devid = %d\n", devid); printf("subdev open susseed, devid = %d\n", devid);
res = kk_subDev_insert_db(0,device_mac,product_key,device_secret,device_name);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
_iotx_linkkit_mutex_lock();
res = _iotx_linkkit_slave_connect(devid); res = _iotx_linkkit_slave_connect(devid);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
_iotx_linkkit_mutex_unlock(); _iotx_linkkit_mutex_unlock();
...@@ -1762,7 +1767,7 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV ...@@ -1762,7 +1767,7 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV
_iotx_linkkit_mutex_unlock(); _iotx_linkkit_mutex_unlock();
return FAIL_RETURN; return FAIL_RETURN;
} }
_iotx_linkkit_mutex_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
......
#include <stdio.h>
#include "kk_tsl_api.h"
#include "kk_sub_db.h"
#include "sqlite3.h"
#define KK_SUB_DB_FILE "subDevice.db"
typedef struct {
void *mutex;
int subDevNum;
sqlite3 *pDb;
} kk_subDb_ctx_t;
static kk_subDb_ctx_t s_kk_subDb_ctx = {NULL,0,NULL};
static kk_subDb_ctx_t *_kk_subDb_get_ctx(void)
{
return &s_kk_subDb_ctx;
}
static void _kk_subDb_lock(void)
{
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
if (ctx->mutex) {
HAL_MutexLock(ctx->mutex);
}
}
static void _kk_subDb_unlock(void)
{
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
if (ctx->mutex) {
HAL_MutexUnlock(ctx->mutex);
}
}
static int kk_subDev_db_Init(void)
{
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
//eUtils_LockLock(&sLock);
_kk_subDb_lock();
if (sqlite3_open_v2(KK_SUB_DB_FILE, &ctx->pDb, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX, NULL) != SQLITE_OK)
{
printf("Error initialising linkage database (%s)", sqlite3_errmsg(ctx->pDb));
_kk_subDb_unlock();
return FAIL_RETURN;
}
printf("sub db Database opened\n");
{
const char *pSubDevTable = "CREATE TABLE IF NOT EXISTS SubDeviceInfo(idx INTEGER,isOnline INTEGER,deviceMac varchar(17),productId varchar(33), deviceSN varchar(33), deviceId varchar(33))";
char *pcErr;
// DBG_vPrintf(DBG_SQL, "Execute SQL: '%s'\n", pConditionTableDef);
if (sqlite3_exec(ctx->pDb, pSubDevTable, NULL, NULL, &pcErr) != SQLITE_OK)
{
printf("Error creating table (%s)\n", pcErr);
sqlite3_free(pcErr);
//eUtils_LockUnlock(&sLock);
_kk_subDb_unlock();
return FAIL_RETURN;
}
}
//eUtils_LockUnlock(&sLock);
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
static int _kk_load_subDevice(void)
{
const char *searchCmd = "select * from SubDeviceInfo;";
sqlite3_stmt *stmt;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
int devId;
int res = 0;
_kk_subDb_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
printf("_kk_load_subDevice total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
res = dm_mgr_subdev_create(sqlite3_column_text(stmt, 2),sqlite3_column_text(stmt, 3),sqlite3_column_text(stmt, 4),
sqlite3_column_text(stmt, 5),&devId);
if(res != SUCCESS_RETURN){
printf("[%s][%d]dm_mgr_subdev_create FAIL!!!\n",__FUNCTION__,__LINE__);
}
else{
ctx->subDevNum++;
}
iotx_dm_subscribe(devId);
usleep(100000);
}
sqlite3_finalize(stmt);
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
int kk_subDb_init(void)
{
int res = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
/* Create Mutex */
ctx->mutex = HAL_MutexCreate();
if (ctx->mutex == NULL) {
return FAIL_RETURN;
}
res = kk_subDev_db_Init();
if(res != SUCCESS_RETURN){
printf("[%s][%d]kk_wlist_db_Init FAIL!!!\n",__FUNCTION__,__LINE__);
}
_kk_load_subDevice();
return SUCCESS_RETURN;
}
static int _kk_check_subDev_exist(const char* device_mac)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *pmac = NULL;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
const char *searchCmd = "select * from SubDeviceInfo;";
_kk_subDb_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
printf("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
pmac = sqlite3_column_text(stmt, 1);
if(!strcmp(device_mac,pmac))
{
isExist = 1;
break;
}
}
printf("\n");
sqlite3_finalize(stmt);
_kk_subDb_unlock();
return isExist;
}
int kk_subDev_insert_db(int isOnline,char device_mac[DEVICE_MAC_MAXLEN],char product_Id[PRODUCT_KEY_MAXLEN], \
char device_SN[DEVICE_SN_MAXLEN],char device_Id[DEVICE_NAME_MAXLEN])
{
const char *insertCmd = "insert into SubDeviceInfo (idx,isOnline, deviceMac, productId,deviceSN,deviceId) values ('%d','%d', '%s', '%s','%s','%s');";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
if(_kk_check_subDev_exist((const char*)device_mac) == 1)
{
printf("[%s][%d] DATA ALREADY EXIST!!!\n",__FUNCTION__,__LINE__);
return SUCCESS_RETURN;
}
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(insertCmd,ctx->subDevNum,isOnline,device_mac,product_Id,device_SN,device_Id);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
printf("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
printf("Table insert data successfully\n");
}
sqlite3_free(sqlCmd);
ctx->subDevNum++;
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
int kk_subDev_delete_byMac(char device_mac[DEVICE_MAC_MAXLEN])
{
const char *deleteCmd = "delete from SubDeviceInfo where deviceMac = %s;";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,device_mac);
printf("Table delete data sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
printf("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
printf("Table delete data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
int kk_subDev_update_online(int isOnline,const char *device_mac)
{
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 isOnline=%d WHERE device_mac=%s",isOnline,device_mac);
printf("kk_subDev_update_online sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
printf("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
printf("Table updata data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_subDb_unlock();
return SUCCESS_RETURN;
}
#ifndef _KK_SUBDEV_DB_H_
#define _KK_SUBDEV_DB_H_
#include "kk_tsl_common.h"
typedef struct {
int isOnline;
int index;
char device_mac[DEVICE_MAC_MAXLEN];
char product_id[PRODUCT_KEY_MAXLEN];
char device_sn[DEVICE_SN_MAXLEN];
char device_id[DEVICE_NAME_MAXLEN];
} kk_dm_subdev_t;
int kk_subDb_init(void);
int kk_subDev_insert_db(int isOnline,char device_mac[DEVICE_MAC_MAXLEN],char product_Id[PRODUCT_KEY_MAXLEN], \
char device_SN[DEVICE_SN_MAXLEN],char device_Id[DEVICE_NAME_MAXLEN]);
int kk_subDev_delete_byMac(char device_mac[DEVICE_MAC_MAXLEN]);
int kk_subDev_update_online(int isOnline,const char *device_mac);
#endif
...@@ -71,7 +71,6 @@ static int kk_wlist_db_Init(void) ...@@ -71,7 +71,6 @@ static int kk_wlist_db_Init(void)
} }
} }
printf("linkag Database initialised\n");
//eUtils_LockUnlock(&sLock); //eUtils_LockUnlock(&sLock);
_kk_wlist_unlock(); _kk_wlist_unlock();
...@@ -106,21 +105,13 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char ...@@ -106,21 +105,13 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char
{ {
const char *insertCmd = "insert into WhiteList (idx, deviceMac, productId,deviceSN,deviceId) values ('%d', '%s', '%s','%s','%s');"; const char *insertCmd = "insert into WhiteList (idx, deviceMac, productId,deviceSN,deviceId) values ('%d', '%s', '%s','%s','%s');";
char *sqlCmd = NULL; char *sqlCmd = NULL;
int len =0;
int rc = 0; int rc = 0;
char *zErrMsg = 0; char *zErrMsg = 0;
kk_wlist_ctx_t *ctx = _kk_wlist_get_ctx(); kk_wlist_ctx_t *ctx = _kk_wlist_get_ctx();
_kk_wlist_lock(); _kk_wlist_lock();
len = strlen(insertCmd)+DEVICE_MAC_MAXLEN+DEVICE_SN_MAXLEN+PRODUCT_KEY_MAXLEN+DEVICE_NAME_MAXLEN;
sqlCmd = (char*)malloc(len); sqlCmd = sqlite3_mprintf(insertCmd, index,device_mac,product_Id,device_SN,device_Id);
if(sqlCmd == NULL)
{
_kk_wlist_unlock();
return MEMORY_NOT_ENOUGH;
}
memset(sqlCmd,0x0,len);
sprintf(sqlCmd, insertCmd, index,device_mac,product_Id,device_SN,device_Id);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg); rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){ if( rc != SQLITE_OK ){
...@@ -129,8 +120,7 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char ...@@ -129,8 +120,7 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char
}else{ }else{
printf("Table insert data successfully\n"); printf("Table insert data successfully\n");
} }
free(sqlCmd); sqlite3_free(sqlCmd);
sqlCmd = NULL;
_kk_wlist_unlock(); _kk_wlist_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -139,21 +129,12 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN]) ...@@ -139,21 +129,12 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN])
{ {
const char *deleteCmd = "delete from WhiteList where deviceMac = %s;"; const char *deleteCmd = "delete from WhiteList where deviceMac = %s;";
char *sqlCmd = NULL; char *sqlCmd = NULL;
int len =0;
int rc = 0; int rc = 0;
char *zErrMsg = 0; char *zErrMsg = 0;
kk_wlist_ctx_t *ctx = _kk_wlist_get_ctx(); kk_wlist_ctx_t *ctx = _kk_wlist_get_ctx();
_kk_wlist_lock(); _kk_wlist_lock();
len = strlen(deleteCmd)+DEVICE_MAC_MAXLEN; sqlCmd = sqlite3_mprintf( deleteCmd,device_mac);
sqlCmd = (char*)malloc(len);
if(sqlCmd == NULL)
{
_kk_wlist_unlock();
return MEMORY_NOT_ENOUGH;
}
memset(sqlCmd,0x0,len);
sprintf(sqlCmd, deleteCmd,device_mac);
printf("Table delete data sqlCmd:%s\n",sqlCmd); printf("Table delete data sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg); rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){ if( rc != SQLITE_OK ){
...@@ -162,8 +143,8 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN]) ...@@ -162,8 +143,8 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN])
}else{ }else{
printf("Table delete data successfully\n"); printf("Table delete data successfully\n");
} }
free(sqlCmd); sqlite3_free(sqlCmd);
sqlCmd = NULL;
_kk_wlist_unlock(); _kk_wlist_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
......
...@@ -20,10 +20,23 @@ ...@@ -20,10 +20,23 @@
void mid_cb(void* data, int len){ void mid_cb(void* data, int len){
if (data != NULL){ if (data != NULL){
printf("app2mid_cb: %s RECEIVED \r\n", data);
char *out;cJSON *json, *topic, *payload; char *out;
cJSON *json;
cJSON *topic;
cJSON*payload;
int res; int res;
void* buf = malloc(len);
memcpy(buf, data, len);
res = dm_queue_msg_insert((void *)buf);
if (res != SUCCESS_RETURN) {
free(buf);
//return FAIL_RETURN;
}
json=cJSON_Parse(data); json=cJSON_Parse(data);
if (!json) { if (!json) {
printf("Error before: [%s]\n","cJSON_Parse"); printf("Error before: [%s]\n","cJSON_Parse");
...@@ -31,31 +44,28 @@ void mid_cb(void* data, int len){ ...@@ -31,31 +44,28 @@ void mid_cb(void* data, int len){
else else
{ {
topic = cJSON_GetObjectItem(json, "topic"); topic = cJSON_GetObjectItem(json, "topic");
payload = cJSON_GetObjectItem(json, "payload"); if (topic != NULL && (strstr(topic->valuestring, "register_reply") != NULL ||
printf("mid_cb topic: [%s] ,payload= %s \n",topic->valuestring,payload->valuestring ); strstr(topic->valuestring, "add_reply") != NULL ||
if (strcmp(payload->valuestring, "addsub")==0){ strstr(topic->valuestring, "login_reply") != NULL ||
//kk_mid_subdev_add("a1OYuSallan","allanWno8yDdsjCX15iq",""); strstr(topic->valuestring, "offline_reply") != NULL))
}else{ {
void* buf = malloc(len); printf("This topic don't send to platform: %s \r\n", topic->valuestring);
memcpy(buf, data, len); return;
int res = dm_queue_msg_insert((void *)buf);
if (res != SUCCESS_RETURN) {
free(buf);
//return FAIL_RETURN;
} }
//kk_tsl_service_property_set(topic->valuestring, payload->valuestring, strlen(payload->valuestring), NULL);
} payload = cJSON_GetObjectItem(json, "payload");
char mac[DEVICE_MAC_MAXLEN];
char mac[DEVICE_MAC_MAXLEN] = {0};
res =dm_mgr_search_mac_by_topic(topic->valuestring, mac); res =dm_mgr_search_mac_by_topic(topic->valuestring, mac);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return; return;
} }
printf("dm_mgr_search_mac_by_topic mac: %s \r\n", mac);
cJSON * jsonplay=cJSON_Parse(payload->valuestring); cJSON * jsonplay=cJSON_Parse(payload->valuestring);
cJSON_AddStringToObject(jsonplay, "mac", mac); cJSON_AddStringToObject(jsonplay, "mac", mac);
void* out = cJSON_Print(jsonplay); void* out = cJSON_Print(jsonplay);
printf("dm_mgr_search_mac_by_topic out: %s \r\n", out);
kk_ipc_send(IPC_MID2PLAT, out, strlen(out)); kk_ipc_send(IPC_MID2PLAT, out, strlen(out));
free(out); free(out);
cJSON_Delete(jsonplay); cJSON_Delete(jsonplay);
...@@ -69,7 +79,7 @@ void mid_cb(void* data, int len){ ...@@ -69,7 +79,7 @@ void mid_cb(void* data, int len){
void mid2p_cb(void* data, int len){ void mid2p_cb(void* data, int len){
if (data != NULL){ if (data != NULL){
printf("mid2plat_cb: %s RECEIVED \r\n", data); //printf("mid2plat_cb: %s RECEIVED \r\n", data);
void* buf = malloc(len); void* buf = malloc(len);
memcpy(buf, data, len); memcpy(buf, data, len);
int res = dm_queue_msg_insert2((void *)buf); int res = dm_queue_msg_insert2((void *)buf);
...@@ -86,7 +96,13 @@ void kk_platMsg_handle(void* data){ ...@@ -86,7 +96,13 @@ void kk_platMsg_handle(void* data){
char *out; char *out;
int res = 0; int res = 0;
cJSON *json, *method, *params; cJSON *json;
cJSON *method;
cJSON *params;
cJSON *jsonPay;
cJSON *proType;
cJSON *proCode;
cJSON *mac;
json=cJSON_Parse(data); json=cJSON_Parse(data);
if (!json) { if (!json) {
...@@ -94,32 +110,23 @@ void kk_platMsg_handle(void* data){ ...@@ -94,32 +110,23 @@ void kk_platMsg_handle(void* data){
} }
else{ else{
method = cJSON_GetObjectItem(json, "method"); method = cJSON_GetObjectItem(json, "method");
mac = cJSON_GetObjectItem(json, "mac");
if (method != NULL && strcmp(method->valuestring, "thing.topo.add")==0){ if (method != NULL && strcmp(method->valuestring, "thing.topo.add")==0){
cJSON *jsonPay, *proType, *proCode, *mac;
params = cJSON_GetObjectItem(json, "params");
jsonPay =cJSON_Parse(params->valuestring);
if (!jsonPay) { jsonPay = cJSON_GetObjectItem(json, "params");
printf("Error before: [%s]\n","cJSON_Parse");
}else{
proType = cJSON_GetObjectItem(jsonPay, "productType"); proType = cJSON_GetObjectItem(jsonPay, "productType");
proCode = cJSON_GetObjectItem(jsonPay, "productCode"); proCode = cJSON_GetObjectItem(jsonPay, "productCode");
mac = cJSON_GetObjectItem(jsonPay, "mac");
printf("productType productCode : [%s][%s]\n",proType, proCode);
kk_set_tsl_by_productKey(proCode->valuestring,"model.json");
kk_mid_subdev_add(proType->valuestring,proCode->valuestring,"", mac->valuestring);
cJSON_Delete(jsonPay);
}
}else if (method != NULL && strcmp(method->valuestring, "thing.event.property.post")==0){
cJSON *mac;
mac = cJSON_GetObjectItem(json, "mac");
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);
//kk_tsl_service_property_set(topic->valuestring, data, strlen(data), NULL); }else if (method != NULL && mac != NULL){
printf("save property and send to cloud \n");
kk_tsl_property_set_byMac(mac->valuestring, data, strlen(data)+1);
}else{ }else{
printf("kk_platMsg_handle data: [%s]\n",data); printf("kk_platMsg_handle data: don't handle it [%s]\n",data);
//kk_tsl_service_property_set(topic->valuestring, payload->valuestring, strlen(payload->valuestring), NULL); //kk_tsl_service_property_set(topic->valuestring, payload->valuestring, strlen(payload->valuestring), NULL);
} }
...@@ -275,25 +282,19 @@ int main(const int argc, const char **argv) ...@@ -275,25 +282,19 @@ int main(const int argc, const char **argv)
IOT_Linkkit_Close(mid_ctx->master_devid); IOT_Linkkit_Close(mid_ctx->master_devid);
return -1; return -1;
} }
char buf[100] = {0};
int ct = 0; int ct = 0;
for (;;) { for (;;) {
usleep(4000000); usleep(200000);
kk_platMsg_dispatch();
if (ct == 0){ if (ct == 0){
ct =1; ct =1;
void* buf = "{ \"msgId\": \"7\", \"version\": \"1.0\", \"mac\": \"588E81FFFED3834A\", \"method\": \"thing.topo.add\", \"params\": { \"AppVersion\": \"10\", \"deviceType\": \"1\", \"deviceCode\": \"2\", \"productType\": \"3\", \"productCode\": \"4\" }}";
kk_set_tsl_by_productKey("a1OYuSallan","model.json"); kk_platMsg_handle(buf);
kk_mid_subdev_add("a1OYuSallan","allanWno8yDdsjCX15iq","","aabbccddeeff1122"); //kk_set_tsl_by_productKey("a1OYuSallan","model.json");
//kk_mid_subdev_add("a1OYuSallan","allanWno8yDdsjCX15iq","","aabbccddeeff1122");
} }
/*memset(buf, 0, 100);
sprintf(buf , "send data app time = %d\n", getSysTime());
printf("M2A: %s", buf);
kk_ipc_send(IPC_MID2APP, buf, strlen(buf)+1);
memset(buf, 0, 100);
sprintf(buf, "send data to plat time = %d\n", getSysTime());
printf("M2P: %s", buf);
kk_ipc_send(IPC_MID2PLAT, buf, strlen(buf) + 1);*/
} }
} }
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