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
5ff08f02
Commit
5ff08f02
authored
Oct 31, 2020
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'cwc' into 'master'
【修改内容】增加内场景的设置 See merge request chenweican/k-sdk!62
parents
6d57df34
96769efb
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
940 additions
and
303 deletions
+940
-303
common/api/com_api.h
common/api/com_api.h
+2
-4
common/hal/HAL_OS_linux.c
common/hal/HAL_OS_linux.c
+5
-7
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+1
-1
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+119
-62
midware/midware/dm/kk_dm_mng.h
midware/midware/dm/kk_dm_mng.h
+2
-1
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+172
-10
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+6
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+45
-106
midware/midware/dm/kk_property_db.c
midware/midware/dm/kk_property_db.c
+1
-1
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+109
-6
midware/midware/midware.c
midware/midware/midware.c
+48
-23
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+389
-66
midware/midware/scene/kk_scene_handle.h
midware/midware/scene/kk_scene_handle.h
+19
-0
midware/midware/utils/infra_sha256.c
midware/midware/utils/infra_sha256.c
+2
-2
midware/midware/utils/infra_timer.c
midware/midware/utils/infra_timer.c
+1
-2
midware/tsl/tsl_handle/kk_tsl_common.h
midware/tsl/tsl_handle/kk_tsl_common.h
+3
-0
midware/tsl/tsl_handle/kk_tsl_func.c
midware/tsl/tsl_handle/kk_tsl_func.c
+1
-1
midware/tsl/tsl_handle/kk_tsl_parse.c
midware/tsl/tsl_handle/kk_tsl_parse.c
+15
-11
No files found.
common/api/com_api.h
View file @
5ff08f02
...
...
@@ -93,7 +93,8 @@ typedef enum {
#define MSG_KEYMODIFY_NOTIFICATION "KeyModifyNotification"
/************************SCENE RELATION*************************/
#define MSG_SCENE_ARGS "args"
#define MSG_SCENE_SUPPORT "sceneSupport"
#define MSG_SCENE_MSGID "msgId"
#define MSG_SCENE_NAME "name"
#define MSG_SCENE_SCENCTYPE "sceneType"
#define MSG_SCENE_ENABLE "enable"
...
...
@@ -123,9 +124,6 @@ typedef enum {
typedef
void
ipc_cb
(
void
*
data
,
int
len
,
char
*
chalMark
);
int
kk_ipc_init
(
ipc_type
type
,
ipc_cb
cb
,
char
*
chalMark
,
char
*
ip
);
int
kk_ipc_deinit
(
ipc_type
type
);
...
...
common/hal/HAL_OS_linux.c
View file @
5ff08f02
...
...
@@ -133,16 +133,14 @@ uint64_t HAL_GetTime(void)
}
uint64_t
HAL_GetTimeM
s
(
char
*
outStr
)
time_t
HAL_GetTime_
s
(
char
*
outStr
)
{
uint64_t
time_ms
;
struct
timeval
tv
;
time_t
t
;
t
=
time
(
NULL
);
gettimeofday
(
&
tv
,
NULL
);
time_ms
=
((
uint64_t
)
tv
.
tv_sec
*
(
uint64_t
)
1000
)
+
(
tv
.
tv_usec
/
1000
);
sprintf
(
outStr
,
"%lld"
,
time_ms
);
sprintf
(
outStr
,
"%d"
,
t
);
return
t
ime_ms
;
return
t
;
}
...
...
midware/midware/area/kk_area_handle.c
View file @
5ff08f02
...
...
@@ -128,7 +128,7 @@ int kk_room_add(const char *name,const char *roomId)
values ('%s','%s');"
;
_kk_area_lock
();
ctx
->
roomNum
++
;
HAL_GetTime
M
s
(
roomId
);
HAL_GetTime
_
s
(
roomId
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
name
,
roomId
);
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
...
...
midware/midware/dm/kk_dm_mng.c
View file @
5ff08f02
...
...
@@ -164,7 +164,7 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy
for
(
idx
=
0
;
idx
<
num
;
idx
++
){
pProperty
=
dev_shadow
->
properties
+
idx
;
INFO_PRINT
(
"dm_mgr_properities_db_create pProperty->identifier:%s!!
\n
"
,
pProperty
->
identifier
);
//
INFO_PRINT("dm_mgr_properities_db_create pProperty->identifier:%s!!\n",pProperty->identifier);
if
(
pProperty
){
if
(
pProperty
->
data_value
.
type
==
KK_TSL_DATA_TYPE_STRUCT
){
kk_tsl_data_value_complex_t
*
complex_struct
=
NULL
;
...
...
@@ -201,6 +201,7 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy
}
}
}
return
SUCCESS_RETURN
;
}
int
dm_mgr_device_create
(
_IN_
int
dev_type
,
_IN_
char
productCode
[
PRODUCT_CODE_MAXLEN
],
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
...
...
@@ -374,6 +375,25 @@ int dm_mgr_get_device_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _O
return
FAIL_RETURN
;
}
int
dm_mgr_get_device_by_productType
(
_IN_
char
*
productType
,
_OU_
dm_mgr_dev_node_t
**
node
)
{
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
dm_mgr_dev_node_t
*
search_node
=
NULL
;
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
if
((
strlen
(
search_node
->
deviceCode
)
==
strlen
(
productType
))
&&
(
memcmp
(
search_node
->
deviceCode
,
productType
,
productType
)
==
0
))
{
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
if
(
node
)
{
*
node
=
search_node
;
}
return
SUCCESS_RETURN
;
}
}
ERROR_PRINT
(
"Device Not Found, productType: %s
\n
"
,
productType
);
return
FAIL_RETURN
;
}
int
dm_mgr_update_timestamp_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
time_t
timestamp
)
{
...
...
@@ -401,13 +421,13 @@ int dm_mgr_set_dev_onoffline(dm_mgr_dev_node_t *node,int isOffline)
return
INVALID_PARAMETER
;
}
if
(
isOffline
){
INFO_PRINT
(
"
---------->dev timeout,send offline
\n
"
);
INFO_PRINT
(
"
[%s]dev timeout,send offline
\n
"
,
__FUNCTION__
);
node
->
isOffline
=
KK_DEV_OFFLINE
;
iotx_dm_dev_offline
(
node
->
devid
);
kk_subDev_update_offline
(
node
->
isOffline
,
node
->
deviceCode
);
}
else
{
INFO_PRINT
(
"
---------->dev online,send online
\n
"
);
INFO_PRINT
(
"
[%s]dev online,send online
\n
"
,
__FUNCTION__
);
node
->
isOffline
=
KK_DEV_ONLINE
;
iotx_dm_dev_online
(
node
->
devid
);
if
(
node
->
dev_type
==
KK_DM_DEVICE_CCU
){
...
...
@@ -545,7 +565,7 @@ int dm_mgr_deinit(void)
const
char
DM_URI_THING_EVENT_POST
[]
=
"/thing/event/%s/post"
;
const
char
DM_MSG_THING_UPSTREAM_REQUEST_PARAMS
[]
DM_READ_ONLY
=
"%s"
;
static
int
_dm_mgr_upstream_request_assemble
(
_IN_
int
msgid
,
_IN_
int
devid
,
static
int
_dm_mgr_upstream_request_assemble
(
_IN_
char
*
msgid
,
_IN_
int
devid
,
_IN_
char
*
identify
,
_IN_
char
*
params
,
_IN_
int
params_len
,
_IN_
char
*
method
,
_OU_
dm_msg_request_t
*
request
)
{
...
...
@@ -570,7 +590,9 @@ static int _dm_mgr_upstream_request_assemble(_IN_ int msgid, _IN_ int devid,
memset
(
payload_param
,
0
,
paramLen
);
HAL_Snprintf
(
payload_param
,
paramLen
,
DM_MSG_THING_UPSTREAM_REQUEST_PARAMS
,
params
);
request
->
msgid
=
msgid
;
memcpy
(
request
->
msgid
,
msgid
,
strlen
(
msgid
));
request
->
devid
=
devid
;
msgTypeLen
=
strlen
(
DM_URI_THING_EVENT_POST
)
+
strlen
(
identify
)
+
1
;
request
->
msgTypeStr
=
malloc
(
msgTypeLen
);
...
...
@@ -590,7 +612,7 @@ static int _dm_mgr_upstream_request_assemble(_IN_ int msgid, _IN_ int devid,
const
char
DM_URI_THING_SERVICE_POST
[]
=
"/thing/service/%s_reply"
;
const
char
DM_MSG_THING_UPSTREAM_SERVICE_PARAMS
[]
DM_READ_ONLY
=
"%s"
;
static
int
_dm_mgr_upstream_service_assemble
(
_IN_
int
msgid
,
_IN_
int
devid
,
static
int
_dm_mgr_upstream_service_assemble
(
_IN_
char
*
msgid
,
_IN_
int
devid
,
_IN_
char
*
identify
,
_IN_
char
*
params
,
_IN_
int
params_len
,
_IN_
char
*
method
,
_OU_
dm_msg_request_t
*
request
)
{
...
...
@@ -615,7 +637,7 @@ static int _dm_mgr_upstream_service_assemble(_IN_ int msgid, _IN_ int devid,
memset
(
payload_param
,
0
,
paramLen
);
HAL_Snprintf
(
payload_param
,
paramLen
,
DM_MSG_THING_UPSTREAM_REQUEST_PARAMS
,
params
);
request
->
msgid
=
msgid
;
memcpy
(
request
->
msgid
,
msgid
,
strlen
(
msgid
))
;
request
->
devid
=
devid
;
msgTypeLen
=
strlen
(
DM_URI_THING_SERVICE_POST
)
+
strlen
(
identify
)
+
1
;
request
->
msgTypeStr
=
malloc
(
msgTypeLen
);
...
...
@@ -637,6 +659,7 @@ static unsigned int g_report_id = 1;
int
iotx_report_id
(
void
)
{
return
g_report_id
++
;
}
...
...
@@ -644,13 +667,15 @@ int dm_mgr_upstream_thing_property_post(_IN_ int devid, _IN_ char *payload, _IN_
{
int
res
=
0
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
||
payload
==
NULL
||
payload_len
<=
0
)
{
return
INVALID_PARAMETER
;
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
res
=
_dm_mgr_upstream_request_assemble
(
iotx_report_id
(),
devid
,
"property"
,
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
res
=
_dm_mgr_upstream_request_assemble
(
msgId
,
devid
,
"property"
,
payload
,
payload_len
,
DM_URI_THING_EVENT_PROPERTY_POST_METHOD
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
...
...
@@ -669,6 +694,7 @@ int dm_mgr_upstream_thing_event_post(_IN_ int devid, _IN_ char *identifier, _IN_
_IN_
char
*
payload
,
_IN_
int
payload_len
)
{
int
res
=
0
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
dm_msg_request_t
request
;
...
...
@@ -677,7 +703,37 @@ int dm_mgr_upstream_thing_event_post(_IN_ int devid, _IN_ char *identifier, _IN_
return
INVALID_PARAMETER
;
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
res
=
_dm_mgr_upstream_request_assemble
(
iotx_report_id
(),
devid
,
identifier
,
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
res
=
_dm_mgr_upstream_request_assemble
(
msgId
,
devid
,
identifier
,
payload
,
payload_len
,
method
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
/* Callback */
//request.callback = dm_client_thing_event_post_reply;
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
free
(
request
.
msgTypeStr
);
free
(
request
.
params
);
return
res
;
}
int
dm_mgr_upstream_thing_event_post_ex
(
_IN_
int
devid
,
_IN_
char
*
identifier
,
_IN_
int
identifier_len
,
_IN_
char
*
method
,
_IN_
char
*
payload
,
_IN_
int
payload_len
,
const
char
*
msgId
)
{
int
res
=
0
;
dm_msg_request_t
request
;
if
(
devid
<
0
||
identifier
==
NULL
||
identifier_len
<=
0
||
method
==
NULL
||
payload
==
NULL
||
payload_len
<=
0
)
{
return
INVALID_PARAMETER
;
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
res
=
_dm_mgr_upstream_request_assemble
(
msgId
,
devid
,
identifier
,
payload
,
payload_len
,
method
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
...
...
@@ -699,13 +755,14 @@ int dm_mgr_upstream_thing_service_post(_IN_ int devid, _IN_ char *identifier, _I
int
res
=
0
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
||
identifier
==
NULL
||
identifier_len
<=
0
||
method
==
NULL
||
payload
==
NULL
||
payload_len
<=
0
)
{
return
INVALID_PARAMETER
;
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
res
=
_dm_mgr_upstream_service_assemble
(
iotx_report_id
(),
devid
,
identifier
,
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
res
=
_dm_mgr_upstream_service_assemble
(
msgId
,
devid
,
identifier
,
payload
,
payload_len
,
method
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
...
...
@@ -799,7 +856,7 @@ int dm_mgr_upstream_thing_sub_register(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
}
...
...
@@ -826,7 +883,8 @@ int dm_mgr_upstream_thing_sub_register(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -836,9 +894,7 @@ int dm_mgr_upstream_thing_sub_register(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -851,6 +907,7 @@ int dm_mgr_upstream_thing_sub_unregister(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -879,7 +936,9 @@ int dm_mgr_upstream_thing_sub_unregister(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -891,9 +950,6 @@ int dm_mgr_upstream_thing_sub_unregister(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -906,6 +962,7 @@ int dm_mgr_upstream_thing_topo_add(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -937,7 +994,9 @@ int dm_mgr_upstream_thing_topo_add(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -949,9 +1008,6 @@ int dm_mgr_upstream_thing_topo_add(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -964,6 +1020,7 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
DM_INVALID_PARAMETER
;
...
...
@@ -994,7 +1051,9 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1006,9 +1065,6 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1019,7 +1075,7 @@ int dm_mgr_upstream_thing_topo_get(void)
{
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
dm_msg_request_t
request
;
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
...
...
@@ -1039,7 +1095,9 @@ int dm_mgr_upstream_thing_topo_get(void)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
node
->
devid
;
...
...
@@ -1049,9 +1107,7 @@ int dm_mgr_upstream_thing_topo_get(void)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1064,6 +1120,7 @@ int dm_mgr_upstream_thing_list_found(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -1092,7 +1149,9 @@ int dm_mgr_upstream_thing_list_found(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1102,9 +1161,7 @@ int dm_mgr_upstream_thing_list_found(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1117,6 +1174,7 @@ int dm_mgr_ccu_status_cloud(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -1139,10 +1197,11 @@ int dm_mgr_ccu_status_cloud(_IN_ int devid)
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1154,9 +1213,6 @@ int dm_mgr_ccu_status_cloud(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1169,12 +1225,14 @@ int dm_mgr_upstream_status_online(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
res
=
dm_mgr_search_dev_by_devid
(
devid
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
...
...
@@ -1205,7 +1263,9 @@ int dm_mgr_upstream_status_online(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1217,9 +1277,6 @@ int dm_mgr_upstream_status_online(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1232,6 +1289,7 @@ int dm_mgr_upstream_status_offline(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -1265,7 +1323,9 @@ int dm_mgr_upstream_status_offline(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1277,9 +1337,6 @@ int dm_mgr_upstream_status_offline(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1293,6 +1350,7 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -1321,7 +1379,9 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1333,9 +1393,6 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1347,6 +1404,7 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -1375,7 +1433,9 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1388,9 +1448,6 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
...
...
@@ -1402,6 +1459,7 @@ int dm_mgr_ota_report_version(_IN_ int devid, char *version)
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -1428,7 +1486,9 @@ int dm_mgr_ota_report_version(_IN_ int devid, char *version)
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
memcpy
(
request
.
msgid
,
msgId
,
strlen
(
msgId
));
/* Get Dev ID */
request
.
devid
=
devid
;
...
...
@@ -1441,9 +1501,6 @@ int dm_mgr_ota_report_version(_IN_ int devid, char *version)
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
,
0
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
free
(
request
.
msgTypeStr
);
...
...
midware/midware/dm/kk_dm_mng.h
View file @
5ff08f02
...
...
@@ -17,6 +17,7 @@
#define KK_DM_GW_DEVICE_PRODUCT_CODE "2"
#define KK_DM_DEVICE_CCU_DEVICEID (0x00)
#define MSG_MAX_LEN (64)
typedef
struct
{
int
devid
;
...
...
@@ -40,7 +41,7 @@ typedef struct {
}
dm_mgr_ctx
;
typedef
struct
{
int
msgid
;
char
msgid
[
MSG_MAX_LEN
]
;
int
devid
;
//const char *service_prefix;
//const char *service_name;
...
...
midware/midware/dm/kk_dm_msg.c
View file @
5ff08f02
...
...
@@ -8,7 +8,7 @@
#include "kk_log.h"
const
char
DM_MSG_REQUEST
[]
DM_READ_ONLY
=
"{
\"
msgId
\"
:
\"
%
d
\"
,
\"
version
\"
:
\"
%s
\"
,
\"
params
\"
:%s,
\"
time
\"
:
\"
%lu
\"
,
\"
method
\"
:
\"
%s
\"
}"
;
const
char
DM_MSG_REQUEST
[]
DM_READ_ONLY
=
"{
\"
msgId
\"
:
\"
%
s
\"
,
\"
version
\"
:
\"
%s
\"
,
\"
params
\"
:%s,
\"
time
\"
:
\"
%lu
\"
,
\"
method
\"
:
\"
%s
\"
}"
;
const
char
DM_MSG_INFO
[]
DM_READ_ONLY
=
"{
\"
msgtype
\"
:
\"
%s
\"
,
\"
productCode
\"
:
\"
%s
\"
,
\"
deviceCode
\"
:
\"
%s
\"
}"
;
void
kk_sendData2app
(
void
*
info
,
void
*
payload
,
int
isAsync
){
...
...
@@ -541,11 +541,12 @@ int dm_msg_request (_IN_ dm_msg_request_t *request,_IN_ int isAsync)
}
payload_len
=
strlen
(
DM_MSG_REQUEST
)
+
10
+
strlen
(
DM_MSG_VERSION
)
+
request
->
params_len
+
strlen
(
request
->
method
)
+
1
+
20
;
request
->
method
)
+
1
+
20
+
strlen
(
request
->
msgid
)
;
payload
=
malloc
(
payload_len
);
if
(
payload
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
printf
(
"[%s][%d]----request->msgid:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
request
->
msgid
);
memset
(
payload
,
0
,
payload_len
);
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
request
->
msgid
,
DM_MSG_VERSION
,
request
->
params
,
HAL_GetTime
(),
request
->
method
);
...
...
@@ -782,7 +783,7 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier)
}
return
SUCCESS_RETURN
;
}
int
dm_msg_scene_event_post
(
const
char
*
deviceCode
,
const
char
*
identifier
,
kk_tsl_t
*
dev_shadow
)
int
dm_msg_scene_event_post
(
const
char
*
deviceCode
,
const
char
*
identifier
,
kk_tsl_t
*
dev_shadow
,
const
char
*
msgId
)
{
int
res
=
0
;
int
nums
=
0
;
...
...
@@ -791,7 +792,7 @@ int dm_msg_scene_event_post(const char *deviceCode, const char *identifier,kk_ts
dm_mgr_dev_node_t
*
node
=
NULL
;
void
*
event
=
NULL
;
char
*
method
=
NULL
;
printf
(
"msgId:%s
\n
"
,
msgId
);
if
(
deviceCode
==
NULL
){
return
FAIL_RETURN
;
}
...
...
@@ -813,7 +814,7 @@ int dm_msg_scene_event_post(const char *deviceCode, const char *identifier,kk_ts
free
(
payload
);
return
FAIL_RETURN
;
}
dm_mgr_upstream_thing_event_post
(
node
->
devid
,
identifier
,
strlen
(
identifier
),
method
,
payload
,
strlen
(
payload
)
);
dm_mgr_upstream_thing_event_post
_ex
(
node
->
devid
,
identifier
,
strlen
(
identifier
),
method
,
payload
,
strlen
(
payload
),
msgId
);
free
(
method
);
method
=
NULL
;
free
(
payload
);
...
...
@@ -1044,6 +1045,7 @@ int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,c
char
*
method
=
"thing.service.property.set"
;
char
*
req_info
=
NULL
,
*
payload
=
NULL
;
int
req_info_len
=
0
,
payload_len
=
0
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
req_info_len
=
strlen
(
DM_MSG_INFO
)
+
10
+
strlen
(
productCode
)
+
strlen
(
productCode
)
+
strlen
(
KK_THING_SERVICE_PROPERTY_SET
)
+
1
;
req_info
=
malloc
(
req_info_len
);
...
...
@@ -1054,14 +1056,15 @@ int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,c
snprintf
(
req_info
,
req_info_len
,
DM_MSG_INFO
,
KK_THING_SERVICE_PROPERTY_SET
,
productCode
,
deviceCode
);
payload_len
=
strlen
(
DM_MSG_REQUEST
)
+
10
+
strlen
(
DM_MSG_VERSION
)
+
strlen
(
params
)
+
strlen
(
method
)
+
1
+
20
;
method
)
+
1
+
20
+
sizeof
(
msgId
)
;
payload
=
malloc
(
payload_len
);
if
(
payload
==
NULL
)
{
free
(
req_info
);
return
MEMORY_NOT_ENOUGH
;
}
memset
(
payload
,
0
,
payload_len
);
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
iotx_report_id
(),
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
msgId
,
DM_MSG_VERSION
,
params
,
HAL_GetTime
(),
method
);
cJSON
*
root
=
cJSON_CreateObject
();
...
...
@@ -1079,6 +1082,7 @@ int kk_msg_execute_property_set(const char *productCode,const char *deviceCode,c
}
int
kk_msg_execute_property_get
(
dm_mgr_dev_node_t
*
node
)
{
char
*
method
=
"thing.service.property.get"
;
...
...
@@ -1088,6 +1092,7 @@ int kk_msg_execute_property_get(dm_mgr_dev_node_t *node)
int
needFree
=
0
;
int
i
=
0
,
j
=
0
,
serviceNum
=
0
;
char
*
paramS
=
NULL
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
node
==
NULL
){
return
INVALID_PARAMETER
;
...
...
@@ -1126,14 +1131,15 @@ int kk_msg_execute_property_get(dm_mgr_dev_node_t *node)
}
payload_len
=
strlen
(
DM_MSG_REQUEST
)
+
10
+
strlen
(
DM_MSG_VERSION
)
+
strlen
(
paramS
)
+
strlen
(
method
)
+
1
+
20
;
method
)
+
1
+
20
+
sizeof
(
msgId
)
;
payload
=
malloc
(
payload_len
);
if
(
payload
==
NULL
)
{
free
(
req_info
);
return
MEMORY_NOT_ENOUGH
;
}
memset
(
payload
,
0
,
payload_len
);
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
iotx_report_id
(),
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
msgId
,
DM_MSG_VERSION
,
paramS
,
HAL_GetTime
(),
method
);
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
infoObj
=
cJSON_Parse
(
req_info
);
...
...
@@ -1141,7 +1147,6 @@ int kk_msg_execute_property_get(dm_mgr_dev_node_t *node)
cJSON_AddItemToObject
(
root
,
"info"
,
infoObj
);
cJSON_AddItemToObject
(
root
,
"payload"
,
payloadObj
);
void
*
buf
=
cJSON_Print
(
root
);
printf
(
"------------->buf:%s
\n
"
,
buf
);
if
(
node
->
dev_type
==
KK_DM_DEVICE_GATEWAY
)
kk_sendData2gw
(
buf
,
strlen
(
buf
),
node
->
deviceCode
);
else
...
...
@@ -1177,4 +1182,161 @@ int kk_msg_parse_productType(char *str,char *productType)
}
int
kk_msg_execute_scene_set
(
const
char
*
params
,
const
char
*
fatherDeviceCode
,
int
isUpdate
)
{
int
res
=
0
;
char
*
method
=
KK_THING_METHOD_ADDSCENC
;
char
*
msgType
=
KK_THING_SERVICE_ADDSCENC
;
char
*
req_info
=
NULL
,
*
payload
=
NULL
;
int
req_info_len
=
0
,
payload_len
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
if
(
isUpdate
){
method
=
KK_THING_METHOD_UPDATESCENC
;
msgType
=
KK_THING_SERVICE_UPDATESCENC
;
}
res
=
dm_mgr_get_device_by_devicecode
(
fatherDeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
FAIL_RETURN
;
}
req_info_len
=
strlen
(
DM_MSG_INFO
)
+
10
+
strlen
(
node
->
productCode
)
+
strlen
(
fatherDeviceCode
)
+
strlen
(
msgType
)
+
1
;
req_info
=
malloc
(
req_info_len
);
if
(
req_info
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
memset
(
req_info
,
0
,
req_info_len
);
snprintf
(
req_info
,
req_info_len
,
DM_MSG_INFO
,
msgType
,
node
->
productCode
,
fatherDeviceCode
);
payload_len
=
strlen
(
DM_MSG_REQUEST
)
+
10
+
strlen
(
DM_MSG_VERSION
)
+
strlen
(
params
)
+
strlen
(
method
)
+
1
+
20
+
sizeof
(
msgId
);
payload
=
malloc
(
payload_len
);
if
(
payload
==
NULL
)
{
free
(
req_info
);
return
MEMORY_NOT_ENOUGH
;
}
memset
(
payload
,
0
,
payload_len
);
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
msgId
,
DM_MSG_VERSION
,
params
,
HAL_GetTime
(),
method
);
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
infoObj
=
cJSON_Parse
(
req_info
);
cJSON
*
payloadObj
=
cJSON_Parse
(
payload
);
cJSON_AddItemToObject
(
root
,
"info"
,
infoObj
);
cJSON_AddItemToObject
(
root
,
"payload"
,
payloadObj
);
void
*
buf
=
cJSON_Print
(
root
);
printf
(
"----------------->buf:%s
\n
"
,
buf
);
kk_sendData2gw
(
buf
,
strlen
(
buf
),
fatherDeviceCode
);
free
(
buf
);
free
(
req_info
);
free
(
payload
);
cJSON_Delete
(
root
);
return
SUCCESS_RETURN
;
}
int
kk_msg_execute_scene_action
(
const
char
*
params
,
const
char
*
fatherDeviceCode
)
{
int
res
=
0
;
char
*
method
=
KK_THING_METHOD_EXECUTESCENE
;
char
*
req_info
=
NULL
,
*
payload
=
NULL
;
int
req_info_len
=
0
,
payload_len
=
0
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
dm_mgr_dev_node_t
*
node
=
NULL
;
res
=
dm_mgr_get_device_by_devicecode
(
fatherDeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
FAIL_RETURN
;
}
req_info_len
=
strlen
(
DM_MSG_INFO
)
+
10
+
strlen
(
node
->
productCode
)
+
strlen
(
fatherDeviceCode
)
+
strlen
(
KK_THING_SERVICE_EXECUTESCENE
)
+
1
;
req_info
=
malloc
(
req_info_len
);
if
(
req_info
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
memset
(
req_info
,
0
,
req_info_len
);
snprintf
(
req_info
,
req_info_len
,
DM_MSG_INFO
,
KK_THING_SERVICE_EXECUTESCENE
,
node
->
productCode
,
fatherDeviceCode
);
payload_len
=
strlen
(
DM_MSG_REQUEST
)
+
10
+
strlen
(
DM_MSG_VERSION
)
+
strlen
(
params
)
+
strlen
(
method
)
+
1
+
20
+
sizeof
(
msgId
);
payload
=
malloc
(
payload_len
);
if
(
payload
==
NULL
)
{
free
(
req_info
);
return
MEMORY_NOT_ENOUGH
;
}
memset
(
payload
,
0
,
payload_len
);
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
msgId
,
DM_MSG_VERSION
,
params
,
HAL_GetTime
(),
method
);
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
infoObj
=
cJSON_Parse
(
req_info
);
cJSON
*
payloadObj
=
cJSON_Parse
(
payload
);
cJSON_AddItemToObject
(
root
,
"info"
,
infoObj
);
cJSON_AddItemToObject
(
root
,
"payload"
,
payloadObj
);
void
*
buf
=
cJSON_Print
(
root
);
printf
(
"----------------->buf:%s
\n
"
,
buf
);
kk_sendData2gw
(
buf
,
strlen
(
buf
),
fatherDeviceCode
);
free
(
buf
);
free
(
req_info
);
free
(
payload
);
cJSON_Delete
(
root
);
return
SUCCESS_RETURN
;
}
int
kk_msg_execute_scene_delete
(
const
char
*
params
,
const
char
*
fatherDeviceCode
)
{
int
res
=
0
;
char
*
method
=
KK_THING_METHOD_DELETESCENC
;
char
*
req_info
=
NULL
,
*
payload
=
NULL
;
int
req_info_len
=
0
,
payload_len
=
0
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
dm_mgr_dev_node_t
*
node
=
NULL
;
res
=
dm_mgr_get_device_by_devicecode
(
fatherDeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
FAIL_RETURN
;
}
req_info_len
=
strlen
(
DM_MSG_INFO
)
+
10
+
strlen
(
node
->
productCode
)
+
strlen
(
fatherDeviceCode
)
+
strlen
(
KK_THING_SERVICE_DELETESCENC
)
+
1
;
req_info
=
malloc
(
req_info_len
);
if
(
req_info
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
memset
(
req_info
,
0
,
req_info_len
);
snprintf
(
req_info
,
req_info_len
,
DM_MSG_INFO
,
KK_THING_SERVICE_DELETESCENC
,
node
->
productCode
,
fatherDeviceCode
);
payload_len
=
strlen
(
DM_MSG_REQUEST
)
+
10
+
strlen
(
DM_MSG_VERSION
)
+
strlen
(
params
)
+
strlen
(
method
)
+
1
+
20
+
sizeof
(
msgId
);
payload
=
malloc
(
payload_len
);
if
(
payload
==
NULL
)
{
free
(
req_info
);
return
MEMORY_NOT_ENOUGH
;
}
memset
(
payload
,
0
,
payload_len
);
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
snprintf
(
payload
,
payload_len
,
DM_MSG_REQUEST
,
msgId
,
DM_MSG_VERSION
,
params
,
HAL_GetTime
(),
method
);
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
infoObj
=
cJSON_Parse
(
req_info
);
cJSON
*
payloadObj
=
cJSON_Parse
(
payload
);
cJSON_AddItemToObject
(
root
,
"info"
,
infoObj
);
cJSON_AddItemToObject
(
root
,
"payload"
,
payloadObj
);
void
*
buf
=
cJSON_Print
(
root
);
printf
(
"----------------->buf:%s
\n
"
,
buf
);
kk_sendData2gw
(
buf
,
strlen
(
buf
),
fatherDeviceCode
);
free
(
buf
);
free
(
req_info
);
free
(
payload
);
cJSON_Delete
(
root
);
return
SUCCESS_RETURN
;
}
midware/midware/dm/kk_dm_msg.h
View file @
5ff08f02
...
...
@@ -73,6 +73,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_DELETESCENC "/thing/service/deleteScene"
#define KK_THING_SERVICE_UPDATESCENC "/thing/service/updateScene"
#define KK_THING_SERVICE_PROPERTY_GET_REPLY "/thing/service/property/get_reply"
#define KK_THING_SERVICE_EXECUTESCENE "/thing/service/executeScene"
#define KK_THING_METHOD_DELETESCENC "thing.service.deleteScene"
#define KK_THING_METHOD_UPDATESCENC "thing.service.updateScene"
#define KK_THING_METHOD_EXECUTESCENE "thing.service.executeScene"
#define KK_THING_METHOD_ADDSCENC "thing.service.addScene"
#define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_EVENT_POST "/post"
...
...
midware/midware/dm/kk_linkkit.c
View file @
5ff08f02
...
...
@@ -541,7 +541,7 @@ static int kk_service_addKey_handle(const char *deviceCode,cJSON *param)
if
(
KeyEffectiveTime
==
NULL
)
return
FAIL_RETURN
;;
cJSON
*
KeyExpiryTime
=
cJSON_GetObjectItem
(
param
,
MSG_KEYADD_KEYEXPIRE
);
if
(
KeyExpiryTime
==
NULL
)
return
FAIL_RETURN
;;
HAL_GetTime
M
s
(
keyId
);
HAL_GetTime
_
s
(
keyId
);
kk_property_update_lockkeys
(
deviceCode
,
keyId
,
KeyType
->
valueint
,
KeyRole
->
valueint
,
IsValid
->
valueint
,
KeyName
->
valuestring
,
KeyEffectiveTime
->
valueint
,
KeyExpiryTime
->
valueint
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
MSG_KEYADD_NOTIFICATION_KEYID
,
NULL
,
keyId
);
...
...
@@ -625,65 +625,73 @@ static int kk_service_deleteKey_handle(const char *deviceCode,cJSON *param)
return
SUCCESS_RETURN
;
}
static
int
kk_service_addScene_handle
(
const
char
*
deviceCode
,
cJSON
*
param
)
static
int
kk_service_addScene_handle
(
const
char
*
deviceCode
,
cJSON
*
param
,
cJSON
*
msgId
)
{
int
res
=
0
;
char
sceneId
[
32
]
=
{
0
};
kk_tsl_t
*
pSceneShadow
=
NULL
;
if
(
deviceCode
==
NULL
||
param
==
NULL
){
if
(
deviceCode
==
NULL
||
param
==
NULL
||
msgId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
args
=
cJSON_GetObjectItem
(
param
,
MSG_SCENE_ARGS
);
if
(
args
==
NULL
)
return
FAIL_RETURN
;
res
=
kk_scene_parse_addscene
(
args
,
sceneId
,
0
);
res
=
kk_scene_parse_addscene
(
param
,
sceneId
,
0
);
if
(
res
==
SUCCESS_RETURN
){
pSceneShadow
=
kk_scene_shadow
();
if
(
pSceneShadow
!=
NULL
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
pSceneShadow
,
MSG_SCENE_ADDNOTIFICATION_SCENEID
,
NULL
,
sceneId
);
dm_msg_scene_event_post
(
deviceCode
,
MSG_SCENE_ADDNOTIFICATION
,
pSceneShadow
);
dm_msg_scene_event_post
(
deviceCode
,
MSG_SCENE_ADDNOTIFICATION
,
pSceneShadow
,
msgId
->
valuestring
);
}
}
return
res
;
}
static
int
kk_service_updateScene_handle
(
const
char
*
deviceCode
,
cJSON
*
param
)
static
int
kk_service_updateScene_handle
(
const
char
*
deviceCode
,
cJSON
*
param
,
cJSON
*
msgId
)
{
int
res
=
0
;
kk_tsl_t
*
pSceneShadow
=
NULL
;
if
(
deviceCode
==
NULL
||
param
==
NULL
){
if
(
deviceCode
==
NULL
||
param
==
NULL
||
msgId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
args
=
cJSON_GetObjectItem
(
param
,
MSG_SCENE_ARGS
);
if
(
args
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
sceneId
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_SCENEID
);
cJSON
*
sceneId
=
cJSON_GetObjectItem
(
param
,
MSG_SCENE_SCENEID
);
if
(
sceneId
==
NULL
)
return
FAIL_RETURN
;
res
=
kk_scene_parse_updatescene
(
args
,
sceneId
->
valuestring
);
res
=
kk_scene_parse_updatescene
(
param
,
sceneId
->
valuestring
);
if
(
res
==
SUCCESS_RETURN
){
pSceneShadow
=
kk_scene_shadow
();
if
(
pSceneShadow
!=
NULL
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
pSceneShadow
,
MSG_SCENE_UPDATENOTIFICATION_SCENEID
,
NULL
,
sceneId
->
valuestring
);
dm_msg_scene_event_post
(
deviceCode
,
MSG_SCENE_UPDATENOTIFICATION
,
pSceneShadow
);
dm_msg_scene_event_post
(
deviceCode
,
MSG_SCENE_UPDATENOTIFICATION
,
pSceneShadow
,
msgId
->
valuestring
);
}
}
return
res
;
}
static
int
kk_service_deleteScene_handle
(
const
char
*
deviceCode
,
cJSON
*
param
)
static
int
kk_service_deleteScene_handle
(
const
char
*
deviceCode
,
cJSON
*
param
,
cJSON
*
msgId
)
{
int
res
=
0
;
kk_tsl_t
*
pSceneShadow
=
NULL
;
if
(
deviceCode
==
NULL
||
param
==
NULL
){
char
sceneIdBuf
[
16
]
=
{
0
};
if
(
deviceCode
==
NULL
||
param
==
NULL
||
msgId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
sceneId
=
cJSON_GetObjectItem
(
param
,
MSG_SCENE_SCENEID
);
if
(
sceneId
==
NULL
)
return
FAIL_RETURN
;
if
(
sceneId
->
valuestring
==
NULL
){
sprintf
(
sceneIdBuf
,
"%d"
,
sceneId
->
valueint
);
res
=
kk_scene_parse_deletescene
(
sceneIdBuf
);
}
else
{
res
=
kk_scene_parse_deletescene
(
sceneId
->
valuestring
);
}
if
(
res
==
SUCCESS_RETURN
){
pSceneShadow
=
kk_scene_shadow
();
if
(
pSceneShadow
!=
NULL
){
if
(
strlen
(
sceneIdBuf
)
>
0
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
pSceneShadow
,
MSG_SCENE_DELETENOTIFICATION_SCENEID
,
NULL
,
sceneIdBuf
);
}
else
{
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
pSceneShadow
,
MSG_SCENE_DELETENOTIFICATION_SCENEID
,
NULL
,
sceneId
->
valuestring
);
dm_msg_scene_event_post
(
deviceCode
,
MSG_SCENE_DELETENOTIFICATION
,
pSceneShadow
);
}
dm_msg_scene_event_post
(
deviceCode
,
MSG_SCENE_DELETENOTIFICATION
,
pSceneShadow
,
msgId
->
valuestring
);
}
}
return
res
;
...
...
@@ -759,6 +767,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
state
=
cJSON_GetObjectItem
(
paramStr
,
MSG_IOTClOUDSTATE_STR
);
s_CloudStatus
=
atoi
(
state
->
valuestring
);
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_search_dev_by_devid
(
KK_DM_DEVICE_CCU_DEVICEID
,
&
node
);
res
=
kk_tsl_set_value
(
kk_tsl_set_property_value
,
node
->
dev_shadow
,
KK_TSL_CCU_WANSTATE_IDENTIFIER
,
&
s_CloudStatus
,
NULL
);
...
...
@@ -766,18 +775,23 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
{
ERROR_PRINT
(
"[%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
}
res
=
kk_tsl_set_value
(
kk_tsl_set_property_value
,
node
->
dev_shadow
,
KK_TSL_CCU_IOTCLOUD_IDENTIFIER
,
&
s_CloudStatus
,
NULL
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"[%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
}
kk_property_db_update
(
"CCU_66666"
);
if
(
s_CloudStatus
){
node
->
isOffline
=
KK_DEV_ONLINE
;
iotx_dm_dev_online
(
KK_DM_DEVICE_CCU_DEVICEID
);
//first online,report the online status
usleep
(
200000
);
dm_msg_ccu_property_post
(
node
);
}
}
else
if
(
strstr
(
typeJson
->
valuestring
,
KK_THING_OTA_DEVICE_UPGRADE
)){
INFO_PRINT
(
"ota upgrade...
\n
"
);
kk_dm_ota_send
(
data
,
strlen
(
data
)
+
1
);
...
...
@@ -864,17 +878,20 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_ADDSCENC
)
==
0
){
INFO_PRINT
(
" add scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_addScene_handle
(
deviceCode
->
valuestring
,
paramStr
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_SCENE_MSGID
);
kk_service_addScene_handle
(
deviceCode
->
valuestring
,
paramStr
,
msgId
);
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_UPDATESCENC
)
==
0
){
INFO_PRINT
(
" update scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_updateScene_handle
(
deviceCode
->
valuestring
,
paramStr
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_SCENE_MSGID
);
kk_service_updateScene_handle
(
deviceCode
->
valuestring
,
paramStr
,
msgId
);
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_DELETESCENC
)
==
0
){
INFO_PRINT
(
"delete scene
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
kk_service_deleteScene_handle
(
deviceCode
->
valuestring
,
paramStr
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_SCENE_MSGID
);
kk_service_deleteScene_handle
(
deviceCode
->
valuestring
,
paramStr
,
msgId
);
}
else
{
INFO_PRINT
(
"Error msgtype!!!
\n
"
);
...
...
@@ -1591,10 +1608,6 @@ int _iotx_linkkit_slave_connect(int devid)
iotx_linkkit_upstream_sync_callback_node_t
*
node
=
NULL
;
void
*
semaphore
=
NULL
;
/*if (ctx->is_connected == 0) {
dm_log_err("master isn't start");
return FAIL_RETURN;
}*/
if
(
devid
<=
0
)
{
...
...
@@ -1603,48 +1616,6 @@ int _iotx_linkkit_slave_connect(int devid)
}
/* Subdev Register */
/*res = kk_dm_subdev_register(devid);
if (res < SUCCESS_RETURN) {
return FAIL_RETURN;
}*/
#if 0
if (res > SUCCESS_RETURN) {
semaphore = HAL_SemaphoreCreate();
if (semaphore == NULL) {
return FAIL_RETURN;
}
msgid = res;
_iotx_linkkit_upstream_mutex_lock();
res = _iotx_linkkit_upstream_sync_callback_list_insert(msgid, semaphore, &node);
if (res != SUCCESS_RETURN) {
HAL_SemaphoreDestroy(semaphore);
_iotx_linkkit_upstream_mutex_unlock();
return FAIL_RETURN;
}
_iotx_linkkit_upstream_mutex_unlock();
res = HAL_SemaphoreWait(semaphore, IOTX_LINKKIT_SYNC_DEFAULT_TIMEOUT_MS);
if (res < SUCCESS_RETURN) {
_iotx_linkkit_upstream_mutex_lock();
_iotx_linkkit_upstream_sync_callback_list_remove(msgid);
_iotx_linkkit_upstream_mutex_unlock();
return FAIL_RETURN;
}
_iotx_linkkit_upstream_mutex_lock();
code = node->code;
_iotx_linkkit_upstream_sync_callback_list_remove(msgid);
if (code != SUCCESS_RETURN) {
_iotx_linkkit_upstream_mutex_unlock();
return FAIL_RETURN;
}
_iotx_linkkit_upstream_mutex_unlock();
}
#endif
/* Subdev Add Topo */
res
=
kk_dm_subdev_topo_add
(
devid
);
...
...
@@ -1653,40 +1624,6 @@ int _iotx_linkkit_slave_connect(int devid)
return
FAIL_RETURN
;
}
#if 0
semaphore = HAL_SemaphoreCreate();
if (semaphore == NULL) {
_iotx_linkkit_mutex_unlock();
return FAIL_RETURN;
}
msgid = res;
_iotx_linkkit_upstream_mutex_lock();
res = _iotx_linkkit_upstream_sync_callback_list_insert(msgid, semaphore, &node);
if (res != SUCCESS_RETURN) {
HAL_SemaphoreDestroy(semaphore);
_iotx_linkkit_upstream_mutex_unlock();
return FAIL_RETURN;
}
_iotx_linkkit_upstream_mutex_unlock();
res = HAL_SemaphoreWait(semaphore, IOTX_LINKKIT_SYNC_DEFAULT_TIMEOUT_MS);
if (res < SUCCESS_RETURN) {
_iotx_linkkit_upstream_mutex_lock();
_iotx_linkkit_upstream_sync_callback_list_remove(msgid);
_iotx_linkkit_upstream_mutex_unlock();
return FAIL_RETURN;
}
_iotx_linkkit_upstream_mutex_lock();
code = node->code;
_iotx_linkkit_upstream_sync_callback_list_remove(msgid);
if (code != SUCCESS_RETURN) {
_iotx_linkkit_upstream_mutex_unlock();
return FAIL_RETURN;
}
_iotx_linkkit_upstream_mutex_unlock();
#endif
return
SUCCESS_RETURN
;
}
...
...
@@ -2271,6 +2208,7 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d
_iotx_linkkit_mutex_lock
();
res
=
_iotx_linkkit_slave_connect
(
devid
);
if
(
res
!=
SUCCESS_RETURN
)
{
_iotx_linkkit_mutex_unlock
();
return
FAIL_RETURN
;
}
...
...
@@ -2280,6 +2218,7 @@ int kk_mid_subdev_add(int devType, char productCode[PRODUCT_CODE_MAXLEN], char d
_iotx_linkkit_mutex_unlock
();
return
FAIL_RETURN
;
}
_iotx_linkkit_mutex_unlock
();
return
SUCCESS_RETURN
;
}
...
...
midware/midware/dm/kk_property_db.c
View file @
5ff08f02
...
...
@@ -163,7 +163,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d
if
(
_kk_check_property_exist
(
deviceCode
,
identifier
)
==
1
)
{
WARNING_PRINT
(
"[%s][%d] DATA ALREADY EXIST!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
//
WARNING_PRINT("[%s][%d] DATA ALREADY EXIST!!!\n",__FUNCTION__,__LINE__);
return
SUCCESS_RETURN
;
}
_kk_property_db_lock
();
...
...
midware/midware/dm/kk_sub_db.c
View file @
5ff08f02
...
...
@@ -3,7 +3,7 @@
#include "kk_tsl_api.h"
#include "kk_sub_db.h"
#include "kk_dm_mng.h"
#include "kk_scene_handle.h"
#include "sqlite3.h"
#include "kk_log.h"
...
...
@@ -25,7 +25,8 @@ typedef enum{
DB_AUTH
,
DB_DEVTYPE
,
DB_HEARTBEAT
,
DB_PRODUCTTYPE
DB_PRODUCTTYPE
,
DB_SCENESUPPORT
};
static
kk_subDb_ctx_t
s_kk_subDb_ctx
=
{
NULL
,
0
,
NULL
};
...
...
@@ -71,7 +72,8 @@ static int kk_subDev_db_Init(void)
isAuth INTEGER, \
devType INTEGER, \
heartbeat INTEGER,\
productType varchar(33))"
;
productType varchar(33),\
sceneSupport INTEGER)"
;
char
*
pcErr
;
...
...
@@ -187,8 +189,8 @@ static int _kk_check_subDev_exist(const char* deviceCode)
int
kk_subDev_insert_db
(
int
devType
,
char
productCode
[
PRODUCT_CODE_MAXLEN
],
\
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
fatherDeviceCode
[
DEVICE_CODE_MAXLEN
],
char
mac
[
DEVICE_MAC_MAXLEN
],
char
version
[
DEVICE_VERSION_MAXLEN
],
int
heartbeat
)
{
const
char
*
insertCmd
=
"insert into SubDeviceInfo (idx,isOffline,productCode,deviceCode,mac,fatherDeviceCode,version,isAuth,devType,heartbeat) \
values ('%d','%d', '%s','%s','%s','%s','%s','%d','%d','%d');"
;
const
char
*
insertCmd
=
"insert into SubDeviceInfo (idx,isOffline,productCode,deviceCode,mac,fatherDeviceCode,version,isAuth,devType,heartbeat
,sceneSupport
) \
values ('%d','%d', '%s','%s','%s','%s','%s','%d','%d','%d'
,'%d'
);"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
...
...
@@ -201,7 +203,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
return
SUCCESS_RETURN
;
}
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
ctx
->
subDevNum
,
0
,
productCode
,
deviceCode
,
mac
,
fatherDeviceCode
,
version
,
0
,
devType
,
heartbeat
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
ctx
->
subDevNum
,
0
,
productCode
,
deviceCode
,
mac
,
fatherDeviceCode
,
version
,
0
,
devType
,
heartbeat
,
0
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
...
...
@@ -307,6 +309,29 @@ int kk_subDev_update_auth(int isAuth,const char *deviceCode)
return
SUCCESS_RETURN
;
}
int
kk_subDev_update_sceneSupport
(
int
sceneSupport
,
const
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SubDeviceInfo SET sceneSupport=%d WHERE deviceCode= '%s'"
,
sceneSupport
,
deviceCode
);
INFO_PRINT
(
"kk_subDev_update_sceneSupport sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
INFO_PRINT
(
"Table updata data successfully
\n
"
);
}
sqlite3_free
(
sqlCmd
);
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_subDev_send_property_get_from_db
(
void
)
{
const
char
*
searchCmd
=
"select * from SubDeviceInfo;"
;
...
...
@@ -376,6 +401,84 @@ int kk_subDev_send_property_get(const char *fatherDeviceCode)
}
int
kk_subDev_check_scene_support
(
const
char
*
deviceCode
)
{
int
res
=
0
;
sqlite3_stmt
*
stmt
;
char
*
sqlCmd
=
NULL
;
char
*
pDeviceCode
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE devType= '%d' and sceneSupport = '%d'"
;
if
(
deviceCode
==
NULL
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
INVALID_PARAMETER
;
}
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
KK_DM_DEVICE_GATEWAY
,
1
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
sqlite3_column_text
(
stmt
,
DB_DEVICECODE
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
))
{
return
1
;
}
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
0
;
}
int
kk_subDev_set_action_by_productType
(
const
char
*
productType
,
const
char
*
sceneId
,
const
char
*
propertyName
,
const
char
*
propertyValue
,
const
char
*
type
)
{
int
res
=
0
;
sqlite3_stmt
*
stmt
;
char
*
sqlCmd
=
NULL
;
char
*
pDeviceCode
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE productType= '%s'"
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
productType
==
NULL
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
INVALID_PARAMETER
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
productType
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
sqlite3_column_text
(
stmt
,
DB_DEVICECODE
);
res
=
dm_mgr_get_device_by_devicecode
(
pDeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
continue
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
kk_subDev_check_scene_support
(
node
->
fatherDeviceCode
)
==
1
){
kk_scene_action_detail_t
info
=
{
0
};
memcpy
(
info
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
memcpy
(
info
.
propertyName
,
propertyName
,
strlen
(
propertyName
));
memcpy
(
info
.
propertyValue
,
propertyValue
,
strlen
(
propertyValue
));
info
.
epNum
=
1
;
info
.
delay
=
0
;
kk_scene_action_add
(
node
->
fatherDeviceCode
,
sceneId
,
info
);
res
=
kk_scene_insert_scene_action
(
type
,
node
->
deviceCode
,
info
.
epNum
,
propertyName
,
propertyValue
,
info
.
delay
,
sceneId
,
node
->
fatherDeviceCode
);
if
(
res
!=
SUCCESS_RETURN
){
INFO_PRINT
(
"kk_subDev_set_action_by_productType fail!!!
\n
"
);
//return res;
continue
;
}
}
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
SUCCESS_RETURN
;
}
...
...
midware/midware/midware.c
View file @
5ff08f02
...
...
@@ -49,6 +49,7 @@ static int _kk_filter_to_plat(const char* msgtype)
for
(
i
=
0
;
i
<
num
;
i
++
){
if
(
strstr
(
msgtype
,
g_filerToPlatTable
[
i
]))
{
INFO_PRINT
(
"this msg do not send to platform!!!
\n
"
);
return
1
;
}
}
...
...
@@ -153,7 +154,8 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
}
}
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
){
}
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
);
...
...
@@ -313,9 +315,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
msgType
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
info_dcode
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
if
(
msgType
==
NULL
||
info_dcode
==
NULL
){
ERROR_PRINT
(
"msgType info_dcode or jsonPay params are error
\n
"
);
goto
error
;
...
...
@@ -324,12 +323,11 @@ void kk_platMsg_handle(void* data, char* chalMark){
if
(
chalMark
!=
NULL
){
dm_mgr_update_timestamp_by_devicecode
(
chalMark
,
HAL_Uptimes
());
}
dm_mgr_update_timestamp_by_devicecode
(
info_dcode
->
valuestring
,
HAL_Uptimes
());
if
(
strcmp
(
msgType
->
valuestring
,
KK_THING_TOPO_ADD_MSG
)
==
0
){
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
proCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_PRODUCT_CODE_STR
);
devCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
mac
=
cJSON_GetObjectItem
(
jsonPay
,
"mac"
);
...
...
@@ -343,6 +341,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
char
ccu_deviceCode
[
DEVICE_CODE_MAXLEN
]
=
{
0
};
HAL_GetDevice_Code
(
ccu_deviceCode
);
kk_mid_subdev_add
(
KK_DM_DEVICE_GATEWAY
,
proCode
->
valuestring
,
devCode
->
valuestring
,
mac
->
valuestring
,
ccu_deviceCode
);
cJSON
*
sceneSupportStr
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_SCENE_SUPPORT
);
if
(
sceneSupportStr
!=
NULL
&&
sceneSupportStr
->
valueint
==
1
){
kk_subDev_update_sceneSupport
(
1
,
devCode
->
valuestring
);
}
}
else
{
kk_mid_subdev_add
(
KK_DM_DEVICE_SUBDEV
,
proCode
->
valuestring
,
devCode
->
valuestring
,
mac
->
valuestring
,
info_dcode
->
valuestring
);
}
...
...
@@ -352,7 +354,9 @@ void kk_platMsg_handle(void* data, char* chalMark){
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_BATCH_ADD_MSG
)
!=
NULL
){
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
));
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
cJSON
*
devices
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_TOPO_CHANGE_DEVICES_STR
);
if
(
devices
==
NULL
)
goto
error
;
cJSON
*
item
=
devices
->
child
;
while
(
item
!=
NULL
){
char
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
)
->
valuestring
;
...
...
@@ -366,6 +370,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_PROPERTY_POST
)
!=
NULL
){
INFO_PRINT
(
"save property and send to cloud
\n
"
);
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
char
*
outstr
=
cJSON_Print
(
payload
);
dm_mgr_dev_node_t
*
search_node
=
NULL
;
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
search_node
);
...
...
@@ -380,6 +385,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_DELETE_MSG
)
!=
NULL
){
INFO_PRINT
(
"kk_platMsg_handle data: handle delete
\n
"
);
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
devCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
)
+
1
);
dm_mgr_subdev_delete
(
devCode
->
valuestring
);
...
...
@@ -392,6 +398,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
char
tmpStr
[
128
]
=
{
0
};
cJSON
*
itemStr
=
NULL
;
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
res
=
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
node
);
if
(
res
<
SUCCESS_RETURN
)
{
goto
error
;
...
...
@@ -408,7 +415,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
eventItem
->
output_data_number
>
0
){
int
index
=
0
;
kk_tsl_data_t
*
itemData
=
NULL
;
for
(
index
=
0
;
index
<
eventItem
->
output_data_number
;
index
++
){
itemStr
=
cJSON_GetObjectItem
(
jsonPay
,
eventItem
->
identifier
);
itemData
=
eventItem
->
output_datas
+
index
;
...
...
@@ -416,7 +422,20 @@ void kk_platMsg_handle(void* data, char* chalMark){
memset
(
tmpStr
,
0x0
,
sizeof
(
tmpStr
));
sprintf
(
tmpStr
,
"%s.%s"
,
eventItem
->
identifier
,
itemData
->
identifier
);
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_ENUM
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_BOOL
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemStr
->
valueint
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_FLOAT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DOUBLE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemStr
->
valuedouble
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemStr
->
valuestring
);
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
...
...
@@ -426,8 +445,20 @@ void kk_platMsg_handle(void* data, char* chalMark){
if
(
itemDataIdentifier
!=
NULL
){
memset
(
tmpStr
,
0x0
,
sizeof
(
tmpStr
));
sprintf
(
tmpStr
,
"%s.%s"
,
eventItem
->
identifier
,
itemData
->
identifier
);
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_ENUM
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_BOOL
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemDataIdentifier
->
valueint
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_FLOAT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DOUBLE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemDataIdentifier
->
valuedouble
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemDataIdentifier
->
valuestring
);
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
...
...
@@ -452,6 +483,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_BATCH_DELETE_MSG
)
!=
NULL
){
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
));
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
cJSON
*
devices
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_TOPO_CHANGE_DEVICES_STR
);
cJSON
*
item
=
devices
->
child
;
while
(
item
!=
NULL
){
...
...
@@ -468,7 +500,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
res
=
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
;
goto
error
;
}
/*开机先获取网关属性,网关返回relay,置网关状态在线*/
if
(
node
->
dev_type
==
KK_DM_DEVICE_GATEWAY
){
...
...
@@ -514,13 +546,6 @@ void kk_platMsg_dispatch(void)
}
time_t
getSysTime
(){
time_t
t
;
t
=
time
(
NULL
);
return
t
;
}
typedef
struct
{
int
auto_add_subdev
;
int
master_devid
;
...
...
midware/midware/scene/kk_scene_handle.c
View file @
5ff08f02
...
...
@@ -15,7 +15,6 @@ typedef struct {
void
*
mutex
;
sqlite3
*
pDb
;
void
*
s_scene_thread
;
}
kk_scene_ctx_t
;
...
...
@@ -59,10 +58,50 @@ typedef enum{
DB_SCENEACTION_PROPERTYVALUE
,
DB_SCENEACTION_DELAY
,
DB_SCENEACTION_SCENEID
,
DB_SCENEACTION_GWDEVICECODE
,
};
static
kk_scene_action_t
*
p_kk_scene_action
=
NULL
;
static
kk_scene_ctx_t
s_kk_scene_ctx
=
{
NULL
};
static
int
kk_scene_check_value_ex
(
const
char
*
compareType
,
const
char
*
compareValue1
,
const
char
*
compareValue2
)
{
int
res
=
FAIL_RETURN
;
int
type
=
0
;
int
ivalue
=
0
;
int
itemValue
=
0
;
double
dvalue
=
0
;
double
ditemValue
=
0
;
if
(
compareType
==
NULL
||
compareValue1
==
NULL
||
compareValue2
==
NULL
){
ERROR_PRINT
(
"[%d]kk_scene_check_value fail!!!
\n
"
,
__LINE__
);
return
INVALID_PARAMETER
;
}
if
(
!
strcmp
(
compareType
,
"="
)
&&
!
strcmp
(
compareValue1
,
compareValue2
)){
res
=
0
;
}
else
if
(
!
strcmp
(
compareType
,
">"
)
&&
strcmp
(
compareValue1
,
compareValue2
)
>
0
){
res
=
0
;
}
else
if
(
!
strcmp
(
compareType
,
">="
)
&&
strcmp
(
compareValue1
,
compareValue2
)
>=
0
){
res
=
0
;
}
else
if
(
!
strcmp
(
compareType
,
"<="
)
&&
strcmp
(
compareValue1
,
compareValue2
)
<=
0
){
res
=
0
;
}
else
if
(
!
strcmp
(
compareType
,
"<"
)
&&
strcmp
(
compareValue1
,
compareValue2
)
<
0
){
res
=
0
;
}
return
res
;
}
static
kk_scene_ctx_t
*
_kk_scene_get_ctx
(
void
)
{
return
&
s_kk_scene_ctx
;
...
...
@@ -154,7 +193,8 @@ static int _kk_scene_db_init(void)
propertyName varchar(255), \
propertyValue varchar(255), \
delay INTEGER, \
sceneId varchar(255))"
;
sceneId varchar(255),\
gwdeviceCode varchar(255))"
;
if
(
sqlite3_exec
(
ctx
->
pDb
,
pSceneActionTable
,
NULL
,
NULL
,
&
pcErr
)
!=
SQLITE_OK
)
...
...
@@ -434,20 +474,148 @@ static int kk_scene_insert_scene_condition(const char* type,int startTime,int en
}
static
int
kk_scene_action_info_add
(
kk_scene_action_info_ex_t
**
head
,
kk_scene_action_detail_t
detail
)
{
int
len
;
kk_scene_action_info_ex_t
*
ptr
,
*
pre
;
ptr
=
pre
=
*
head
;
while
(
ptr
!=
NULL
){
pre
=
ptr
;
ptr
=
ptr
->
next
;
}
ptr
=
(
kk_scene_action_info_ex_t
*
)
malloc
(
sizeof
(
kk_scene_action_info_ex_t
));
if
(
ptr
==
NULL
){
return
FAIL_RETURN
;
}
//printf("kk_scene_action_add 11 add:%p\n",ptr);
memset
(
ptr
,
0
,
sizeof
(
kk_scene_action_info_ex_t
));
memcpy
(
&
ptr
->
info
,
&
detail
,
sizeof
(
kk_scene_action_detail_t
));
if
(
*
head
==
NULL
){
*
head
=
ptr
;
}
else
{
pre
->
next
=
ptr
;
}
return
SUCCESS_RETURN
;
}
int
kk_scene_action_add
(
const
char
*
gwdeviceCode
,
const
char
*
sceneId
,
kk_scene_action_detail_t
detail
)
{
int
len
;
kk_scene_action_t
*
ptr
,
*
pre
;
ptr
=
pre
=
p_kk_scene_action
;
if
(
gwdeviceCode
==
NULL
||
sceneId
==
NULL
){
return
FAIL_RETURN
;
}
while
(
ptr
!=
NULL
){
pre
=
ptr
;
if
(
strcmp
(
ptr
->
gwdeviceCode
,
gwdeviceCode
)
==
0
){
kk_scene_action_info_add
(
&
ptr
->
actionInfo
,
detail
);
return
SUCCESS_RETURN
;
}
ptr
=
ptr
->
next
;
}
ptr
=
(
kk_scene_action_t
*
)
malloc
(
sizeof
(
kk_scene_action_t
));
if
(
ptr
==
NULL
){
return
FAIL_RETURN
;
}
//printf("kk_scene_action_add add:%p\n",ptr);
memset
(
ptr
,
0
,
sizeof
(
kk_scene_action_t
));
memcpy
(
ptr
->
gwdeviceCode
,
gwdeviceCode
,
strlen
(
gwdeviceCode
));
memcpy
(
ptr
->
sceneId
,
sceneId
,
strlen
(
sceneId
));
kk_scene_action_info_add
(
&
ptr
->
actionInfo
,
detail
);
if
(
p_kk_scene_action
==
NULL
){
p_kk_scene_action
=
ptr
;
}
else
{
pre
->
next
=
ptr
;
}
return
SUCCESS_RETURN
;
}
static
int
kk_scene_action_free
(
void
)
{
int
len
;
kk_scene_action_t
*
ptr
,
*
pnext
;
kk_scene_action_info_ex_t
*
actionTemp
=
NULL
;
ptr
=
p_kk_scene_action
;
while
(
ptr
){
pnext
=
ptr
->
next
;
actionTemp
=
ptr
->
actionInfo
;
while
(
actionTemp
!=
NULL
){
kk_scene_action_info_ex_t
*
ptemp
=
actionTemp
->
next
;
//printf("kk_scene_action_free free:%p\n",actionTemp);
free
(
actionTemp
);
actionTemp
=
NULL
;
actionTemp
=
ptemp
;
}
//printf("kk_scene_action_free free ptr:%p\n",ptr);
free
(
ptr
);
ptr
=
NULL
;
ptr
=
pnext
;
}
p_kk_scene_action
=
NULL
;
return
SUCCESS_RETURN
;
}
int
kk_scene_action_info_send
(
int
isUpdate
)
{
kk_scene_action_t
*
ptr
=
p_kk_scene_action
;
kk_scene_action_info_ex_t
*
ptmp
=
NULL
;
if
(
ptr
==
NULL
){
return
FAIL_RETURN
;
}
while
(
ptr
){
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
array
=
cJSON_CreateArray
();
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
ptr
->
sceneId
);
ptmp
=
ptr
->
actionInfo
;
while
(
ptr
->
actionInfo
){
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_DEVICE_CODE_STR
,
ptr
->
actionInfo
->
info
.
deviceCode
);
cJSON_AddStringToObject
(
info
,
MSG_SCENE_PROPERTYNAME
,
ptr
->
actionInfo
->
info
.
propertyName
);
cJSON_AddStringToObject
(
info
,
MSG_SCENE_PROPERTYVALUE
,
ptr
->
actionInfo
->
info
.
propertyValue
);
cJSON_AddNumberToObject
(
info
,
MSG_SCENE_DELAY
,
ptr
->
actionInfo
->
info
.
delay
);
cJSON_AddNumberToObject
(
info
,
MSG_SCENE_EPNUM
,
ptr
->
actionInfo
->
info
.
epNum
);
cJSON_AddItemToArray
(
array
,
info
);
ptr
->
actionInfo
=
ptr
->
actionInfo
->
next
;
}
ptr
->
actionInfo
=
ptmp
;
cJSON_AddItemToObject
(
root
,
MSG_SCENE_ACTIONS
,
array
);
char
*
out
=
cJSON_Print
(
root
);
//printf("out:%s\n",out);
kk_msg_execute_scene_set
(
out
,
ptr
->
gwdeviceCode
,
isUpdate
);
cJSON_Delete
(
root
);
free
(
out
);
ptr
=
ptr
->
next
;
}
kk_scene_action_free
();
return
SUCCESS_RETURN
;
}
static
int
kk_scene_insert_scene_action
(
const
char
*
type
,
const
char
*
deviceCode
,
int
epNum
,
const
char
*
propertyName
,
const
char
*
propertyValue
,
int
delay
,
const
char
*
sceneId
)
int
kk_scene_insert_scene_action
(
const
char
*
type
,
const
char
*
deviceCode
,
int
epNum
,
const
char
*
propertyName
,
const
char
*
propertyValue
,
int
delay
,
const
char
*
sceneId
,
const
char
*
gwdeviceCode
)
{
int
res
=
0
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
const
char
*
insertCmd
=
"insert into SceneActionInfo (type, deviceCode,epNum,propertyName,propertyValue,delay,sceneId) \
values ('%s','%s','%d','%s','%s','%d','%s');"
;
const
char
*
insertCmd
=
"insert into SceneActionInfo (type, deviceCode,epNum,propertyName,propertyValue,delay,sceneId
,gwdeviceCode
) \
values ('%s','%s','%d','%s','%s','%d','%s'
,'%s'
);"
;
_kk_scene_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
type
,
deviceCode
,
epNum
,
propertyName
,
propertyValue
,
delay
,
sceneId
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
type
,
deviceCode
,
epNum
,
propertyName
,
propertyValue
,
delay
,
sceneId
,
gwdeviceCode
);
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
res
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
...
...
@@ -535,8 +703,40 @@ int kk_scene_delete_scene_action(const char *sceneId)
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
const
char
*
deleteCmd
=
"delete from SceneActionInfo where sceneId = '%s';"
;
char
*
gwdeviceCode
=
NULL
;
char
gwdevice
[][
DEVICE_CODE_MAXLEN
]
=
{
0
};
int
idx
=
0
,
num
=
0
;
sqlite3_stmt
*
stmt
;
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE sceneId = '%s'"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
next:
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
gwdeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
kk_subDev_check_scene_support
(
gwdeviceCode
)
==
1
){
for
(
idx
=
0
;
idx
<
num
;
idx
++
){
if
(
!
strcmp
(
gwdevice
[
idx
],
gwdeviceCode
)){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
goto
next
;
}
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
memcpy
(
gwdevice
[
num
],
gwdeviceCode
,
strlen
(
gwdeviceCode
));
num
++
;
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
sceneId
);
char
*
out
=
cJSON_Print
(
root
);
res
=
kk_msg_execute_scene_delete
(
out
,
gwdeviceCode
);
cJSON_Delete
(
root
);
free
(
out
);
}
}
sqlite3_finalize
(
stmt
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
const
char
*
deleteCmd
=
"delete from SceneActionInfo where sceneId = '%s';"
;
_kk_scene_lock
();
sqlCmd
=
sqlite3_mprintf
(
deleteCmd
,
sceneId
);
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
...
...
@@ -551,7 +751,30 @@ int kk_scene_delete_scene_action(const char *sceneId)
_kk_scene_unlock
();
return
SUCCESS_RETURN
;
}
static
int
kk_scene_parse_trigger_detail
(
const
char
*
type
,
const
cJSON
*
item
,
const
char
*
sceneId
)
{
int
res
=
FAIL_RETURN
;
if
(
type
==
NULL
||
item
==
NULL
||
sceneId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
if
(
propertyName
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
compareType
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPARETYPE
);
if
(
compareType
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
compareValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPAREVALUE
);
if
(
compareValue
==
NULL
)
return
FAIL_RETURN
;
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
deviceCode
->
valueint
,
propertyName
->
valuestring
,
compareType
->
valuestring
,
compareValue
->
valuestring
,
sceneId
);
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"kk_scene_parse_scene_trigger fail!!!
\n
"
);
}
return
res
;
}
int
kk_scene_parse_scene_trigger
(
const
cJSON
*
str
,
const
char
*
sceneId
)
{
...
...
@@ -568,18 +791,7 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
while
(
item
!=
NULL
){
cJSON
*
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
if
(
type
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
if
(
propertyName
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
compareType
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPARETYPE
);
if
(
compareType
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
compareValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPAREVALUE
);
if
(
compareValue
==
NULL
)
return
FAIL_RETURN
;
res
=
kk_scene_insert_scene_trigger
(
type
->
valuestring
,
deviceCode
->
valuestring
,
deviceCode
->
valueint
,
propertyName
->
valuestring
,
compareType
->
valuestring
,
compareValue
->
valuestring
,
sceneId
);
res
=
kk_scene_parse_trigger_detail
(
type
->
valuestring
,
item
,
sceneId
);
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"kk_scene_parse_scene_trigger fail!!!
\n
"
);
return
res
;
...
...
@@ -690,34 +902,40 @@ int kk_scene_parse_scene_condition(const cJSON* str,const char *sceneId)
while
(
item
!=
NULL
){
cJSON
*
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
if
(
type
==
NULL
)
return
FAIL_RETURN
;
if
(
!
strcmp
(
"condition/timeRange"
,
type
->
valuestring
)){
cJSON
*
startTime
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_STARTTIME
);
if
(
startTime
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
endTime
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_ENDTIME
);
if
(
endTime
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
crossday
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_CROSSDAY
);
if
(
crossday
==
NULL
)
return
FAIL_RETURN
;
//
cJSON *crossday = cJSON_GetObjectItem(item,MSG_SCENE_CROSSDAY);
//
if(crossday == NULL) return FAIL_RETURN;
cJSON
*
repeatday
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_REPEATDAYS
);
if
(
repeatday
==
NULL
)
return
FAIL_RETURN
;
weekflag
=
kk_scene_parse_repeatday
(
repeatday
);
if
(
!
strcmp
(
"timeRange"
,
type
->
valuestring
)){
kk_scene_push_timer_info
(
startTime
->
valueint
,
endTime
->
valueint
,
weekflag
,
sceneId
);
}
res
=
kk_scene_insert_scene_condition
(
type
->
valuestring
,
startTime
->
valueint
,
endTime
->
valueint
,
crossday
->
valueint
,
weekflag
,
sceneId
);
0
,
weekflag
,
sceneId
);
if
(
res
!=
SUCCESS_RETURN
){
INFO_PRINT
(
"kk_scene_insert_scene_condition fail!!!
\n
"
);
return
res
;
}
}
else
if
(
!
strcmp
(
"condition"
,
type
->
valuestring
)){
kk_scene_parse_trigger_detail
(
type
->
valuestring
,
item
,
sceneId
);
}
else
{
INFO_PRINT
(
"kk_scene_parse_scene_condition wrong type!!!
\n
"
);
}
item
=
item
->
next
;
}
INFO_PRINT
(
"kk_scene_parse_scene_condition success!!!
\n
"
);
return
SUCCESS_RETURN
;
}
int
kk_scene_parse_scene_action
(
const
cJSON
*
str
,
const
char
*
sceneId
)
int
kk_scene_parse_scene_action
(
const
cJSON
*
str
,
const
char
*
sceneId
,
int
isUpdate
)
{
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
if
(
str
==
NULL
||
sceneId
==
NULL
){
ERROR_PRINT
(
"kk_scene_parse_scene_action failed
\n
"
);
return
INVALID_PARAMETER
;
...
...
@@ -725,33 +943,55 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId)
cJSON
*
action
=
cJSON_GetObjectItem
(
str
,
MSG_SCENE_ACTIONS
);
if
(
action
==
NULL
)
return
FAIL_RETURN
;
//cJSON *items = cJSON_GetObjectItem(conditon,MSG_SCENE_ITEMS);
//if(items == NULL) return FAIL_RETURN;
cJSON
*
item
=
action
->
child
;
while
(
item
!=
NULL
){
cJSON
*
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
if
(
type
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
if
(
propertyName
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
propertyValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYVALUE
);
if
(
propertyValue
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
productType
=
cJSON_GetObjectItem
(
item
,
MSG_PRODUCT_TYPE_STR
);
if
(
productType
!=
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
sceneId
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
type
->
valuestring
);
}
else
{
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
)
return
FAIL_RETURN
;
epNum
=
epNum
->
valueint
;
cJSON
*
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
if
(
delay
==
NULL
)
return
FAIL_RETURN
;
delay
=
delay
->
valueint
;
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
->
valuestring
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
item
=
item
->
next
;
continue
;
}
if
(
kk_subDev_check_scene_support
(
node
->
fatherDeviceCode
)
==
1
){
kk_scene_action_detail_t
info
=
{
0
};
memcpy
(
info
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
memcpy
(
info
.
propertyName
,
propertyName
->
valuestring
,
strlen
(
propertyName
->
valuestring
));
memcpy
(
info
.
propertyValue
,
propertyValue
->
valuestring
,
strlen
(
propertyValue
->
valuestring
));
info
.
epNum
=
epNum
;
info
.
delay
=
delay
;
kk_scene_action_add
(
node
->
fatherDeviceCode
,
sceneId
,
info
);
res
=
kk_scene_insert_scene_action
(
type
->
valuestring
,
deviceCode
->
valuestring
,
epNum
->
valueint
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
delay
->
valueint
,
sceneId
);
}
res
=
kk_scene_insert_scene_action
(
type
->
valuestring
,
node
->
deviceCode
,
epNum
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
delay
,
sceneId
,
node
->
fatherDeviceCode
);
if
(
res
!=
SUCCESS_RETURN
){
INFO_PRINT
(
"kk_scene_insert_scene_action fail!!!
\n
"
);
return
res
;
}
}
item
=
item
->
next
;
}
INFO_PRINT
(
"kk_scene_parse_scene_action success!!!
\n
"
);
kk_scene_action_info_send
(
isUpdate
);
return
SUCCESS_RETURN
;
}
...
...
@@ -772,7 +1012,7 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate)
cJSON
*
enable
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_ENABLE
);
if
(
enable
==
NULL
)
return
FAIL_RETURN
;
if
(
!
isUpdate
){
HAL_GetTime
M
s
(
sceneId
);
//use time to create the sceneId
HAL_GetTime
_
s
(
sceneId
);
//use time to create the sceneId
}
//sprintf(sceneId,"%lld",u64SceneKeyId);
...
...
@@ -790,10 +1030,10 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate)
res
=
kk_scene_parse_scene_condition
(
args
,
sceneId
);
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"kk_scene_parse_scene_condition failed
\n
"
);
return
FAIL_RETURN
;
//
return FAIL_RETURN;
}
res
=
kk_scene_parse_scene_action
(
args
,
sceneId
);
res
=
kk_scene_parse_scene_action
(
args
,
sceneId
,
isUpdate
);
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"kk_scene_parse_scene_action failed
\n
"
);
return
FAIL_RETURN
;
...
...
@@ -904,6 +1144,54 @@ static time_t kk_scene_creat_new_starttime(time_t starttime,time_t current)
INFO_PRINT
(
"kk_scene_creat_new_starttime:%ld
\n
"
,
newTime
);
return
newTime
;
}
int
kk_scene_check_trigger_condition
(
const
char
*
sceneId
)
{
int
res
=
FAIL_RETURN
;
char
*
sqlCmd
=
NULL
;
char
*
pdeviceCode
=
NULL
;
char
*
identifier
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareValue
=
NULL
;
int
propertyValueType
=
0
;
int
conditionFlag
=
0
;
sqlite3_stmt
*
stmt
;
char
*
currentValue
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo WHERE sceneId = '%s' and type = '%s'"
,
sceneId
,
"condition"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
conditionFlag
=
1
;
pdeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
identifier
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
propertyValueType
=
kk_dm_get_property_type
(
pdeviceCode
,
identifier
);
res
=
dm_mgr_get_device_by_devicecode
(
pdeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
continue
;
}
res
=
kk_tsl_get_value
(
kk_tsl_get_property_value
,
node
->
dev_shadow
,
identifier
,
NULL
,
&
currentValue
);
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
continue
;
}
res
=
kk_scene_check_value_ex
(
compareType
,
currentValue
,
compareValue
);
free
(
currentValue
);
currentValue
=
NULL
;
}
sqlite3_finalize
(
stmt
);
/*如果没有设置条件,直接return success*/
if
(
conditionFlag
==
0
){
res
=
SUCCESS_RETURN
;
}
return
res
;
}
int
kk_scene_check_condition
(
const
char
*
sceneId
)
{
...
...
@@ -915,6 +1203,7 @@ int kk_scene_check_condition(const char *sceneId)
time_t
endTime
=
0
,
endTime_m
=
0
;
int
duration
=
0
;
int
crossDay
=
0
;
int
conditionFlag
=
0
;
sqlite3_stmt
*
stmt
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
time_t
current
=
HAL_GetTime
();
...
...
@@ -923,6 +1212,7 @@ int kk_scene_check_condition(const char *sceneId)
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneConditionInfo WHERE sceneId = '%s'"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
conditionFlag
=
1
;
repeatday
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_REPEATDAY
);
startTime
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_STARTTIME
);
endTime
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_ENDTIME
);
...
...
@@ -969,9 +1259,17 @@ int kk_scene_check_condition(const char *sceneId)
}
}
sqlite3_finalize
(
stmt
);
/*如果没有设置条件,直接return success*/
if
(
conditionFlag
==
0
){
res
=
SUCCESS_RETURN
;
}
return
res
;
}
static
int
kk_scene_check_value
(
const
char
*
compareType
,
const
char
*
compareValue
,
cJSON
*
item
,
int
valueType
)
{
int
res
=
FAIL_RETURN
;
...
...
@@ -1000,7 +1298,7 @@ static int kk_scene_check_value(const char * compareType,const char * compareVal
break
;
case
KK_TSL_DATA_TYPE_TEXT
:
case
KK_TSL_DATA_TYPE_DATE
:
type
=
2
;
type
=
2
;
//字串
break
;
}
if
(
type
==
2
){
...
...
@@ -1170,19 +1468,41 @@ int kk_scene_execute_action(const char* sceneId)
char
*
deviceCode
=
NULL
;
char
*
propertyName
=
NULL
;
char
*
propertyValue
=
NULL
;
char
*
gwdeviceCode
=
NULL
;
int
delay
=
0
;
char
*
sqlCmd
=
NULL
;
char
gwdevice
[][
DEVICE_CODE_MAXLEN
]
=
{
0
};
int
idx
=
0
,
num
=
0
;
sqlite3_stmt
*
stmt
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE sceneId = '%s'"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
next:
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
deviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
propertyName
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyValue
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
delay
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_DELAY
);
gwdeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
if
(
kk_subDev_check_scene_support
(
gwdeviceCode
)
==
1
){
for
(
idx
=
0
;
idx
<
num
;
idx
++
){
if
(
!
strcmp
(
gwdevice
[
idx
],
gwdeviceCode
)){
goto
next
;
}
}
memcpy
(
gwdevice
[
num
],
gwdeviceCode
,
strlen
(
gwdeviceCode
));
num
++
;
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
sceneId
);
char
*
out
=
cJSON_Print
(
root
);
res
=
kk_msg_execute_scene_action
(
out
,
gwdeviceCode
);
cJSON_Delete
(
root
);
free
(
out
);
}
else
{
res
=
kk_scene_start_action
(
deviceCode
,
propertyName
,
propertyValue
,
delay
);
}
}
sqlite3_finalize
(
stmt
);
return
res
;
...
...
@@ -1219,6 +1539,8 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
if
(
res
==
SUCCESS_RETURN
){
INFO_PRINT
(
"[%d]kk_scene_check_condition enter!!!
\n
"
,
__LINE__
);
res
=
kk_scene_check_condition
(
sceneId
);
if
(
res
==
SUCCESS_RETURN
){
res
=
kk_scene_check_trigger_condition
(
sceneId
);
if
(
res
==
SUCCESS_RETURN
){
_kk_scene_lock
();
res
=
kk_scene_execute_action
(
sceneId
);
...
...
@@ -1227,6 +1549,7 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
}
}
}
}
}
sqlite3_finalize
(
stmt
);
...
...
midware/midware/scene/kk_scene_handle.h
View file @
5ff08f02
...
...
@@ -3,6 +3,25 @@
#include "kk_tsl_common.h"
typedef
struct
kk_scene_action_detail
{
char
deviceCode
[
DEVICE_CODE_MAXLEN
];
char
propertyName
[
DEVICE_PROPERTY_NAME_MAX
];
char
propertyValue
[
DEVICE_PROPERTY_VALUE_MAX
];
int
epNum
;
int
delay
;
}
kk_scene_action_detail_t
;
typedef
struct
kk_scene_action_info_ex
{
kk_scene_action_detail_t
info
;
struct
kk_scene_action_info_ex
*
next
;
}
kk_scene_action_info_ex_t
;
typedef
struct
kk_scene_action
{
char
gwdeviceCode
[
DEVICE_CODE_MAXLEN
];
char
sceneId
[
16
];
kk_scene_action_info_ex_t
*
actionInfo
;
struct
kk_scene_action
*
next
;
}
kk_scene_action_t
;
typedef
struct
{
...
...
midware/midware/utils/infra_sha256.c
View file @
5ff08f02
...
...
@@ -3,7 +3,7 @@
*/
#include "infra_config.h"
#ifdef INFRA_SHA256
#define INFRA_SHA256_SMALLER
...
...
@@ -317,5 +317,5 @@ void utils_hmac_sha256(const uint8_t *msg, uint32_t msg_len, const uint8_t *key,
utils_sha256_finish
(
&
context
,
output
);
/* finish up 2nd pass */
}
#endif
midware/midware/utils/infra_timer.c
View file @
5ff08f02
#include "infra_config.h"
#ifdef INFRA_TIMER
/*
*
*/
...
...
@@ -91,5 +90,5 @@ uint32_t utils_time_get_ms(void)
{
return
HAL_UptimeMs
();
}
#endif
midware/tsl/tsl_handle/kk_tsl_common.h
View file @
5ff08f02
...
...
@@ -25,6 +25,9 @@
#define DM_UTILS_UINT16_STRLEN (5)
#define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT64_STRLEN (20)
#define DEVICE_PROPERTY_NAME_MAX (64+1)
#define DEVICE_PROPERTY_VALUE_MAX (64+1)
#define KK_TSL_KEY_SCHEMA "schema"
#define KK_TSL_KEY_LINK "link"
...
...
midware/tsl/tsl_handle/kk_tsl_func.c
View file @
5ff08f02
...
...
@@ -793,7 +793,7 @@ int dm_tls_set_event_output_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ in
return
FAIL_RETURN
;
}
printf
(
"Key: %.*s"
,
key_len
,
key
);
//
printf("Key: %.*s", key_len, key);
res
=
_kk_tsl_event_search
(
shadow
,
key
,
offset
,
&
event
);
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
midware/tsl/tsl_handle/kk_tsl_parse.c
View file @
5ff08f02
...
...
@@ -3,6 +3,7 @@
#include <string.h>
#include "lite-cjson.h"
#include "kk_tsl_common.h"
#include "kk_log.h"
typedef
int
(
*
kk_tsl_data_parse
)(
_IN_
kk_tsl_data_value_t
*
data_value
,
_IN_
lite_cjson_t
*
root
);
...
...
@@ -470,7 +471,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
return
SUCCESS_RETURN
;
}
printf
(
"Number: %d
"
,
lite_properties
.
size
);
INFO_PRINT
(
"property number: %d
\n
"
,
lite_properties
.
size
);
if
(
lite_properties
.
size
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -490,7 +491,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
return
FAIL_RETURN
;
}
printf
(
"Index: %d
\n
"
,
index
);
//
printf("Index: %d\n", index);
_kk_tsl_property_parse
(
shadow
->
properties
+
index
,
&
lite_property
);
}
...
...
@@ -537,7 +538,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev
lite_cjson_t
lite_item
;
kk_tsl_data_t
*
output_data
=
NULL
;
printf
(
"event outputdata Number: %d
\n
"
,
event
->
output_data_number
);
//
printf("event outputdata Number: %d\n", event->output_data_number);
if
(
event
->
output_data_number
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -558,7 +559,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev
return
FAIL_RETURN
;
}
printf
(
"Index: %d
\n
"
,
index
);
//
printf("Index: %d\n", index);
_kk_tsl_event_outputdata_parse
(
shadow
,
output_data
,
&
lite_item
);
}
...
...
@@ -595,6 +596,7 @@ static int _dm_shw_event_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_event_t *event
if
(
res
!=
SUCCESS_RETURN
||
!
lite_cjson_is_array
(
&
lite_item
))
{
return
JSON_PARSE_FAILED
;
}
//INFO_PRINT("event output number: %d\n", lite_item.size);
event
->
output_data_number
=
lite_item
.
size
;
res
=
_kk_tsl_event_outputdatas_parse
(
shadow
,
event
,
&
lite_item
);
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
@@ -618,8 +620,7 @@ static int _kk_tsl_events_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root)
}
else
{
return
SUCCESS_RETURN
;
}
printf
(
"
\n
event Number: %d
\n
"
,
lite_events
.
size
);
INFO_PRINT
(
"event Number: %d
\n
"
);
if
(
lite_events
.
size
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -788,7 +789,7 @@ static int _kk_tsl_service_inputdatas_get_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_t
lite_cjson_t
lite_item
;
kk_tsl_data_t
*
input_data
=
NULL
;
printf
(
"input Number: %d
\n
"
,
service
->
input_data_number
);
//
printf("input Number: %d\n", service->input_data_number);
if
(
service
->
input_data_number
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -810,7 +811,7 @@ static int _kk_tsl_service_inputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_s
lite_cjson_t
lite_item
;
kk_tsl_data_t
*
input_data
=
NULL
;
printf
(
"input Number: %d
\n
"
,
service
->
input_data_number
);
//
printf("input Number: %d\n", service->input_data_number);
if
(
service
->
input_data_number
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -874,6 +875,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s
memset
(
&
lite_item
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_OUTPUTDATA
,
strlen
(
KK_TSL_KEY_OUTPUTDATA
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
&&
lite_cjson_is_array
(
&
lite_item
))
{
//INFO_PRINT("services output Number: %d\n", lite_item.size);
service
->
output_data_number
=
lite_item
.
size
;
res
=
_kk_tsl_service_outputdatas_parse
(
shadow
,
service
,
&
lite_item
);
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
@@ -886,7 +888,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_INPUTDATA
,
strlen
(
KK_TSL_KEY_INPUTDATA
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
&&
lite_cjson_is_array
(
&
lite_item
))
{
service
->
input_data_number
=
lite_item
.
size
;
//INFO_PRINT("services input Number: %d\n", lite_item.size);
if
(
isGetService
&&
service
->
input_data_number
>
0
){
res
=
_kk_tsl_service_inputdatas_get_parse
(
shadow
,
service
,
&
lite_item
);
}
else
...
...
@@ -914,7 +916,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root
return
SUCCESS_RETURN
;
}
printf
(
"_kk_tsl_services_parse
Number: %d
\n
"
,
lite_services
.
size
);
INFO_PRINT
(
"services
Number: %d
\n
"
,
lite_services
.
size
);
if
(
lite_services
.
size
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -936,7 +938,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root
return
FAIL_RETURN
;
}
printf
(
" Index: %d
\n
"
,
index
);
//
printf(" Index: %d\n", index);
_kk_tsl_service_parse
(
shadow
,
service
,
&
lite_service
);
}
...
...
@@ -1669,6 +1671,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow
int
res
=
0
;
lite_cjson_t
lite_root
;
INFO_PRINT
(
"kk_tsl_create start!!
\n
"
);
if
(
shadow
==
NULL
||
*
shadow
!=
NULL
||
tsl
==
NULL
||
tsl_len
<=
0
)
{
return
INVALID_PARAMETER
;
}
...
...
@@ -1707,6 +1710,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
INFO_PRINT
(
"kk_tsl_create successful!!
\n
"
);
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