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
96769efb
Commit
96769efb
authored
Oct 31, 2020
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】增加内场景的设置
【提交人】陈伟灿
parent
6d57df34
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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
#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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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 @
96769efb
...
...
@@ -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