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

【修改内容】1,去掉一些调试打印;2,修改子设备离线后主机重启无法上报online的bug。

【提交人】陈伟灿
parent e9599f1d
...@@ -202,7 +202,7 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy ...@@ -202,7 +202,7 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy
} }
} }
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], _OU_ int *devid) _IN_ char mac[DEVICE_MAC_MAXLEN],_IN_ char fatherDeviceCode[DEVICE_CODE_MAXLEN],_IN_ int isOffline, _OU_ int *devid)
{ {
int res = 0; int res = 0;
dm_mgr_ctx *ctx = _dm_mgr_get_ctx(); dm_mgr_ctx *ctx = _dm_mgr_get_ctx();
...@@ -235,6 +235,7 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA ...@@ -235,6 +235,7 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA
node->devid = _dm_mgr_next_devid(); node->devid = _dm_mgr_next_devid();
node->dev_type = dev_type; node->dev_type = dev_type;
node->dev_shadow = NULL; node->dev_shadow = NULL;
node->isOffline = isOffline;
if (productCode != NULL) { if (productCode != NULL) {
memcpy(node->productCode, productCode, strlen(productCode)); memcpy(node->productCode, productCode, strlen(productCode));
} }
...@@ -247,7 +248,7 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA ...@@ -247,7 +248,7 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA
if (dev_type != KK_DM_DEVICE_CCU && fatherDeviceCode != NULL) { if (dev_type != KK_DM_DEVICE_CCU && fatherDeviceCode != NULL) {
memcpy(node->fatherDeviceCode, fatherDeviceCode, strlen(fatherDeviceCode)); memcpy(node->fatherDeviceCode, fatherDeviceCode, strlen(fatherDeviceCode));
} }
node->timestamp = HAL_UptimeMs(); node->timestamp = 0;
//node->dev_status = IOTX_DM_DEV_STATUS_AUTHORIZED; //node->dev_status = IOTX_DM_DEV_STATUS_AUTHORIZED;
tsl_str = kk_load_json(productCode, dev_type); tsl_str = kk_load_json(productCode, dev_type);
if(tsl_str != NULL) if(tsl_str != NULL)
...@@ -402,7 +403,7 @@ int dm_mgr_check_heartbeat_timeout(uint64_t timestamp) ...@@ -402,7 +403,7 @@ int dm_mgr_check_heartbeat_timeout(uint64_t timestamp)
//return DEVICE_HEARTBEAT_TIMEOUT; //return DEVICE_HEARTBEAT_TIMEOUT;
} }
else{ else{
if(search_node->isOffline == 1){//need send online if(search_node->isOffline == 1 && search_node->timestamp != 0) {//need send online
INFO_PRINT("---------->dev online again,send online\n"); INFO_PRINT("---------->dev online again,send online\n");
search_node->isOffline = 0; search_node->isOffline = 0;
iotx_dm_dev_online(search_node->devid); iotx_dm_dev_online(search_node->devid);
...@@ -473,7 +474,7 @@ int dm_mgr_init(void) ...@@ -473,7 +474,7 @@ int dm_mgr_init(void)
HAL_Get_mac(mac); HAL_Get_mac(mac);
res = dm_mgr_device_create(KK_DM_DEVICE_CCU,KK_DM_CCU_DEVICE_PRODUCT_CODE,"CCU_66666",mac,"",&devId); res = dm_mgr_device_create(KK_DM_DEVICE_CCU,KK_DM_CCU_DEVICE_PRODUCT_CODE,"CCU_66666",mac,"",0,&devId);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
goto ERROR; goto ERROR;
} }
...@@ -1340,10 +1341,10 @@ int dm_mgr_ota_report_version(_IN_ int devid, char *version) ...@@ -1340,10 +1341,10 @@ int dm_mgr_ota_report_version(_IN_ int devid, char *version)
int dm_mgr_subdev_create(int devtype,_IN_ char productCode[PRODUCT_CODE_MAXLEN], _IN_ char deviceCode[DEVICE_CODE_MAXLEN], int dm_mgr_subdev_create(int devtype,_IN_ char productCode[PRODUCT_CODE_MAXLEN], _IN_ char deviceCode[DEVICE_CODE_MAXLEN],
_IN_ char mac[DEVICE_MAC_MAXLEN],_IN_ char fatherDeviceCode[DEVICE_CODE_MAXLEN], _OU_ int *devid){ _IN_ char mac[DEVICE_MAC_MAXLEN],_IN_ char fatherDeviceCode[DEVICE_CODE_MAXLEN],_IN_ int isOffline, _OU_ int *devid){
int res = 0; int res = 0;
res = dm_mgr_device_create(devtype,productCode,deviceCode,mac,fatherDeviceCode, devid); res = dm_mgr_device_create(devtype,productCode,deviceCode,mac,fatherDeviceCode,isOffline,devid);
if(TSL_ALREADY_EXIST == res) if(TSL_ALREADY_EXIST == res)
{ {
ERROR_PRINT("SUBDEV ALREADY EXIST!!!\n"); ERROR_PRINT("SUBDEV ALREADY EXIST!!!\n");
......
...@@ -1732,7 +1732,7 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d ...@@ -1732,7 +1732,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;
res = dm_mgr_subdev_create(devType,productCode,deviceCode,mac,fatherDeviceCode,&devid); res = dm_mgr_subdev_create(devType,productCode,deviceCode,mac,fatherDeviceCode,0,&devid);
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");
return FAIL_RETURN; return FAIL_RETURN;
......
...@@ -113,7 +113,7 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie ...@@ -113,7 +113,7 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie
const char *searchCmd = "select * from PropertiesInfo;"; const char *searchCmd = "select * from PropertiesInfo;";
_kk_property_db_lock(); _kk_property_db_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt)); //INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = sqlite3_column_text(stmt, DB_DEVICECODE); pDeviceCode = sqlite3_column_text(stmt, DB_DEVICECODE);
pIdentifier = sqlite3_column_text(stmt, DB_IDENTIFITER); pIdentifier = sqlite3_column_text(stmt, DB_IDENTIFITER);
...@@ -123,7 +123,7 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie ...@@ -123,7 +123,7 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie
break; break;
} }
} }
INFO_PRINT("\n"); //INFO_PRINT("\n");
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
_kk_property_db_unlock(); _kk_property_db_unlock();
return isExist; return isExist;
...@@ -155,7 +155,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d ...@@ -155,7 +155,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d
ERROR_PRINT("SQL error: %s\n", zErrMsg); ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg); sqlite3_free(zErrMsg);
}else{ }else{
INFO_PRINT("sub device insert data successfully\n"); //INFO_PRINT("sub device insert data successfully\n");
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
_kk_property_db_unlock(); _kk_property_db_unlock();
...@@ -179,7 +179,7 @@ int kk_property_db_update_value(const char *deviceCode,const char *identifier,co ...@@ -179,7 +179,7 @@ int kk_property_db_update_value(const char *deviceCode,const char *identifier,co
ERROR_PRINT("SQL error: %s\n", zErrMsg); ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg); sqlite3_free(zErrMsg);
}else{ }else{
DEBUG_PRINT("kk_property_db_update_value successfully\n"); //DEBUG_PRINT("kk_property_db_update_value successfully\n");
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
_kk_property_db_unlock(); _kk_property_db_unlock();
......
...@@ -103,10 +103,12 @@ static int _kk_load_subDevice(void) ...@@ -103,10 +103,12 @@ static int _kk_load_subDevice(void)
_kk_subDb_lock(); _kk_subDb_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
res = dm_mgr_subdev_create(sqlite3_column_int(stmt, DB_DEVTYPE),
res = dm_mgr_subdev_create(sqlite3_column_int(stmt, DB_DEVTYPE),sqlite3_column_text(stmt, DB_PRODUCTCODE), sqlite3_column_text(stmt, DB_PRODUCTCODE),
sqlite3_column_text(stmt, DB_DEVICECODE), sqlite3_column_text(stmt, DB_DEVICECODE),
sqlite3_column_text(stmt, DB_MAC),sqlite3_column_text(stmt, DB_FATHERDEVICECODE),&devId); sqlite3_column_text(stmt, DB_MAC),
sqlite3_column_text(stmt, DB_FATHERDEVICECODE),
sqlite3_column_int(stmt, DB_ONLINE),&devId);
if(res != SUCCESS_RETURN){ if(res != SUCCESS_RETURN){
ERROR_PRINT("[%s][%d]dm_mgr_subdev_create FAIL!!!\n",__FUNCTION__,__LINE__); ERROR_PRINT("[%s][%d]dm_mgr_subdev_create FAIL!!!\n",__FUNCTION__,__LINE__);
...@@ -120,8 +122,8 @@ static int _kk_load_subDevice(void) ...@@ -120,8 +122,8 @@ static int _kk_load_subDevice(void)
//sync the data from property db //sync the data from property db
kk_property_sync_values(sqlite3_column_text(stmt, DB_DEVICECODE)); kk_property_sync_values(sqlite3_column_text(stmt, DB_DEVICECODE));
usleep(100000); usleep(100000);
//post the property to cloud //post the property to cloud
dm_msg_thing_property_post_all(sqlite3_column_text(stmt, DB_DEVICECODE)); dm_msg_thing_property_post_all(sqlite3_column_text(stmt, DB_DEVICECODE));
//kk_dm_ota_report_version(devId,sqlite3_column_text(stmt, DB_VERSION));//post version //kk_dm_ota_report_version(devId,sqlite3_column_text(stmt, DB_VERSION));//post version
...@@ -160,7 +162,7 @@ static int _kk_check_subDev_exist(const char* deviceCode) ...@@ -160,7 +162,7 @@ static int _kk_check_subDev_exist(const char* deviceCode)
const char *searchCmd = "select * from SubDeviceInfo;"; const char *searchCmd = "select * from SubDeviceInfo;";
_kk_subDb_lock(); _kk_subDb_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt)); //INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
pmac = sqlite3_column_text(stmt, DB_DEVICECODE); pmac = sqlite3_column_text(stmt, DB_DEVICECODE);
if(!strcmp(deviceCode,pmac)) if(!strcmp(deviceCode,pmac))
...@@ -202,7 +204,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \ ...@@ -202,7 +204,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
ERROR_PRINT("SQL error: %s\n", zErrMsg); ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg); sqlite3_free(zErrMsg);
}else{ }else{
INFO_PRINT("sub device insert data successfully\n"); //INFO_PRINT("sub device insert data successfully\n");
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
ctx->subDevNum++; ctx->subDevNum++;
...@@ -226,7 +228,7 @@ int kk_subDev_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN]) ...@@ -226,7 +228,7 @@ int kk_subDev_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN])
ERROR_PRINT("SQL error: %s\n", zErrMsg); ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg); sqlite3_free(zErrMsg);
}else{ }else{
INFO_PRINT("Table delete data successfully\n"); //INFO_PRINT("Table delete data successfully\n");
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
_kk_subDb_unlock(); _kk_subDb_unlock();
...@@ -241,7 +243,7 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode) ...@@ -241,7 +243,7 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode)
char *zErrMsg = 0; char *zErrMsg = 0;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx(); kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
_kk_subDb_lock(); //_kk_subDb_lock();
sqlCmd = sqlite3_mprintf("UPDATE SubDeviceInfo SET isOffline=%d WHERE deviceCode= '%s'",isOffline,deviceCode); sqlCmd = sqlite3_mprintf("UPDATE SubDeviceInfo SET isOffline=%d WHERE deviceCode= '%s'",isOffline,deviceCode);
INFO_PRINT("kk_subDev_update_offline sqlCmd:%s\n",sqlCmd); INFO_PRINT("kk_subDev_update_offline sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg); rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
...@@ -249,10 +251,10 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode) ...@@ -249,10 +251,10 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode)
ERROR_PRINT("SQL error: %s\n", zErrMsg); ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg); sqlite3_free(zErrMsg);
}else{ }else{
INFO_PRINT("Table updata data successfully\n"); //INFO_PRINT("Table updata data successfully\n");
} }
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
_kk_subDb_unlock(); //_kk_subDb_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int kk_subDev_update_auth(int isAuth,const char *deviceCode) int kk_subDev_update_auth(int isAuth,const char *deviceCode)
......
#include "kk_tsl_common.h" #include "kk_tsl_common.h"
typedef int (*kk_tsl_data_set)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); typedef int (*kk_tsl_data_set)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
typedef int (*kk_tsl_array_set)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, typedef int (*kk_tsl_array_set)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
typedef int (*kk_tsl_data_get)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); typedef int (*kk_tsl_data_get)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
typedef int (*kk_tsl_array_get)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); typedef int (*kk_tsl_array_get)(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
typedef void (*kk_tsl_data_free)(_IN_ kk_tsl_data_value_t *data_value); typedef void (*kk_tsl_data_free)(_IN_ kk_tsl_data_value_t *data_value);
typedef void (*kk_tsl_array_free)(_IN_ kk_tsl_data_value_t *data_value); typedef void (*kk_tsl_array_free)(_IN_ kk_tsl_data_value_t *data_value);
typedef void (*kk_tsl_data_print)(_IN_ kk_tsl_data_value_t *data_value); typedef void (*kk_tsl_data_print)(_IN_ kk_tsl_data_value_t *data_value);
typedef struct { typedef struct {
kk_tsl_data_type_e type; kk_tsl_data_type_e type;
const char *name; const char *name;
kk_tsl_data_set func_set; kk_tsl_data_set func_set;
kk_tsl_array_set func_array_set; kk_tsl_array_set func_array_set;
kk_tsl_data_get func_get; kk_tsl_data_get func_get;
kk_tsl_array_get func_array_get; kk_tsl_array_get func_array_get;
kk_tsl_data_free func_free; kk_tsl_data_free func_free;
kk_tsl_array_free func_array_free; kk_tsl_array_free func_array_free;
} kk_tsl_data_type_mapping_t; } kk_tsl_data_type_mapping_t;
//Data Set //Data Set
static int _kk_tsl_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); static int _kk_tsl_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
static int _kk_tsl_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); static int _kk_tsl_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
static int _kk_tsl_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); static int _kk_tsl_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
static int _kk_tsl_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); static int _kk_tsl_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
static int _kk_tsl_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); static int _kk_tsl_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
static int _kk_tsl_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); static int _kk_tsl_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
static int _kk_tsl_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len); static int _kk_tsl_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len);
//Array Data Set //Array Data Set
static int _kk_tsl_array_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
static int _kk_tsl_array_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
static int _kk_tsl_array_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
static int _kk_tsl_array_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
static int _kk_tsl_array_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
static int _kk_tsl_array_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
static int _kk_tsl_array_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index); _IN_ int index);
//Data Get //Data Get
static int _kk_tsl_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); static int _kk_tsl_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
static int _kk_tsl_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); static int _kk_tsl_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
static int _kk_tsl_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); static int _kk_tsl_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
static int _kk_tsl_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); static int _kk_tsl_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
static int _kk_tsl_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); static int _kk_tsl_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
static int _kk_tsl_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); static int _kk_tsl_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
static int _kk_tsl_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value); static int _kk_tsl_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value);
//Array Data Get //Array Data Get
static int _kk_tsl_array_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); static int _kk_tsl_array_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
static int _kk_tsl_array_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); static int _kk_tsl_array_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
static int _kk_tsl_array_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); static int _kk_tsl_array_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
static int _kk_tsl_array_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); static int _kk_tsl_array_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
static int _kk_tsl_array_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); static int _kk_tsl_array_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
static int _kk_tsl_array_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); static int _kk_tsl_array_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
static int _kk_tsl_array_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index); static int _kk_tsl_array_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index);
//Data Free //Data Free
static void _kk_tsl_int_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_int_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_float_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_float_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_double_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_double_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_text_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_text_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_enum_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_enum_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_date_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_date_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_bool_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_bool_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_struct_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_struct_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_property_free(_IN_ kk_tsl_data_t *property); static void _kk_tsl_property_free(_IN_ kk_tsl_data_t *property);
//Array Data Free //Array Data Free
static void _kk_tsl_array_int_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_int_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_float_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_float_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_double_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_double_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_text_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_text_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_enum_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_enum_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_date_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_date_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_bool_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_bool_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_array_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_array_free(_IN_ kk_tsl_data_value_t *data_value);
static void _kk_tsl_array_struct_free(_IN_ kk_tsl_data_value_t *data_value); static void _kk_tsl_array_struct_free(_IN_ kk_tsl_data_value_t *data_value);
static kk_tsl_data_type_mapping_t g_iotx_data_type_mapping[] = { static kk_tsl_data_type_mapping_t g_iotx_data_type_mapping[] = {
{KK_TSL_DATA_TYPE_NONE, "none", NULL, NULL, NULL, NULL, NULL, NULL }, {KK_TSL_DATA_TYPE_NONE, "none", NULL, NULL, NULL, NULL, NULL, NULL },
{KK_TSL_DATA_TYPE_INT, "int", _kk_tsl_int_set, _kk_tsl_array_int_set, _kk_tsl_int_get, _kk_tsl_array_int_get, _kk_tsl_int_free, _kk_tsl_array_int_free }, {KK_TSL_DATA_TYPE_INT, "int", _kk_tsl_int_set, _kk_tsl_array_int_set, _kk_tsl_int_get, _kk_tsl_array_int_get, _kk_tsl_int_free, _kk_tsl_array_int_free },
{KK_TSL_DATA_TYPE_FLOAT, "float", _kk_tsl_float_set, _kk_tsl_array_float_set, _kk_tsl_float_get, _kk_tsl_array_float_get, _kk_tsl_float_free, _kk_tsl_array_float_free, }, {KK_TSL_DATA_TYPE_FLOAT, "float", _kk_tsl_float_set, _kk_tsl_array_float_set, _kk_tsl_float_get, _kk_tsl_array_float_get, _kk_tsl_float_free, _kk_tsl_array_float_free, },
{KK_TSL_DATA_TYPE_DOUBLE, "double", _kk_tsl_double_set, _kk_tsl_array_double_set, _kk_tsl_double_get, _kk_tsl_array_double_get, _kk_tsl_double_free, _kk_tsl_array_double_free, }, {KK_TSL_DATA_TYPE_DOUBLE, "double", _kk_tsl_double_set, _kk_tsl_array_double_set, _kk_tsl_double_get, _kk_tsl_array_double_get, _kk_tsl_double_free, _kk_tsl_array_double_free, },
{KK_TSL_DATA_TYPE_TEXT, "text", _kk_tsl_text_set, _kk_tsl_array_text_set, _kk_tsl_text_get, _kk_tsl_array_text_get, _kk_tsl_text_free, _kk_tsl_array_text_free, }, {KK_TSL_DATA_TYPE_TEXT, "text", _kk_tsl_text_set, _kk_tsl_array_text_set, _kk_tsl_text_get, _kk_tsl_array_text_get, _kk_tsl_text_free, _kk_tsl_array_text_free, },
{KK_TSL_DATA_TYPE_ENUM, "enum", _kk_tsl_enum_set, _kk_tsl_array_enum_set, _kk_tsl_enum_get, _kk_tsl_array_enum_get, _kk_tsl_enum_free, _kk_tsl_array_enum_free, }, {KK_TSL_DATA_TYPE_ENUM, "enum", _kk_tsl_enum_set, _kk_tsl_array_enum_set, _kk_tsl_enum_get, _kk_tsl_array_enum_get, _kk_tsl_enum_free, _kk_tsl_array_enum_free, },
{KK_TSL_DATA_TYPE_DATE, "date", _kk_tsl_date_set, _kk_tsl_array_date_set, _kk_tsl_date_get, _kk_tsl_array_date_get, _kk_tsl_date_free, _kk_tsl_array_date_free, }, {KK_TSL_DATA_TYPE_DATE, "date", _kk_tsl_date_set, _kk_tsl_array_date_set, _kk_tsl_date_get, _kk_tsl_array_date_get, _kk_tsl_date_free, _kk_tsl_array_date_free, },
{KK_TSL_DATA_TYPE_BOOL, "bool", _kk_tsl_bool_set, _kk_tsl_array_bool_set, _kk_tsl_bool_get, _kk_tsl_array_bool_get, _kk_tsl_bool_free, _kk_tsl_array_bool_free, }, {KK_TSL_DATA_TYPE_BOOL, "bool", _kk_tsl_bool_set, _kk_tsl_array_bool_set, _kk_tsl_bool_get, _kk_tsl_array_bool_get, _kk_tsl_bool_free, _kk_tsl_array_bool_free, },
{KK_TSL_DATA_TYPE_ARRAY, "array", NULL, NULL, NULL, NULL, _kk_tsl_array_free, _kk_tsl_array_array_free, }, {KK_TSL_DATA_TYPE_ARRAY, "array", NULL, NULL, NULL, NULL, _kk_tsl_array_free, _kk_tsl_array_array_free, },
{KK_TSL_DATA_TYPE_STRUCT, "struct", NULL, NULL, NULL, NULL, _kk_tsl_struct_free, _kk_tsl_array_struct_free, } {KK_TSL_DATA_TYPE_STRUCT, "struct", NULL, NULL, NULL, NULL, _kk_tsl_struct_free, _kk_tsl_array_struct_free, }
}; };
static int _kk_tsl_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
float float_set = (value == NULL) ? (0) : (*(float *)value); float float_set = (value == NULL) ? (0) : (*(float *)value);
data_value->value_float = float_set; data_value->value_float = float_set;
printf("Current Float Value Be Set(Float): %f\n", data_value->value_float); //printf("Current Float Value Be Set(Float): %f\n", data_value->value_float);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
double double_set = (value == NULL) ? (0) : (*(double *)value); double double_set = (value == NULL) ? (0) : (*(double *)value);
data_value->value_double = double_set; data_value->value_double = double_set;
printf("Current Double Value Be Set(Double): %f\n", data_value->value_double); //printf("Current Double Value Be Set(Double): %f\n", data_value->value_double);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
int res = 0; int res = 0;
char *value_set = (value == NULL) ? ("NULL") : ((char *)value); char *value_set = (value == NULL) ? ("NULL") : ((char *)value);
int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len); int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len);
if (data_value->value) { if (data_value->value) {
free(data_value->value); free(data_value->value);
data_value->value = NULL; data_value->value = NULL;
} }
res = kk_utils_copy(value_set, value_set_len, &data_value->value, value_set_len + 1); res = kk_utils_copy(value_set, value_set_len, &data_value->value, value_set_len + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return MEMORY_NOT_ENOUGH; return MEMORY_NOT_ENOUGH;
} }
printf("Current Text Value Be Set(String): %s\n", data_value->value); //printf("Current Text Value Be Set(String): %s\n", data_value->value);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
int enum_set = (value == NULL) ? (0) : (*(int *)value); int enum_set = (value == NULL) ? (0) : (*(int *)value);
enum_set = (enum_set < 0) ? (0) : (enum_set); enum_set = (enum_set < 0) ? (0) : (enum_set);
data_value->value_int = enum_set; data_value->value_int = enum_set;
printf("Current Enum Value Be Set(Enum): %d\n", data_value->value_int); //printf("Current Enum Value Be Set(Enum): %d\n", data_value->value_int);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
int res = 0; int res = 0;
char *value_set = (value == NULL) ? ("NULL") : ((char *)value); char *value_set = (value == NULL) ? ("NULL") : ((char *)value);
int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len); int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len);
if (data_value->value) { if (data_value->value) {
free(data_value->value); free(data_value->value);
data_value->value = NULL; data_value->value = NULL;
} }
res = kk_utils_copy(value_set, value_set_len, &data_value->value, value_set_len + 1); res = kk_utils_copy(value_set, value_set_len, &data_value->value, value_set_len + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return MEMORY_NOT_ENOUGH; return MEMORY_NOT_ENOUGH;
} }
printf("Current Date Value Be Set(String): %s\n", data_value->value); //printf("Current Date Value Be Set(String): %s\n", data_value->value);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
int int_set = (value == NULL) ? (0) : (*(int *)value); int int_set = (value == NULL) ? (0) : (*(int *)value);
int_set = (int_set == 0) ? (int_set) : ((int_set == 1) ? (int_set) : (0)); int_set = (int_set == 0) ? (int_set) : ((int_set == 1) ? (int_set) : (0));
data_value->value_int = int_set; data_value->value_int = int_set;
printf("Current Bool Value Be Set(Bool): %d\n", data_value->value_int); //printf("Current Bool Value Be Set(Bool): %d\n", data_value->value_int);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
int int_set = (value == NULL) ? (0) : (*(int *)value); int int_set = (value == NULL) ? (0) : (*(int *)value);
data_value->value_int = int_set; data_value->value_int = int_set;
printf("Current Int Value Be Set(Int): %d\n", data_value->value_int); //printf("Current Int Value Be Set(Int): %d\n", data_value->value_int);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
int res = 0; int res = 0;
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
char *text_set = (value == NULL) ? ("NULL") : ((char *)value); char *text_set = (value == NULL) ? ("NULL") : ((char *)value);
int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len); int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len);
if (*((char **)(complex_array->value) + index)) { if (*((char **)(complex_array->value) + index)) {
free(*((char **)(complex_array->value) + index)); free(*((char **)(complex_array->value) + index));
*((char **)(complex_array->value) + index) = NULL; *((char **)(complex_array->value) + index) = NULL;
} }
res = kk_utils_copy(text_set, value_set_len, (void **)((char **)(complex_array->value) + index), value_set_len + 1); res = kk_utils_copy(text_set, value_set_len, (void **)((char **)(complex_array->value) + index), value_set_len + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Current Array Value Be Set(Text String), Index: %d, Value: %s\n", index, //printf("Current Array Value Be Set(Text String), Index: %d, Value: %s\n", index,
*((char **)(complex_array->value) + index)); //*((char **)(complex_array->value) + index));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
int int_set = (value == NULL) ? (0) : (*(int *)value); int int_set = (value == NULL) ? (0) : (*(int *)value);
*((int *)(complex_array->value) + index) = int_set; *((int *)(complex_array->value) + index) = int_set;
printf("Current Array Value Be Set(Enum), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index)); //printf("Current Array Value Be Set(Enum), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
int res = 0; int res = 0;
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
char *text_set = (value == NULL) ? ("NULL") : ((char *)value); char *text_set = (value == NULL) ? ("NULL") : ((char *)value);
int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len); int value_set_len = (value == NULL) ? (strlen("NULL")) : (value_len);
if (*((char **)(complex_array->value) + index)) { if (*((char **)(complex_array->value) + index)) {
free(*((char **)(complex_array->value) + index)); free(*((char **)(complex_array->value) + index));
*((char **)(complex_array->value) + index) = NULL; *((char **)(complex_array->value) + index) = NULL;
} }
res = kk_utils_copy(text_set, value_set_len, (void **)((char **)(complex_array->value) + index), value_set_len + 1); res = kk_utils_copy(text_set, value_set_len, (void **)((char **)(complex_array->value) + index), value_set_len + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Current Array Value Be Set(Date String), Index: %d, Value: %s\n", index, //printf("Current Array Value Be Set(Date String), Index: %d, Value: %s\n", index,
*((char **)(complex_array->value) + index)); //*((char **)(complex_array->value) + index));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
*(float *)(value) = data_value->value_float; *(float *)(value) = data_value->value_float;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
*(double *)(value) = data_value->value_double; *(double *)(value) = data_value->value_double;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
int res = 0; int res = 0;
if (*(char **)value != NULL || data_value->value == NULL) { if (*(char **)value != NULL || data_value->value == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
res = kk_utils_copy_direct(data_value->value, strlen(data_value->value), (void **)value, strlen(data_value->value) + 1); res = kk_utils_copy_direct(data_value->value, strlen(data_value->value), (void **)value, strlen(data_value->value) + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
*(int *)(value) = data_value->value_int; *(int *)(value) = data_value->value_int;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
int res = 0; int res = 0;
if (*(char **)value != NULL || data_value->value == NULL) { if (*(char **)value != NULL || data_value->value == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
res = kk_utils_copy_direct(data_value->value, strlen(data_value->value), (void **)value, strlen(data_value->value) + 1); res = kk_utils_copy_direct(data_value->value, strlen(data_value->value), (void **)value, strlen(data_value->value) + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
*(int *)(value) = data_value->value_int; *(int *)(value) = data_value->value_int;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_array_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array->value == NULL || ((int *)(complex_array->value) + index) == NULL) { if (complex_array->value == NULL || ((int *)(complex_array->value) + index) == NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
*((int *)value) = *((int *)(complex_array->value) + index); *((int *)value) = *((int *)(complex_array->value) + index);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_array_float_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array->value == NULL || ((float *)(complex_array->value) + index) == NULL) { if (complex_array->value == NULL || ((float *)(complex_array->value) + index) == NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
*((float *)value) = *((float *)(complex_array->value) + index); *((float *)value) = *((float *)(complex_array->value) + index);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_array_double_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array->value == NULL || ((double *)(complex_array->value) + index) == NULL) { if (complex_array->value == NULL || ((double *)(complex_array->value) + index) == NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
*((double *)value) = *((double *)(complex_array->value) + index); *((double *)value) = *((double *)(complex_array->value) + index);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_array_text_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
int res = 0; int res = 0;
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array->value == NULL || *((char **)(complex_array->value) + index) == NULL || *(char **)value != NULL) { if (complex_array->value == NULL || *((char **)(complex_array->value) + index) == NULL || *(char **)value != NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
res = kk_utils_copy_direct(*((char **)(complex_array->value) + index), res = kk_utils_copy_direct(*((char **)(complex_array->value) + index),
strlen(*((char **)(complex_array->value) + index)), strlen(*((char **)(complex_array->value) + index)),
(void **)value, strlen(*((char **)(complex_array->value) + index)) + 1); (void **)value, strlen(*((char **)(complex_array->value) + index)) + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_array_enum_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array->value == NULL || ((int *)(complex_array->value) + index) == NULL) { if (complex_array->value == NULL || ((int *)(complex_array->value) + index) == NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
*((int *)value) = *((int *)(complex_array->value) + index); *((int *)value) = *((int *)(complex_array->value) + index);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_array_date_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
int res = 0; int res = 0;
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array->value == NULL || *((char **)(complex_array->value) + index) == NULL || *(char **)value != NULL) { if (complex_array->value == NULL || *((char **)(complex_array->value) + index) == NULL || *(char **)value != NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
res = kk_utils_copy_direct(*((char **)(complex_array->value) + index), res = kk_utils_copy_direct(*((char **)(complex_array->value) + index),
strlen(*((char **)(complex_array->value) + index)), strlen(*((char **)(complex_array->value) + index)),
(void **)value, strlen(*((char **)(complex_array->value) + index)) + 1); (void **)value, strlen(*((char **)(complex_array->value) + index)) + 1);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_array_bool_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array->value == NULL || ((int *)(complex_array->value) + index) == NULL) { if (complex_array->value == NULL || ((int *)(complex_array->value) + index) == NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
*((int *)value) = *((int *)(complex_array->value) + index); *((int *)value) = *((int *)(complex_array->value) + index);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static void _kk_tsl_int_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_int_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
//Free Value //Free Value
//if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;} //if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;}
} }
static void _kk_tsl_float_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_float_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
//Free Value //Free Value
//if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;} //if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;}
} }
static void _kk_tsl_double_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_double_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
//Free Value //Free Value
//if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;} //if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;}
} }
static void _kk_tsl_text_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_text_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
//Free Value //Free Value
if (data_value->value) { if (data_value->value) {
free(data_value->value); free(data_value->value);
data_value->value = NULL; data_value->value = NULL;
} }
} }
static void _kk_tsl_enum_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_enum_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
//Free Value //Free Value
//if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;} //if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;}
} }
static void _kk_tsl_date_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_date_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
//Free Value //Free Value
if (data_value->value) { if (data_value->value) {
free(data_value->value); free(data_value->value);
data_value->value = NULL; data_value->value = NULL;
} }
} }
static void _kk_tsl_bool_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_bool_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
//Free Value //Free Value
//if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;} //if (data_value->value) {DM_free(data_value->value);data_value->value = NULL;}
} }
static void _kk_tsl_array_int_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_int_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
} }
static void _kk_tsl_array_float_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_float_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
} }
static void _kk_tsl_array_double_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_double_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
} }
static void _kk_tsl_array_text_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_text_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
int index = 0; int index = 0;
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
//Free Value //Free Value
if (complex_array) { if (complex_array) {
for (index = 0; index < complex_array->size; index++) { for (index = 0; index < complex_array->size; index++) {
if (*((char **)(complex_array->value) + index)) { if (*((char **)(complex_array->value) + index)) {
free(*((char **)(complex_array->value) + index)); free(*((char **)(complex_array->value) + index));
*((char **)(complex_array->value) + index) = NULL; *((char **)(complex_array->value) + index) = NULL;
} }
} }
} }
} }
static void _kk_tsl_array_enum_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_enum_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
} }
static void _kk_tsl_array_date_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_date_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
int index = 0; int index = 0;
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
//Free Value //Free Value
if (complex_array) { if (complex_array) {
for (index = 0; index < complex_array->size; index++) { for (index = 0; index < complex_array->size; index++) {
if (*((char **)(complex_array->value) + index)) { if (*((char **)(complex_array->value) + index)) {
free(*((char **)(complex_array->value) + index)); free(*((char **)(complex_array->value) + index));
*((char **)(complex_array->value) + index) = NULL; *((char **)(complex_array->value) + index) = NULL;
} }
} }
} }
} }
static void _kk_tsl_array_bool_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_bool_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
} }
static void _kk_tsl_array_array_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_array_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
} }
static void _kk_tsl_data_free(kk_tsl_data_value_t *data_value) static void _kk_tsl_data_free(kk_tsl_data_value_t *data_value)
{ {
if (g_iotx_data_type_mapping[data_value->type].func_free == NULL) { if (g_iotx_data_type_mapping[data_value->type].func_free == NULL) {
return; return;
} }
g_iotx_data_type_mapping[data_value->type].func_free(data_value); g_iotx_data_type_mapping[data_value->type].func_free(data_value);
} }
static void _kk_tsl_property_free(_IN_ kk_tsl_data_t *property) static void _kk_tsl_property_free(_IN_ kk_tsl_data_t *property)
{ {
if (property->identifier) { if (property->identifier) {
free(property->identifier); free(property->identifier);
} }
_kk_tsl_data_free(&property->data_value); _kk_tsl_data_free(&property->data_value);
} }
static void _kk_tsl_array_struct_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_struct_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
int index = 0; int index = 0;
kk_tsl_data_t *data = NULL; kk_tsl_data_t *data = NULL;
kk_tsl_data_value_complex_t *complex_struct = (kk_tsl_data_value_complex_t *)data_value->value; kk_tsl_data_value_complex_t *complex_struct = (kk_tsl_data_value_complex_t *)data_value->value;
if (complex_struct) { if (complex_struct) {
for (index = 0; index < complex_struct->size; index++) { for (index = 0; index < complex_struct->size; index++) {
data = (kk_tsl_data_t *)complex_struct->value + index; data = (kk_tsl_data_t *)complex_struct->value + index;
_kk_tsl_property_free(data); _kk_tsl_property_free(data);
} }
} }
} }
static void _kk_tsl_array_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_array_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
//Free Value //Free Value
if (complex_array) { if (complex_array) {
/* dm_log_err("complex_array->type: %d",complex_array->type); */ /* dm_log_err("complex_array->type: %d",complex_array->type); */
if (g_iotx_data_type_mapping[complex_array->type].func_array_free != NULL) { if (g_iotx_data_type_mapping[complex_array->type].func_array_free != NULL) {
g_iotx_data_type_mapping[complex_array->type].func_array_free(data_value); g_iotx_data_type_mapping[complex_array->type].func_array_free(data_value);
} }
if (complex_array->value) { if (complex_array->value) {
free(complex_array->value); free(complex_array->value);
} }
free(complex_array); free(complex_array);
data_value->value = NULL; data_value->value = NULL;
} }
} }
static void _kk_tsl_struct_free(_IN_ kk_tsl_data_value_t *data_value) static void _kk_tsl_struct_free(_IN_ kk_tsl_data_value_t *data_value)
{ {
int index = 0; int index = 0;
kk_tsl_data_t *property = NULL; kk_tsl_data_t *property = NULL;
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
//Free Value //Free Value
if (complex_array) { if (complex_array) {
for (index = 0; index < complex_array->size; index++) { for (index = 0; index < complex_array->size; index++) {
property = (kk_tsl_data_t *)(complex_array->value) + index; property = (kk_tsl_data_t *)(complex_array->value) + index;
_kk_tsl_property_free(property); _kk_tsl_property_free(property);
} }
if (complex_array->value) { if (complex_array->value) {
free(complex_array->value); free(complex_array->value);
} }
free(complex_array); free(complex_array);
data_value->value = NULL; data_value->value = NULL;
} }
} }
static int _kk_tsl_array_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
int int_set = (value == NULL) ? (0) : (*(int *)value); int int_set = (value == NULL) ? (0) : (*(int *)value);
*((int *)(complex_array->value) + index) = int_set; *((int *)(complex_array->value) + index) = int_set;
printf("Current Array Value Be Set(Bool), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index)); // printf("Current Array Value Be Set(Bool), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
int int_set = (value == NULL) ? (0) : (*(int *)value); int int_set = (value == NULL) ? (0) : (*(int *)value);
*((int *)(complex_array->value) + index) = int_set; *((int *)(complex_array->value) + index) = int_set;
printf("Current Array Value Be Set(Int), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index)); //printf("Current Array Value Be Set(Int), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
float float_set = (value == NULL) ? (0) : (*(float *)value); float float_set = (value == NULL) ? (0) : (*(float *)value);
*((float *)(complex_array->value) + index) = float_set; *((float *)(complex_array->value) + index) = float_set;
printf("Current Array Value Be Set(Float), Index: %d, Value: %f\n", index, //printf("Current Array Value Be Set(Float), Index: %d, Value: %f\n", index,
*((float *)(complex_array->value) + index)); // *((float *)(complex_array->value) + index));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_array_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_array_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
double double_set = (value == NULL) ? (0) : (*(double *)value); double double_set = (value == NULL) ? (0) : (*(double *)value);
*((double *)(complex_array->value) + index) = double_set; *((double *)(complex_array->value) + index) = double_set;
printf("Current Array Value Be Set(Double), Index: %d, Value: %f\n", index, //printf("Current Array Value Be Set(Double), Index: %d, Value: %f\n", index,
*((double *)(complex_array->value) + index)); // *((double *)(complex_array->value) + index));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_int_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
*(int *)(value) = data_value->value_int; *(int *)(value) = data_value->value_int;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_data_array_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len, static int _kk_tsl_data_array_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len,
_IN_ int index) _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array == NULL || index < 0 || index >= complex_array->size) { if (complex_array == NULL || index < 0 || index >= complex_array->size) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
if (g_iotx_data_type_mapping[complex_array->type].func_array_set == NULL) { if (g_iotx_data_type_mapping[complex_array->type].func_array_set == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return g_iotx_data_type_mapping[complex_array->type].func_array_set(data_value, value, value_len, index); return g_iotx_data_type_mapping[complex_array->type].func_array_set(data_value, value, value_len, index);
} }
static int _kk_tsl_data_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len) static int _kk_tsl_data_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int value_len)
{ {
if (g_iotx_data_type_mapping[data_value->type].func_set == NULL) { if (g_iotx_data_type_mapping[data_value->type].func_set == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return g_iotx_data_type_mapping[data_value->type].func_set(data_value, value, value_len); return g_iotx_data_type_mapping[data_value->type].func_set(data_value, value, value_len);
} }
int dm_tsl_set_property_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _IN_ void *value, int dm_tsl_set_property_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _IN_ void *value,
_IN_ int value_len) _IN_ int value_len)
{ {
int res = 0, array_index = 0; int res = 0, array_index = 0;
kk_tsl_data_t *data = NULL; kk_tsl_data_t *data = NULL;
if (shadow == NULL || key == NULL || key_len <= 0) { if (shadow == NULL || key == NULL || key_len <= 0) {
return FAIL_RETURN; return FAIL_RETURN;
} }
res = _kk_tsl_property_search(shadow, key, key_len, &data, &array_index); res = _kk_tsl_property_search(shadow, key, key_len, &data, &array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
if (data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) { if (data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) {
res = _kk_tsl_data_array_set(&data->data_value, value, value_len, array_index); res = _kk_tsl_data_array_set(&data->data_value, value, value_len, array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_PROPERTY_SET_FAILED; return TSL_PROPERTY_SET_FAILED;
} }
} else { } else {
res = _kk_tsl_data_set(&data->data_value, value, value_len); res = _kk_tsl_data_set(&data->data_value, value, value_len);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_PROPERTY_SET_FAILED; return TSL_PROPERTY_SET_FAILED;
} }
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_event_search(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _OU_ kk_tsl_event_t **event) static int _kk_tsl_event_search(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _OU_ kk_tsl_event_t **event)
{ {
int index = 0; int index = 0;
kk_tsl_event_t *dtsl_event = NULL; kk_tsl_event_t *dtsl_event = NULL;
if (shadow == NULL || key == NULL || key_len <= 0) { if (shadow == NULL || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
for (index = 0; index < shadow->event_number; index++) { for (index = 0; index < shadow->event_number; index++) {
dtsl_event = shadow->events + index; dtsl_event = shadow->events + index;
if ((strlen(dtsl_event->identifier) == key_len) && if ((strlen(dtsl_event->identifier) == key_len) &&
(memcmp(dtsl_event->identifier, key, key_len) == 0)) { (memcmp(dtsl_event->identifier, key, key_len) == 0)) {
/* dm_log_debug("TSL Event Found: %s",dtsl_event->identifier); */ /* dm_log_debug("TSL Event Found: %s",dtsl_event->identifier); */
if (event) { if (event) {
*event = dtsl_event; *event = dtsl_event;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
} }
/* dm_log_debug("TSL Event Not Found: %.*s",key_len,key); */ /* dm_log_debug("TSL Event Not Found: %.*s",key_len,key); */
return FAIL_RETURN; return FAIL_RETURN;
} }
static int _kk_tsl_event_output_search(_IN_ kk_tsl_data_t *outputdatas, _IN_ int number, _IN_ char *key, static int _kk_tsl_event_output_search(_IN_ kk_tsl_data_t *outputdatas, _IN_ int number, _IN_ char *key,
_IN_ int key_len, _OU_ kk_tsl_data_t **event_data, _OU_ int *index) _IN_ int key_len, _OU_ kk_tsl_data_t **event_data, _OU_ int *index)
{ {
int res = 0, item_index = 0; int res = 0, item_index = 0;
kk_tsl_data_t *outputdata = NULL; kk_tsl_data_t *outputdata = NULL;
if (outputdatas == NULL || number <= 0 || key == NULL || key_len <= 0) { if (outputdatas == NULL || number <= 0 || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
for (item_index = 0; item_index < number; item_index++) { for (item_index = 0; item_index < number; item_index++) {
outputdata = outputdatas + item_index; outputdata = outputdatas + item_index;
res = kk_tsl_data_search(outputdata, key, key_len, event_data, index); res = kk_tsl_data_search(outputdata, key, key_len, event_data, index);
if (res == SUCCESS_RETURN) { if (res == SUCCESS_RETURN) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int dm_tsl_get_event_output_data(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _OU_ void **data) int dm_tsl_get_event_output_data(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _OU_ void **data)
{ {
int res = 0; int res = 0;
int offset = 0, array_index = 0; int offset = 0, array_index = 0;
char *pos = NULL; char *pos = NULL;
kk_tsl_event_t *event = NULL; kk_tsl_event_t *event = NULL;
kk_tsl_data_t *event_data = NULL; kk_tsl_data_t *event_data = NULL;
if (shadow == NULL || key == NULL || key_len <= 0) { if (shadow == NULL || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset); res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Key: %.*s\n", key_len, key); //printf("Key: %.*s\n", key_len, key);
res = _kk_tsl_event_search(shadow, key, offset, &event); res = _kk_tsl_event_search(shadow, key, offset, &event);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_NOT_EXIST; return TSL_EVENT_NOT_EXIST;
} }
pos = key + offset + 1; pos = key + offset + 1;
/* dm_log_debug("TSL Event Output Data Search, Event Data ID: %s",pos); */ /* dm_log_debug("TSL Event Output Data Search, Event Data ID: %s",pos); */
res = _kk_tsl_event_output_search(event->output_datas, event->output_data_number, pos, strlen(pos), &event_data, res = _kk_tsl_event_output_search(event->output_datas, event->output_data_number, pos, strlen(pos), &event_data,
&array_index); &array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_NOT_EXIST; return TSL_EVENT_NOT_EXIST;
} }
if (data) { if (data) {
*data = (void *)event_data; *data = (void *)event_data;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int dm_tls_set_event_output_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _IN_ void *value, int dm_tls_set_event_output_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _IN_ void *value,
_IN_ int value_len) _IN_ int value_len)
{ {
int res = 0, array_index = 0; int res = 0, array_index = 0;
int offset = 0; int offset = 0;
char *pos = NULL; char *pos = NULL;
kk_tsl_event_t *event = NULL; kk_tsl_event_t *event = NULL;
kk_tsl_data_t *event_data = NULL; kk_tsl_data_t *event_data = NULL;
if (shadow == NULL || key == NULL || key_len <= 0) { if (shadow == NULL || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset); res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Key: %.*s", key_len, key); printf("Key: %.*s", key_len, key);
res = _kk_tsl_event_search(shadow, key, offset, &event); res = _kk_tsl_event_search(shadow, key, offset, &event);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_NOT_EXIST; return TSL_EVENT_NOT_EXIST;
} }
pos = key + offset + 1; pos = key + offset + 1;
/* dm_log_debug("TSL Event Output Data Search, Event Data ID: %s",pos); */ /* dm_log_debug("TSL Event Output Data Search, Event Data ID: %s",pos); */
res = _kk_tsl_event_output_search(event->output_datas, event->output_data_number, pos, strlen(pos), &event_data, res = _kk_tsl_event_output_search(event->output_datas, event->output_data_number, pos, strlen(pos), &event_data,
&array_index); &array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_NOT_EXIST; return TSL_EVENT_NOT_EXIST;
} }
if (event_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) { if (event_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) {
res = _kk_tsl_data_array_set(&event_data->data_value, value, value_len, array_index); res = _kk_tsl_data_array_set(&event_data->data_value, value, value_len, array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_SET_FAILED; return TSL_EVENT_SET_FAILED;
} }
} else { } else {
res = _kk_tsl_data_set(&event_data->data_value, value, value_len); res = _kk_tsl_data_set(&event_data->data_value, value, value_len);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_SET_FAILED; return TSL_EVENT_SET_FAILED;
} }
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_service_search(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, static int _kk_tsl_service_search(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len,
_OU_ kk_tsl_service_t **service) _OU_ kk_tsl_service_t **service)
{ {
int index = 0; int index = 0;
kk_tsl_service_t *dtsl_service = NULL; kk_tsl_service_t *dtsl_service = NULL;
if (shadow == NULL || key == NULL || key_len <= 0) { if (shadow == NULL || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
for (index = 0; index < shadow->service_number; index++) { for (index = 0; index < shadow->service_number; index++) {
dtsl_service = shadow->services + index; dtsl_service = shadow->services + index;
if ((strlen(dtsl_service->identifier) == key_len) && if ((strlen(dtsl_service->identifier) == key_len) &&
(memcmp(dtsl_service->identifier, key, key_len) == 0)) { (memcmp(dtsl_service->identifier, key, key_len) == 0)) {
/* dm_log_debug("TSL Service Found: %s",dtsl_service->identifier); */ /* dm_log_debug("TSL Service Found: %s",dtsl_service->identifier); */
if (service) { if (service) {
*service = dtsl_service; *service = dtsl_service;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
} }
/* dm_log_debug("TSL Service Not Found: %.*s",key_len,key); */ /* dm_log_debug("TSL Service Not Found: %.*s",key_len,key); */
return FAIL_RETURN; return FAIL_RETURN;
} }
static int _kk_tsl_service_input_output_search(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_service_t *service, static int _kk_tsl_service_input_output_search(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_service_t *service,
_IN_ char *key, _IN_ int key_len, _OU_ kk_tsl_data_t **service_data, _OU_ int *index) _IN_ char *key, _IN_ int key_len, _OU_ kk_tsl_data_t **service_data, _OU_ int *index)
{ {
int res = 0, item_index = 0, datas_number = 0; int res = 0, item_index = 0, datas_number = 0;
kk_tsl_data_t *datas = NULL; kk_tsl_data_t *datas = NULL;
kk_tsl_data_t *data = NULL; kk_tsl_data_t *data = NULL;
if (type == KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA) { if (type == KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA) {
datas = service->input_datas; datas = service->input_datas;
datas_number = service->input_data_number; datas_number = service->input_data_number;
} else { } else {
datas = service->output_datas; datas = service->output_datas;
datas_number = service->output_data_number; datas_number = service->output_data_number;
} }
for (item_index = 0; item_index < datas_number; item_index++) { for (item_index = 0; item_index < datas_number; item_index++) {
data = datas + item_index; data = datas + item_index;
res = kk_tsl_data_search(data, key, key_len, service_data, index); res = kk_tsl_data_search(data, key, key_len, service_data, index);
if (res == SUCCESS_RETURN) { if (res == SUCCESS_RETURN) {
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int dm_tsl_get_service_input_output_data(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_t *shadow, _IN_ char *key, int dm_tsl_get_service_input_output_data(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_t *shadow, _IN_ char *key,
_IN_ int key_len, _OU_ void **data) _IN_ int key_len, _OU_ void **data)
{ {
int res = 0; int res = 0;
int offset = 0, array_index = 0; int offset = 0, array_index = 0;
char *pos = NULL; char *pos = NULL;
kk_tsl_service_t *service = NULL; kk_tsl_service_t *service = NULL;
kk_tsl_data_t *service_data = NULL; kk_tsl_data_t *service_data = NULL;
if (type < KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA || type > KK_TSL_DATA_TARGET_SERVICE_OUTPUT_DATA || shadow == NULL if (type < KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA || type > KK_TSL_DATA_TARGET_SERVICE_OUTPUT_DATA || shadow == NULL
|| key == NULL || key_len <= 0) { || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset); res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Key: %.*s", key_len, key); //printf("Key: %.*s", key_len, key);
res = _kk_tsl_service_search(shadow, key, offset, &service); res = _kk_tsl_service_search(shadow, key, offset, &service);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_NOT_EXIST; return TSL_EVENT_NOT_EXIST;
} }
pos = key + offset + 1; pos = key + offset + 1;
printf("TSL Service input/output Data Search, Event Data ID: %s", pos); //printf("TSL Service input/output Data Search, Event Data ID: %s", pos);
res = _kk_tsl_service_input_output_search(type, service, pos, strlen(pos), &service_data, &array_index); res = _kk_tsl_service_input_output_search(type, service, pos, strlen(pos), &service_data, &array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_NOT_EXIST; return TSL_EVENT_NOT_EXIST;
} }
if (data) { if (data) {
*data = (void *)service_data; *data = (void *)service_data;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int dm_tsl_set_service_input_output_value(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_t *shadow, _IN_ char *key, int dm_tsl_set_service_input_output_value(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_t *shadow, _IN_ char *key,
_IN_ int key_len, _IN_ void *value, _IN_ int value_len) _IN_ int key_len, _IN_ void *value, _IN_ int value_len)
{ {
int res = 0, array_index = 0; int res = 0, array_index = 0;
int offset = 0; int offset = 0;
char *pos = NULL; char *pos = NULL;
kk_tsl_service_t *service = NULL; kk_tsl_service_t *service = NULL;
kk_tsl_data_t *service_data = NULL; kk_tsl_data_t *service_data = NULL;
if (type < KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA || type > KK_TSL_DATA_TARGET_SERVICE_OUTPUT_DATA || shadow == NULL if (type < KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA || type > KK_TSL_DATA_TARGET_SERVICE_OUTPUT_DATA || shadow == NULL
|| key == NULL || key_len <= 0) { || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset); res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Key: %.*s", key_len, key); //printf("Key: %.*s", key_len, key);
res = _kk_tsl_service_search(shadow, key, offset, &service); res = _kk_tsl_service_search(shadow, key, offset, &service);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_SERVICE_NOT_EXIST; return TSL_SERVICE_NOT_EXIST;
} }
pos = key + offset + 1; pos = key + offset + 1;
printf("TSL Service Input/Output Data Search, Event Data ID: %s", pos); //printf("TSL Service Input/Output Data Search, Event Data ID: %s", pos);
res = _kk_tsl_service_input_output_search(type, service, pos, strlen(pos), &service_data, &array_index); res = _kk_tsl_service_input_output_search(type, service, pos, strlen(pos), &service_data, &array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_SERVICE_NOT_EXIST; return TSL_SERVICE_NOT_EXIST;
} }
if (service_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) { if (service_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) {
res = _kk_tsl_data_array_set(&service_data->data_value, value, value_len, array_index); res = _kk_tsl_data_array_set(&service_data->data_value, value, value_len, array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_SERVICE_SET_FAILED; return TSL_SERVICE_SET_FAILED;
} }
} else { } else {
res = _kk_tsl_data_set(&service_data->data_value, value, value_len); res = _kk_tsl_data_set(&service_data->data_value, value, value_len);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_SERVICE_SET_FAILED; return TSL_SERVICE_SET_FAILED;
} }
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int kk_tsl_get_data_type(_IN_ void *data, _OU_ kk_tsl_data_type_e *type) int kk_tsl_get_data_type(_IN_ void *data, _OU_ kk_tsl_data_type_e *type)
{ {
kk_tsl_data_t *data_item = (kk_tsl_data_t *)data; kk_tsl_data_t *data_item = (kk_tsl_data_t *)data;
if (data_item == NULL || type == NULL) { if (data_item == NULL || type == NULL) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
if (data_item->data_value.type == KK_TSL_DATA_TYPE_ARRAY) { if (data_item->data_value.type == KK_TSL_DATA_TYPE_ARRAY) {
kk_tsl_data_value_complex_t *complex_value = (kk_tsl_data_value_complex_t *)data_item->data_value.value; kk_tsl_data_value_complex_t *complex_value = (kk_tsl_data_value_complex_t *)data_item->data_value.value;
*type = complex_value->type; *type = complex_value->type;
} else { } else {
*type = data_item->data_value.type; *type = data_item->data_value.type;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int _kk_tsl_data_array_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index) static int _kk_tsl_data_array_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value, _IN_ int index)
{ {
kk_tsl_data_value_complex_t *complex_array = data_value->value; kk_tsl_data_value_complex_t *complex_array = data_value->value;
if (complex_array == NULL || index < 0 || index >= complex_array->size) { if (complex_array == NULL || index < 0 || index >= complex_array->size) {
return FAIL_RETURN; return FAIL_RETURN;
} }
if (g_iotx_data_type_mapping[complex_array->type].func_array_get == NULL) { if (g_iotx_data_type_mapping[complex_array->type].func_array_get == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return g_iotx_data_type_mapping[complex_array->type].func_array_get(data_value, value, index); return g_iotx_data_type_mapping[complex_array->type].func_array_get(data_value, value, index);
} }
static int _kk_tsl_data_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value) static int _kk_tsl_data_get(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *value)
{ {
if (g_iotx_data_type_mapping[data_value->type].func_get == NULL) { if (g_iotx_data_type_mapping[data_value->type].func_get == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
return g_iotx_data_type_mapping[data_value->type].func_get(data_value, value); return g_iotx_data_type_mapping[data_value->type].func_get(data_value, value);
} }
int kk_tsl_get_property_value_ex(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _OU_ void *value) int kk_tsl_get_property_value_ex(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _OU_ void *value)
{ {
int res = 0, array_index = 0; int res = 0, array_index = 0;
kk_tsl_data_t *data = NULL; kk_tsl_data_t *data = NULL;
if (shadow == NULL || key == NULL || key_len <= 0) { if (shadow == NULL || key == NULL || key_len <= 0) {
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
res = _kk_tsl_property_search(shadow, key, key_len, &data, &array_index); res = _kk_tsl_property_search(shadow, key, key_len, &data, &array_index);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return FAIL_RETURN; return FAIL_RETURN;
} }
printf("Current Found Data: %s\n", data->identifier); if (data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) {
if (data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) { res = _kk_tsl_data_array_get(&data->data_value, value, array_index);
printf("Current Found Data Index: %d\n", array_index); if (res != SUCCESS_RETURN) {
res = _kk_tsl_data_array_get(&data->data_value, value, array_index); return TSL_PROPERTY_GET_FAILED;
if (res != SUCCESS_RETURN) { }
return TSL_PROPERTY_GET_FAILED; } else {
} res = _kk_tsl_data_get(&data->data_value, value);
} else { if (res != SUCCESS_RETURN) {
res = _kk_tsl_data_get(&data->data_value, value); return TSL_PROPERTY_GET_FAILED;
if (res != SUCCESS_RETURN) { }
return TSL_PROPERTY_GET_FAILED; }
}
} return SUCCESS_RETURN;
}
return SUCCESS_RETURN; int kk_tsl_get_event_oput_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _IN_ void *value)
} {
int kk_tsl_get_event_oput_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int key_len, _IN_ void *value) int res = 0;
{ int offset = 0, array_index = 0;
int res = 0; char *pos = NULL;
int offset = 0, array_index = 0; kk_tsl_event_t *event = NULL;
char *pos = NULL; kk_tsl_data_t *event_data = NULL;
kk_tsl_event_t *event = NULL;
kk_tsl_data_t *event_data = NULL; if (shadow == NULL || key == NULL || key_len <= 0) {
return INVALID_PARAMETER;
if (shadow == NULL || key == NULL || key_len <= 0) { }
return INVALID_PARAMETER;
} res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset);
if (res != SUCCESS_RETURN) {
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset); return FAIL_RETURN;
if (res != SUCCESS_RETURN) { }
return FAIL_RETURN;
} res = _kk_tsl_event_search(shadow, key, offset, &event);
if (res != SUCCESS_RETURN) {
printf("Key: %.*s\n", key_len, key); return TSL_EVENT_NOT_EXIST;
}
res = _kk_tsl_event_search(shadow, key, offset, &event);
if (res != SUCCESS_RETURN) { pos = key + offset + 1;
return TSL_EVENT_NOT_EXIST;
} res = _kk_tsl_event_output_search(event->output_datas, event->output_data_number, pos, strlen(pos), &event_data,
&array_index);
pos = key + offset + 1; if (res != SUCCESS_RETURN) {
printf("TSL Event Output Data Search, Event Data ID: %s", pos); return TSL_EVENT_NOT_EXIST;
}
res = _kk_tsl_event_output_search(event->output_datas, event->output_data_number, pos, strlen(pos), &event_data,
&array_index); if (event_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) {
if (res != SUCCESS_RETURN) { res = _kk_tsl_data_array_get(&event_data->data_value, value, array_index);
return TSL_EVENT_NOT_EXIST; if (res != SUCCESS_RETURN) {
} return TSL_EVENT_GET_FAILED;
}
if (event_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) { } else {
res = _kk_tsl_data_array_get(&event_data->data_value, value, array_index); res = _kk_tsl_data_get(&event_data->data_value, value);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_EVENT_GET_FAILED; return TSL_EVENT_GET_FAILED;
} }
} else { }
res = _kk_tsl_data_get(&event_data->data_value, value);
if (res != SUCCESS_RETURN) { return SUCCESS_RETURN;
return TSL_EVENT_GET_FAILED; }
} int kk_tsl_get_service_input_output_value(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_t *shadow, _IN_ char *key,
} _IN_ int key_len, _IN_ void *value)
{
return SUCCESS_RETURN; int res = 0;
} int offset = 0, array_index = 0;
int kk_tsl_get_service_input_output_value(_IN_ kk_tsl_data_target_e type, _IN_ kk_tsl_t *shadow, _IN_ char *key, char *pos = NULL;
_IN_ int key_len, _IN_ void *value) kk_tsl_service_t *service = NULL;
{ kk_tsl_data_t *service_data = NULL;
int res = 0;
int offset = 0, array_index = 0; if (shadow == NULL || key == NULL || key_len <= 0) {
char *pos = NULL; return INVALID_PARAMETER;
kk_tsl_service_t *service = NULL; }
kk_tsl_data_t *service_data = NULL;
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset);
if (shadow == NULL || key == NULL || key_len <= 0) { if (res != SUCCESS_RETURN) {
return INVALID_PARAMETER; return FAIL_RETURN;
} }
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset); //printf("key: %.*s\n", key_len, key);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN; res = _kk_tsl_service_search(shadow, key, offset, &service);
} if (res != SUCCESS_RETURN) {
return TSL_SERVICE_NOT_EXIST;
printf("key: %.*s\n", key_len, key); }
res = _kk_tsl_service_search(shadow, key, offset, &service); pos = key + offset + 1;
if (res != SUCCESS_RETURN) { //printf("TSL Service Input/Output Data Search, Event Data ID: %s", pos);
return TSL_SERVICE_NOT_EXIST;
} res = _kk_tsl_service_input_output_search(type, service, pos, strlen(pos), &service_data, &array_index);
if (res != SUCCESS_RETURN) {
pos = key + offset + 1; return TSL_SERVICE_NOT_EXIST;
printf("TSL Service Input/Output Data Search, Event Data ID: %s", pos); }
res = _kk_tsl_service_input_output_search(type, service, pos, strlen(pos), &service_data, &array_index); if (service_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) {
if (res != SUCCESS_RETURN) { res = _kk_tsl_data_array_get(&service_data->data_value, value, array_index);
return TSL_SERVICE_NOT_EXIST; if (res != SUCCESS_RETURN) {
} return TSL_SERVICE_GET_FAILED;
}
if (service_data->data_value.type == KK_TSL_DATA_TYPE_ARRAY) { } else {
res = _kk_tsl_data_array_get(&service_data->data_value, value, array_index); res = _kk_tsl_data_get(&service_data->data_value, value);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
return TSL_SERVICE_GET_FAILED; return TSL_SERVICE_GET_FAILED;
} }
} else { }
res = _kk_tsl_data_get(&service_data->data_value, value);
if (res != SUCCESS_RETURN) { return SUCCESS_RETURN;
return TSL_SERVICE_GET_FAILED; }
} void kk_tsl_datavalue_free(kk_tsl_data_value_t *data_value)
} {
if (g_iotx_data_type_mapping[data_value->type].func_free == NULL) {
return SUCCESS_RETURN; return;
} }
void kk_tsl_datavalue_free(kk_tsl_data_value_t *data_value) g_iotx_data_type_mapping[data_value->type].func_free(data_value);
{ }
if (g_iotx_data_type_mapping[data_value->type].func_free == NULL) {
return;
}
g_iotx_data_type_mapping[data_value->type].func_free(data_value);
}
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