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
fc3801f2
Commit
fc3801f2
authored
Sep 24, 2020
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】增加属性设置时参数根据物模型所定义的mix,max以及length进行有效性判断
【提交人】陈伟灿
parent
5c98ce43
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
317 additions
and
175 deletions
+317
-175
midware/midware/midware.c
midware/midware/midware.c
+116
-0
midware/tsl/tsl_handle/kk_tsl_api.c
midware/tsl/tsl_handle/kk_tsl_api.c
+0
-6
midware/tsl/tsl_handle/kk_tsl_common.h
midware/tsl/tsl_handle/kk_tsl_common.h
+168
-165
midware/tsl/tsl_handle/kk_tsl_parse.c
midware/tsl/tsl_handle/kk_tsl_parse.c
+33
-4
No files found.
midware/midware/midware.c
View file @
fc3801f2
...
@@ -57,6 +57,112 @@ void kk_sendData2gw(void* data, int len, char* chalMark){
...
@@ -57,6 +57,112 @@ void kk_sendData2gw(void* data, int len, char* chalMark){
kk_ipc_send_ex
(
IPC_MID2PLAT
,
data
,
len
+
1
,
chalMark
);
kk_ipc_send_ex
(
IPC_MID2PLAT
,
data
,
len
+
1
,
chalMark
);
}
}
}
static
int
kk_property_set_data_check
(
cJSON
*
payload
,
const
char
*
deviceCode
){
cJSON
*
params
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_tsl_data_t
*
property
=
NULL
;
cJSON
*
propertyItem
=
NULL
;
int
res
=
0
;
int
idx
=
0
;
int
value
=
0
;
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
FAIL_RETURN
;
}
params
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
params
!=
NULL
){
for
(
idx
=
0
;
idx
<
node
->
dev_shadow
->
property_number
;
idx
++
){
property
=
(
kk_tsl_data_t
*
)(
node
->
dev_shadow
->
properties
+
idx
);
if
(
property
==
NULL
){
continue
;
}
propertyItem
=
cJSON_GetObjectItem
(
params
,
property
->
identifier
);
if
(
propertyItem
!=
NULL
){
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_STRUCT
){
kk_tsl_data_value_complex_t
*
complex_struct
=
NULL
;
kk_tsl_data_t
*
current_data
=
NULL
;
int
index
;
complex_struct
=
property
->
data_value
.
value
;
for
(
index
=
0
;
index
<
complex_struct
->
size
;
index
++
)
{
current_data
=
(
kk_tsl_data_t
*
)
complex_struct
->
value
+
index
;
cJSON
*
propertyItem_1
=
NULL
;
propertyItem_1
=
cJSON_GetObjectItem
(
propertyItem
,
current_data
->
identifier
);
if
(
propertyItem_1
==
NULL
){
continue
;
}
if
(
current_data
->
data_value
.
type
!=
KK_TSL_DATA_TYPE_STRUCT
){
if
(
current_data
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
){
value
=
propertyItem_1
->
valueint
;
if
(
value
<
current_data
->
data_value
.
mix
||
value
>
current_data
->
data_value
.
max
){
ERROR_PRINT
(
"ERROR ------------>value:%d,mix:%d,max:%d
\n
"
,
value
,
current_data
->
data_value
.
mix
,
current_data
->
data_value
.
max
);
return
INVALID_PARAMETER
;
}
}
else
if
(
current_data
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
){
if
(
strlen
(
propertyItem_1
->
valuestring
)
>
current_data
->
data_value
.
length
){
ERROR_PRINT
(
"ERROR ------------>strlen(propertyItem_1->valuestring):%d,current_data->data_value.length:%d
\n
"
,
strlen
(
propertyItem_1
->
valuestring
),
current_data
->
data_value
.
length
);
return
INVALID_PARAMETER
;
}
}
}
else
{
kk_tsl_data_value_complex_t
*
complex_struct_1
=
NULL
;
kk_tsl_data_t
*
current_data_1
=
NULL
;
int
index_1
;
complex_struct_1
=
current_data
->
data_value
.
value
;
for
(
index_1
=
0
;
index_1
<
complex_struct_1
->
size
;
index_1
++
){
current_data_1
=
(
kk_tsl_data_t
*
)
complex_struct_1
->
value
+
index_1
;
cJSON
*
propertyItem_2
=
NULL
;
propertyItem_2
=
cJSON_GetObjectItem
(
propertyItem_1
,
current_data_1
->
identifier
);
if
(
propertyItem_2
==
NULL
){
continue
;
}
if
(
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
){
value
=
propertyItem_2
->
valueint
;
if
(
value
<
current_data_1
->
data_value
.
mix
||
value
>
current_data_1
->
data_value
.
max
){
ERROR_PRINT
(
"ERROR------------>value:%d,mix:%d,max:%d
\n
"
,
value
,
current_data_1
->
data_value
.
mix
,
current_data_1
->
data_value
.
max
);
return
INVALID_PARAMETER
;
}
}
else
if
(
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
){
if
(
strlen
(
propertyItem_2
->
valuestring
)
>
current_data_1
->
data_value
.
length
){
ERROR_PRINT
(
"ERROR ------------>strlen(propertyItem_2->valuestring):%d,propertyItem_2->data_value.length:%d
\n
"
,
strlen
(
propertyItem_2
->
valuestring
),
current_data_1
->
data_value
.
length
);
return
INVALID_PARAMETER
;
}
}
}
}
}
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
){
value
=
propertyItem
->
valueint
;
if
(
value
<
property
->
data_value
.
mix
||
value
>
property
->
data_value
.
max
){
ERROR_PRINT
(
"ERROR ------------>value:%d,mix:%d,max:%d
\n
"
,
value
,
property
->
data_value
.
mix
,
property
->
data_value
.
max
);
return
INVALID_PARAMETER
;
}
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
){
if
(
strlen
(
propertyItem
->
valuestring
)
>
property
->
data_value
.
length
){
ERROR_PRINT
(
"ERROR ------------>strlen(propertyItem->valuestring):%d,property->data_value.length:%d
\n
"
,
strlen
(
propertyItem
->
valuestring
),
property
->
data_value
.
length
);
return
INVALID_PARAMETER
;
}
}
}
}
}
return
SUCCESS_RETURN
;
}
}
void
mid_cb
(
void
*
data
,
int
len
){
void
mid_cb
(
void
*
data
,
int
len
){
if
(
data
!=
NULL
){
if
(
data
!=
NULL
){
...
@@ -85,6 +191,16 @@ void mid_cb(void* data, int len){
...
@@ -85,6 +191,16 @@ void mid_cb(void* data, int len){
cJSON_Delete
(
json
);
cJSON_Delete
(
json
);
return
;
return
;
}
}
/*****属性设置需要先检测设置参数是否超出物模型给定范围*******/
if
(
strcmp
(
type
->
valuestring
,
KK_THING_SERVICE_PROPERTY_SET
)
==
0
){
cJSON
*
payload
=
cJSON_GetObjectItem
(
json
,
MSG_PAYLOAD_STR
);
if
(
payload
!=
NULL
){
res
=
kk_property_set_data_check
(
payload
,
deviceCode
->
valuestring
);
if
(
res
!=
SUCCESS_RETURN
){
return
;
}
}
}
int
devType
=
0
;
int
devType
=
0
;
dm_mgr_get_devicetype_by_devicecode
(
deviceCode
->
valuestring
,
&
devType
);
dm_mgr_get_devicetype_by_devicecode
(
deviceCode
->
valuestring
,
&
devType
);
...
...
midware/tsl/tsl_handle/kk_tsl_api.c
View file @
fc3801f2
...
@@ -409,12 +409,6 @@ static int _kk_msg_request_parse(_IN_ char *payload, _IN_ int payload_len, _OU_
...
@@ -409,12 +409,6 @@ static int _kk_msg_request_parse(_IN_ char *payload, _IN_ int payload_len, _OU_
&
request
->
params
)
!=
SUCCESS_RETURN
)
{
&
request
->
params
)
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
INFO_PRINT
(
"Current Request Message ID: %.*s"
,
request
->
id
.
value_length
,
request
->
id
.
value
);
INFO_PRINT
(
"Current Request Message Version: %.*s"
,
request
->
version
.
value_length
,
request
->
version
.
value
);
INFO_PRINT
(
"Current Request Message Method: %.*s"
,
request
->
method
.
value_length
,
request
->
method
.
value
);
INFO_PRINT
(
"Current Request Message Params: %.*s"
,
request
->
params
.
value_length
,
request
->
params
.
value
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
...
midware/tsl/tsl_handle/kk_tsl_common.h
View file @
fc3801f2
#ifndef __KK_TSL_COM__
#ifndef __KK_TSL_COM__
#define __KK_TSL_COM__
#define __KK_TSL_COM__
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <stdint.h>
#include <stdint.h>
#ifndef _IN_
#ifndef _IN_
#define _IN_
#define _IN_
#endif
#endif
#ifndef _OU_
#ifndef _OU_
#define _OU_
#define _OU_
#endif
#endif
//typedef unsigned long int uint64_t;
//typedef unsigned long int uint64_t;
#define PRODUCT_TYPE_MAXLEN (32 + 1)
#define PRODUCT_TYPE_MAXLEN (32 + 1)
#define PRODUCT_CODE_MAXLEN (32 + 1)
#define PRODUCT_CODE_MAXLEN (32 + 1)
#define DEVICE_CODE_MAXLEN (32 + 1)
#define DEVICE_CODE_MAXLEN (32 + 1)
#define DEVICE_MAC_MAXLEN (16 + 1)
#define DEVICE_MAC_MAXLEN (16 + 1)
#define DEVICE_SN_MAXLEN (32 + 1)
#define DEVICE_SN_MAXLEN (32 + 1)
#define DEVICE_VERSION_MAXLEN (32 + 1)
#define DEVICE_VERSION_MAXLEN (32 + 1)
#define DM_UTILS_UINT16_STRLEN (5)
#define DM_UTILS_UINT16_STRLEN (5)
#define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT64_STRLEN (20)
#define DM_UTILS_UINT64_STRLEN (20)
#define KK_TSL_KEY_SCHEMA "schema"
#define KK_TSL_KEY_SCHEMA "schema"
#define KK_TSL_KEY_LINK "link"
#define KK_TSL_KEY_LINK "link"
#define KK_TSL_KEY_PROFILE "profile"
#define KK_TSL_KEY_PROFILE "profile"
#define KK_TSL_KEY_PROPERTIES "properties"
#define KK_TSL_KEY_PROPERTIES "properties"
#define KK_TSL_KEY_EVENTS "events"
#define KK_TSL_KEY_EVENTS "events"
#define KK_TSL_KEY_SERVICES "services"
#define KK_TSL_KEY_SERVICES "services"
#define KK_TSL_KEY_PROFILE_PK "productKey"
#define KK_TSL_KEY_PROFILE_PK "productKey"
#define KK_TSL_KEY_PROFILE_DN "deviceName"
#define KK_TSL_KEY_PROFILE_DN "deviceName"
#define KK_TSL_KEY_IDENTIFIER "identifier"
#define KK_TSL_KEY_IDENTIFIER "identifier"
#define KK_TSL_KEY_NAME "name"
#define KK_TSL_KEY_NAME "name"
#define KK_TSL_KEY_DESC "desc"
#define KK_TSL_KEY_DESC "desc"
#define KK_TSL_KEY_ACCESS_MODE "accessMode"
#define KK_TSL_KEY_ACCESS_MODE "accessMode"
#define KK_TSL_KEY_REQUIRED "required"
#define KK_TSL_KEY_REQUIRED "required"
#define KK_TSL_KEY_METHOD "method"
#define KK_TSL_KEY_METHOD "method"
#define KK_TSL_KEY_CALLTYPE "callType"
#define KK_TSL_KEY_CALLTYPE "callType"
#define KK_TSL_KEY_OUTPUTDATA "outputData"
#define KK_TSL_KEY_OUTPUTDATA "outputData"
#define KK_TSL_KEY_INPUTDATA "inputData"
#define KK_TSL_KEY_INPUTDATA "inputData"
#define KK_TSL_KEY_DATATYPE "dataType"
#define KK_TSL_KEY_DATATYPE "dataType"
#define KK_TSL_KEY_TYPE "type"
#define KK_TSL_KEY_TYPE "type"
#define KK_TSL_KEY_SPECS "specs"
#define KK_TSL_KEY_SPECS "specs"
#define KK_TSL_KEY_UNIT "unit"
#define KK_TSL_KEY_UNIT "unit"
#define KK_TSL_KEY_UNITNAME "unitName"
#define KK_TSL_KEY_UNITNAME "unitName"
#define KK_TSL_KEY_MIN "min"
#define KK_TSL_KEY_MIN "min"
#define KK_TSL_KEY_MAX "max"
#define KK_TSL_KEY_MAX "max"
#define KK_TSL_KEY_LENGTH "length"
#define KK_TSL_KEY_LENGTH "length"
#define KK_TSL_KEY_SIZE "size"
#define KK_TSL_KEY_SIZE "size"
#define KK_TSL_KEY_ITEM "item"
#define KK_TSL_KEY_ITEM "item"
#define KK_MSG_KEY_DELIMITER '.'
#define KK_MSG_KEY_DELIMITER '.'
#define KK_URI_SERVICE_DELIMITER '/'
#define KK_URI_SERVICE_DELIMITER '/'
#define KK_URI_OFFSET 0
#define KK_URI_OFFSET 0
//Special Service And Event
//Special Service And Event
#define KK_TSL_SPECIAL_SERVICE_SET_IDENTIFIER "set"
#define KK_TSL_SPECIAL_SERVICE_SET_IDENTIFIER "set"
#define KK_TSL_SPECIAL_SERVICE_SET_METHOD "thing.service.property.set"
#define KK_TSL_SPECIAL_SERVICE_SET_METHOD "thing.service.property.set"
#define KK_TSL_SPECIAL_SERVICE_GET_IDENTIFIER "get"
#define KK_TSL_SPECIAL_SERVICE_GET_IDENTIFIER "get"
#define KK_TSL_SPECIAL_SERVICE_GET_METHOD "thing.service.property.get"
#define KK_TSL_SPECIAL_SERVICE_GET_METHOD "thing.service.property.get"
#define KK_TSL_SPECIAL_EVENT_POST_IDENTIFIER "post"
#define KK_TSL_SPECIAL_EVENT_POST_IDENTIFIER "post"
#define KK_TSL_SPECIAL_EVENT_POST_METHOD "thing.event.property.post"
#define KK_TSL_SPECIAL_EVENT_POST_METHOD "thing.event.property.post"
#define KK_TSL_VERSION_IDENTIFIER "Version"
#define KK_TSL_VERSION_IDENTIFIER "Version"
#define KK_TSL_CCU_LANIP_IDENTIFIER "LanIPAddress"
#define KK_TSL_CCU_LANIP_IDENTIFIER "LanIPAddress"
#define KK_TSL_CCU_WANIP_IDENTIFIER "WanIPAddress"
#define KK_TSL_CCU_WANIP_IDENTIFIER "WanIPAddress"
#define KK_TSL_CCU_WANSTATE_IDENTIFIER "WanState"
#define KK_TSL_CCU_WANSTATE_IDENTIFIER "WanState"
#define KK_TSL_CCU_IOTCLOUD_IDENTIFIER "IOTCloudState"
#define KK_TSL_CCU_IOTCLOUD_IDENTIFIER "IOTCloudState"
#define KK_TSL_GATAWAY_VERSION_IDENTIFIER "Version"
#define KK_TSL_GATAWAY_VERSION_IDENTIFIER "Version"
#define KK_TSL_GATAWAY_IP_IDENTIFIER "IPAddress"
#define KK_TSL_GATAWAY_IP_IDENTIFIER "IPAddress"
#define KK_TSL_GATAWAY_MAC_IDENTIFIER "MACAddress"
#define KK_TSL_GATAWAY_MAC_IDENTIFIER "MACAddress"
#define KK_TSL_GATAWAY_PORT_IDENTIFIER "Port"
#define KK_TSL_GATAWAY_PORT_IDENTIFIER "Port"
#define KK_TSL_GATAWAY_SN_IDENTIFIER "SN"
#define KK_TSL_GATAWAY_SN_IDENTIFIER "SN"
#define KK_TSL_GATAWAY_WHITELIST_IDENTIFIER "WhiteListState"
#define KK_TSL_GATAWAY_WHITELIST_IDENTIFIER "WhiteListState"
typedef
enum
{
typedef
enum
{
KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA
,
KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA
,
KK_TSL_DATA_TARGET_SERVICE_OUTPUT_DATA
KK_TSL_DATA_TARGET_SERVICE_OUTPUT_DATA
}
kk_tsl_data_target_e
;
}
kk_tsl_data_target_e
;
typedef
enum
{
typedef
enum
{
DEVICE_HEARTBEAT_TIMEOUT
=
-
15
,
DEVICE_HEARTBEAT_TIMEOUT
=
-
15
,
TSL_ALREADY_EXIST
=
-
14
,
TSL_ALREADY_EXIST
=
-
14
,
TSL_SERVICE_GET_FAILED
=
-
13
,
TSL_SERVICE_GET_FAILED
=
-
13
,
TSL_SERVICE_SET_FAILED
=
-
12
,
TSL_SERVICE_SET_FAILED
=
-
12
,
TSL_EVENT_GET_FAILED
=
-
11
,
TSL_EVENT_GET_FAILED
=
-
11
,
TSL_EVENT_SET_FAILED
=
-
10
,
TSL_EVENT_SET_FAILED
=
-
10
,
TSL_PROPERTY_GET_FAILED
=
-
9
,
TSL_PROPERTY_GET_FAILED
=
-
9
,
TSL_PROPERTY_SET_FAILED
=
-
8
,
TSL_PROPERTY_SET_FAILED
=
-
8
,
TSL_EVENT_NOT_EXIST
=
-
7
,
TSL_EVENT_NOT_EXIST
=
-
7
,
TSL_PROPERTY_NOT_EXIST
=
-
6
,
TSL_PROPERTY_NOT_EXIST
=
-
6
,
TSL_SERVICE_NOT_EXIST
=
-
5
,
TSL_SERVICE_NOT_EXIST
=
-
5
,
JSON_PARSE_FAILED
=
-
4
,
JSON_PARSE_FAILED
=
-
4
,
MEMORY_NOT_ENOUGH
=
-
3
,
MEMORY_NOT_ENOUGH
=
-
3
,
INVALID_PARAMETER
=
-
2
,
INVALID_PARAMETER
=
-
2
,
FAIL_RETURN
=
-
1
,
FAIL_RETURN
=
-
1
,
SUCCESS_RETURN
=
0
,
SUCCESS_RETURN
=
0
,
}
kk_tsl_error_code_t
;
}
kk_tsl_error_code_t
;
typedef
enum
{
typedef
enum
{
KK_TSL_DATA_TYPE_NONE
,
//none
KK_TSL_DATA_TYPE_NONE
,
//none
KK_TSL_DATA_TYPE_INT
,
//int
KK_TSL_DATA_TYPE_INT
,
//int
KK_TSL_DATA_TYPE_FLOAT
,
//float
KK_TSL_DATA_TYPE_FLOAT
,
//float
KK_TSL_DATA_TYPE_DOUBLE
,
//double
KK_TSL_DATA_TYPE_DOUBLE
,
//double
KK_TSL_DATA_TYPE_TEXT
,
//string
KK_TSL_DATA_TYPE_TEXT
,
//string
KK_TSL_DATA_TYPE_ENUM
,
//int
KK_TSL_DATA_TYPE_ENUM
,
//int
KK_TSL_DATA_TYPE_DATE
,
//string
KK_TSL_DATA_TYPE_DATE
,
//string
KK_TSL_DATA_TYPE_BOOL
,
//bool,0 or 1
KK_TSL_DATA_TYPE_BOOL
,
//bool,0 or 1
KK_TSL_DATA_TYPE_ARRAY
,
//support int, float, double, text
KK_TSL_DATA_TYPE_ARRAY
,
//support int, float, double, text
KK_TSL_DATA_TYPE_STRUCT
,
//support above 8 data types
KK_TSL_DATA_TYPE_STRUCT
,
//support above 8 data types
}
kk_tsl_data_type_e
;
}
kk_tsl_data_type_e
;
typedef
struct
{
typedef
struct
{
kk_tsl_data_type_e
type
;
kk_tsl_data_type_e
type
;
int
size
;
int
size
;
void
*
value
;
void
*
value
;
}
kk_tsl_data_value_complex_t
;
}
kk_tsl_data_value_complex_t
;
typedef
struct
{
typedef
struct
{
kk_tsl_data_type_e
type
;
kk_tsl_data_type_e
type
;
union
{
int
mix
;
int
value_int
;
int
max
;
float
value_float
;
int
length
;
double
value_double
;
union
{
void
*
value
;
//string or complex type accroding to data type
int
value_int
;
};
float
value_float
;
}
kk_tsl_data_value_t
;
double
value_double
;
void
*
value
;
//string or complex type accroding to data type
};
typedef
struct
{
}
kk_tsl_data_value_t
;
char
*
identifier
;
kk_tsl_data_value_t
data_value
;
}
kk_tsl_data_t
;
typedef
struct
{
char
*
identifier
;
typedef
struct
{
kk_tsl_data_value_t
data_value
;
char
*
identifier
;
}
kk_tsl_data_t
;
int
input_data_number
;
//input_data Number
kk_tsl_data_t
*
input_datas
;
//input_data array, type is dm_shw_data_t
typedef
struct
{
int
output_data_number
;
//ouput_data Number
char
*
identifier
;
kk_tsl_data_t
*
output_datas
;
//output_data array, type is dm_shw_data_t
int
input_data_number
;
//input_data Number
}
kk_tsl_event_t
;
kk_tsl_data_t
*
input_datas
;
//input_data array, type is dm_shw_data_t
int
output_data_number
;
//ouput_data Number
typedef
struct
{
kk_tsl_data_t
*
output_datas
;
//output_data array, type is dm_shw_data_t
char
*
identifier
;
//synchronized or asynchronized
}
kk_tsl_event_t
;
int
input_data_number
;
//input_data_number
kk_tsl_data_t
*
input_datas
;
//input_data array, type is dm_shw_data_t
typedef
struct
{
int
output_data_number
;
//ouput_data Number
char
*
identifier
;
//synchronized or asynchronized
kk_tsl_data_t
*
output_datas
;
//output_data array, type is dm_shw_data_t
int
input_data_number
;
//input_data_number
}
kk_tsl_service_t
;
kk_tsl_data_t
*
input_datas
;
//input_data array, type is dm_shw_data_t
int
output_data_number
;
//ouput_data Number
kk_tsl_data_t
*
output_datas
;
//output_data array, type is dm_shw_data_t
typedef
struct
{
}
kk_tsl_service_t
;
int
property_number
;
kk_tsl_data_t
*
properties
;
//property array, type is dm_shw_data_t
int
event_number
;
typedef
struct
{
kk_tsl_event_t
*
events
;
//event array, type is dm_shw_event_t
int
property_number
;
int
service_number
;
kk_tsl_data_t
*
properties
;
//property array, type is dm_shw_data_t
kk_tsl_service_t
*
services
;
//service array, type is dm_shw_service_t
int
event_number
;
}
kk_tsl_t
;
kk_tsl_event_t
*
events
;
//event array, type is dm_shw_event_t
int
service_number
;
#endif
kk_tsl_service_t
*
services
;
//service array, type is dm_shw_service_t
}
kk_tsl_t
;
#endif
midware/tsl/tsl_handle/kk_tsl_parse.c
View file @
fc3801f2
...
@@ -351,7 +351,38 @@ static int _kk_tsl_array_struct_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_
...
@@ -351,7 +351,38 @@ static int _kk_tsl_array_struct_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
_kk_tsl_opt_parse
(
_IN_
kk_tsl_data_value_t
*
data_value
,
_IN_
lite_cjson_t
*
root
)
{
int
res
=
0
;
lite_cjson_t
lite_item
;
if
(
data_value
->
type
==
KK_TSL_DATA_TYPE_TEXT
){
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_LENGTH
,
strlen
(
KK_TSL_KEY_LENGTH
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
){
data_value
->
length
=
atoi
(
lite_item
.
value
);
}
}
else
if
(
data_value
->
type
==
KK_TSL_DATA_TYPE_INT
){
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_MIN
,
strlen
(
KK_TSL_KEY_MIN
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
){
data_value
->
mix
=
atoi
(
lite_item
.
value
);
printf
(
"------------>[%s][%d]data_value->mix:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
data_value
->
mix
);
}
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_MAX
,
strlen
(
KK_TSL_KEY_MAX
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
){
data_value
->
max
=
atoi
(
lite_item
.
value
);
printf
(
"------------>[%s][%d]data_value->max:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
data_value
->
max
);
}
}
return
SUCCESS_RETURN
;
}
static
int
_kk_tsl_data_parse
(
_IN_
kk_tsl_data_value_t
*
data_value
,
_IN_
lite_cjson_t
*
root
)
static
int
_kk_tsl_data_parse
(
_IN_
kk_tsl_data_value_t
*
data_value
,
_IN_
lite_cjson_t
*
root
)
{
{
...
@@ -376,7 +407,8 @@ static int _kk_tsl_data_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cj
...
@@ -376,7 +407,8 @@ static int _kk_tsl_data_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cj
memset
(
&
lite_item
,
0
,
sizeof
(
lite_cjson_t
));
memset
(
&
lite_item
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_SPECS
,
strlen
(
KK_TSL_KEY_SPECS
),
&
lite_item
);
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_SPECS
,
strlen
(
KK_TSL_KEY_SPECS
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
)
{
if
(
res
==
SUCCESS_RETURN
)
{
/* dm_log_debug("TSL Data Specs: %.*s",lite_item.value_length,lite_item.value); */
_kk_tsl_opt_parse
(
data_value
,
&
lite_item
);
}
}
//Parse Type And Value
//Parse Type And Value
...
@@ -407,7 +439,6 @@ static int _kk_tsl_property_parse(_IN_ kk_tsl_data_t *property, _IN_ lite_cjson_
...
@@ -407,7 +439,6 @@ static int _kk_tsl_property_parse(_IN_ kk_tsl_data_t *property, _IN_ lite_cjson_
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
//printf("Identifier: %s\n", property->identifier);
//Parse DataType
//Parse DataType
memset
(
&
lite_item
,
0
,
sizeof
(
lite_cjson_t
));
memset
(
&
lite_item
,
0
,
sizeof
(
lite_cjson_t
));
...
@@ -432,12 +463,10 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
...
@@ -432,12 +463,10 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
memset
(
&
lite_properties
,
0
,
sizeof
(
lite_cjson_t
));
memset
(
&
lite_properties
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_PROPERTIES
,
strlen
(
KK_TSL_KEY_PROPERTIES
),
&
lite_properties
);
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_PROPERTIES
,
strlen
(
KK_TSL_KEY_PROPERTIES
),
&
lite_properties
);
if
(
res
==
SUCCESS_RETURN
)
{
if
(
res
==
SUCCESS_RETURN
)
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
!
lite_cjson_is_array
(
&
lite_properties
))
{
if
(
!
lite_cjson_is_array
(
&
lite_properties
))
{
return
JSON_PARSE_FAILED
;
return
JSON_PARSE_FAILED
;
}
}
}
else
{
}
else
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
...
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