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
5a794539
Commit
5a794539
authored
Aug 08, 2020
by
黄振令
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】1. 根据topic过滤, get 不会把命令传到platform ;2.set 属性midware 做反馈给云端
【提交人】黄振令
parent
01a7f4bb
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
437 additions
and
129 deletions
+437
-129
common/api/com_api.c
common/api/com_api.c
+38
-0
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+157
-18
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+161
-36
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+48
-55
midware/midware/midware.c
midware/midware/midware.c
+33
-20
No files found.
common/api/com_api.c
View file @
5a794539
...
@@ -3,6 +3,8 @@
...
@@ -3,6 +3,8 @@
#define APP2MID "ipc:///tmp/app2mid.ipc"
#define APP2MID "ipc:///tmp/app2mid.ipc"
#define PLAT2MID "ipc:///tmp/plat2mid.ipc"
#define PLAT2MID "ipc:///tmp/plat2mid.ipc"
#define MAGIC "magic12"
typedef
struct
{
typedef
struct
{
int
n
;
//nanomsg socket
int
n
;
//nanomsg socket
...
@@ -14,6 +16,7 @@ typedef struct {
...
@@ -14,6 +16,7 @@ typedef struct {
struct
ev_io
watcher
;
struct
ev_io
watcher
;
ipc_cb
*
cb
;
ipc_cb
*
cb
;
ipc_type
type
;
ipc_type
type
;
int
isconnect
;
}
Bloop_ctrl_t
;
}
Bloop_ctrl_t
;
Bloop_ctrl_t
Bloop_ctrl
;
Bloop_ctrl_t
Bloop_ctrl
;
...
@@ -37,6 +40,16 @@ static void watcher_cb (struct ev_loop *loop ,struct ev_io *w, int revents)
...
@@ -37,6 +40,16 @@ static void watcher_cb (struct ev_loop *loop ,struct ev_io *w, int revents)
return
;
return
;
}
}
printf
(
"watcher_cb:%s recived
\r\n\r\n
"
,
(
char
*
)
dat
);
printf
(
"watcher_cb:%s recived
\r\n\r\n
"
,
(
char
*
)
dat
);
//for test ipc connect or not
if
(
loop_ctrl
->
isconnect
==
0
){
loop_ctrl
->
isconnect
=
1
;
if
(
strncmp
(
dat
,
MAGIC
,
strlen
(
MAGIC
))
==
0
){
kk_ipc_send
(
loop_ctrl
->
type
,
dat
,
bytes
);
nn_freemsg
(
dat
);
return
;
}
}
if
(
loop_ctrl
->
cb
!=
NULL
){
if
(
loop_ctrl
->
cb
!=
NULL
){
loop_ctrl
->
cb
((
void
*
)
dat
,
bytes
);
loop_ctrl
->
cb
((
void
*
)
dat
,
bytes
);
}
}
...
@@ -202,3 +215,28 @@ int kk_ipc_send(ipc_type type, void* data, int len)
...
@@ -202,3 +215,28 @@ int kk_ipc_send(ipc_type type, void* data, int len)
return
0
;
return
0
;
}
}
int
kk_ipc_isconnect
(
ipc_type
type
){
Bloop_ctrl_t
*
loop_ctrl
;
if
(
IPC_MID2PLAT
==
type
){
loop_ctrl
=
&
Mloop_ctrl
;
}
else
{
loop_ctrl
=
&
Bloop_ctrl
;
}
if
(
loop_ctrl
->
isconnect
==
1
){
return
1
;
}
else
{
for
(
int
i
=
0
;
i
<
20
;
i
++
){
kk_ipc_send
(
type
,
MAGIC
,
strlen
(
MAGIC
)
+
1
);
usleep
(
500000
);
if
(
loop_ctrl
->
isconnect
==
1
){
break
;
}
}
return
loop_ctrl
->
isconnect
;
}
}
midware/midware/dm/kk_dm_mng.c
View file @
5a794539
...
@@ -262,6 +262,56 @@ int dm_mgr_search_device_by_pkdn(_IN_ char product_key[PRODUCT_KEY_MAXLEN], _IN_
...
@@ -262,6 +262,56 @@ int dm_mgr_search_device_by_pkdn(_IN_ char product_key[PRODUCT_KEY_MAXLEN], _IN_
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
int
dm_mgr_search_mac_by_topic
(
_IN_
char
*
topic
,
_OU_
char
mac
[
DEVICE_MAC_MAXLEN
])
{
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
char
product_key
[
PRODUCT_KEY_MAXLEN
];
char
device_name
[
DEVICE_NAME_MAXLEN
];
if
(
topic
==
NULL
)
{
return
INVALID_PARAMETER
;
}
res
=
kk_msg_uri_parse_pkdn
((
char
*
)
topic
,
strlen
(
topic
),
2
+
KK_URI_OFFSET
,
4
+
KK_URI_OFFSET
,
product_key
,
device_name
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
res
=
_dm_mgr_search_dev_by_pkdn
(
product_key
,
device_name
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
memcpy
(
mac
,
node
->
device_mac
,
DEVICE_MAC_MAXLEN
);
return
SUCCESS_RETURN
;
}
int
dm_mgr_search_mac_by_pkdn
(
_IN_
char
product_key
[
PRODUCT_KEY_MAXLEN
],
_IN_
char
device_name
[
DEVICE_NAME_MAXLEN
],
_OU_
char
mac
[
DEVICE_MAC_MAXLEN
])
{
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
if
(
product_key
==
NULL
||
device_name
==
NULL
)
{
return
INVALID_PARAMETER
;
}
res
=
_dm_mgr_search_dev_by_pkdn
(
product_key
,
device_name
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
memcpy
(
mac
,
node
->
device_mac
,
DEVICE_MAC_MAXLEN
);
return
SUCCESS_RETURN
;
}
int
dm_mgr_get_device_by_mac
(
_IN_
char
device_mac
[
DEVICE_MAC_MAXLEN
],
_OU_
dm_mgr_dev_node_t
**
node
)
int
dm_mgr_get_device_by_mac
(
_IN_
char
device_mac
[
DEVICE_MAC_MAXLEN
],
_OU_
dm_mgr_dev_node_t
**
node
)
{
{
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
...
@@ -281,6 +331,7 @@ int dm_mgr_get_device_by_mac(_IN_ char device_mac[DEVICE_MAC_MAXLEN], _OU_ dm_mg
...
@@ -281,6 +331,7 @@ int dm_mgr_get_device_by_mac(_IN_ char device_mac[DEVICE_MAC_MAXLEN], _OU_ dm_mg
printf
(
"Device Not Found, device_mac: %s
\n
"
,
device_mac
);
printf
(
"Device Not Found, device_mac: %s
\n
"
,
device_mac
);
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
int
dm_mgr_get_devId_by_mac
(
_IN_
char
device_mac
[
DEVICE_MAC_MAXLEN
],
_OU_
int
*
devid
)
int
dm_mgr_get_devId_by_mac
(
_IN_
char
device_mac
[
DEVICE_MAC_MAXLEN
],
_OU_
int
*
devid
)
{
{
int
res
=
0
;
int
res
=
0
;
...
@@ -331,7 +382,7 @@ int dm_mgr_init(void)
...
@@ -331,7 +382,7 @@ int dm_mgr_init(void)
//memcpy(device_name,"aIqEbWno8yDdsjCX15iq",strlen("aIqEbWno8yDdsjCX15iq"));
//memcpy(device_name,"aIqEbWno8yDdsjCX15iq",strlen("aIqEbWno8yDdsjCX15iq"));
//_dm_mgr_legacy_thing_created(IOTX_DM_LOCAL_NODE_DEVID);
//_dm_mgr_legacy_thing_created(IOTX_DM_LOCAL_NODE_DEVID);
res
=
dm_mgr_device_create
(
KK_DM_DEVICE_GATEWAY
,
product_key
,
device_name
,
device_secret
,
NULL
,
&
devId
);
res
=
dm_mgr_device_create
(
KK_DM_DEVICE_GATEWAY
,
product_key
,
device_name
,
device_secret
,
"aabbccddeeff1120"
,
&
devId
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
goto
ERROR
;
goto
ERROR
;
}
}
...
@@ -668,15 +719,14 @@ int dm_mgr_upstream_thing_topo_add(_IN_ int devid)
...
@@ -668,15 +719,14 @@ int dm_mgr_upstream_thing_topo_add(_IN_ int devid)
return
res
;
return
res
;
}
}
int
dm_mgr_upstream_thing_topo_delete
(
_IN_
int
devid
)
int
dm_mgr_upstream_combine_login
(
_IN_
int
devid
)
{
{
int
res
=
0
;
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_msg_request_t
request
;
dm_msg_request_t
request
;
if
(
devid
<
0
)
{
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
return
DM_
INVALID_PARAMETER
;
}
}
res
=
dm_mgr_search_dev_by_devid
(
devid
,
&
node
);
res
=
dm_mgr_search_dev_by_devid
(
devid
,
&
node
);
...
@@ -685,13 +735,13 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
...
@@ -685,13 +735,13 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
}
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
service_prefix
=
DM_URI_
EXT_SESSION
_PREFIX
;
request
.
service_prefix
=
DM_URI_
SYS
_PREFIX
;
request
.
service_name
=
DM_URI_
COMBINE_LOGIN
;
request
.
service_name
=
DM_URI_
THING_TOPO_DELETE
;
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Code
(
request
.
device_name
);
HAL_GetProduct_Code
(
request
.
device_name
);
/* Get Params And Method */
/* Get Params And Method */
res
=
dm_msg_
combine_login
(
node
->
product_key
,
node
->
device_name
,
node
->
device_secret
,
&
request
);
res
=
dm_msg_
thing_topo_delete
(
node
->
product_key
,
node
->
device_name
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
...
@@ -703,7 +753,7 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
...
@@ -703,7 +753,7 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
request
.
devid
=
devid
;
request
.
devid
=
devid
;
/* Callback */
/* Callback */
//request.callback = dm_client_
combine_login
_reply;
//request.callback = dm_client_
thing_topo_delete
_reply;
/* Send Message To Cloud */
/* Send Message To Cloud */
...
@@ -717,7 +767,49 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
...
@@ -717,7 +767,49 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
return
res
;
return
res
;
}
}
int
dm_mgr_upstream_combine_logout
(
_IN_
int
devid
)
int
dm_mgr_upstream_thing_topo_get
(
void
)
{
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_msg_request_t
request
;
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
service_prefix
=
DM_URI_SYS_PREFIX
;
request
.
service_name
=
DM_URI_THING_TOPO_GET
;
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Code
(
request
.
device_name
);
res
=
_dm_mgr_search_dev_by_pkdn
(
request
.
product_key
,
request
.
device_name
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
/* Get Params And Method */
res
=
dm_msg_thing_topo_get
(
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
/* Get Dev ID */
request
.
devid
=
node
->
devid
;
/* Callback */
//request.callback = dm_client_thing_topo_get_reply;
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
}
int
dm_mgr_upstream_thing_list_found
(
_IN_
int
devid
)
{
{
int
res
=
0
;
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
...
@@ -733,13 +825,13 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
...
@@ -733,13 +825,13 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
}
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
service_prefix
=
DM_URI_
EXT_SESSION
_PREFIX
;
request
.
service_prefix
=
DM_URI_
SYS
_PREFIX
;
request
.
service_name
=
DM_URI_
COMBINE_LOGOUT
;
request
.
service_name
=
DM_URI_
THING_LIST_FOUND
;
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Code
(
request
.
device_name
);
HAL_GetProduct_Code
(
request
.
device_name
);
/* Get Params And Method */
/* Get Params And Method */
res
=
dm_msg_
combine_logout
(
node
->
product_key
,
node
->
device_name
,
&
request
);
res
=
dm_msg_
thing_list_found
(
node
->
product_key
,
node
->
device_name
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
...
@@ -751,9 +843,55 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
...
@@ -751,9 +843,55 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
request
.
devid
=
devid
;
request
.
devid
=
devid
;
/* Callback */
/* Callback */
//request.callback = dm_client_
combine_logout
_reply;
//request.callback = dm_client_
thing_list_found
_reply;
/* Send Message To Cloud */
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
);
if
(
res
==
SUCCESS_RETURN
)
{
res
=
request
.
msgid
;
}
free
(
request
.
params
);
return
res
;
}
int
dm_mgr_upstream_combine_login
(
_IN_
int
devid
)
{
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_msg_request_t
request
;
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
}
res
=
dm_mgr_search_dev_by_devid
(
devid
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
service_prefix
=
DM_URI_EXT_SESSION_PREFIX
;
request
.
service_name
=
DM_URI_COMBINE_LOGIN
;
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Code
(
request
.
device_name
);
/* Get Params And Method */
res
=
dm_msg_combine_login
(
node
->
product_key
,
node
->
device_name
,
node
->
device_secret
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
/* Get Msg ID */
request
.
msgid
=
iotx_report_id
();
/* Get Dev ID */
request
.
devid
=
devid
;
/* Callback */
//request.callback = dm_client_combine_login_reply;
/* Send Message To Cloud */
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
);
res
=
dm_msg_request
(
&
request
);
...
@@ -766,7 +904,7 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
...
@@ -766,7 +904,7 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
return
res
;
return
res
;
}
}
int
dm_mgr_upstream_
thing_topo_delete
(
_IN_
int
devid
)
int
dm_mgr_upstream_
combine_logout
(
_IN_
int
devid
)
{
{
int
res
=
0
;
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
...
@@ -782,13 +920,13 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
...
@@ -782,13 +920,13 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
}
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
service_prefix
=
DM_URI_
SYS
_PREFIX
;
request
.
service_prefix
=
DM_URI_
EXT_SESSION
_PREFIX
;
request
.
service_name
=
DM_URI_
THING_TOPO_DELETE
;
request
.
service_name
=
DM_URI_
COMBINE_LOGOUT
;
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Type
(
request
.
product_key
);
HAL_GetProduct_Code
(
request
.
device_name
);
HAL_GetProduct_Code
(
request
.
device_name
);
/* Get Params And Method */
/* Get Params And Method */
res
=
dm_msg_
thing_topo_delete
(
node
->
product_key
,
node
->
device_name
,
&
request
);
res
=
dm_msg_
combine_logout
(
node
->
product_key
,
node
->
device_name
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
...
@@ -800,8 +938,9 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
...
@@ -800,8 +938,9 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
request
.
devid
=
devid
;
request
.
devid
=
devid
;
/* Callback */
/* Callback */
//request.callback = dm_client_
thing_topo_delete
_reply;
//request.callback = dm_client_
combine_logout
_reply;
/* Send Message To Cloud */
/* Send Message To Cloud */
/* Send Message To Cloud */
res
=
dm_msg_request
(
&
request
);
res
=
dm_msg_request
(
&
request
);
...
...
midware/midware/dm/kk_dm_msg.c
View file @
5a794539
...
@@ -183,6 +183,96 @@ int dm_msg_thing_topo_add(_IN_ char product_key[PRODUCT_KEY_MAXLEN],
...
@@ -183,6 +183,96 @@ int dm_msg_thing_topo_add(_IN_ char product_key[PRODUCT_KEY_MAXLEN],
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
const
char
DM_MSG_THING_TOPO_DELETE_METHOD
[]
DM_READ_ONLY
=
"thing.topo.delete"
;
const
char
DM_MSG_THING_TOPO_DELETE_PARAMS
[]
DM_READ_ONLY
=
"[{
\"
productKey
\"
:
\"
%s
\"
,
\"
deviceName
\"
:
\"
%s
\"
}]"
;
int
dm_msg_thing_topo_delete
(
_IN_
char
product_key
[
PRODUCT_KEY_MAXLEN
],
_IN_
char
device_name
[
DEVICE_NAME_MAXLEN
],
_OU_
dm_msg_request_t
*
request
)
{
char
*
params
=
NULL
;
int
params_len
=
0
;
if
(
request
==
NULL
||
product_key
==
NULL
||
device_name
==
NULL
||
(
strlen
(
product_key
)
>=
PRODUCT_KEY_MAXLEN
)
||
(
strlen
(
device_name
)
>=
DEVICE_NAME_MAXLEN
)
||
(
strlen
(
request
->
product_key
)
>=
PRODUCT_KEY_MAXLEN
)
||
(
strlen
(
request
->
device_name
)
>=
DEVICE_NAME_MAXLEN
))
{
return
INVALID_PARAMETER
;
}
/* Params */
request
->
method
=
(
char
*
)
DM_MSG_THING_TOPO_DELETE_METHOD
;
params_len
=
strlen
(
DM_MSG_THING_TOPO_DELETE_PARAMS
)
+
strlen
(
product_key
)
+
strlen
(
device_name
)
+
1
;
params
=
malloc
(
params_len
);
if
(
params
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
memset
(
params
,
0
,
params_len
);
HAL_Snprintf
(
params
,
params_len
,
DM_MSG_THING_TOPO_DELETE_PARAMS
,
product_key
,
device_name
);
request
->
params
=
params
;
request
->
params_len
=
strlen
(
request
->
params
);
return
SUCCESS_RETURN
;
}
const
char
DM_MSG_THING_TOPO_GET_METHOD
[]
DM_READ_ONLY
=
"thing.topo.get"
;
const
char
DM_MSG_THING_TOPO_GET_PARAMS
[]
DM_READ_ONLY
=
"{}"
;
int
dm_msg_thing_topo_get
(
_OU_
dm_msg_request_t
*
request
)
{
char
*
params
=
NULL
;
int
params_len
=
0
;
/* Params */
request
->
method
=
(
char
*
)
DM_MSG_THING_TOPO_GET_METHOD
;
params_len
=
strlen
(
DM_MSG_THING_TOPO_GET_PARAMS
)
+
1
;
params
=
malloc
(
params_len
);
if
(
params
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
memset
(
params
,
0
,
params_len
);
memcpy
(
params
,
DM_MSG_THING_TOPO_GET_PARAMS
,
strlen
(
DM_MSG_THING_TOPO_GET_PARAMS
));
request
->
params
=
params
;
request
->
params_len
=
strlen
(
request
->
params
);
return
SUCCESS_RETURN
;
}
const
char
DM_MSG_THING_LIST_FOUND_METHOD
[]
DM_READ_ONLY
=
"thing.list.found"
;
const
char
DM_MSG_THING_LIST_FOUND_PARAMS
[]
DM_READ_ONLY
=
"[{
\"
productKey
\"
:
\"
%s
\"
,
\"
deviceName
\"
:
\"
%s
\"
}]"
;
int
dm_msg_thing_list_found
(
_IN_
char
product_key
[
PRODUCT_KEY_MAXLEN
],
_IN_
char
device_name
[
DEVICE_NAME_MAXLEN
],
_OU_
dm_msg_request_t
*
request
)
{
char
*
params
=
NULL
;
int
params_len
=
0
;
if
(
product_key
==
NULL
||
device_name
==
NULL
||
(
strlen
(
product_key
)
>=
PRODUCT_KEY_MAXLEN
)
||
(
strlen
(
device_name
)
>=
DEVICE_NAME_MAXLEN
)
||
request
==
NULL
)
{
return
INVALID_PARAMETER
;
}
/* Params */
request
->
method
=
(
char
*
)
DM_MSG_THING_LIST_FOUND_METHOD
;
params_len
=
strlen
(
DM_MSG_THING_LIST_FOUND_PARAMS
)
+
strlen
(
product_key
)
+
strlen
(
device_name
)
+
1
;
params
=
malloc
(
params_len
);
if
(
params
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
memset
(
params
,
0
,
params_len
);
HAL_Snprintf
(
params
,
params_len
,
DM_MSG_THING_LIST_FOUND_PARAMS
,
product_key
,
device_name
);
request
->
params
=
params
;
request
->
params_len
=
strlen
(
request
->
params
);
return
SUCCESS_RETURN
;
}
const
char
DM_MSG_COMBINE_LOGIN_SIGN_SOURCE
[]
DM_READ_ONLY
=
"clientId%sdeviceName%sproductKey%stimestamp%s"
;
const
char
DM_MSG_COMBINE_LOGIN_SIGN_SOURCE
[]
DM_READ_ONLY
=
"clientId%sdeviceName%sproductKey%stimestamp%s"
;
const
char
DM_MSG_COMBINE_LOGIN_METHOD
[]
DM_READ_ONLY
=
"combine.login"
;
const
char
DM_MSG_COMBINE_LOGIN_METHOD
[]
DM_READ_ONLY
=
"combine.login"
;
const
char
DM_MSG_COMBINE_LOGIN_PARAMS
[]
DM_READ_ONLY
=
const
char
DM_MSG_COMBINE_LOGIN_PARAMS
[]
DM_READ_ONLY
=
...
@@ -302,42 +392,7 @@ int dm_msg_combine_logout(_IN_ char product_key[PRODUCT_KEY_MAXLEN],
...
@@ -302,42 +392,7 @@ int dm_msg_combine_logout(_IN_ char product_key[PRODUCT_KEY_MAXLEN],
}
}
const
char
DM_MSG_THING_TOPO_DELETE_METHOD
[]
DM_READ_ONLY
=
"thing.topo.delete"
;
const
char
DM_MSG_THING_TOPO_DELETE_PARAMS
[]
DM_READ_ONLY
=
"[{
\"
productKey
\"
:
\"
%s
\"
,
\"
deviceName
\"
:
\"
%s
\"
}]"
;
int
dm_msg_thing_topo_delete
(
_IN_
char
product_key
[
PRODUCT_KEY_MAXLEN
],
_IN_
char
device_name
[
DEVICE_NAME_MAXLEN
],
_OU_
dm_msg_request_t
*
request
)
{
char
*
params
=
NULL
;
int
params_len
=
0
;
if
(
request
==
NULL
||
product_key
==
NULL
||
device_name
==
NULL
||
(
strlen
(
product_key
)
>=
PRODUCT_KEY_MAXLEN
)
||
(
strlen
(
device_name
)
>=
DEVICE_NAME_MAXLEN
)
||
(
strlen
(
request
->
product_key
)
>=
PRODUCT_KEY_MAXLEN
)
||
(
strlen
(
request
->
device_name
)
>=
DEVICE_NAME_MAXLEN
))
{
return
INVALID_PARAMETER
;
}
/* Params */
request
->
method
=
(
char
*
)
DM_MSG_THING_TOPO_DELETE_METHOD
;
params_len
=
strlen
(
DM_MSG_THING_TOPO_DELETE_PARAMS
)
+
strlen
(
product_key
)
+
strlen
(
device_name
)
+
1
;
params
=
malloc
(
params_len
);
if
(
params
==
NULL
)
{
return
MEMORY_NOT_ENOUGH
;
}
memset
(
params
,
0
,
params_len
);
HAL_Snprintf
(
params
,
params_len
,
DM_MSG_THING_TOPO_DELETE_PARAMS
,
product_key
,
device_name
);
request
->
params
=
params
;
request
->
params_len
=
strlen
(
request
->
params
);
return
SUCCESS_RETURN
;
}
int
dm_msg_request
(
_IN_
dm_msg_request_t
*
request
)
int
dm_msg_request
(
_IN_
dm_msg_request_t
*
request
)
{
{
int
res
=
0
,
payload_len
=
0
;
int
res
=
0
,
payload_len
=
0
;
...
@@ -468,4 +523,74 @@ int dm_msg_response_parse(_IN_ char *payload, _IN_ int payload_len, _OU_ dm_msg_
...
@@ -468,4 +523,74 @@ int dm_msg_response_parse(_IN_ char *payload, _IN_ int payload_len, _OU_ dm_msg_
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
dm_msg_request_parse
(
_IN_
char
*
payload
,
_IN_
int
payload_len
,
_OU_
kk_msg_request_payload_t
*
request
)
{
lite_cjson_t
lite
;
if
(
payload
==
NULL
||
payload_len
<=
0
||
request
==
NULL
)
{
return
INVALID_PARAMETER
;
}
if
(
lite_cjson_parse
(
payload
,
payload_len
,
&
lite
)
!=
SUCCESS_RETURN
||
lite_cjson_object_item
(
&
lite
,
KK_MSG_KEY_ID
,
strlen
(
KK_MSG_KEY_ID
),
&
request
->
id
)
!=
SUCCESS_RETURN
||
lite_cjson_object_item
(
&
lite
,
KK_MSG_KEY_VERSION
,
strlen
(
KK_MSG_KEY_VERSION
),
&
request
->
version
)
!=
SUCCESS_RETURN
||
lite_cjson_object_item
(
&
lite
,
KK_MSG_KEY_METHOD
,
strlen
(
KK_MSG_KEY_METHOD
),
&
request
->
method
)
!=
SUCCESS_RETURN
||
lite_cjson_object_item
(
&
lite
,
KK_MSG_KEY_PARAMS
,
strlen
(
KK_MSG_KEY_PARAMS
),
&
request
->
params
)
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
printf
(
"Current Request Message ID: %.*s"
,
request
->
id
.
value_length
,
request
->
id
.
value
);
printf
(
"Current Request Message Version: %.*s"
,
request
->
version
.
value_length
,
request
->
version
.
value
);
printf
(
"Current Request Message Method: %.*s"
,
request
->
method
.
value_length
,
request
->
method
.
value
);
printf
(
"Current Request Message Params: %.*s"
,
request
->
params
.
value_length
,
request
->
params
.
value
);
return
SUCCESS_RETURN
;
}
int
dm_msg_thing_property_set_reply
(
const
char
*
topic
,
const
char
*
payload
,
unsigned
int
payload_len
,
void
*
context
){
kk_msg_request_payload_t
request
;
kk_msg_response_t
response
;
int
res
=
0
,
devid
=
0
;
char
product_key
[
PRODUCT_KEY_MAXLEN
]
=
{
0
};
char
device_name
[
DEVICE_NAME_MAXLEN
]
=
{
0
};
memset
(
&
request
,
0
,
sizeof
(
kk_msg_request_payload_t
));
memset
(
&
response
,
0
,
sizeof
(
kk_msg_response_t
));
/**************to do*******************/
//dm_log_info(DM_URI_THING_SERVICE_PROPERTY_SET);
/* Request */
/* Request */
res
=
kk_msg_uri_parse_pkdn
((
char
*
)
topic
,
strlen
(
topic
),
2
+
KK_URI_OFFSET
,
4
+
KK_URI_OFFSET
,
product_key
,
device_name
);
res
=
dm_mgr_search_device_by_pkdn
(
product_key
,
device_name
,
&
devid
);
if
(
res
<
SUCCESS_RETURN
)
{
return
res
;
}
res
=
dm_msg_request_parse
((
char
*
)
payload
,
payload_len
,
&
request
);
if
(
res
<
SUCCESS_RETURN
)
{
return
res
;
}
/* Response */
response
.
service_prefix
=
DM_URI_SYS_PREFIX
;
response
.
service_name
=
DM_URI_THING_SERVICE_PROPERTY_SET_REPLY
;
memcpy
(
response
.
product_key
,
product_key
,
strlen
(
product_key
));
memcpy
(
response
.
device_name
,
device_name
,
strlen
(
device_name
));
response
.
code
=
(
res
==
SUCCESS_RETURN
)
?
(
IOTX_DM_ERR_CODE_SUCCESS
)
:
(
IOTX_DM_ERR_CODE_REQUEST_ERROR
);
dm_msg_response
(
&
request
,
&
response
,
"{}"
,
strlen
(
"{}"
),
NULL
);
}
midware/midware/dm/kk_linkkit.c
View file @
5a794539
...
@@ -238,62 +238,55 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -238,62 +238,55 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
topic
=
cJSON_GetObjectItem
(
json
,
"topic"
);
topic
=
cJSON_GetObjectItem
(
json
,
"topic"
);
payload
=
cJSON_GetObjectItem
(
json
,
"payload"
);
payload
=
cJSON_GetObjectItem
(
json
,
"payload"
);
printf
(
"topic: [%s] ,payload= %s
\n
"
,
topic
->
valuestring
,
payload
->
valuestring
);
printf
(
"_iotx_linkkit_event_callback topic: [%s] ,payload= %s
\n
"
,
topic
->
valuestring
,
payload
->
valuestring
);
if
(
strstr
(
topic
->
valuestring
,
"register_reply"
)
!=
NULL
){
if
(
strcmp
(
payload
->
valuestring
,
"addsub"
)
==
0
){
//====todo======
kk_mid_subdev_add
(
"a1OYuSallan"
,
"allanWno8yDdsjCX15iq"
,
""
,
""
);
//get devicececret and save it
}
else
{
printf
(
" topic:register_reply
\n
"
);
printf
(
"rrr topic: [%s] ,payload= %s
\n
"
,
topic
->
valuestring
,
payload
->
valuestring
);
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
_iotx_linkkit_upstream_mutex_lock
();
_iotx_linkkit_upstream_callback_remove
(
atoi
(
response
.
id
.
value
),
response
.
code
.
value_int
);
_iotx_linkkit_upstream_mutex_unlock
();
}
else
if
(
strstr
(
topic
->
valuestring
,
"add_reply"
)
!=
NULL
){
//====todo======
//
printf
(
" topic:add_reply
\n
"
);
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
_iotx_linkkit_upstream_mutex_lock
();
_iotx_linkkit_upstream_callback_remove
(
atoi
(
response
.
id
.
value
),
response
.
code
.
value_int
);
_iotx_linkkit_upstream_mutex_unlock
();
}
else
if
(
strstr
(
topic
->
valuestring
,
"login_reply"
)
!=
NULL
){
//====todo======
//
printf
(
" topic:login_reply
\n
"
);
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
_iotx_linkkit_upstream_mutex_lock
();
_iotx_linkkit_upstream_callback_remove
(
atoi
(
response
.
id
.
value
),
response
.
code
.
value_int
);
_iotx_linkkit_upstream_mutex_unlock
();
}
else
if
(
strstr
(
topic
->
valuestring
,
"thing/service/property/set"
)
!=
NULL
){
printf
(
"property set reply
\n
"
);
dm_msg_thing_property_set_reply
(
topic
->
valuestring
,
payload
->
valuestring
,
strlen
(
payload
->
valuestring
),
NULL
);
//kk_tsl_service_property_set(topic->valuestring, payload->valuestring, strlen(payload->valuestring), NULL);
}
else
{
printf
(
"Error 222222222222222
\n
"
);
if
(
strstr
(
topic
->
valuestring
,
"register_reply"
)
!=
NULL
){
//====todo======
//get devicececret and save it
printf
(
" topic:register_reply
\n
"
);
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
_iotx_linkkit_upstream_mutex_lock
();
_iotx_linkkit_upstream_callback_remove
(
atoi
(
response
.
id
.
value
),
response
.
code
.
value_int
);
_iotx_linkkit_upstream_mutex_unlock
();
}
else
if
(
strstr
(
topic
->
valuestring
,
"add_reply"
)
!=
NULL
){
//====todo======
//
printf
(
" topic:add_reply
\n
"
);
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
_iotx_linkkit_upstream_mutex_lock
();
_iotx_linkkit_upstream_callback_remove
(
atoi
(
response
.
id
.
value
),
response
.
code
.
value_int
);
_iotx_linkkit_upstream_mutex_unlock
();
}
else
if
(
strstr
(
topic
->
valuestring
,
"login_reply"
)
!=
NULL
){
//====todo======
//
printf
(
" topic:login_reply
\n
"
);
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
_iotx_linkkit_upstream_mutex_lock
();
_iotx_linkkit_upstream_callback_remove
(
atoi
(
response
.
id
.
value
),
response
.
code
.
value_int
);
_iotx_linkkit_upstream_mutex_unlock
();
}
else
if
(
strstr
(
topic
->
valuestring
,
"thing/service/property/set"
)
!=
NULL
){
printf
(
"set property 222222222222222
\n
"
);
kk_tsl_service_property_set
(
topic
->
valuestring
,
payload
->
valuestring
,
strlen
(
payload
->
valuestring
),
NULL
);
}
else
{
printf
(
"Error 222222222222222
\n
"
);
}
}
}
cJSON_Delete
(
json
);
cJSON_Delete
(
json
);
...
...
midware/midware/midware.c
View file @
5a794539
...
@@ -21,7 +21,18 @@
...
@@ -21,7 +21,18 @@
void
mid_cb
(
void
*
data
,
int
len
){
void
mid_cb
(
void
*
data
,
int
len
){
if
(
data
!=
NULL
){
if
(
data
!=
NULL
){
printf
(
"app2mid_cb: %s RECEIVED
\r\n
"
,
data
);
printf
(
"app2mid_cb: %s RECEIVED
\r\n
"
,
data
);
char
*
out
;
cJSON
*
json
,
*
topic
,
*
payload
;
char
*
out
;
cJSON
*
json
;
cJSON
*
topic
;
cJSON
*
payload
;
int
res
;
void
*
buf
=
malloc
(
len
);
memcpy
(
buf
,
data
,
len
);
res
=
dm_queue_msg_insert
((
void
*
)
buf
);
if
(
res
!=
SUCCESS_RETURN
)
{
free
(
buf
);
}
json
=
cJSON_Parse
(
data
);
json
=
cJSON_Parse
(
data
);
if
(
!
json
)
{
if
(
!
json
)
{
...
@@ -32,25 +43,24 @@ void mid_cb(void* data, int len){
...
@@ -32,25 +43,24 @@ void mid_cb(void* data, int len){
topic
=
cJSON_GetObjectItem
(
json
,
"topic"
);
topic
=
cJSON_GetObjectItem
(
json
,
"topic"
);
payload
=
cJSON_GetObjectItem
(
json
,
"payload"
);
payload
=
cJSON_GetObjectItem
(
json
,
"payload"
);
printf
(
"mid_cb topic: [%s] ,payload= %s
\n
"
,
topic
->
valuestring
,
payload
->
valuestring
);
printf
(
"mid_cb topic: [%s] ,payload= %s
\n
"
,
topic
->
valuestring
,
payload
->
valuestring
);
if
(
strcmp
(
payload
->
valuestring
,
"addsub"
)
==
0
){
if
(
strstr
(
topic
->
valuestring
,
"thing/service"
)
!=
NULL
&&
strstr
(
topic
->
valuestring
,
"service/property/get"
)
==
NULL
){
//kk_mid_subdev_add("a1OYuSallan","allanWno8yDdsjCX15iq","");
//set to platform
}
else
{
char
mac
[
DEVICE_MAC_MAXLEN
];
void
*
buf
=
malloc
(
len
);
res
=
dm_mgr_search_mac_by_topic
(
topic
->
valuestring
,
mac
);
memcpy
(
buf
,
data
,
len
);
if
(
res
==
SUCCESS_RETURN
)
{
int
res
=
dm_queue_msg_insert
((
void
*
)
buf
);
printf
(
"mid_cb dm_mgr_search_mac_by_topic mac: %s
\r\n
"
,
mac
);
if
(
res
!=
SUCCESS_RETURN
)
{
free
(
buf
);
cJSON
*
jsonplay
=
cJSON_Parse
(
payload
->
valuestring
);
return
FAIL_RETURN
;
cJSON_AddStringToObject
(
jsonplay
,
"mac"
,
mac
);
void
*
out
=
cJSON_Print
(
jsonplay
);
kk_ipc_send
(
IPC_MID2PLAT
,
out
,
strlen
(
out
));
free
(
out
);
cJSON_Delete
(
jsonplay
);
}
}
//kk_tsl_service_property_set(topic->valuestring, payload->valuestring, strlen(payload->valuestring), NULL);
}
}
cJSON
*
jsonplay
=
cJSON_Parse
(
payload
->
valuestring
);
cJSON_AddStringToObject
(
jsonplay
,
"mac"
,
"aabbccddee11"
);
void
*
out
=
cJSON_Print
(
jsonplay
);
kk_ipc_send
(
IPC_MID2PLAT
,
out
,
strlen
(
out
));
free
(
out
);
cJSON_Delete
(
jsonplay
);
cJSON_Delete
(
json
);
cJSON_Delete
(
json
);
}
}
...
@@ -104,6 +114,10 @@ void kk_platMsg_handle(void* data){
...
@@ -104,6 +114,10 @@ void kk_platMsg_handle(void* data){
}
}
}
else
if
(
method
!=
NULL
&&
strcmp
(
method
->
valuestring
,
"thing.event.property.post"
)
==
0
){
}
else
if
(
method
!=
NULL
&&
strcmp
(
method
->
valuestring
,
"thing.event.property.post"
)
==
0
){
cJSON
*
mac
;
mac
=
cJSON_GetObjectItem
(
json
,
"mac"
);
kk_tsl_property_set_byMac
(
mac
->
valuestring
,
data
,
strlen
(
mac
)
+
1
,
NULL
);
//kk_tsl_service_property_set(topic->valuestring, data, strlen(data), NULL);
//kk_tsl_service_property_set(topic->valuestring, data, strlen(data), NULL);
}
else
{
}
else
{
...
@@ -244,8 +258,7 @@ int main(const int argc, const char **argv)
...
@@ -244,8 +258,7 @@ int main(const int argc, const char **argv)
kk_ipc_init
(
IPC_MID2APP
,
mid_cb
);
kk_ipc_init
(
IPC_MID2APP
,
mid_cb
);
kk_ipc_init
(
IPC_MID2PLAT
,
mid2p_cb
);
kk_ipc_init
(
IPC_MID2PLAT
,
mid2p_cb
);
dm_mgr_init
();
dm_mgr_init
();
//DB_Init();
//DB_Init();
//test_tcp();
//test_tcp();
/* when Connect to app and platfrom */
/* when Connect to app and platfrom */
...
...
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