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
5bba8740
Commit
5bba8740
authored
Aug 04, 2021
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
20210804
parent
fcafb8ee
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
351 additions
and
57 deletions
+351
-57
application/klansdk/kk_lan_sync.c
application/klansdk/kk_lan_sync.c
+121
-35
application/klansdk/kk_lan_sync.h
application/klansdk/kk_lan_sync.h
+1
-1
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+27
-0
midware/midware/area/kk_area_handle.h
midware/midware/area/kk_area_handle.h
+1
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+2
-0
midware/midware/dm/kk_sync_data.c
midware/midware/dm/kk_sync_data.c
+199
-21
No files found.
application/klansdk/kk_lan_sync.c
View file @
5bba8740
...
...
@@ -66,6 +66,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 +80,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 +173,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 +208,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
;
}
int
i
,
j
,
num
=
cJSON_GetArraySize
(
condition
);
if
((
itemAry
=
cJSON_GetObjectItem
(
condition
,
"items"
))
==
NULL
){
return
-
1
;
}
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 +270,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 +288,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,51 +308,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
();
_kk_map_dev_mutex_lock
();
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
);
}
}
}
_kk_map_dev_mutex_unlock
();
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
)
...
...
@@ -946,6 +1022,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
);
...
...
@@ -974,21 +1051,30 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
printf
(
"kk_sync_devices_status_to_sdk
\n
"
);
kk_sync_devices_status_to_sdk
(
root
);
printf
(
"kk_sync_devices_to_sdk
\n
"
);
kk_sync_devices_to_sdk
(
root
);
printf
(
"kk_get_sync_data
\n
"
);
cJSON
*
data
=
kk_get_sync_data
(
payload
);
kk_sync_devices_to_sdk
(
root
,
data
);
kk_sync_rooms_to_sdk
(
root
,
data
);
kk_sync_scence_to_sdk
(
root
,
data
);
kk_sync_gw_version_to_sdk
(
root
,
data
);
kk_sync_ccu_version_to_sdk
(
root
,
data
);
kk_sync_guard_to_sdk
(
root
,
data
);
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 @
5bba8740
...
...
@@ -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
);
...
...
midware/midware/area/kk_area_handle.c
View file @
5bba8740
...
...
@@ -391,6 +391,33 @@ int kk_room_device_list_add(const char *deviceCode)
return
SUCCESS_RETURN
;
}
cJSON
*
kk_get_roomIds_ary
(
void
)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
proomId
=
NULL
;
cJSON
*
roomIdsAry
=
cJSON_CreateArray
();
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaInfo;"
;
_kk_area_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
proomId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_ROOM_ID
);
cJSON_AddItemToArray
(
roomIdsAry
,
cJSON_CreateNumber
(
atoi
(
proomId
)));
}
sqlite3_finalize
(
stmt
);
_kk_area_unlock
();
return
roomIdsAry
;
}
kk_dev_list_t
*
kk_get_room_deviceCode
(
const
char
*
roomId
)
{
sqlite3_stmt
*
stmt
;
...
...
midware/midware/area/kk_area_handle.h
View file @
5bba8740
...
...
@@ -30,6 +30,7 @@ int kk_room_device_list_add(const char *deviceCode);
kk_dev_list_t
*
kk_get_room_deviceCode
(
const
char
*
roomId
);
void
kk_free_room_dev_list
(
void
);
int
kk_get_device_name
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
devName
,
int
size
);
cJSON
*
kk_get_roomIds_ary
(
void
);
#endif
midware/midware/dm/kk_linkkit.c
View file @
5bba8740
...
...
@@ -879,6 +879,8 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON
*
deviceCode
=
NULL
;
json
=
cJSON_Parse
(
data
);
printf
(
"_iotx_linkkit_event_callback
\n
"
);
if
(
json
==
NULL
)
{
WARNING_PRINT
(
"Error before: [%s]
\n
"
,
"cJSON_Parse"
);
return
;
...
...
midware/midware/dm/kk_sync_data.c
View file @
5bba8740
This diff is collapsed.
Click to expand it.
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