Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
k-sdk
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈伟灿
k-sdk
Commits
d6172530
Commit
d6172530
authored
Sep 18, 2020
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'cwc' into 'master'
Cwc See merge request chenweican/k-sdk!10
parents
d4dbde19
7c5ca916
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1158 additions
and
1160 deletions
+1158
-1160
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+7
-6
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+1
-1
midware/midware/dm/kk_property_db.c
midware/midware/dm/kk_property_db.c
+4
-4
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+12
-10
midware/tsl/tsl_handle/kk_tsl_func.c
midware/tsl/tsl_handle/kk_tsl_func.c
+1134
-1139
No files found.
midware/midware/dm/kk_dm_mng.c
View file @
d6172530
...
@@ -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
"
);
...
...
midware/midware/dm/kk_linkkit.c
View file @
d6172530
...
@@ -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
;
...
...
midware/midware/dm/kk_property_db.c
View file @
d6172530
...
@@ -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
();
...
...
midware/midware/dm/kk_sub_db.c
View file @
d6172530
...
@@ -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
)
...
...
midware/tsl/tsl_handle/kk_tsl_func.c
View file @
d6172530
#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
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment