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
604f4d05
Commit
604f4d05
authored
Aug 10, 2021
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yjq' into 'master'
20210910,克隆。 See merge request chenweican/k-sdk!102
parents
06b76807
7549830f
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
243 additions
and
90 deletions
+243
-90
application/klansdk/kk_ccu_msg.h
application/klansdk/kk_ccu_msg.h
+3
-0
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+11
-6
application/klansdk/kk_data_mng.c
application/klansdk/kk_data_mng.c
+8
-5
application/klansdk/kk_lan_main.c
application/klansdk/kk_lan_main.c
+1
-0
application/klansdk/kk_lan_sync.c
application/klansdk/kk_lan_sync.c
+201
-76
application/klansdk/kk_lan_sync.h
application/klansdk/kk_lan_sync.h
+1
-1
application/klansdk/kk_oldccu_msg.c
application/klansdk/kk_oldccu_msg.c
+18
-2
No files found.
application/klansdk/kk_ccu_msg.h
View file @
604f4d05
...
...
@@ -16,6 +16,9 @@
#define GUARD_STATUS_ARMING_LEAVE_HOME "ARMING_LEAVE_HOME"
#define GUARD_STATUS_DISARMING "DISARMING"
#define GUARD_STATUS_ARMING_IN_HOME "ARMING_IN_HOME"
#define ARMING_STATUS_GUARD_ZONE "ARMING_CUSTOM_GUARD_ZONE"
#define EMPTY_STR ""
...
...
application/klansdk/kk_data_handle.c
View file @
604f4d05
...
...
@@ -248,12 +248,15 @@ int kk_zb_devs_hw_ack_all(int sockfd)
kk_map_dev_node_t
*
search_node
=
NULL
;
cJSON
*
array
=
cJSON_CreateArray
();
cJSON
*
item
;
_kk_map_dev_mutex_lock
();
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
if
((
item
=
kk_zb_dev_hw_info_build
(
search_node
->
deviceCode
,
search_node
->
productCode
,
search_node
->
online_status
,
NULL
,
NULL
))
!=
NULL
){
cJSON_AddItemToArray
(
array
,
item
);
}
}
_kk_map_dev_mutex_unlock
();
_kk_zb_devs_hw_ack
(
sockfd
,
array
);
return
-
1
;
}
...
...
@@ -265,7 +268,8 @@ int kk_zb_dev_hw_info_build_by_deviceCode(int sockfd,const char *deviceCode)
cJSON
*
item
;
unsigned
char
online_status
=
0
;
int
pid
=-
1
;
_kk_map_dev_mutex_lock
();
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
if
(
(
strlen
(
search_node
->
deviceCode
)
==
strlen
(
deviceCode
))
&&
(
memcmp
(
search_node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
))
==
0
))
{
...
...
@@ -275,6 +279,7 @@ int kk_zb_dev_hw_info_build_by_deviceCode(int sockfd,const char *deviceCode)
return
item
;
}
}
_kk_map_dev_mutex_unlock
();
return
NULL
;
}
...
...
@@ -436,7 +441,7 @@ int is_arming_status_notify(cJSON *payload)
cJSON
*
params
=
NULL
;
cJSON
*
ArmingState
=
NULL
;
if
((
params
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
))
!=
NULL
){
if
((
ArmingState
=
cJSON_GetObjectItem
(
pa
yload
,
"ArmingState"
))
!=
NULL
){
if
((
ArmingState
=
cJSON_GetObjectItem
(
pa
rams
,
"ArmingState"
))
!=
NULL
){
if
(
ArmingState
->
type
==
cJSON_String
&&
ArmingState
->
valuestring
!=
NULL
){
return
atoi
(
ArmingState
->
valuestring
);
...
...
@@ -482,9 +487,11 @@ void KK_Data_FromMid(void* str,int len)
if
(
strstr
(
msgtype
->
valuestring
,
SYNC_MSG_TYPE_REPLY
)
!=
NULL
){
kk_parse_syncinfo
(
payload
);
kk_create_syncinfo_to_sdk
(
payload
);
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/event/property/post"
)
!=
NULL
){
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/event/property/post"
)
!=
NULL
){
if
(
is_ccu_msg
(
productCode
,
deviceCode
)){
int
type
;
if
((
type
=
is_arming_status_notify
(
payload
))
!=-
1
){
arming_status_notify
(
type
);
...
...
@@ -492,8 +499,6 @@ void KK_Data_FromMid(void* str,int len)
}
else
{
property_post_deal
(
deviceCode
->
valuestring
,
payload
);
}
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/topo/delete"
)
!=
NULL
){
device_delete_sync
(
payload
);
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/status/online"
)
!=
NULL
){
...
...
application/klansdk/kk_data_mng.c
View file @
604f4d05
...
...
@@ -18,14 +18,14 @@ kk_map_dev_ctx *_kk_map_dev_ctx(void)
return
&
g_map_dev_mgr
;
}
static
void
_kk_map_dev_mutex_lock
(
void
)
void
_kk_map_dev_mutex_lock
(
void
)
{
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
if
(
ctx
->
mutex
)
{
kk_MutexLock
(
ctx
->
mutex
);
}
}
static
void
_kk_map_dev_mutex_unlock
(
void
)
void
_kk_map_dev_mutex_unlock
(
void
)
{
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
if
(
ctx
->
mutex
)
{
...
...
@@ -53,7 +53,6 @@ void kk_map_dev_deinit(void)
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[lock]_kk_map_dev_mutex_lock
\n
"
);
_kk_map_dev_mutex_lock
();
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
...
...
@@ -74,7 +73,6 @@ void kk_map_dev_deinit(void)
}
}
printf
(
"[unlock]_kk_map_dev_mutex_lock
\n
"
);
_kk_map_dev_mutex_unlock
();
}
...
...
@@ -87,6 +85,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch
cJSON
*
newccu
=
NULL
,
*
oldccu
=
NULL
,
*
channel
=
NULL
,
*
optype
=
NULL
;
cJSON
*
syn_type
=
NULL
,
*
syn_opcode
=
NULL
;
printf
(
"kk_map_dev_node_create
\n
"
);
node
=
malloc
(
sizeof
(
kk_map_dev_node_t
));
if
(
node
==
NULL
)
{
return
NULL
;
...
...
@@ -410,17 +409,21 @@ int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node)
kk_map_dev_node_t
*
n
=
NULL
;
//list_for_each_entry_safe
printf
(
"[QAQ] kk_map_dev_search_by_deviceCode
\n
"
);
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
if
(
(
strlen
(
search_node
->
deviceCode
)
==
strlen
(
deviceCode
))
&&
printf
(
"+++
\n
"
);
if
(
(
strlen
(
search_node
->
deviceCode
)
==
strlen
(
deviceCode
))
&&
(
memcmp
(
search_node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
))
==
0
))
{
/* dm_log_debug("Device Found, devid: %d", devid); */
if
(
node
)
{
*
node
=
search_node
;
}
printf
(
"[find]%s
\n
"
,
search_node
->
deviceCode
);
return
0
;
}
}
ERROR_PRINT
(
"Device Not Found, deviceCode: %s
\n
"
,
deviceCode
);
return
-
1
;
}
...
...
application/klansdk/kk_lan_main.c
View file @
604f4d05
...
...
@@ -64,6 +64,7 @@ int main(int argc, char* argv[])
char
*
ppp
;
open
(
"kk_lan"
,
LOG_PID
,
LOG_USER
);
kk_lan_ccuid_init
();
/*set the callback to get the device date to cloud*/
kk_ipc_init
(
IPC_APP2MID
,(
ipc_cb
*
)
KK_Data_FromMid
,
NULL
,
NULL
);
...
...
application/klansdk/kk_lan_sync.c
View file @
604f4d05
...
...
@@ -13,8 +13,7 @@
/*******获取同步数据json*******/
static
cJSON
*
kk_get_sync_data
(
cJSON
*
payload
)
{
cJSON
*
data
=
cJSON_GetObjectItem
(
payload
,
DATA_STR
);
return
cJSON_GetObjectItem
(
data
,
DATA_STR
);
return
cJSON_GetObjectItem
(
payload
,
DATA_STR
);
}
...
...
@@ -66,6 +65,7 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
for
(
i
=
0
;
i
<
num
;
i
++
,
item
++
){
room
=
cJSON_GetArrayItem
(
rooms
,
i
);
roomId
=
cJSON_GetObjectItem
(
room
,
ROOMS_ID_STR
);
name
=
cJSON_GetObjectItem
(
room
,
NAME_STR
);
devices
=
cJSON_GetObjectItem
(
room
,
DEVICES_STR
);
...
...
@@ -79,6 +79,9 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
item
->
room_status
=
NULL
;
}
roomsAry
=
_kk_syn_rooms_info
(
num
,
items
);
cJSON_AddItemToObject
(
root
,
ROOMS_STR
,
roomsAry
);
return
root
;
...
...
@@ -169,6 +172,7 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id)
for
(
i
=
0
;
i
<
num
;
i
++
,
ptr
++
){
cJSON
*
item
;
item
=
cJSON_GetArrayItem
(
actions
,
i
);
...
...
@@ -203,20 +207,26 @@ int kk_sync_actions(cJSON *actions,SYN_SCENE_ACTION **act,char **room_id)
static
int
kk_sync_scene_condition
(
cJSON
*
condition
,
SYN_SCENE_ITEM
**
build
)
{
cJSON
*
itemAry
=
NULL
;
cJSON
*
startTime
,
*
endTime
,
*
crossDay
,
*
repeat_days
;
if
(
condition
==
NULL
||
build
==
NULL
||*
build
==
NULL
){
return
-
1
;
}
if
((
itemAry
=
cJSON_GetObjectItem
(
condition
,
"items"
))
==
NULL
){
return
-
1
;
}
int
i
,
j
,
num
=
cJSON_GetArraySize
(
condition
);
int
i
,
j
,
num
=
cJSON_GetArraySize
(
itemAry
);
int
repeat
;
int
get_flag
=
0
;
SYN_SCENE_ITEM
*
ptr
=*
build
;
printf
(
"kk_sync_scene_condition,num=%d
\n
"
,
num
);
for
(
i
=
0
;
i
<
num
;
i
++
){
cJSON
*
item
;
printf
(
"i=%d
\n
"
,
i
);
item
=
cJSON_GetArrayItem
(
condition
,
i
);
startTime
=
cJSON_GetObjectItem
(
item
,
"startTime"
);
...
...
@@ -259,7 +269,10 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
cJSON
*
scenesAry
=
cJSON_CreateArray
();
cJSON
*
sceneItem
;
for
(
i
=
0
;
i
<
num
;
i
++
,
build
++
){
SYN_SCENE_ITEM
*
pScene
=
build
;
for
(
i
=
0
;
i
<
num
;
i
++
,
pScene
++
){
printf
(
"i=%d
\n
"
,
i
);
cJSON
*
item
=
cJSON_GetArrayItem
(
scenes
,
i
);
actions
=
cJSON_GetObjectItem
(
item
,
ACTIONS_STR
);
enable
=
cJSON_GetObjectItem
(
item
,
ENABLE_STR
);
...
...
@@ -274,16 +287,16 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
if(strcmp(sceneType->valuestring,"")==){
}*/
build
->
act_num
=
kk_sync_actions
(
actions
,
&
build
->
act
,
&
build
->
room_id
);
pScene
->
act_num
=
kk_sync_actions
(
actions
,
&
pScene
->
act
,
&
pScene
->
room_id
);
kk_sync_scene_condition
(
condition
,
&
build
);
kk_sync_scene_condition
(
condition
,
&
pScene
);
build
->
scene_id
=
sceneId
->
valuestring
;
build
->
name
=
name
->
valuestring
;
build
->
pannel_id
=
NULL
;
pScene
->
scene_id
=
sceneId
->
valuestring
;
pScene
->
name
=
name
->
valuestring
;
pScene
->
pannel_id
=
NULL
;
sceneItem
=
kk_scene_build
(
&
build
);
sceneItem
=
kk_scene_build
(
&
pScene
);
cJSON_AddItemToArray
(
scenesAry
,
sceneItem
);
...
...
@@ -294,48 +307,113 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
}
//同步设备
int
kk_sync_devices_to_sdk
(
cJSON
*
root
)
int
_kk_sync_device_item
(
cJSON
*
deviceCode
,
cJSON
*
epNum
,
cJSON
*
name
,
cJSON
*
roomId
,
cJSON
*
deviceAry
)
{
kk_map_dev_node_t
*
node
=
NULL
;
char
nodeid
[
32
]
=
{
0
};
char
gwmac
[
32
]
=
{
0
};
char
submac
[
32
]
=
{
0
};
char
channel
[
4
]
=
{
0
};
int
idx
=
1
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
cJSON
*
devices
=
cJSON_CreateArray
();
if
(
deviceCode
==
NULL
||
deviceAry
==
NULL
){
return
-
1
;
}
list_for_each_entry
(
node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
if
(
node
!=
NULL
)
{
for
(
idx
=
1
;
idx
<=
node
->
channelNum
;
idx
++
){
if
(
strlen
(
node
->
deviceCode
)
==
strlen
(
deviceCode
->
valuestring
)
&&
!
strcmp
(
node
->
deviceCode
,
deviceCode
->
valuestring
)){
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
snprintf
(
channel
,
sizeof
(
channel
),
"%d"
,
idx
);
cJSON_AddStringToObject
(
subdevicesItem
,
CHANNEL_STRING
,
channel
);
if
(
epNum
==
NULL
||
epNum
->
type
!=
cJSON_String
){
cJSON_AddStringToObject
(
subdevicesItem
,
CHANNEL_STRING
,
"1"
);
kk_creater_nodeid
(
node
->
deviceCode
,
1
,
nodeid
);
}
else
{
cJSON_AddStringToObject
(
subdevicesItem
,
CHANNEL_STRING
,
epNum
->
valuestring
);
kk_creater_nodeid
(
node
->
deviceCode
,
atoi
(
epNum
->
valuestring
),
nodeid
);
}
cJSON_AddStringToObject
(
subdevicesItem
,
NODEID_STRING
,
nodeid
);
if
(
name
==
NULL
||
name
->
type
!=
cJSON_String
){
cJSON_AddStringToObject
(
subdevicesItem
,
NAME_STRING
,
"unkown"
);
}
else
{
cJSON_AddStringToObject
(
subdevicesItem
,
NAME_STRING
,
name
->
valuestring
);
}
if
(
name
==
NULL
||
name
->
type
!=
cJSON_String
){
cJSON_AddStringToObject
(
subdevicesItem
,
ROOM_ID_STRING
,
"unkown"
);
}
else
{
cJSON_AddStringToObject
(
subdevicesItem
,
ROOM_ID_STRING
,
roomId
->
valuestring
);
}
//todo
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_FIELD_STRING
,
""
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_FIELD_IDNDEX_STRING
,
"
1
"
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_FIELD_IDNDEX_STRING
,
""
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_ICON_STRING
,
""
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_POS_STRING
,
"
1
"
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_POS_STRING
,
""
);
_deviceCode_switchto_mac
(
node
->
gwDeviceCode
,
gwmac
);
cJSON_AddStringToObject
(
subdevicesItem
,
GW_MAC_STRING
,
gwmac
);
_deviceCode_switchto_mac
(
node
->
deviceCode
,
submac
);
cJSON_AddStringToObject
(
subdevicesItem
,
MAC_STRING
,
submac
);
//todo name字段
cJSON_AddStringToObject
(
subdevicesItem
,
NAME_STRING
,
"默认灯"
);
memset
(
nodeid
,
0x0
,
sizeof
(
nodeid
));
kk_creater_nodeid
(
node
->
deviceCode
,
idx
,
nodeid
);
cJSON_AddStringToObject
(
subdevicesItem
,
NODEID_STRING
,
nodeid
);
cJSON_AddStringToObject
(
subdevicesItem
,
OPERATE_TYPE_STRING
,
node
->
opearteType
);
cJSON_AddStringToObject
(
subdevicesItem
,
ROOM_ID_STRING
,
"1"
);
cJSON_AddItemToArray
(
device
s
,
subdevicesItem
);
cJSON_AddItemToArray
(
device
Ary
,
subdevicesItem
);
}
}
}
cJSON_AddItemToObject
(
root
,
DEVICES_STRING
,
devices
);
return
0
;
}
int
kk_sync_device
(
cJSON
*
roomId
,
cJSON
*
inDevAry
,
cJSON
*
outDevAry
)
{
kk_map_dev_node_t
*
node
=
NULL
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
cJSON
*
deviceCode
=
NULL
,
*
epNum
=
NULL
,
*
name
=
NULL
;
int
i
,
num
;
if
(
inDevAry
==
NULL
||
inDevAry
->
type
!=
cJSON_Array
||
outDevAry
==
NULL
||
outDevAry
->
type
!=
cJSON_Array
){
return
-
1
;
}
num
=
cJSON_GetArraySize
(
inDevAry
);
for
(
i
=
0
;
i
<
num
;
i
++
){
cJSON
*
item
=
cJSON_GetArrayItem
(
inDevAry
,
i
);
deviceCode
=
cJSON_GetObjectItem
(
item
,
"deviceCode"
);
epNum
=
cJSON_GetObjectItem
(
item
,
"epNum"
);
name
=
cJSON_GetObjectItem
(
item
,
"name"
);
_kk_sync_device_item
(
deviceCode
,
epNum
,
name
,
roomId
,
outDevAry
);
}
return
0
;
}
int
kk_sync_devices_to_sdk
(
cJSON
*
root
,
cJSON
*
data
)
{
cJSON
*
rooms
=
cJSON_GetObjectItem
(
data
,
ROOMS_STR
);
cJSON
*
deviceAry
=
cJSON_CreateArray
();
int
i
,
num
=
cJSON_GetArraySize
(
rooms
);
cJSON
*
roomId
,
*
devices
;
for
(
i
=
0
;
i
<
num
;
i
++
){
cJSON
*
room
=
cJSON_GetArrayItem
(
rooms
,
i
);
roomId
=
cJSON_GetObjectItem
(
room
,
ROOMS_ID_STR
);
devices
=
cJSON_GetObjectItem
(
room
,
DEVICES_STR
);
kk_sync_device
(
roomId
,
devices
,
deviceAry
);
}
cJSON_AddItemToObject
(
root
,
DEVICES_STRING
,
deviceAry
);
return
root
;
}
//同步设备状态
//
cJSON
*
_kk_sync_devicestatus_arg_build
(
kk_map_dev_node_t
*
node
)
...
...
@@ -344,7 +422,6 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
cJSON
*
newccu
,
*
oldccu
;
cJSON
*
arg
=
cJSON_CreateObject
();
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
if
(
node
==
NULL
||
node
->
syn_type
!=
1
||
node
->
syn_opcode
==
NULL
){
return
arg
;
...
...
@@ -409,7 +486,6 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
cJSON
*
newccu
=
NULL
,
*
oldccu
=
NULL
;
cJSON
*
dev_status
=
NULL
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
if
(
node
==
NULL
||
devStatusAry
==
NULL
||
index
==
NULL
){
return
-
1
;
...
...
@@ -503,6 +579,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
cJSON
*
devStatusAry
=
cJSON_CreateArray
();
_kk_map_dev_mutex_lock
();
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
){
if
(
node
->
syn_type
==
1
){
...
...
@@ -513,7 +590,7 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
}
}
_kk_map_dev_mutex_unlock
();
cJSON_AddItemToObject
(
root
,
DEVICE_STATUS_STRING
,
devStatusAry
);
...
...
@@ -585,65 +662,94 @@ typedef struct{
char
*
nodeId
;
char
*
sensor_type
;
}
SYN_GUARD_SENSORS
;
static
cJSON
*
_kk_guard_sensors_build
(
int
num
,
SYN_GUARD_SENSORS
*
sensors
)
static
int
_kk_guard_sensors_build
(
cJSON
*
guard_sensors
,
int
num
,
SYN_GUARD_SENSORS
*
sensors
)
{
int
i
;
cJSON
*
item
;
cJSON
*
guard_sensors
=
cJSON_CreateArray
();
SYN_GUARD_SENSORS
*
pSensor
=
sensors
;
SYN_GUARD_SENSORS
*
pSensor
;
if
(
num
<=
0
||
sensors
==
NULL
){
return
-
1
;
}
pSensor
=
sensors
;
for
(
i
=
0
;
i
<
num
;
i
++
,
pSensor
++
){
item
=
cJSON_CreateObject
();
cJSON
*
item
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
item
,
"nodeid"
,(
pSensor
->
nodeId
)
?
pSensor
->
nodeId
:
"-1"
);
cJSON_AddStringToObject
(
item
,
"sensor_type"
,(
pSensor
->
sensor_type
)
?
pSensor
->
sensor_type
:
"0"
);
cJSON_AddItemToArray
(
guard_sensors
,
item
);
}
return
guard_sensors
;
return
0
;
}
static
cJSON
*
_kk_guard_custom_zone_build
(
int
num
,
char
*
roomId
)
{
int
i
;
cJSON
*
custom_guard_zone
=
cJSON_CreateArray
();
char
*
pRoomId
=
roomId
;
for
(
i
=
0
;
i
<
num
;
i
++
,
pRoomId
++
){
cJSON_AddItemToArray
(
custom_guard_zone
,
cJSON_CreateString
(
pRoomId
));
}
return
custom_guard_zone
;
}
cJSON
*
kk_sync_guard_to_sdk
(
cJSON
*
root
,
cJSON
*
data
)
int
kk_sync_guard_to_sdk
(
cJSON
*
root
,
cJSON
*
data
)
{
char
modeStr
[
8
]
=
{
0
}
;
char
*
armingStr
=
NULL
;
cJSON
*
guard
=
cJSON_CreateObject
();
cJSON
*
custom_guard_zone
;
cJSON
*
guard_sensors
;
//todo 撤防布防
int
guardMode
=
0
;
snprintf
(
modeStr
,
sizeof
(
modeStr
),
"%d"
,
guardMode
);
cJSON
*
custom_guard_zone
=
cJSON_CreateArray
();
cJSON
*
guard_sensors
=
cJSON_CreateArray
();
cJSON_AddStringToObject
(
guard
,
"arming_status"
,
modeStr
);
SYN_GUARD_SENSORS
sensors
;
sensors
.
nodeId
=
malloc
(
10
);
memset
(
sensors
.
nodeId
,
0
,
10
);
memcpy
(
sensors
.
nodeId
,
"1234"
,
strlen
(
"1234"
));
sensors
.
sensor_type
=
malloc
(
10
);
memset
(
sensors
.
sensor_type
,
0
,
10
);
memcpy
(
sensors
.
sensor_type
,
"5678"
,
strlen
(
"5678"
));
cJSON
*
properties
=
cJSON_GetObjectItem
(
data
,
"properties"
);
cJSON
*
ArmingState
=
NULL
,
*
RoomIdsAry
=
NULL
;
cJSON_AddStringToObject
(
guard
,
"arming_status"
,
"1"
);
cJSON_AddItemToObject
(
guard
,
"custom_guard_zone"
,
custom_guard_zone
);
cJSON_AddItemToObject
(
guard
,
"guard_sensors"
,
guard_sensors
);
guard_sensors
=
_kk_guard_sensors_build
(
1
,
&
sensors
);
char
roomId
[
12
]
=
"abcd"
;
custom_guard_zone
=
_kk_guard_custom_zone_build
(
1
,
roomId
);
cJSON_AddItemToObject
(
guard
,
"custom_guard_zone"
,
custom_guard_zone
);
cJSON_AddItemToObject
(
guard
,
"guard_sensors"
,
guard_sensors
);
cJSON_AddItemToObject
(
root
,
"guard"
,
guard
);
if
(
properties
==
NULL
||
properties
->
type
!=
cJSON_Object
){
return
-
1
;
}
ArmingState
=
cJSON_GetObjectItem
(
properties
,
"ArmingState"
);
if
(
ArmingState
==
NULL
||
ArmingState
->
type
!=
cJSON_Number
){
return
-
1
;
}
/*
"0": "离家布防",
"1": "撤防",
"2": "在家布防",
"3": "区域布防"
*/
//1:离家布防,2:撤防,3:在家布防,4:自定义防区布防。
if
(
ArmingState
->
valueint
==
0
){
armingStr
=
"1"
;
}
else
if
(
ArmingState
->
valueint
==
2
){
armingStr
=
"3"
;
}
else
if
(
ArmingState
->
valueint
==
3
){
armingStr
=
"4"
;
}
else
{
armingStr
=
"2"
;
}
cJSON_ReplaceItemInObject
(
guard
,
"arming_status"
,
cJSON_CreateString
(
armingStr
));
if
(
ArmingState
->
valueint
==
3
){
int
i
,
num
;
cJSON
*
item
=
NULL
;
char
roomIdStr
[
16
]
=
{
0
};
RoomIdsAry
=
cJSON_GetObjectItem
(
properties
,
"RoomIds"
);
if
(
RoomIdsAry
==
NULL
||
RoomIdsAry
->
type
!=
cJSON_Array
){
return
-
1
;
}
num
=
cJSON_GetArraySize
(
RoomIdsAry
);
for
(
i
=
0
;
i
<
num
;
i
++
){
item
=
cJSON_GetArrayItem
(
RoomIdsAry
,
i
);
if
(
item
->
type
!=
cJSON_Number
){
continue
;
}
memset
(
roomIdStr
,
0
,
sizeof
(
roomIdStr
));
snprintf
(
roomIdStr
,
sizeof
(
roomIdStr
),
"%d"
,
item
->
valueint
);
cJSON_AddItemToArray
(
custom_guard_zone
,
cJSON_CreateString
(
roomIdStr
));
}
}
//新中控同步接口未有安防类传感器列表,故只保留实现接口,未具体实现转换
_kk_guard_sensors_build
(
guard_sensors
,
-
1
,
NULL
);
return
0
;
}
...
...
@@ -944,6 +1050,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON
*
code_lib_controllers
;
cJSON
*
controllers
;
cJSON
*
expand_rules
;
cJSON
*
data
=
kk_get_sync_data
(
payload
);
char
*
out
=
NULL
;
printf
(
"!!!!!!!!!!!!!!!!!!!!------>%x
\n
"
,
&
out
);
...
...
@@ -960,31 +1067,49 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON_AddStringToObject
(
ccu_link_status
,
"link_type"
,
"broadband_net"
);
cJSON_AddItemToObject
(
root
,
"ccu_link_status"
,
ccu_link_status
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cnwise_music_controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"cnwise_music_controllers"
,
cnwise_music_controllers
);
code_lib_controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"code_lib_controllers"
,
code_lib_controllers
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"controllers"
,
controllers
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_devices_status_to_sdk
(
root
);
kk_sync_devices_to_sdk
(
root
);
cJSON
*
data
=
kk_get_sync_data
(
payload
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_devices_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_rooms_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_scence_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_gw_version_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_ccu_version_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_guard_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_central_ac_to_sdk
(
root
,
data
);
kk_sync_central_ac_indoorunits_to_sdk
(
root
,
data
);
kk_sync_groups_to_sdk
(
root
,
data
);
kk_create_floors_to_sdk
(
root
,
data
);
...
...
application/klansdk/kk_lan_sync.h
View file @
604f4d05
...
...
@@ -42,7 +42,7 @@ cJSON *kk_get_raw_sync_data(cJSON *payload);
cJSON
*
kk_sync_rooms_to_sdk
(
cJSON
*
root
,
cJSON
*
payload
);
cJSON
*
kk_sync_scence_to_sdk
(
cJSON
*
root
,
cJSON
*
data
);
int
kk_sync_devices_to_sdk
(
cJSON
*
root
);
int
kk_sync_devices_to_sdk
(
cJSON
*
root
,
cJSON
*
data
);
int
kk_sync_devices_status_to_sdk
(
cJSON
*
root
);
int
kk_create_syncinfo_to_sdk
(
cJSON
*
payload
);
...
...
application/klansdk/kk_oldccu_msg.c
View file @
604f4d05
...
...
@@ -138,7 +138,6 @@ cJSON *kk_devicestatus_build(kk_map_dev_node_t *node)
cJSON
*
newccu
,
*
oldccu
;
cJSON
*
dev_status
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
printf
(
"@@@@kk_devicestatus_build
\n
"
);
if
(
node
==
NULL
||
node
->
syn_opcode
==
NULL
){
...
...
@@ -263,6 +262,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
cJSON
*
val
;
cJSON
*
item_size
;
cJSON
*
channel
;
cJSON
*
epNum
=
NULL
;
cJSON
*
opcode
;
...
...
@@ -278,6 +278,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
newccu
=
devNode
->
newccu
;
item_size
=
cJSON_GetArraySize
(
oldccu
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
for
(
i
=
0
;
i
<
item_size
;
i
++
){
o_item
=
cJSON_GetArrayItem
(
oldccu
,
i
);
...
...
@@ -287,7 +288,7 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
n_id
=
cJSON_GetObjectItem
(
params
,
o_id_map
->
valuestring
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
n_id
!=
NULL
){
n_dataType
=
cJSON_GetObjectItem
(
n_item
,
"dataType"
);
...
...
@@ -298,6 +299,16 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
channel
=
cJSON_GetObjectItem
(
o_item
,
"channel"
);
epNum
=
cJSON_GetObjectItem
(
params
,
"epNum"
);
if
(
channel
==
NULL
||
epNum
==
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
continue
;
}
if
(
strlen
(
channel
->
valuestring
)
!=
strlen
(
epNum
->
valuestring
)
||
strcmp
(
channel
->
valuestring
,
epNum
->
valuestring
)
!=
0
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
continue
;
}
ch
=
atoi
(
channel
->
valuestring
);
nodeId
=
kk_lan_db_node_get
(
deviceCode
,
ch
);
...
...
@@ -465,6 +476,7 @@ void property_syn_deal(const char *deviceCode,cJSON *properties)
kk_map_dev_node_t
*
dev
;
if
(
kk_map_dev_search_by_deviceCode
(
deviceCode
,
&
dev
)
==
0
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
attr_report_conver
(
deviceCode
,
dev
,
properties
);
}
}
...
...
@@ -495,10 +507,14 @@ int arming_status_notify(int type)
msg
=
old_ccu_msg_build
(
WILDCARD_CHARACTER_STR
,
GUARD_STATUS_DISARMING
,
SUCCESS_STR
,
WILDCARD_CHARACTER_STR
);
}
else
if
(
type
==
2
){
msg
=
old_ccu_msg_build
(
WILDCARD_CHARACTER_STR
,
GUARD_STATUS_ARMING_IN_HOME
,
SUCCESS_STR
,
WILDCARD_CHARACTER_STR
);
}
else
if
(
type
==
3
){
msg
=
old_ccu_msg_build
(
WILDCARD_CHARACTER_STR
,
ARMING_STATUS_GUARD_ZONE
,
SUCCESS_STR
,
WILDCARD_CHARACTER_STR
);
}
else
{
printf
(
"[unkown arming type]!!!
\n
"
);
return
-
1
;
}
send_msg_to_module
(
msg
);
cJSON_Delete
(
msg
);
return
0
;
...
...
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