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
7af7906d
Commit
7af7906d
authored
Aug 24, 2020
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】调整网关与主机的通讯协议,并统一格式。
【提交人】陈伟灿
parent
f54206d2
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
164 additions
and
136 deletions
+164
-136
application/kcloud/kcloud_data_handle.c
application/kcloud/kcloud_data_handle.c
+12
-6
application/kcloud/kk_topic_mng.c
application/kcloud/kk_topic_mng.c
+10
-7
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+4
-3
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+11
-12
midware/midware/midware.c
midware/midware/midware.c
+8
-7
platform/zigbee/app/builder/Z3GatewayHost/com_api.h
platform/zigbee/app/builder/Z3GatewayHost/com_api.h
+0
-26
platform/zigbee/app/builder/Z3GatewayHost/kk_sub_tsl.c
platform/zigbee/app/builder/Z3GatewayHost/kk_sub_tsl.c
+4
-5
platform/zigbee/app/builder/Z3GatewayHost/kk_sub_tsl.h
platform/zigbee/app/builder/Z3GatewayHost/kk_sub_tsl.h
+1
-1
platform/zigbee/app/builder/Z3GatewayHost/kk_test.c
platform/zigbee/app/builder/Z3GatewayHost/kk_test.c
+32
-20
platform/zigbee/app/builder/Z3GatewayHost/kk_test.h
platform/zigbee/app/builder/Z3GatewayHost/kk_test.h
+6
-3
platform/zigbee/app/builder/Z3GatewayHost/kk_tsl_zigbee_map.c
...form/zigbee/app/builder/Z3GatewayHost/kk_tsl_zigbee_map.c
+6
-6
platform/zigbee/app/builder/Z3GatewayHost/kk_tsl_zigbee_map.h
...form/zigbee/app/builder/Z3GatewayHost/kk_tsl_zigbee_map.h
+1
-1
platform/zigbee/app/builder/Z3GatewayHost/rpc_api/src/rpc_interface_parse.c
...p/builder/Z3GatewayHost/rpc_api/src/rpc_interface_parse.c
+69
-39
No files found.
application/kcloud/kcloud_data_handle.c
View file @
7af7906d
...
@@ -44,9 +44,11 @@ int _kk_sendto_cloud(cJSON *root)
...
@@ -44,9 +44,11 @@ int _kk_sendto_cloud(cJSON *root)
free
(
topic
);
free
(
topic
);
return
-
1
;
return
-
1
;
}
}
INFO_PRINT
(
"[%s][%d] payload:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
pData
->
valuestring
);
char
*
out
=
cJSON_Print
(
pData
);
KK_MQTT_SendMsg
(
topic
,(
const
char
*
)
pData
->
valuestring
);
INFO_PRINT
(
"[%s][%d] payload:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
out
);
KK_MQTT_SendMsg
(
topic
,(
const
char
*
)
out
);
free
(
topic
);
free
(
topic
);
free
(
out
);
return
0
;
return
0
;
}
}
...
@@ -190,8 +192,10 @@ static char * _kk_data_create(const char *topic,const char *data)
...
@@ -190,8 +192,10 @@ static char * _kk_data_create(const char *topic,const char *data)
snprintf
(
infoStr
,
infoStr_len
,
DM_MSG_TO_MIDDWARE
,
msgStr
,
productType
,
productCode
,
deviceCode
);
snprintf
(
infoStr
,
infoStr_len
,
DM_MSG_TO_MIDDWARE
,
msgStr
,
productType
,
productCode
,
deviceCode
);
root
=
cJSON_CreateObject
();
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
MSG_INFO_STR
,
infoStr
);
cJSON
*
infoObj
=
cJSON_Parse
(
infoStr
);
cJSON_AddStringToObject
(
root
,
MSG_PAYLOAD_STR
,
data
);
cJSON
*
payloadObj
=
cJSON_Parse
(
data
);
cJSON_AddItemToObject
(
root
,
MSG_INFO_STR
,
infoObj
);
cJSON_AddItemToObject
(
root
,
MSG_PAYLOAD_STR
,
payloadObj
);
out
=
cJSON_Print
(
root
);
out
=
cJSON_Print
(
root
);
cJSON_Delete
(
root
);
cJSON_Delete
(
root
);
free
(
msgStr
);
free
(
msgStr
);
...
@@ -230,8 +234,10 @@ int KK_Send_CloudState(int state)
...
@@ -230,8 +234,10 @@ int KK_Send_CloudState(int state)
snprintf
(
payloadStr
,
payloadStr_len
,
DM_MSG_CLOUDSTATE
,
state
);
snprintf
(
payloadStr
,
payloadStr_len
,
DM_MSG_CLOUDSTATE
,
state
);
root
=
cJSON_CreateObject
();
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
MSG_INFO_STR
,
infoStr
);
cJSON
*
infoObj
=
cJSON_Parse
(
infoStr
);
cJSON_AddStringToObject
(
root
,
MSG_PAYLOAD_STR
,
payloadStr
);
cJSON
*
payloadObj
=
cJSON_Parse
(
payloadStr
);
cJSON_AddItemToObject
(
root
,
MSG_INFO_STR
,
infoObj
);
cJSON_AddItemToObject
(
root
,
MSG_PAYLOAD_STR
,
payloadObj
);
out
=
cJSON_Print
(
root
);
out
=
cJSON_Print
(
root
);
kk_ipc_send
(
IPC_APP2MID
,
out
,
strlen
(
out
)
+
1
);
kk_ipc_send
(
IPC_APP2MID
,
out
,
strlen
(
out
)
+
1
);
cJSON_Delete
(
root
);
cJSON_Delete
(
root
);
...
...
application/kcloud/kk_topic_mng.c
View file @
7af7906d
...
@@ -151,19 +151,24 @@ static int _kk_utils_topic(_IN_ const char *name, _IN_ char *product_code,
...
@@ -151,19 +151,24 @@ static int _kk_utils_topic(_IN_ const char *name, _IN_ char *product_code,
char
*
KK_Make_Topic
(
cJSON
*
info
)
char
*
KK_Make_Topic
(
cJSON
*
info
)
{
{
cJSON
*
type
,
*
product_code
,
*
device_code
,
*
root
;
cJSON
*
type
,
*
product_code
,
*
device_code
;
char
*
topic
=
NULL
;
char
*
topic
=
NULL
;
root
=
cJSON_Parse
((
char
*
)
info
->
valuestring
);
//
root=cJSON_Parse((char*)info->valuestring);
type
=
cJSON_GetObjectItem
(
root
,
MSG_TYPE_STR
);
type
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
if
(
type
==
NULL
){
if
(
type
==
NULL
){
goto
errorreturn
;
goto
errorreturn
;
}
}
product_code
=
cJSON_GetObjectItem
(
root
,
MSG_PRODUCT_CODE_STR
);
#if 0 //just for test
if(strstr(type->valuestring,"/thing/topo/add") != NULL){
KK_MQTT_SubTopic("/sys/kk/2/1122334455667788/#");
}
#endif
product_code
=
cJSON_GetObjectItem
(
info
,
MSG_PRODUCT_CODE_STR
);
if
(
product_code
==
NULL
){
if
(
product_code
==
NULL
){
goto
errorreturn
;
goto
errorreturn
;
}
}
device_code
=
cJSON_GetObjectItem
(
root
,
MSG_DEVICE_CODE_STR
);
device_code
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
if
(
device_code
==
NULL
){
if
(
device_code
==
NULL
){
goto
errorreturn
;
goto
errorreturn
;
}
}
...
@@ -257,10 +262,8 @@ char* KK_Make_Topic(cJSON *info)
...
@@ -257,10 +262,8 @@ char* KK_Make_Topic(cJSON *info)
}
}
#endif
#endif
INFO_PRINT
(
"[%s][%d] TOPIC:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
topic
);
INFO_PRINT
(
"[%s][%d] TOPIC:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
topic
);
cJSON_Delete
(
root
);
return
topic
;
return
topic
;
errorreturn:
errorreturn:
cJSON_Delete
(
root
);
return
NULL
;
return
NULL
;
}
}
...
...
midware/midware/dm/kk_dm_msg.c
View file @
7af7906d
...
@@ -13,13 +13,14 @@ const char DM_MSG_INFO[] DM_READ_ONLY = "{\"msgtype\":\"%s\",\"productType\":\"%
...
@@ -13,13 +13,14 @@ const char DM_MSG_INFO[] DM_READ_ONLY = "{\"msgtype\":\"%s\",\"productType\":\"%
void
kk_sendData2app
(
void
*
info
,
void
*
payload
){
void
kk_sendData2app
(
void
*
info
,
void
*
payload
){
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
"info"
,
info
);
cJSON
*
infoObj
=
cJSON_Parse
(
info
);
cJSON_AddStringToObject
(
root
,
"payload"
,
payload
);
cJSON
*
payloadObj
=
cJSON_Parse
(
payload
);
cJSON_AddItemToObject
(
root
,
"info"
,
infoObj
);
cJSON_AddItemToObject
(
root
,
"payload"
,
payloadObj
);
void
*
buf
=
cJSON_Print
(
root
);
void
*
buf
=
cJSON_Print
(
root
);
kk_ipc_send
(
IPC_MID2APP
,
buf
,
strlen
(
buf
)
+
1
);
kk_ipc_send
(
IPC_MID2APP
,
buf
,
strlen
(
buf
)
+
1
);
free
(
buf
);
free
(
buf
);
cJSON_Delete
(
root
);
cJSON_Delete
(
root
);
}
}
const
char
DM_MSG_THING_SUB_REGISTER_METHOD
[]
=
"thing.sub.register"
;
const
char
DM_MSG_THING_SUB_REGISTER_METHOD
[]
=
"thing.sub.register"
;
...
...
midware/midware/dm/kk_linkkit.c
View file @
7af7906d
...
@@ -230,24 +230,25 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -230,24 +230,25 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
char
*
out
;
char
*
out
;
int
res
=
0
;
int
res
=
0
;
cJSON
*
json
;
cJSON
*
json
;
cJSON
*
info_root
,
*
info
;
cJSON
*
info_root
;
cJSON
*
payload
,
*
typeJson
;
cJSON
*
payload
,
*
typeJson
;
char
*
payload_Str
=
NULL
;
json
=
cJSON_Parse
(
data
);
json
=
cJSON_Parse
(
data
);
if
(
json
==
NULL
)
{
if
(
json
==
NULL
)
{
WARNING_PRINT
(
"Error before: [%s]
\n
"
,
"cJSON_Parse"
);
WARNING_PRINT
(
"Error before: [%s]
\n
"
,
"cJSON_Parse"
);
return
;
return
;
}
}
info_root
=
cJSON_GetObjectItem
(
json
,
MSG_INFO_STR
);
info_root
=
cJSON_GetObjectItem
(
json
,
MSG_INFO_STR
);
info
=
cJSON_Parse
(
info_root
->
valuestring
);
typeJson
=
cJSON_GetObjectItem
(
info_root
,
MSG_TYPE_STR
);
typeJson
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
payload
=
cJSON_GetObjectItem
(
json
,
MSG_PAYLOAD_STR
);
payload
=
cJSON_GetObjectItem
(
json
,
MSG_PAYLOAD_STR
);
payload_Str
=
cJSON_Print
(
payload
);
if
(
strstr
(
typeJson
->
valuestring
,
KK_REGISTER_TOPIC_REPLY
)){
if
(
strstr
(
typeJson
->
valuestring
,
KK_REGISTER_TOPIC_REPLY
)){
//====todo======
//====todo======
//get devicececret and save it
//get devicececret and save it
INFO_PRINT
(
" topic:register_reply
\n
"
);
INFO_PRINT
(
" topic:register_reply
\n
"
);
dm_msg_response_payload_t
response
;
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
res
=
dm_msg_response_parse
((
char
*
)
payload
_Str
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
goto
directReturn
;
goto
directReturn
;
}
}
...
@@ -261,7 +262,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -261,7 +262,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
//
//
INFO_PRINT
(
" topic:add_reply
\n
"
);
INFO_PRINT
(
" topic:add_reply
\n
"
);
dm_msg_response_payload_t
response
;
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
res
=
dm_msg_response_parse
((
char
*
)
payload
_Str
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
goto
directReturn
;
goto
directReturn
;
}
}
...
@@ -275,7 +276,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -275,7 +276,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
//
//
INFO_PRINT
(
" topic:login_reply
\n
"
);
INFO_PRINT
(
" topic:login_reply
\n
"
);
dm_msg_response_payload_t
response
;
dm_msg_response_payload_t
response
;
res
=
dm_msg_response_parse
((
char
*
)
payload
->
valuestring
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
res
=
dm_msg_response_parse
((
char
*
)
payload
_Str
,
strlen
(
payload
->
valuestring
)
+
1
,
&
response
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
goto
directReturn
;
goto
directReturn
;
}
}
...
@@ -285,13 +286,12 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -285,13 +286,12 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
_iotx_linkkit_upstream_mutex_unlock
();
_iotx_linkkit_upstream_mutex_unlock
();
}
else
if
(
strstr
(
typeJson
->
valuestring
,
KK_THING_SERVICE_PROPERTY_SET
)){
}
else
if
(
strstr
(
typeJson
->
valuestring
,
KK_THING_SERVICE_PROPERTY_SET
)){
INFO_PRINT
(
"property set
\n
"
);
INFO_PRINT
(
"property set
\n
"
);
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
info
_root
,
MSG_DEVICE_CODE_STR
);
dm_msg_thing_property_set_reply
(
deviceCode
->
valuestring
,
payload
->
valuestring
,
strlen
(
payload
->
valuestring
),
NULL
);
dm_msg_thing_property_set_reply
(
deviceCode
->
valuestring
,
payload
_Str
,
strlen
(
payload_Str
),
NULL
);
//kk_tsl_service_property_set(topic->valuestring, payload->valuestring, strlen(payload->valuestring), NULL);
//kk_tsl_service_property_set(topic->valuestring, payload->valuestring, strlen(payload->valuestring), NULL);
}
else
if
(
strstr
(
typeJson
->
valuestring
,
KK_THING_CLOUDSTATE_MSG
)){
}
else
if
(
strstr
(
typeJson
->
valuestring
,
KK_THING_CLOUDSTATE_MSG
)){
INFO_PRINT
(
"cloud state notify
\n
"
);
INFO_PRINT
(
"cloud state notify
\n
"
);
cJSON
*
payloadStr
=
cJSON_Parse
(
payload
->
valuestring
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payloadStr
,
MSG_PARAMS_STR
);
cJSON
*
state
=
cJSON_GetObjectItem
(
paramStr
,
"IOTCloudState"
);
cJSON
*
state
=
cJSON_GetObjectItem
(
paramStr
,
"IOTCloudState"
);
int
state_int
=
atoi
(
state
->
valuestring
);
int
state_int
=
atoi
(
state
->
valuestring
);
res
=
kk_tsl_set_value
(
kk_tsl_set_property_value
,
0
,
KK_TSL_CCU_WANSTATE_IDENTIFIER
,
&
state_int
,
NULL
);
res
=
kk_tsl_set_value
(
kk_tsl_set_property_value
,
0
,
KK_TSL_CCU_WANSTATE_IDENTIFIER
,
&
state_int
,
NULL
);
...
@@ -304,7 +304,6 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -304,7 +304,6 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
{
{
ERROR_PRINT
(
"[%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
ERROR_PRINT
(
"[%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
}
}
cJSON_Delete
(
payloadStr
);
}
else
if
(
strstr
(
typeJson
->
valuestring
,
KK_THING_OTA_DEVICE_UPGRADE
)){
}
else
if
(
strstr
(
typeJson
->
valuestring
,
KK_THING_OTA_DEVICE_UPGRADE
)){
INFO_PRINT
(
"ota upgrade...
\n
"
);
INFO_PRINT
(
"ota upgrade...
\n
"
);
kk_dm_ota_send
(
data
,
strlen
(
data
)
+
1
);
kk_dm_ota_send
(
data
,
strlen
(
data
)
+
1
);
...
@@ -315,8 +314,8 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -315,8 +314,8 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
}
}
directReturn:
directReturn:
free
(
payload_Str
);
cJSON_Delete
(
json
);
cJSON_Delete
(
json
);
cJSON_Delete
(
info
);
...
...
midware/midware/midware.c
View file @
7af7906d
...
@@ -33,7 +33,8 @@ char * g_filerToPlatTable[] =
...
@@ -33,7 +33,8 @@ char * g_filerToPlatTable[] =
static
int
_kk_filter_to_plat
(
const
char
*
msgtype
)
static
int
_kk_filter_to_plat
(
const
char
*
msgtype
)
{
{
int
i
=
0
,
num
=
0
;
int
i
=
0
,
num
=
0
;
num
=
sizeof
(
g_filerToPlatTable
);
num
=
sizeof
(
g_filerToPlatTable
)
/
sizeof
(
char
*
);
for
(
i
=
0
;
i
<
num
;
i
++
){
for
(
i
=
0
;
i
<
num
;
i
++
){
if
(
strstr
(
msgtype
,
g_filerToPlatTable
[
i
]))
if
(
strstr
(
msgtype
,
g_filerToPlatTable
[
i
]))
{
{
...
@@ -66,19 +67,19 @@ void mid_cb(void* data, int len){
...
@@ -66,19 +67,19 @@ void mid_cb(void* data, int len){
else
else
{
{
info_root
=
cJSON_GetObjectItem
(
json
,
MSG_INFO_STR
);
info_root
=
cJSON_GetObjectItem
(
json
,
MSG_INFO_STR
);
info
=
cJSON_Parse
(
info_root
->
valuestring
);
deviceCode
=
cJSON_GetObjectItem
(
info_root
,
MSG_DEVICE_CODE_STR
);
deviceCode
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
type
=
cJSON_GetObjectItem
(
info_root
,
MSG_TYPE_STR
);
type
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
if
(
_kk_filter_to_plat
(
type
->
valuestring
)){
if
(
_kk_filter_to_plat
(
type
->
valuestring
)){
cJSON_Delete
(
json
);
cJSON_Delete
(
json
);
cJSON_Delete
(
info
);
cJSON_Delete
(
info
);
return
;
return
;
}
}
int
DevType
=
dm_mgr_get_deviceType_by_mac
(
deviceCode
->
valuestring
);
int
devType
=
0
;
if
(
DevType
==
KK_DM_DEVICE_GATEWAY
){
dm_mgr_get_deviceType_by_mac
(
deviceCode
->
valuestring
,
&
devType
);
if
(
devType
==
KK_DM_DEVICE_GATEWAY
){
kk_ipc_send_ex
(
IPC_MID2PLAT
,
data
,
strlen
(
data
),
deviceCode
->
valuestring
);
//send to gw itself
kk_ipc_send_ex
(
IPC_MID2PLAT
,
data
,
strlen
(
data
),
deviceCode
->
valuestring
);
//send to gw itself
}
else
if
(
D
evType
==
KK_DM_DEVICE_SUBDEV
){
}
else
if
(
d
evType
==
KK_DM_DEVICE_SUBDEV
){
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
res
=
dm_mgr_get_device_by_mac
(
deviceCode
->
valuestring
,
&
gw_node
);
res
=
dm_mgr_get_device_by_mac
(
deviceCode
->
valuestring
,
&
gw_node
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
platform/zigbee/app/builder/Z3GatewayHost/com_api.h
View file @
7af7906d
...
@@ -28,32 +28,6 @@ typedef enum {
...
@@ -28,32 +28,6 @@ typedef enum {
IPC_UNDEF
IPC_UNDEF
}
ipc_type
;
}
ipc_type
;
typedef
enum
{
/******MIDDWARE TO APP**************/
MSG_REGISTER
=
0
,
MSG_UNREGISTER
,
MSG_TOPOADD
,
MSG_TOPODELETE
,
MSG_TOPOGET
,
MSG_LISTFOUND
,
MSG_LOGIN
,
MSG_LOGOUT
,
MSG_PROPERTYPOST
,
MSG_EVENTPOST
,
MSG_SERVICERESPONSE
,
MSG_SETREPLY
,
MSG_OTA_PROCESS
,
MSG_OTA_INFORM
,
/*******APP TO MIDDWARE**************/
MSG_REGISTER_REPLY
,
MSG_TOPOADD_REPLY
,
MSG_OFFLINE_REPLY
,
MSG_LOGIN_REPLY
,
MSG_PROPERTYSET
,
MSG_OTA_UPGRADE
,
MSG_INVALID
,
}
kk_msg_type_t
;
#define MSG_TYPE_STR "msgtype"
#define MSG_TYPE_STR "msgtype"
#define MSG_PRODUCT_TYPE_STR "productType"
#define MSG_PRODUCT_TYPE_STR "productType"
...
...
platform/zigbee/app/builder/Z3GatewayHost/kk_sub_tsl.c
View file @
7af7906d
...
@@ -105,15 +105,14 @@ int kk_tsl_init(void)
...
@@ -105,15 +105,14 @@ int kk_tsl_init(void)
//kk_test();
//kk_test();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
int
kk_sub_tsl_add
(
EmberEUI64
device_mac
,
const
char
*
product
_typ
e
)
int
kk_sub_tsl_add
(
EmberEUI64
device_mac
,
const
char
*
product
Cod
e
)
{
{
sub_dev_node_t
*
node
=
NULL
;
sub_dev_node_t
*
node
=
NULL
;
kk_sub_dev_ctx_t
*
ctx
=
_sub_dev_get_ctx
();
kk_sub_dev_ctx_t
*
ctx
=
_sub_dev_get_ctx
();
char
name
[
TSL_PATH_MAXLEN
]
=
{
0
};
char
*
tsl_str
=
NULL
;
char
*
tsl_str
=
NULL
;
int
res
=
0
;
int
res
=
0
;
char
macString
[
19
]
=
{
0
};
char
macString
[
19
]
=
{
0
};
if
(
product
_typ
e
==
NULL
)
if
(
product
Cod
e
==
NULL
)
{
{
return
INVALID_PARAMETER
;
return
INVALID_PARAMETER
;
}
}
...
@@ -128,7 +127,7 @@ int kk_sub_tsl_add(EmberEUI64 device_mac,const char *product_type)
...
@@ -128,7 +127,7 @@ int kk_sub_tsl_add(EmberEUI64 device_mac,const char *product_type)
_sub_dev_mutex_lock
();
_sub_dev_mutex_lock
();
memset
(
node
,
0
,
sizeof
(
sub_dev_node_t
)
);
memset
(
node
,
0
,
sizeof
(
sub_dev_node_t
)
);
memcpy
(
node
->
device_mac
,
macString
,
strlen
(
macString
));
memcpy
(
node
->
device_mac
,
macString
,
strlen
(
macString
));
memcpy
(
node
->
product
_type
,
product_type
,
strlen
(
product_typ
e
));
memcpy
(
node
->
product
Code
,
productCode
,
strlen
(
productCod
e
));
node
->
devid
=
_sub_tsl_next_devid
();
node
->
devid
=
_sub_tsl_next_devid
();
INIT_LIST_HEAD
(
&
node
->
linked_list
);
INIT_LIST_HEAD
(
&
node
->
linked_list
);
...
@@ -162,7 +161,7 @@ const char DM_MSG_REQUEST[] = "{\"LightStatus\":\"1\"}";
...
@@ -162,7 +161,7 @@ const char DM_MSG_REQUEST[] = "{\"LightStatus\":\"1\"}";
int
kk_test
(
void
)
int
kk_test
(
void
)
{
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_test_fuc
(
"112233445566"
,
DM_MSG_REQUEST
);
//
kk_test_fuc("112233445566",DM_MSG_REQUEST);
//kk_get_Identity_Num(0);
//kk_get_Identity_Num(0);
return
0
;
return
0
;
...
...
platform/zigbee/app/builder/Z3GatewayHost/kk_sub_tsl.h
View file @
7af7906d
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
typedef
struct
{
typedef
struct
{
int
devid
;
int
devid
;
char
product
_type
[
PRODUCT_KEY
_MAXLEN
];
char
product
Code
[
PRODUCT_TYPE
_MAXLEN
];
char
device_mac
[
DEVICE_MAC_MAXLEN
];
char
device_mac
[
DEVICE_MAC_MAXLEN
];
struct
list_head
linked_list
;
struct
list_head
linked_list
;
}
sub_dev_node_t
;
}
sub_dev_node_t
;
...
...
platform/zigbee/app/builder/Z3GatewayHost/kk_test.c
View file @
7af7906d
...
@@ -4,33 +4,44 @@
...
@@ -4,33 +4,44 @@
extern
kk_tsl_zigbee_map_t
g_tsl_zigbee_map
[];
extern
kk_tsl_zigbee_map_t
g_tsl_zigbee_map
[];
static
void
kk_rpc_send_message
(
cJSON
*
data
,
char
*
method
,
EmberEUI64
mac
)
static
void
kk_rpc_send_message
(
cJSON
*
data
,
char
*
m
sgtype
,
char
*
m
ethod
,
EmberEUI64
mac
)
{
{
static
uint16_t
msgid
;
static
uint16_t
msgid
;
cJSON
*
item
=
rpc_cJSON_CreateObject
();
char
msgIdString
[
10
];
char
msgIdString
[
10
];
sprintf
(
msgIdString
,
"%d"
,
++
msgid
);
rpc_cJSON_AddStringToObject
(
item
,
"msgId"
,
msgIdString
);
rpc_cJSON_AddStringToObject
(
item
,
"version"
,
KK_IPC_VERSION
);
if
(
mac
!=
NULL
){
rpc_cJSON_AddMACToObject
(
item
,
mac
);
}
rpc_cJSON_AddStringToObject
(
item
,
"method"
,
method
);
rpc_cJSON_AddItemToObject
(
item
,
"params"
,
data
);
cJSON
*
info
=
rpc_cJSON_CreateObject
();
if
(
info
!=
NULL
){
rpc_cJSON_AddStringToObject
(
info
,
"msgType"
,
msgtype
);
rpc_cJSON_AddStringToObject
(
info
,
"productCode"
,
""
);
rpc_cJSON_AddStringToObject
(
info
,
"deviceCode"
,
""
);
}
cJSON
*
payload
=
rpc_cJSON_CreateObject
();
if
(
payload
!=
NULL
){
sprintf
(
msgIdString
,
"%d"
,
++
msgid
);
rpc_cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgIdString
);
rpc_cJSON_AddStringToObject
(
payload
,
"version"
,
KK_IPC_VERSION
);
rpc_cJSON_AddStringToObject
(
payload
,
"method"
,
method
);
rpc_cJSON_AddItemToObject
(
payload
,
"params"
,
data
);
}
cJSON
*
root
=
rpc_cJSON_CreateObject
();
if
(
root
!=
NULL
){
rpc_cJSON_AddItemToObject
(
root
,
"info"
,
info
);
rpc_cJSON_AddItemToObject
(
root
,
"payload"
,
payload
);
}
char
*
p
=
rpc_cJSON_Print
(
item
);
char
*
p
=
rpc_cJSON_Print
(
root
);
emberAfAppPrintln
(
"send json:
\n
%s
\n
"
,
p
);
emberAfAppPrintln
(
"send json:
\n
%s
\n
"
,
p
);
free
(
p
);
free
(
p
);
jrpc_send_msg
(
item
);
jrpc_send_msg
(
root
);
rpc_cJSON_Delete
(
root
);
}
}
void
kk_rpc_report_devices
(
cJSON
*
data
,
EmberEUI64
mac
)
void
kk_rpc_report_devices
(
cJSON
*
data
,
EmberEUI64
mac
)
{
{
kk_rpc_send_message
(
data
,
KK_REPORT_DEVICE_JOINED_METHOD
,
mac
);
kk_rpc_send_message
(
data
,
KK_REPORT_DEVICE_JOINED_
TYPE
,
KK_REPORT_DEVICE_JOINED_
METHOD
,
mac
);
}
}
void
kk_rpc_report_status
(
cJSON
*
data
,
EmberEUI64
mac
)
void
kk_rpc_report_status
(
cJSON
*
data
,
EmberEUI64
mac
)
{
{
kk_rpc_send_message
(
data
,
KK_REPORT_ATTRIBUTE_METHOD
,
mac
);
kk_rpc_send_message
(
data
,
KK_REPORT_ATTRIBUTE_
TYPE
,
KK_REPORT_ATTRIBUTE_
METHOD
,
mac
);
}
}
typedef
struct
{
typedef
struct
{
...
@@ -53,9 +64,9 @@ void kk_rpc_reportDevices(kk_report_device_s device)
...
@@ -53,9 +64,9 @@ void kk_rpc_reportDevices(kk_report_device_s device)
rpc_cJSON_AddAppVersionToObject
(
devicesJson
,
device
.
AppVersion
);
rpc_cJSON_AddAppVersionToObject
(
devicesJson
,
device
.
AppVersion
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"deviceType"
,
"1"
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"deviceType"
,
"1"
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"deviceCode"
,
"2"
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"deviceCode"
,
"2"
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"productType"
,
PRODUCT_TYP
E
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"productType"
,
TEST_PRODUCT_COD
E
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"productCode"
,
"4"
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"productCode"
,
"4"
);
kk_sub_tsl_add
(
device
.
mac
,
PRODUCT_TYP
E
);
kk_sub_tsl_add
(
device
.
mac
,
TEST_PRODUCT_COD
E
);
kk_rpc_report_devices
(
devicesJson
,
device
.
mac
);
kk_rpc_report_devices
(
devicesJson
,
device
.
mac
);
}
}
int
kk_rpc_report_LightStatus
(
EmberEUI64
mac
,
int
status
,
uint16_t
clusterId
,
uint16_t
attributeId
)
int
kk_rpc_report_LightStatus
(
EmberEUI64
mac
,
int
status
,
uint16_t
clusterId
,
uint16_t
attributeId
)
...
@@ -78,7 +89,7 @@ int kk_rpc_report_LightStatus(EmberEUI64 mac,int status,uint16_t clusterId,uint1
...
@@ -78,7 +89,7 @@ int kk_rpc_report_LightStatus(EmberEUI64 mac,int status,uint16_t clusterId,uint1
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
-
1
;
return
-
1
;
}
}
pCtrlIdx
=
kk_find_ctrl_obj
(
node
->
product
_typ
e
);
pCtrlIdx
=
kk_find_ctrl_obj
(
node
->
product
Cod
e
);
if
(
pCtrlIdx
==
-
1
){
if
(
pCtrlIdx
==
-
1
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
-
1
;
return
-
1
;
...
@@ -143,7 +154,7 @@ error_return:
...
@@ -143,7 +154,7 @@ error_return:
}
}
#if 0
int kk_test_fuc(char *mac,const char *params)
int kk_test_fuc(char *mac,const char *params)
{
{
sub_dev_node_t *node = NULL;
sub_dev_node_t *node = NULL;
...
@@ -191,6 +202,7 @@ int kk_test_fuc(char *mac,const char *params)
...
@@ -191,6 +202,7 @@ int kk_test_fuc(char *mac,const char *params)
return 0;
return 0;
}
}
#endif
cJSON
*
rpc_read_attribue
(
jrpc_context
*
ctx
,
cJSON
*
params
,
cJSON
*
id
,
cJSON
*
mac
)
cJSON
*
rpc_read_attribue
(
jrpc_context
*
ctx
,
cJSON
*
params
,
cJSON
*
id
,
cJSON
*
mac
)
{
{
rpc_nwk_info_s
info
;
rpc_nwk_info_s
info
;
...
@@ -210,7 +222,7 @@ cJSON *rpc_read_attribue(jrpc_context * ctx, cJSON *params, cJSON *id,cJSON *mac
...
@@ -210,7 +222,7 @@ cJSON *rpc_read_attribue(jrpc_context * ctx, cJSON *params, cJSON *id,cJSON *mac
goto
error_return
;
goto
error_return
;
}
}
pCtrlIdx
=
kk_find_ctrl_obj
(
node
->
product
_typ
e
);
pCtrlIdx
=
kk_find_ctrl_obj
(
node
->
product
Cod
e
);
if
(
pCtrlIdx
<
SUCCESS_RETURN
){
if
(
pCtrlIdx
<
SUCCESS_RETURN
){
goto
error_return
;
goto
error_return
;
}
}
...
@@ -260,7 +272,7 @@ cJSON *rpc_Control(jrpc_context * ctx, cJSON *params, cJSON *id,cJSON *mac)
...
@@ -260,7 +272,7 @@ cJSON *rpc_Control(jrpc_context * ctx, cJSON *params, cJSON *id,cJSON *mac)
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
goto
error_return
;
}
}
pCtrlIdx
=
kk_find_ctrl_obj
(
node
->
product
_typ
e
);
pCtrlIdx
=
kk_find_ctrl_obj
(
node
->
product
Cod
e
);
if
(
pCtrlIdx
==
-
1
){
if
(
pCtrlIdx
==
-
1
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
...
...
platform/zigbee/app/builder/Z3GatewayHost/kk_test.h
View file @
7af7906d
...
@@ -5,13 +5,16 @@
...
@@ -5,13 +5,16 @@
#include "network-creator-security.h"
#include "network-creator-security.h"
#include "RPC_API.h"
#include "RPC_API.h"
#define KK_REPORT_DEVICE_JOINED_TYPE "/thing/topo/add"
#define KK_REPORT_ATTRIBUTE_TYPE "/thing/service/property/report"
#define KK_IPC_VERSION "1.0"
#define KK_IPC_VERSION "1.0"
#define KK_REPORT_DEVICE_JOINED_METHOD "thing.topo.add"
#define KK_REPORT_DEVICE_JOINED_METHOD "thing.topo.add"
#define KK_REPORT_DEVICE_LEAVE_METHOD "thing.topo.leave"
#define KK_REPORT_DEVICE_LEAVE_METHOD "thing.topo.leave"
#define KK_REPORT_ATTRIBUTE_METHOD "thing.service.property.report"
#define KK_REPORT_ATTRIBUTE_METHOD "thing.service.property.report"
#define KK_READ_ATTRIBUTE_METHOD "thing.service.property.get"
#define KK_READ_ATTRIBUTE_METHOD "thing.service.property.get"
#define
PRODUCT_TYPE "3
"
#define
TEST_PRODUCT_CODE "24
"
cJSON
*
rpc_Control
(
jrpc_context
*
ctx
,
cJSON
*
params
,
cJSON
*
id
,
cJSON
*
mac
);
cJSON
*
rpc_Control
(
jrpc_context
*
ctx
,
cJSON
*
params
,
cJSON
*
id
,
cJSON
*
mac
);
...
@@ -21,9 +24,9 @@ int lightStatusSet(jrpc_context * ctx,const char *mac,void* data);
...
@@ -21,9 +24,9 @@ int lightStatusSet(jrpc_context * ctx,const char *mac,void* data);
#define RPC_KK_TEST_FUNCTION_TABLE \
#define RPC_KK_TEST_FUNCTION_TABLE \
{(rpc_function*)rpc_Control,"
thing.service.property.
set"},\
{(rpc_function*)rpc_Control,"
/thing/service/property/
set"},\
{(rpc_function*)rpc_Control,KK_READ_ATTRIBUTE_METHOD},\
{(rpc_function*)rpc_Control,KK_READ_ATTRIBUTE_METHOD},\
{(rpc_function*)rpc_nwkPermitJoin,"
thing.service.NetChannelState.
set"}
{(rpc_function*)rpc_nwkPermitJoin,"
/thing/service/NetChannelState/
set"}
...
...
platform/zigbee/app/builder/Z3GatewayHost/kk_tsl_zigbee_map.c
View file @
7af7906d
...
@@ -3,12 +3,12 @@
...
@@ -3,12 +3,12 @@
kk_tsl_zigbee_map_t
g_tsl_zigbee_map
[]
=
{
kk_tsl_zigbee_map_t
g_tsl_zigbee_map
[]
=
{
{
{
PRODUCT_TYP
E
,
TEST_PRODUCT_COD
E
,
3
,
3
,
{
{
{
KK_TSL_DATA_TYPE_TEXT
,
"
LightStatus
"
,
lightStatusSet
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
},
{
KK_TSL_DATA_TYPE_TEXT
,
"
OperationMode
"
,
lightStatusSet
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
},
{
KK_TSL_DATA_TYPE_TEXT
,
"
LightAdjustLevel
"
,
lightStatusSet
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
},
{
KK_TSL_DATA_TYPE_TEXT
,
"
WorkMode
"
,
lightStatusSet
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
},
{
KK_TSL_DATA_TYPE_TEXT
,
"
LightAlias
"
,
lightStatusSet
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
},
{
KK_TSL_DATA_TYPE_TEXT
,
"
Position
"
,
lightStatusSet
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
},
}
}
},
},
{
{
...
@@ -24,13 +24,13 @@ kk_tsl_zigbee_map_t g_tsl_zigbee_map [] = {
...
@@ -24,13 +24,13 @@ kk_tsl_zigbee_map_t g_tsl_zigbee_map [] = {
};
};
int
kk_find_ctrl_obj
(
const
char
*
product
_typ
e
)
int
kk_find_ctrl_obj
(
const
char
*
product
Cod
e
)
{
{
int
map_num
=
sizeof
(
g_tsl_zigbee_map
)
/
sizeof
(
kk_tsl_zigbee_map_t
);
int
map_num
=
sizeof
(
g_tsl_zigbee_map
)
/
sizeof
(
kk_tsl_zigbee_map_t
);
int
index
=
0
;
int
index
=
0
;
for
(
index
=
0
;
index
<
map_num
;
index
++
)
for
(
index
=
0
;
index
<
map_num
;
index
++
)
{
{
if
(
!
strcmp
(
product
_type
,
g_tsl_zigbee_map
[
index
].
product_typ
e
))
if
(
!
strcmp
(
product
Code
,
g_tsl_zigbee_map
[
index
].
productCod
e
))
{
{
return
index
;
return
index
;
}
}
...
...
platform/zigbee/app/builder/Z3GatewayHost/kk_tsl_zigbee_map.h
View file @
7af7906d
...
@@ -18,7 +18,7 @@ typedef struct{
...
@@ -18,7 +18,7 @@ typedef struct{
}
kk_zigbee_ctrl_map_t
;
}
kk_zigbee_ctrl_map_t
;
typedef
struct
{
typedef
struct
{
char
*
product
_typ
e
;
char
*
product
Cod
e
;
int
num
;
int
num
;
kk_zigbee_ctrl_map_t
zigbee_ctrl
[
PROPERTIES_MAX_NUM
];
kk_zigbee_ctrl_map_t
zigbee_ctrl
[
PROPERTIES_MAX_NUM
];
}
kk_tsl_zigbee_map_t
;
}
kk_tsl_zigbee_map_t
;
...
...
platform/zigbee/app/builder/Z3GatewayHost/rpc_api/src/rpc_interface_parse.c
View file @
7af7906d
...
@@ -55,7 +55,6 @@ void rpcInterfaceParse(void)
...
@@ -55,7 +55,6 @@ void rpcInterfaceParse(void)
emberAfAppPrint
(
"i=%d,%s
\r\n
"
,
i
,
rpc_table
[
i
].
name
);
emberAfAppPrint
(
"i=%d,%s
\r\n
"
,
i
,
rpc_table
[
i
].
name
);
jrpc_register_procedure
(
&
my_server
,
rpc_table
[
i
].
func
,
rpc_table
[
i
].
name
,
NULL
);
jrpc_register_procedure
(
&
my_server
,
rpc_table
[
i
].
func
,
rpc_table
[
i
].
name
,
NULL
);
}
}
jrpc_server_run
(
&
my_server
);
jrpc_server_run
(
&
my_server
);
jrpc_server_destroy
(
&
my_server
);
jrpc_server_destroy
(
&
my_server
);
...
@@ -90,18 +89,31 @@ cJSON * test_func(jrpc_context * ctx, cJSON * params, cJSON *id) {
...
@@ -90,18 +89,31 @@ cJSON * test_func(jrpc_context * ctx, cJSON * params, cJSON *id) {
static
int
send_result_resp
(
cJSON
*
result
,
static
int
send_result_resp
(
cJSON
*
result
,
cJSON
*
id
)
{
cJSON
*
id
)
{
int
return_value
=
0
;
int
return_value
=
0
;
cJSON
*
info_root
=
rpc_cJSON_CreateObject
();
if
(
info_root
){
rpc_cJSON_AddStringToObject
(
info_root
,
"msgType"
,
""
);
rpc_cJSON_AddStringToObject
(
info_root
,
"productType"
,
""
);
rpc_cJSON_AddStringToObject
(
info_root
,
"productCode"
,
""
);
rpc_cJSON_AddStringToObject
(
info_root
,
"deviceCode"
,
""
);
}
cJSON
*
payload_root
=
rpc_cJSON_CreateObject
();
if
(
payload_root
){
rpc_cJSON_AddItemToObject
(
payload_root
,
"msgId"
,
id
);
rpc_cJSON_AddItemToObject
(
payload_root
,
"code"
,
result
);
rpc_cJSON_AddStringToObject
(
payload_root
,
"data"
,
"{}"
);
}
cJSON
*
result_root
=
rpc_cJSON_CreateObject
();
cJSON
*
result_root
=
rpc_cJSON_CreateObject
();
if
(
result
)
if
(
result_root
){
rpc_cJSON_AddItemToObject
(
result_root
,
"code"
,
result
);
rpc_cJSON_AddItemToObject
(
result_root
,
"info"
,
info_root
);
if
(
id
){
rpc_cJSON_AddItemToObject
(
result_root
,
"payload"
,
payload_root
);
printf
(
"id json:
\n
%s
\n
"
,
id
->
valuestring
);
rpc_cJSON_AddItemToObject
(
result_root
,
"msgId"
,
id
);
}
}
char
*
str_result
=
rpc_cJSON_Print
(
result_root
);
char
*
str_result
=
rpc_cJSON_Print
(
result_root
);
printf
(
"send json:
\n
%s
\n
"
,
str_result
);
printf
(
"send json:
\n
%s
\n
"
,
str_result
);
return_value
=
kk_ipc_send
(
IPC_PLAT2MID
,
str_result
,
strlen
(
str_result
)
+
1
);
return_value
=
kk_ipc_send
(
IPC_PLAT2MID
,
str_result
,
strlen
(
str_result
)
+
1
);
free
(
str_result
);
free
(
str_result
);
rpc_cJSON_Delete
(
result_root
);
rpc_cJSON_Delete
(
result_root
);
return
return_value
;
return
return_value
;
}
}
...
@@ -110,17 +122,37 @@ static int send_result_resp(cJSON * result,
...
@@ -110,17 +122,37 @@ static int send_result_resp(cJSON * result,
static
int
send_error_resp
(
int
code
,
char
*
message
,
static
int
send_error_resp
(
int
code
,
char
*
message
,
cJSON
*
id
)
{
cJSON
*
id
)
{
int
return_value
=
0
;
int
return_value
=
0
;
cJSON
*
edata
;
cJSON
*
info_root
=
rpc_cJSON_CreateObject
();
if
(
info_root
){
rpc_cJSON_AddStringToObject
(
info_root
,
"msgType"
,
""
);
rpc_cJSON_AddStringToObject
(
info_root
,
"productType"
,
""
);
rpc_cJSON_AddStringToObject
(
info_root
,
"productCode"
,
""
);
rpc_cJSON_AddStringToObject
(
info_root
,
"deviceCode"
,
""
);
}
cJSON
*
payload_root
=
rpc_cJSON_CreateObject
();
if
(
payload_root
){
rpc_cJSON_AddItemToObject
(
payload_root
,
"msgId"
,
id
);
rpc_cJSON_AddNumberToObject
(
payload_root
,
"code"
,
code
);
edata
=
rpc_cJSON_CreateObject
();
if
(
edata
){
rpc_cJSON_AddStringToObject
(
edata
,
"message"
,
message
);
}
rpc_cJSON_AddItemToObject
(
payload_root
,
"data"
,
edata
);
}
cJSON
*
result_root
=
rpc_cJSON_CreateObject
();
cJSON
*
result_root
=
rpc_cJSON_CreateObject
();
cJSON
*
error_root
=
rpc_cJSON_CreateObject
();
if
(
result_root
){
rpc_cJSON_AddNumberToObject
(
error_root
,
"code"
,
code
);
rpc_cJSON_AddItemToObject
(
result_root
,
"info"
,
info_root
);
rpc_cJSON_AddStringToObject
(
error_root
,
"message"
,
message
);
rpc_cJSON_AddItemToObject
(
result_root
,
"payload"
,
payload_root
);
rpc_cJSON_AddItemToObject
(
result_root
,
"error"
,
error_root
);
}
rpc_cJSON_AddItemToObject
(
result_root
,
"id"
,
id
);
char
*
str_result
=
rpc_cJSON_Print
(
result_root
);
char
*
str_result
=
rpc_cJSON_Print
(
result_root
);
//printf("alla=========== :%d\n", strlen(str_result)+1);
//printf("alla=========== :%d\n", strlen(str_result)+1);
return_value
=
kk_ipc_send
(
IPC_PLAT2MID
,
str_result
,
strlen
(
str_result
)
+
1
);
return_value
=
kk_ipc_send
(
IPC_PLAT2MID
,
str_result
,
strlen
(
str_result
)
+
1
);
printf
(
"send_error_resp:
\n
%s
\n
"
,
str_result
);
printf
(
"send_error_resp:
\n
%s
\n
"
,
str_result
);
free
(
str_result
);
free
(
str_result
);
rpc_cJSON_Delete
(
result_root
);
rpc_cJSON_Delete
(
result_root
);
free
(
message
);
free
(
message
);
return
return_value
;
return
return_value
;
...
@@ -154,32 +186,30 @@ static int invoke_procedure(struct jrpc_server *server,
...
@@ -154,32 +186,30 @@ static int invoke_procedure(struct jrpc_server *server,
}
}
static
int
eval_request
(
struct
jrpc_server
*
server
,
cJSON
*
root
)
{
static
int
eval_request
(
struct
jrpc_server
*
server
,
cJSON
*
root
)
{
cJSON
*
method
,
*
params
,
*
id
,
*
mac
;
cJSON
*
params
,
*
id
,
*
mac
,
*
info
,
*
msgType
,
*
payload
;
method
=
rpc_cJSON_GetObjectItem
(
root
,
"method"
);
info
=
rpc_cJSON_GetObjectItem
(
root
,
"info"
);
if
(
method
!=
NULL
&&
method
->
type
==
cJSON_String
)
{
if
(
info
!=
NULL
){
params
=
rpc_cJSON_GetObjectItem
(
root
,
"params"
);
if
(
params
==
NULL
||
params
->
type
==
cJSON_Array
msgType
=
rpc_cJSON_GetObjectItem
(
info
,
"msgType"
);
||
params
->
type
==
cJSON_Object
)
{
mac
=
rpc_cJSON_GetObjectItem
(
info
,
"deviceCode"
);
id
=
rpc_cJSON_GetObjectItem
(
root
,
"msgId"
);
}
if
(
id
==
NULL
||
id
->
type
==
cJSON_String
payload
=
rpc_cJSON_GetObjectItem
(
root
,
"payload"
);
||
id
->
type
==
cJSON_Number
)
{
if
(
payload
!=
NULL
){
mac
=
rpc_cJSON_GetObjectItem
(
root
,
"mac"
);
if
(
mac
->
type
=
cJSON_String
){
params
=
rpc_cJSON_GetObjectItem
(
payload
,
"params"
);
//We have to copy ID because using it on the reply and deleting the response Object will also delete ID
id
=
rpc_cJSON_GetObjectItem
(
payload
,
"msgId"
);
cJSON
*
id_copy
=
NULL
;
}
if
(
id
!=
NULL
)
if
(
id
!=
NULL
&&
params
!=
NULL
&&
msgType
!=
NULL
&&
mac
!=
NULL
){
id_copy
=
(
id
->
type
==
cJSON_String
)
?
rpc_cJSON_CreateString
(
cJSON
*
id_copy
=
NULL
;
id
->
valuestring
)
:
id_copy
=
(
id
->
type
==
cJSON_String
)
?
rpc_cJSON_CreateString
(
id
->
valuestring
)
:
\
rpc_cJSON_CreateNumber
(
id
->
valueint
);
rpc_cJSON_CreateNumber
(
id
->
valueint
);
if
(
server
->
debug_level
)
return
invoke_procedure
(
server
,
msgType
->
valuestring
,
printf
(
"Method Invoked[2]: %s
\n
"
,
method
->
valuestring
);
params
,
id_copy
,
mac
);
return
invoke_procedure
(
server
,
method
->
valuestring
,
params
,
id_copy
,
mac
);
}
}
}
}
}
send_error_resp
(
JRPC_INVALID_REQUEST
,
send_error_resp
(
JRPC_INVALID_REQUEST
,
strdup
(
"The JSON sent is not a valid Request object."
),
NULL
);
strdup
(
"The JSON sent is not a valid Request object."
),
NULL
);
return
-
1
;
return
-
1
;
...
...
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