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
a1a823e4
Commit
a1a823e4
authored
Aug 13, 2021
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
20210813上传
parent
7549830f
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
829 additions
and
108 deletions
+829
-108
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+4
-6
application/klansdk/kk_findccu_handle.c
application/klansdk/kk_findccu_handle.c
+1
-1
application/klansdk/kk_lan_sync.c
application/klansdk/kk_lan_sync.c
+50
-12
application/klansdk/kk_login_handle.c
application/klansdk/kk_login_handle.c
+2
-2
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+32
-0
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+107
-0
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+6
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+6
-1
midware/midware/dm/kk_sync_data.c
midware/midware/dm/kk_sync_data.c
+589
-75
midware/midware/dm/kk_sync_data.h
midware/midware/dm/kk_sync_data.h
+2
-2
midware/midware/midware.c
midware/midware/midware.c
+5
-2
midware/midware/scene/kk_scene_db.c
midware/midware/scene/kk_scene_db.c
+16
-2
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+9
-5
No files found.
application/klansdk/kk_data_handle.c
View file @
a1a823e4
...
@@ -127,7 +127,7 @@ static int kk_send_ack(cJSON *root,int sockfd)
...
@@ -127,7 +127,7 @@ static int kk_send_ack(cJSON *root,int sockfd)
strcat
(
tmpBuf
,
"!"
);
strcat
(
tmpBuf
,
"!"
);
strcat
(
tmpBuf
,
out
);
strcat
(
tmpBuf
,
out
);
strcat
(
tmpBuf
,
"$"
);
strcat
(
tmpBuf
,
"$"
);
printf
(
"tmpBuf:%s
\n
"
,
tmpBuf
);
INFO_PRINT
(
"tmpBuf:%s
\n
"
,
tmpBuf
);
send
(
sockfd
,
tmpBuf
,
strlen
(
tmpBuf
),
0
);
send
(
sockfd
,
tmpBuf
,
strlen
(
tmpBuf
),
0
);
free
(
out
);
free
(
out
);
free
(
tmpBuf
);
free
(
tmpBuf
);
...
@@ -358,7 +358,7 @@ int kk_data_handle(cJSON *json,int sockfd)
...
@@ -358,7 +358,7 @@ int kk_data_handle(cJSON *json,int sockfd)
}
}
static
int
kk_parse_syncinfo
(
cJSON
*
payload
)
static
int
kk_parse_syncinfo
(
cJSON
*
payload
)
{
{
cJSON
*
paramStr
,
*
dataStr
;
cJSON
*
dataStr
;
cJSON
*
gwdevices
,
*
subdevices
;
cJSON
*
gwdevices
,
*
subdevices
;
cJSON
*
gwitem
,
*
properties
;
cJSON
*
gwitem
,
*
properties
;
cJSON
*
onlineStatus
;
cJSON
*
onlineStatus
;
...
@@ -375,9 +375,7 @@ static int kk_parse_syncinfo(cJSON *payload)
...
@@ -375,9 +375,7 @@ static int kk_parse_syncinfo(cJSON *payload)
kk_map_dev_deinit
();
kk_map_dev_deinit
();
paramStr
=
cJSON_GetObjectItem
(
payload
,
DATA_STRING
);
dataStr
=
cJSON_GetObjectItem
(
payload
,
DATA_STRING
);
if
(
paramStr
==
NULL
)
return
-
1
;
dataStr
=
cJSON_GetObjectItem
(
paramStr
,
DATA_STRING
);
if
(
dataStr
==
NULL
)
return
-
1
;
if
(
dataStr
==
NULL
)
return
-
1
;
gwdevices
=
cJSON_GetObjectItem
(
dataStr
,
DEVICES_STRING
);
gwdevices
=
cJSON_GetObjectItem
(
dataStr
,
DEVICES_STRING
);
if
(
gwdevices
==
NULL
)
return
-
1
;
if
(
gwdevices
==
NULL
)
return
-
1
;
...
@@ -406,7 +404,7 @@ static int kk_parse_syncinfo(cJSON *payload)
...
@@ -406,7 +404,7 @@ static int kk_parse_syncinfo(cJSON *payload)
kk_map_dev_node_add
(
deviceCode
,
productCode
,
gwdevicecode
,
onlineStatus
->
valuestring
);
kk_map_dev_node_add
(
deviceCode
,
productCode
,
gwdevicecode
,
(
onlineStatus
->
valueint
==
1
)
?
"1"
:
"0"
);
property_syn_deal
(
deviceCode
,
properties
);
property_syn_deal
(
deviceCode
,
properties
);
...
...
application/klansdk/kk_findccu_handle.c
View file @
a1a823e4
...
@@ -53,7 +53,7 @@ static int kk_findccu_ack(int sockfd,struct sockaddr_in *addr){
...
@@ -53,7 +53,7 @@ static int kk_findccu_ack(int sockfd,struct sockaddr_in *addr){
strcat
(
tmpBuf
,
"!"
);
strcat
(
tmpBuf
,
"!"
);
strcat
(
tmpBuf
,
out
);
strcat
(
tmpBuf
,
out
);
strcat
(
tmpBuf
,
"$"
);
strcat
(
tmpBuf
,
"$"
);
printf
(
"tmpBuf:%s
\n
"
,
tmpBuf
);
INFO_PRINT
(
"tmpBuf:%s
\n
"
,
tmpBuf
);
sendto
(
sockfd
,
tmpBuf
,
strlen
(
tmpBuf
),
0
,
(
struct
sockaddr
*
)
addr
,
sizeof
(
struct
sockaddr_in
));
sendto
(
sockfd
,
tmpBuf
,
strlen
(
tmpBuf
),
0
,
(
struct
sockaddr
*
)
addr
,
sizeof
(
struct
sockaddr_in
));
cJSON_Delete
(
json
);
cJSON_Delete
(
json
);
free
(
out
);
free
(
out
);
...
...
application/klansdk/kk_lan_sync.c
View file @
a1a823e4
...
@@ -89,9 +89,8 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
...
@@ -89,9 +89,8 @@ cJSON *kk_sync_rooms_to_sdk(cJSON *root,cJSON *data)
/*******场景同步*******/
/*******场景同步*******/
static
cJSON
*
_kk_scene_action_build
(
SYN_SCENE_ACTION
**
act
)
static
cJSON
*
_kk_scene_action_build
(
cJSON
*
action
,
SYN_SCENE_ACTION
**
act
)
{
{
cJSON
*
action
=
cJSON_CreateObject
();
SYN_SCENE_ACTION
*
ptr
=
*
act
;
SYN_SCENE_ACTION
*
ptr
=
*
act
;
if
(
ptr
->
nodeid
==-
1
||
ptr
->
operation
==
NULL
||
if
(
ptr
->
nodeid
==-
1
||
ptr
->
operation
==
NULL
||
...
@@ -115,11 +114,11 @@ cJSON *kk_scene_actions_build(SYN_SCENE_ACTION **act,int num)
...
@@ -115,11 +114,11 @@ cJSON *kk_scene_actions_build(SYN_SCENE_ACTION **act,int num)
{
{
int
i
;
int
i
;
cJSON
*
actions
=
cJSON_CreateArray
();
cJSON
*
actions
=
cJSON_CreateArray
();
cJSON
*
action
;
cJSON
*
action
=
cJSON_CreateObject
()
;
SYN_SCENE_ACTION
*
ptr
=*
act
;
SYN_SCENE_ACTION
*
ptr
=*
act
;
for
(
i
=
0
;
i
<
num
;
i
++
,
ptr
++
){
for
(
i
=
0
;
i
<
num
;
i
++
,
ptr
++
){
action
=
_kk_scene_action_build
(
&
ptr
);
_kk_scene_action_build
(
action
,
&
ptr
);
cJSON_AddItemToArray
(
actions
,
action
);
cJSON_AddItemToArray
(
actions
,
action
);
}
}
...
@@ -299,11 +298,13 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
...
@@ -299,11 +298,13 @@ cJSON *kk_sync_scence_to_sdk(cJSON *root,cJSON *data)
sceneItem
=
kk_scene_build
(
&
pScene
);
sceneItem
=
kk_scene_build
(
&
pScene
);
cJSON_AddItemToArray
(
scenesAry
,
sceneItem
);
cJSON_AddItemToArray
(
scenesAry
,
sceneItem
);
// printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,cJSON_Print(sceneItem));
}
}
cJSON_AddItemToObject
(
root
,
"scenes"
,
scenesAry
);
cJSON_AddItemToObject
(
root
,
"scenes"
,
scenesAry
);
free
(
build
);
return
root
;
}
}
//同步设备
//同步设备
...
@@ -323,8 +324,10 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI
...
@@ -323,8 +324,10 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI
list_for_each_entry
(
node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
list_for_each_entry
(
node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
if
(
node
!=
NULL
)
{
if
(
node
!=
NULL
)
{
printf
(
"node->deviceCode=%s,%s
\n
"
,
node
->
deviceCode
,
deviceCode
->
valuestring
);
if
(
strlen
(
node
->
deviceCode
)
==
strlen
(
deviceCode
->
valuestring
)
&&
if
(
strlen
(
node
->
deviceCode
)
==
strlen
(
deviceCode
->
valuestring
)
&&
!
strcmp
(
node
->
deviceCode
,
deviceCode
->
valuestring
)){
!
strcmp
(
node
->
deviceCode
,
deviceCode
->
valuestring
)){
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
if
(
epNum
==
NULL
||
epNum
->
type
!=
cJSON_String
){
if
(
epNum
==
NULL
||
epNum
->
type
!=
cJSON_String
){
...
@@ -359,7 +362,6 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI
...
@@ -359,7 +362,6 @@ int _kk_sync_device_item(cJSON *deviceCode,cJSON *epNum,cJSON *name,cJSON *roomI
cJSON_AddStringToObject
(
subdevicesItem
,
MAC_STRING
,
submac
);
cJSON_AddStringToObject
(
subdevicesItem
,
MAC_STRING
,
submac
);
cJSON_AddStringToObject
(
subdevicesItem
,
OPERATE_TYPE_STRING
,
node
->
opearteType
);
cJSON_AddStringToObject
(
subdevicesItem
,
OPERATE_TYPE_STRING
,
node
->
opearteType
);
cJSON_AddItemToArray
(
deviceAry
,
subdevicesItem
);
cJSON_AddItemToArray
(
deviceAry
,
subdevicesItem
);
}
}
}
}
...
@@ -383,6 +385,7 @@ int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry)
...
@@ -383,6 +385,7 @@ int kk_sync_device(cJSON *roomId,cJSON *inDevAry,cJSON *outDevAry)
num
=
cJSON_GetArraySize
(
inDevAry
);
num
=
cJSON_GetArraySize
(
inDevAry
);
for
(
i
=
0
;
i
<
num
;
i
++
){
for
(
i
=
0
;
i
<
num
;
i
++
){
printf
(
"...i=%d
\n
"
,
i
);
cJSON
*
item
=
cJSON_GetArrayItem
(
inDevAry
,
i
);
cJSON
*
item
=
cJSON_GetArrayItem
(
inDevAry
,
i
);
deviceCode
=
cJSON_GetObjectItem
(
item
,
"deviceCode"
);
deviceCode
=
cJSON_GetObjectItem
(
item
,
"deviceCode"
);
epNum
=
cJSON_GetObjectItem
(
item
,
"epNum"
);
epNum
=
cJSON_GetObjectItem
(
item
,
"epNum"
);
...
@@ -401,11 +404,16 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
...
@@ -401,11 +404,16 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
int
i
,
num
=
cJSON_GetArraySize
(
rooms
);
int
i
,
num
=
cJSON_GetArraySize
(
rooms
);
cJSON
*
roomId
,
*
devices
;
cJSON
*
roomId
,
*
devices
;
printf
(
"kk_sync_devices_to_sdk,num=%d
\n
"
,
num
);
for
(
i
=
0
;
i
<
num
;
i
++
){
for
(
i
=
0
;
i
<
num
;
i
++
){
printf
(
"i=%d
\n
"
,
i
);
cJSON
*
room
=
cJSON_GetArrayItem
(
rooms
,
i
);
cJSON
*
room
=
cJSON_GetArrayItem
(
rooms
,
i
);
roomId
=
cJSON_GetObjectItem
(
room
,
ROOMS_ID_STR
);
roomId
=
cJSON_GetObjectItem
(
room
,
ROOMS_ID_STR
);
devices
=
cJSON_GetObjectItem
(
room
,
DEVICES_STR
);
devices
=
cJSON_GetObjectItem
(
room
,
DEVICES_STR
);
printf
(
"devices...=%s
\n
"
,
cJSON_Print
(
devices
));
kk_sync_device
(
roomId
,
devices
,
deviceAry
);
kk_sync_device
(
roomId
,
devices
,
deviceAry
);
}
}
...
@@ -578,13 +586,16 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
...
@@ -578,13 +586,16 @@ int kk_sync_devices_status_to_sdk(cJSON *root)
kk_map_dev_node_t
*
n
=
NULL
;
kk_map_dev_node_t
*
n
=
NULL
;
cJSON
*
devStatusAry
=
cJSON_CreateArray
();
cJSON
*
devStatusAry
=
cJSON_CreateArray
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
_kk_map_dev_mutex_lock
();
_kk_map_dev_mutex_lock
();
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
){
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
){
if
(
node
->
syn_type
==
1
){
if
(
node
->
syn_type
==
1
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
_kk_sync_devices_status_arg_obj
(
node
,
devStatusAry
,
&
idx
);
_kk_sync_devices_status_arg_obj
(
node
,
devStatusAry
,
&
idx
);
}
else
{
}
else
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
_kk_sync_devices_status_arg_str
(
node
,
devStatusAry
,
&
idx
);
_kk_sync_devices_status_arg_str
(
node
,
devStatusAry
,
&
idx
);
//_kk_sync_devicestatus(node,devStatusAry);
//_kk_sync_devicestatus(node,devStatusAry);
...
@@ -1044,8 +1055,6 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
...
@@ -1044,8 +1055,6 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON
*
ccu_link_status
;
cJSON
*
ccu_link_status
;
cJSON
*
link_arg
;
cJSON
*
link_arg
;
cJSON
*
cnwise_music_controllers
;
cJSON
*
cnwise_music_controllers
;
cJSON
*
code_lib_controllers
;
cJSON
*
code_lib_controllers
;
cJSON
*
controllers
;
cJSON
*
controllers
;
...
@@ -1068,6 +1077,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
...
@@ -1068,6 +1077,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
cJSON_AddItemToObject
(
root
,
"ccu_link_status"
,
ccu_link_status
);
cJSON_AddItemToObject
(
root
,
"ccu_link_status"
,
ccu_link_status
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cnwise_music_controllers
=
cJSON_CreateArray
();
cnwise_music_controllers
=
cJSON_CreateArray
();
...
@@ -1078,6 +1088,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
...
@@ -1078,6 +1088,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
controllers
=
cJSON_CreateArray
();
controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"controllers"
,
controllers
);
cJSON_AddItemToObject
(
root
,
"controllers"
,
controllers
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
...
@@ -1087,54 +1098,81 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
...
@@ -1087,54 +1098,81 @@ int kk_create_syncinfo_to_sdk(cJSON *payload)
kk_sync_devices_status_to_sdk
(
root
);
kk_sync_devices_status_to_sdk
(
root
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_devices_to_sdk
(
root
,
data
);
kk_sync_devices_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_sync_rooms_to_sdk
(
root
,
data
);
kk_sync_rooms_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_sync_scence_to_sdk
(
root
,
data
);
kk_sync_scence_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_sync_gw_version_to_sdk
(
root
,
data
);
kk_sync_gw_version_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_sync_ccu_version_to_sdk
(
root
,
data
);
kk_sync_ccu_version_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_sync_guard_to_sdk
(
root
,
data
);
kk_sync_guard_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_sync_central_ac_to_sdk
(
root
,
data
);
kk_sync_central_ac_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_sync_central_ac_indoorunits_to_sdk
(
root
,
data
);
kk_sync_central_ac_indoorunits_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_sync_groups_to_sdk
(
root
,
data
);
kk_sync_groups_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
kk_create_floors_to_sdk
(
root
,
data
);
kk_create_floors_to_sdk
(
root
,
data
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
#if 1
#if 1
expand_rules
=
cJSON_CreateArray
();
expand_rules
=
cJSON_CreateArray
();
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddItemToObject
(
root
,
"expand_rules"
,
expand_rules
);
cJSON_AddItemToObject
(
root
,
"expand_rules"
,
expand_rules
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
#endif
#endif
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,(
root
==
NULL
)
?
"NULL"
:
"1"
);
out
=
cJSON_Print
(
root
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
out
=
cJSON_Print
(
root
);
printf
(
"out:%s
\n
"
,
out
);
printf
(
"out:%s
\n
"
,
out
);
free
(
out
);
printf
(
"[%s][%d]%s
\n
"
,
__FUNCTION__
,
__LINE__
,
out
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON
*
msg
=
old_ccu_msg_build_json
(
"*"
,
"SYNC_INFO"
,
NULL
,
root
);
cJSON
*
msg
=
old_ccu_msg_build_json
(
"*"
,
"SYNC_INFO"
,
NULL
,
root
);
send_msg_to_module
(
msg
);
send_msg_to_module
(
msg
);
cJSON_Delete
(
msg
);
cJSON_Delete
(
msg
);
free
(
out
);
return
0
;
return
0
;
}
}
...
...
application/klansdk/kk_login_handle.c
View file @
a1a823e4
...
@@ -36,7 +36,7 @@ int kk_send_data_to_sdk(char *buf)
...
@@ -36,7 +36,7 @@ int kk_send_data_to_sdk(char *buf)
strcat
(
tmpBuf
,
"!"
);
strcat
(
tmpBuf
,
"!"
);
strcat
(
tmpBuf
,
buf
);
strcat
(
tmpBuf
,
buf
);
strcat
(
tmpBuf
,
"$"
);
strcat
(
tmpBuf
,
"$"
);
printf
(
"tmpBuf:%s
\n
"
,
tmpBuf
);
INFO_PRINT
(
"tmpBuf:%s
\n
"
,
tmpBuf
);
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
){
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
){
if
(
s_ConnInfo
[
i
].
socketfd
!=
-
1
){
if
(
s_ConnInfo
[
i
].
socketfd
!=
-
1
){
send
(
s_ConnInfo
[
i
].
socketfd
,
tmpBuf
,
strlen
(
tmpBuf
),
0
);
send
(
s_ConnInfo
[
i
].
socketfd
,
tmpBuf
,
strlen
(
tmpBuf
),
0
);
...
@@ -119,7 +119,7 @@ void *TCP_Analyzer(void *pPara)
...
@@ -119,7 +119,7 @@ void *TCP_Analyzer(void *pPara)
}
}
else
else
{
{
printf
(
"TCP_Analyzer:%s,%d
\n
"
,
Buf
,(
int
)
Size
);
DEBUG_PRINT
(
"TCP_Analyzer:%s,%d
\n
"
,
Buf
,(
int
)
Size
);
_kk_handle_data
(
Buf
,
s_ConnInfo
[
index
].
socketfd
);
_kk_handle_data
(
Buf
,
s_ConnInfo
[
index
].
socketfd
);
printf
(
"[%s][%d] TCP_Analyzer end.
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d] TCP_Analyzer end.
\n
"
,
__FUNCTION__
,
__LINE__
);
}
}
...
...
midware/midware/area/kk_area_handle.c
View file @
a1a823e4
...
@@ -472,6 +472,38 @@ int kk_room_device_list_add(const char *deviceCode)
...
@@ -472,6 +472,38 @@ int kk_room_device_list_add(const char *deviceCode)
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
cJSON
*
kk_get_roomIds_ary
(
void
)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
proomId
=
NULL
;
int
armingstate
=
0
;
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
){
armingstate
=
(
int
)
sqlite3_column_int
(
stmt
,
DB_ROOM_ARMING
);
if
(
armingstate
!=
0
){
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
)
kk_dev_list_t
*
kk_get_room_deviceCode
(
const
char
*
roomId
)
{
{
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
...
...
midware/midware/dm/kk_dm_msg.c
View file @
a1a823e4
...
@@ -639,6 +639,69 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response
...
@@ -639,6 +639,69 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
const
char
DM_MSG_SYNC_RESPONSE_WITH_DATA
[]
=
"{
\"
msgId
\"
:
\"
%.*s
\"
,
\"
code
\"
:%d,
\"
params
\"
:%.*s}"
;
int
dm_msg_sync_response
(
_IN_
kk_msg_request_payload_t
*
request
,
_IN_
kk_msg_response_t
*
response
,
_IN_
char
*
data
,
_IN_
int
data_len
,
_IN_
void
*
user_data
)
{
int
res
=
0
,
payload_len
=
0
,
res_info_len
=
0
;
char
*
uri
=
NULL
,
*
payload
=
NULL
;
lite_cjson_t
lite
;
char
*
res_info
=
NULL
;
if
(
request
==
NULL
||
response
==
NULL
||
data
==
NULL
||
data_len
<=
0
)
{
return
INVALID_PARAMETER
;
}
/* Response Payload */
payload_len
=
strlen
(
DM_MSG_SYNC_RESPONSE_WITH_DATA
)
+
request
->
id
.
value_length
+
DM_UTILS_UINT32_STRLEN
+
data_len
+
1
;
payload
=
malloc
(
payload_len
);
if
(
payload
==
NULL
)
{
free
(
uri
);
return
MEMORY_NOT_ENOUGH
;
}
memset
(
payload
,
0
,
payload_len
);
snprintf
(
payload
,
payload_len
,
DM_MSG_SYNC_RESPONSE_WITH_DATA
,
request
->
id
.
value_length
,
request
->
id
.
value
,
response
->
code
,
data_len
,
data
);
res_info_len
=
strlen
(
DM_MSG_INFO
)
+
10
+
strlen
(
response
->
productCode
)
+
strlen
(
response
->
deviceCode
)
+
strlen
(
response
->
msgTypeStr
)
+
1
;
res_info
=
malloc
(
res_info_len
);
if
(
res_info
==
NULL
)
{
free
(
payload
);
return
MEMORY_NOT_ENOUGH
;
}
memset
(
res_info
,
0
,
res_info_len
);
snprintf
(
res_info
,
res_info_len
,
DM_MSG_INFO
,
response
->
msgTypeStr
,
response
->
productCode
,
response
->
deviceCode
);
memset
(
&
lite
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_parse
(
payload
,
payload_len
,
&
lite
);
if
(
res
<
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"Wrong JSON Format, URI: %s, Payload: %s"
,
uri
,
payload
);
free
(
uri
);
free
(
payload
);
return
FAIL_RETURN
;
}
memset
(
&
lite
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_parse
(
res_info
,
res_info_len
,
&
lite
);
if
(
res
<
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"Wrong JSON Format, Payload: %d"
,
res_info_len
);
free
(
res_info
);
free
(
payload
);
return
FAIL_RETURN
;
}
//dm_client_publish(uri, (unsigned char *)payload, strlen(payload), NULL);
kk_sendData2app
(
res_info
,
payload
,
0
);
free
(
res_info
);
free
(
payload
);
return
SUCCESS_RETURN
;
}
int
dm_msg_response_parse
(
_IN_
char
*
payload
,
_IN_
int
payload_len
,
_OU_
dm_msg_response_payload_t
*
response
)
int
dm_msg_response_parse
(
_IN_
char
*
payload
,
_IN_
int
payload_len
,
_OU_
dm_msg_response_payload_t
*
response
)
{
{
lite_cjson_t
lite
,
lite_message
;
lite_cjson_t
lite
,
lite_message
;
...
@@ -731,6 +794,50 @@ int dm_msg_thing_syncinfo_reply(void){
...
@@ -731,6 +794,50 @@ int dm_msg_thing_syncinfo_reply(void){
free
(
info
);
free
(
info
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
int
dm_msg_thing_syncdeviceinfo_reply
(
cJSON
*
msgId
){
kk_msg_request_payload_t
request
;
kk_msg_response_t
response
;
dm_mgr_dev_node_t
*
node
=
NULL
;
char
*
info
=
NULL
;
int
res
=
0
;
memset
(
&
request
,
0
,
sizeof
(
kk_msg_request_payload_t
));
memset
(
&
response
,
0
,
sizeof
(
kk_msg_response_t
));
if
(
msgId
!=
NULL
&&
msgId
->
type
==
cJSON_String
){
request
.
id
.
value_length
=
strlen
(
msgId
->
valuestring
);
request
.
id
.
value
=
msgId
->
valuestring
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
res
=
dm_mgr_search_dev_by_devid
(
KK_DM_DEVICE_CCU_DEVICEID
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
FAIL_RETURN
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
//res = dm_msg_request_parse((char *)payload, payload_len, &request);
//if (res < SUCCESS_RETURN) {
//ERROR_PRINT("dm_msg_request_parse failed");
//return res ;
//}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
response
.
msgTypeStr
=
KK_THING_SERVICE_SYNCDEVICEINFO_REPLY
;
memcpy
(
response
.
productCode
,
node
->
productCode
,
strlen
(
node
->
productCode
));
memcpy
(
response
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
response
.
code
=
(
res
==
SUCCESS_RETURN
)
?
(
IOTX_DM_ERR_CODE_SUCCESS
)
:
(
IOTX_DM_ERR_CODE_REQUEST_ERROR
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
info
=
kk_sync_get_info
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
dm_msg_sync_response
(
&
request
,
&
response
,
info
,
strlen
(
info
),
NULL
);
free
(
info
);
return
SUCCESS_RETURN
;
}
const
char
DM_URI_THING_SERVICE_PROPERTY_SET_REPLY
[]
=
"/thing/service/property/set_reply"
;
const
char
DM_URI_THING_SERVICE_PROPERTY_SET_REPLY
[]
=
"/thing/service/property/set_reply"
;
int
dm_msg_thing_property_set_reply
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
*
payload
,
unsigned
int
payload_len
,
int
dm_msg_thing_property_set_reply
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
*
payload
,
unsigned
int
payload_len
,
...
...
midware/midware/dm/kk_dm_msg.h
View file @
a1a823e4
...
@@ -81,6 +81,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
...
@@ -81,6 +81,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_METHOD_EXECUTESCENE "thing.service.executeScene"
#define KK_THING_METHOD_EXECUTESCENE "thing.service.executeScene"
#define KK_THING_METHOD_ADDSCENC "thing.service.addScene"
#define KK_THING_METHOD_ADDSCENC "thing.service.addScene"
#define KK_THING_SERVICE_SYNCINFO "/thing/service/syncinfo"
#define KK_THING_SERVICE_SYNCINFO "/thing/service/syncinfo"
#define KK_THING_SERVICE_SYNCDEVICEINFO "/thing/service/syncDeviceInfo"
#define KK_THING_SERVICE_SYNCDEVICEINFO_REPLY "/thing/service/syncDeviceInfo_reply"
#define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply"
#define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply"
#define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_SERVICE_GETGUARDSENSORS "/thing/service/getGuardSensors"
#define KK_THING_SERVICE_GETGUARDSENSORS "/thing/service/getGuardSensors"
...
...
midware/midware/dm/kk_linkkit.c
View file @
a1a823e4
...
@@ -368,7 +368,8 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params)
...
@@ -368,7 +368,8 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params)
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
memcpy
(
roomId
,
roomIdStr
->
valuestring
,
strlen
(
roomIdStr
->
valuestring
));
memcpy
(
roomId
,
roomIdStr
->
valuestring
,
strlen
(
roomIdStr
->
valuestring
));
kk_room_add
(
roomInfoStr
->
valuestring
,
roomIdStr
->
valuestring
);
//HAL_GetTime_s((char*)roomId);
kk_room_add
(
roomInfoStr
->
valuestring
,
roomId
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
MSG_AREA_ADDROOM_NOTIFICATION_ROOMID
,
NULL
,
roomId
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
MSG_AREA_ADDROOM_NOTIFICATION_ROOMID
,
NULL
,
roomId
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
@@ -1198,6 +1199,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
...
@@ -1198,6 +1199,10 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_executeScene_handle
(
paramStr
,
msgId
);
kk_service_executeScene_handle
(
paramStr
,
msgId
);
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_SYNCDEVICEINFO
)
==
0
){
INFO_PRINT
(
"SYNCDEVICEINFO service
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
dm_msg_thing_syncdeviceinfo_reply
(
msgId
);
}
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETGUARDSENSORS
)
==
0
){
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETGUARDSENSORS
)
==
0
){
INFO_PRINT
(
"get guardgensors
\n
"
);
INFO_PRINT
(
"get guardgensors
\n
"
);
...
...
midware/midware/dm/kk_sync_data.c
View file @
a1a823e4
...
@@ -8,6 +8,8 @@
...
@@ -8,6 +8,8 @@
*************************************************************/
*************************************************************/
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include "kk_tsl_api.h"
#include "kk_tsl_api.h"
#include "kk_sync_data.h"
#include "kk_sync_data.h"
#include "kk_dm_mng.h"
#include "kk_dm_mng.h"
...
@@ -23,6 +25,11 @@
...
@@ -23,6 +25,11 @@
#include "kk_hal.h"
#include "kk_hal.h"
extern
sqlite3
*
g_kk_pDb
;
extern
sqlite3
*
g_kk_pDb
;
static
int
kk_check_multi_ep_num
(
char
*
deviceCode
);
static
int
kk_get_scenes_actions_info
(
cJSON
*
actionArray
,
int
id
);
static
int
kk_get_panel_scenes_actions_info
(
cJSON
*
actionArray
,
int
id
);
typedef
struct
{
typedef
struct
{
void
*
mutex
;
void
*
mutex
;
sqlite3
*
pDb
;
sqlite3
*
pDb
;
...
@@ -72,12 +79,12 @@ int kk_sync_init(void)
...
@@ -72,12 +79,12 @@ int kk_sync_init(void)
static
cJSON
*
kk_get_room_devices
(
const
char
*
roomId
)
static
cJSON
*
kk_get_room_devices
(
const
char
*
roomId
)
{
{
const
char
*
selectCmd
=
"select * from AreaDevInfo WHERE roomId = '%s'
and epNum = 1
;"
;
const
char
*
selectCmd
=
"select * from AreaDevInfo WHERE roomId = '%s';"
;
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
char
*
deviceCode
=
NULL
;
char
*
deviceCode
=
NULL
;
char
*
epNum
=
NULL
;
cJSON
*
devs
=
cJSON_CreateArray
();
cJSON
*
devs
=
cJSON_CreateArray
();
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
...
@@ -85,8 +92,21 @@ static cJSON * kk_get_room_devices(const char *roomId)
...
@@ -85,8 +92,21 @@ static cJSON * kk_get_room_devices(const char *roomId)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
dev
=
cJSON_CreateObject
();
cJSON
*
dev
=
cJSON_CreateObject
();
char
devName
[
64
]
=
{
0
};
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
epNum
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_EPNUM
);
if
(
kk_check_multi_ep_num
(
deviceCode
)){
cJSON_AddStringToObject
(
dev
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
}
cJSON_AddStringToObject
(
dev
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddStringToObject
(
dev
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
//cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
kk_get_device_name
(
deviceCode
,
epNum
,
devName
,
sizeof
(
devName
));
cJSON_AddStringToObject
(
dev
,
"name"
,
devName
);
cJSON_AddItemToArray
(
devs
,
dev
);
cJSON_AddItemToArray
(
devs
,
dev
);
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
...
@@ -95,6 +115,7 @@ static cJSON * kk_get_room_devices(const char *roomId)
...
@@ -95,6 +115,7 @@ static cJSON * kk_get_room_devices(const char *roomId)
return
devs
;
return
devs
;
}
}
static
cJSON
*
kk_get_room_sences
(
const
char
*
roomId
)
static
cJSON
*
kk_get_room_sences
(
const
char
*
roomId
)
{
{
const
char
*
selectCmd
=
"select * from SceneInfo where roomId = '%s';"
;
const
char
*
selectCmd
=
"select * from SceneInfo where roomId = '%s';"
;
...
@@ -102,7 +123,7 @@ static cJSON * kk_get_room_sences(const char *roomId)
...
@@ -102,7 +123,7 @@ static cJSON * kk_get_room_sences(const char *roomId)
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
char
*
sceneId
=
NULL
;
char
*
sceneId
=
NULL
;
char
*
sceneType
=
NULL
;
cJSON
*
scenes
=
cJSON_CreateArray
();
cJSON
*
scenes
=
cJSON_CreateArray
();
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
...
@@ -111,13 +132,14 @@ static cJSON * kk_get_room_sences(const char *roomId)
...
@@ -111,13 +132,14 @@ static cJSON * kk_get_room_sences(const char *roomId)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
scene
=
cJSON_CreateObject
();
cJSON
*
scene
=
cJSON_CreateObject
();
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_SCENEID
);
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_SCENEID
);
sceneType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_SCENETYPE
);
cJSON_AddStringToObject
(
scene
,
KK_SYNC_SCENEID_STR
,
sceneId
);
cJSON_AddStringToObject
(
scene
,
KK_SYNC_SCENEID_STR
,
sceneId
);
cJSON_AddStringToObject
(
scene
,
KK_SYNC_SCENE_SCENETYPE_STR
,
sceneType
);
cJSON_AddItemToArray
(
scenes
,
scene
);
cJSON_AddItemToArray
(
scenes
,
scene
);
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
scenes
;
return
scenes
;
}
}
...
@@ -140,7 +162,7 @@ static int kk_get_rooms_info(cJSON *data)
...
@@ -140,7 +162,7 @@ static int kk_get_rooms_info(cJSON *data)
cJSON
*
scenesArray
=
NULL
;
cJSON
*
scenesArray
=
NULL
;
_kk_sync_lock
();
_kk_sync_lock
();
sqlCmd
=
sqlite3_mprintf
(
"select * from AreaInfo"
);
sqlCmd
=
sqlite3_mprintf
(
"select * from AreaInfo"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
roomItem
=
cJSON_CreateObject
();
roomItem
=
cJSON_CreateObject
();
...
@@ -165,7 +187,123 @@ static int kk_get_rooms_info(cJSON *data)
...
@@ -165,7 +187,123 @@ static int kk_get_rooms_info(cJSON *data)
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
kk_get_properties_info
(
char
*
deviceCode
,
cJSON
*
obj
)
static
int
kk_check_multi_ep_num
(
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
propertyStr
=
NULL
;
char
*
valueStr
=
NULL
;
int
valueType
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
deviceCode
==
NULL
){
return
0
;
}
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;"
,
deviceCode
,
KK_DM_DEVICE_SUBDEV
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
char
*
propertiesbuf
[
64
]
=
{
0
};
int
num
=
0
;
split
(
propertyStr
,
"_"
,
propertiesbuf
,
&
num
);
if
(
num
>=
2
){
return
1
;
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
0
;
}
static
cJSON
*
kk_get_gw_properties_info
(
cJSON
*
data
)
{
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
char
*
propertyStr
=
NULL
;
char
*
valueStr
=
NULL
;
int
valueType
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
cJSON
*
roomIdsAry
=
NULL
;
cJSON
*
property
=
cJSON_CreateObject
();
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE devType = '%d' "
,
KK_DM_DEVICE_GATEWAY
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
cJSON_AddStringToObject
(
property
,
propertyStr
,
valueStr
);
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
valueType
==
KK_TSL_DATA_TYPE_BOOL
){
cJSON_AddNumberToObject
(
property
,
propertyStr
,
atoi
(
valueStr
));
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_DOUBLE
){
cJSON_AddNumberToObject
(
property
,
propertyStr
,
atof
(
valueStr
));
}
}
cJSON_AddItemToObject
(
data
,
KK_SYNC_PROPERTY_STR
,
property
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
property
;
}
static
cJSON
*
kk_get_ccu_properties_info
(
cJSON
*
data
)
{
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
propertyStr
=
NULL
;
char
*
valueStr
=
NULL
;
int
valueType
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
cJSON
*
roomIdsAry
=
NULL
;
cJSON
*
property
=
cJSON_CreateObject
();
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE devType = '%d' "
,
KK_DM_DEVICE_CCU
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
if
(
!
strcmp
(
propertyStr
,
"ArmingState"
)){
cJSON_AddNumberToObject
(
property
,
propertyStr
,
atoi
(
valueStr
));
}
else
{
cJSON_AddStringToObject
(
property
,
propertyStr
,
valueStr
);
}
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
valueType
==
KK_TSL_DATA_TYPE_BOOL
){
cJSON_AddNumberToObject
(
property
,
propertyStr
,
atoi
(
valueStr
));
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_DOUBLE
){
cJSON_AddNumberToObject
(
property
,
propertyStr
,
atof
(
valueStr
));
}
}
if
((
roomIdsAry
=
kk_get_roomIds_ary
())
!=
NULL
){
cJSON_AddItemToObject
(
property
,
"RoomIds"
,
roomIdsAry
);
}
cJSON_AddItemToObject
(
data
,
KK_SYNC_PROPERTY_STR
,
property
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
property
;
}
static
cJSON
*
kk_get_properties_info
(
char
*
deviceCode
,
int
devType
)
{
{
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
//char *zErrMsg = 0;
...
@@ -173,34 +311,158 @@ static int kk_get_properties_info(char *deviceCode,cJSON *obj)
...
@@ -173,34 +311,158 @@ static int kk_get_properties_info(char *deviceCode,cJSON *obj)
char
*
propertyStr
=
NULL
;
char
*
propertyStr
=
NULL
;
char
*
valueStr
=
NULL
;
char
*
valueStr
=
NULL
;
int
valueType
=
0
;
int
valueType
=
0
;
char
*
ptr
=
NULL
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
deviceCode
==
NULL
||
obj
==
NULL
){
if
(
deviceCode
==
NULL
){
return
FAIL_RETURN
;
return
NULL
;
}
}
cJSON
*
propertyItem
=
cJSON_CreateObject
();
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE deviceCode = '%s' "
,
deviceCode
);
cJSON
*
obj
=
cJSON_CreateObject
();
cJSON
*
eps
=
cJSON_CreateArray
();
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;"
,
deviceCode
,
devType
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
propertyItem
=
cJSON_CreateObject
();
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
char
*
propertiesbuf
[
64
]
=
{
0
};
int
num
=
0
;
split
(
propertyStr
,
"_"
,
propertiesbuf
,
&
num
);
if
(
num
==
2
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddStringToObject
(
propertyItem
,
"epNum"
,
propertiesbuf
[
1
]);
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
cJSON_AddStringToObject
(
propertyItem
,
propertiesbuf
[
0
],
valueStr
);
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
valueType
==
KK_TSL_DATA_TYPE_BOOL
){
cJSON_AddNumberToObject
(
propertyItem
,
propertiesbuf
[
0
],
atoi
(
valueStr
));
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_DOUBLE
){
cJSON_AddNumberToObject
(
propertyItem
,
propertiesbuf
[
0
],
atof
(
valueStr
));
}
}
else
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddStringToObject
(
propertyItem
,
"epNum"
,
"1"
);
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
cJSON_AddStringToObject
(
propertyItem
,
propertyStr
,
valueStr
);
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
valueType
==
KK_TSL_DATA_TYPE_BOOL
){
cJSON_AddNumberToObject
(
propertyItem
,
propertyStr
,
atoi
(
valueStr
));
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_DOUBLE
){
cJSON_AddNumberToObject
(
propertyItem
,
propertyStr
,
atof
(
valueStr
));
}
}
cJSON_AddItemToArray
(
eps
,
propertyItem
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddItemToObject
(
obj
,
"eps"
,
eps
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
obj
;
}
static
int
kk_get_properties_info_obj
(
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
propertyStr
=
NULL
;
char
*
valueStr
=
NULL
;
int
valueType
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
cJSON
*
obj
=
cJSON_CreateObject
();
if
(
deviceCode
==
NULL
){
return
NULL
;
}
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE deviceCode = '%s' and devType=%d;"
,
deviceCode
,
KK_DM_DEVICE_SUBDEV
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
cJSON_AddStringToObject
(
propertyItem
,
propertyStr
,
valueStr
);
cJSON_AddStringToObject
(
obj
,
propertyStr
,
valueStr
);
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
valueType
==
KK_TSL_DATA_TYPE_BOOL
){
valueType
==
KK_TSL_DATA_TYPE_BOOL
){
cJSON_AddNumberToObject
(
propertyItem
,
propertyStr
,
atoi
(
valueStr
));
cJSON_AddNumberToObject
(
obj
,
propertyStr
,
atoi
(
valueStr
));
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_DOUBLE
){
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_DOUBLE
){
cJSON_AddNumberToObject
(
propertyItem
,
propertyStr
,
atof
(
valueStr
));
cJSON_AddNumberToObject
(
obj
,
propertyStr
,
atof
(
valueStr
));
}
}
}
}
cJSON_AddItemToObject
(
obj
,
KK_SYNC_PROPERTY_STR
,
propertyItem
);
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
obj
;
}
static
int
kk_get_panelConfig_info
(
cJSON
*
decvies
,
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
char
*
sceneId
=
NULL
;
char
*
buttonId
=
NULL
;
int
bindType
=
0
;
int
mFlag
=
0
;
if
(
decvies
==
NULL
||
deviceCode
==
NULL
)
{
return
FAIL_RETURN
;
}
cJSON
*
panelConfig
=
NULL
;
sqlCmd
=
sqlite3_mprintf
(
"select * from QuickPanelScene WHERE deviceCode = '%s' "
,
deviceCode
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
if
(
mFlag
==
0
){
mFlag
=
1
;
panelConfig
=
cJSON_CreateArray
();
}
cJSON
*
item
=
cJSON_CreateObject
();
cJSON
*
action
=
cJSON_CreateObject
();
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_QUICKPANEL_SCENEID
);
buttonId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_QUICKPANEL_BUTTONID
);
bindType
=
(
int
)
sqlite3_column_int
(
stmt
,
DB_QUICKPANEL_BINDTYPE
);
kk_get_panel_scenes_actions_info
(
action
,
atoi
(
sceneId
));
cJSON_AddItemToObject
(
item
,
"action"
,
action
);
cJSON_AddNumberToObject
(
item
,
"bindType"
,
bindType
);
cJSON_AddStringToObject
(
item
,
"buttonId"
,
buttonId
);
cJSON_AddItemToArray
(
panelConfig
,
item
);
}
if
(
mFlag
==
1
){
cJSON_AddItemToObject
(
decvies
,
"panelConfig"
,
panelConfig
);
}
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
kk_get_sub_devices_info
(
cJSON
*
gwdevicesItem
,
char
*
deviceCode
)
static
int
kk_get_sub_devices_info
(
cJSON
*
gwdevicesItem
,
char
*
deviceCode
)
{
{
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
...
@@ -216,11 +478,13 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
...
@@ -216,11 +478,13 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
}
}
cJSON
*
subDevices
=
cJSON_CreateArray
();
cJSON
*
subDevices
=
cJSON_CreateArray
();
#if 1
#if 1
sqlCmd
=
sqlite3_mprintf
(
"select * from SubDeviceInfo WHERE fatherDeviceCode = '%s' "
,
deviceCode
);
sqlCmd
=
sqlite3_mprintf
(
"select * from SubDeviceInfo WHERE fatherDeviceCode = '%s' "
,
deviceCode
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
char
devName
[
64
]
=
{
0
};
cJSON
*
properties
=
NULL
;
subDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
subDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
subProductCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
subProductCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
subVersion
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_VERSION
);
subVersion
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_VERSION
);
...
@@ -228,19 +492,30 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
...
@@ -228,19 +492,30 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_DEVICECODE_STR
,
subDeviceCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_DEVICECODE_STR
,
subDeviceCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_VERSION_STR
,
subVersion
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_VERSION_STR
,
subVersion
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_MAC_STR
,
subDeviceCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_MAC_STR
,
subDeviceCode
);
kk_get_device_name
(
subDeviceCode
,
"1"
,
devName
,
sizeof
(
devName
));
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_NANE_STR
,
devName
);
cJSON_AddNumberToObject
(
subdevicesItem
,
KK_SYNC_ONLINE_STR
,
(
strcmp
(
subIsline
,
"0"
)
==
0
)
?
1
:
0
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_ONLINE_STR
,
subIsline
);
kk_get_panelConfig_info
(
subdevicesItem
,
subDeviceCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_PRODUCTCODE_STR
,
subProductCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_PRODUCTCODE_STR
,
subProductCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_SN_STR
,
""
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_SN_STR
,
""
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_STATUS_STR
,
"启动"
);
cJSON_AddNumberToObject
(
subdevicesItem
,
KK_SYNC_STATUS_STR
,
1
);
kk_get_properties_info
(
subDeviceCode
,
subdevicesItem
);
if
(
kk_check_multi_ep_num
(
subDeviceCode
)){
properties
=
kk_get_properties_info
(
subDeviceCode
,
KK_DM_DEVICE_SUBDEV
);
}
else
{
properties
=
kk_get_properties_info_obj
(
subDeviceCode
);
}
cJSON_AddItemToObject
(
subdevicesItem
,
"properties"
,
properties
);
cJSON_AddItemToArray
(
subDevices
,
subdevicesItem
);
cJSON_AddItemToArray
(
subDevices
,
subdevicesItem
);
}
}
#endif
#endif
cJSON_AddItemToObject
(
gwdevicesItem
,
KK_SYNC_DEVICES_STR
,
subDevices
);
cJSON_AddItemToObject
(
gwdevicesItem
,
KK_SYNC_DEVICES_STR
,
subDevices
);
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
kk_get_gw_devices_info
(
cJSON
*
gwdevices
)
static
int
kk_get_gw_devices_info
(
cJSON
*
gwdevices
)
...
@@ -275,12 +550,17 @@ static int kk_get_gw_devices_info(cJSON *gwdevices)
...
@@ -275,12 +550,17 @@ static int kk_get_gw_devices_info(cJSON *gwdevices)
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_VERSION_STR
,
gw_version
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_VERSION_STR
,
gw_version
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_MAC_STR
,
gw_deviceCode
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_MAC_STR
,
gw_deviceCode
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_NANE_STR
,
"GW"
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_NANE_STR
,
"GW"
);
cJSON_Add
StringToObject
(
gwdevicesItem
,
KK_SYNC_ONLINE_STR
,
gw_isline
);
cJSON_Add
NumberToObject
(
gwdevicesItem
,
KK_SYNC_ONLINE_STR
,
(
strcmp
(
gw_isline
,
"0"
)
==
0
)
?
1
:
0
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_PRODUCTCODE_STR
,
gw_productCode
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_PRODUCTCODE_STR
,
gw_productCode
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_SN_STR
,
""
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_SN_STR
,
""
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_STATUS_STR
,
"启动"
);
cJSON_AddNumberToObject
(
gwdevicesItem
,
KK_SYNC_STATUS_STR
,
1
);
kk_get_properties_info
(
gw_deviceCode
,
gwdevicesItem
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_gw_properties_info
(
gwdevicesItem
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_sub_devices_info
(
gwdevicesItem
,
gw_deviceCode
);
kk_get_sub_devices_info
(
gwdevicesItem
,
gw_deviceCode
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddItemToArray
(
gwdevices
,
gwdevicesItem
);
cJSON_AddItemToArray
(
gwdevices
,
gwdevicesItem
);
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
...
@@ -308,7 +588,6 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name)
...
@@ -308,7 +588,6 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name)
int
dbepNum
=
0
;
int
dbepNum
=
0
;
char
*
roomNameStr
=
NULL
;
char
*
roomNameStr
=
NULL
;
const
char
*
selectCmd
=
"select * from SceneInfo WHERE sceneId = '%d';"
;
const
char
*
selectCmd
=
"select * from SceneInfo WHERE sceneId = '%d';"
;
_kk_scene_lock
();
_kk_scene_lock
();
...
@@ -326,6 +605,71 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name)
...
@@ -326,6 +605,71 @@ int kk_get_room_name_by_scene_id(int scene_id,char *room_name)
return
res
;
return
res
;
}
}
static
int
kk_get_panel_scenes_actions_info
(
cJSON
*
actionItem
,
int
id
)
{
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
deviceCode
=
NULL
;
char
*
propertyName
=
NULL
;
char
*
propertyValue
=
NULL
;
char
roomIdStr
[
32
]
=
{
0
};
char
*
type
=
NULL
;
int
delay
=
0
,
epNum
=
0
,
scene_id
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
actionItem
==
NULL
){
return
FAIL_RETURN
;
}
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
scene_id
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_SCENEID
);
if
(
id
!=
scene_id
){
continue
;
}
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
delay
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_DELAY
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_EPNUM
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_TYPE
);
kk_get_roomId_by_deviceCode
(
deviceCode
,
"1"
,
roomIdStr
,
sizeof
(
roomIdStr
));
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_DELAY_STR
,
delay
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
char
*
propertiesbuf
[
64
]
=
{
0
};
int
num
=
0
;
split
(
propertyName
,
"_"
,
propertiesbuf
,
&
num
);
if
(
num
==
2
){
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertiesbuf
[
0
]);
}
else
{
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertyName
);
}
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
propertyValue
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
roomIdStr
);
break
;
}
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
}
static
int
kk_get_scenes_actions_info
(
cJSON
*
actionArray
,
int
id
)
static
int
kk_get_scenes_actions_info
(
cJSON
*
actionArray
,
int
id
)
{
{
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
...
@@ -353,20 +697,33 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
...
@@ -353,20 +697,33 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
continue
;
continue
;
}
}
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
delay
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_DELAY
);
delay
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_DELAY
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_EPNUM
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_EPNUM
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
propertyValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_TYPE
);
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_TYPE
);
kk_get_room_name_by_scene_id
(
scene_id
,
room_name
);
kk_get_room_name_by_scene_id
(
scene_id
,
room_name
);
actionItem
=
cJSON_CreateObject
();
actionItem
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_DELAY_STR
,
delay
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_DELAY_STR
,
delay
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertyName
);
char
*
propertiesbuf
[
64
]
=
{
0
};
int
num
=
0
;
split
(
propertyName
,
"_"
,
propertiesbuf
,
&
num
);
if
(
num
==
2
){
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertiesbuf
[
0
]);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
atoi
(
propertiesbuf
[
1
]));
}
else
{
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertyName
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
}
//cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
propertyValue
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
propertyValue
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
room_name
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
room_name
);
...
@@ -376,7 +733,57 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
...
@@ -376,7 +733,57 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
kk_get_scenes_trigger_info
(
cJSON
*
triggerArray
,
char
*
sceneId
)
static
int
kk_build_repeatday_string
(
int
repeatday
,
char
*
repeatStr
,
int
size
)
{
int
i
=
0
;
int
pos
=
0
;
char
tmp
[
16
]
=
{
0
};
memset
(
repeatStr
,
0
,
size
);
for
(;
i
<
7
;
i
++
){
if
(
repeatday
&
(
1
<<
i
)){
memset
(
tmp
,
0
,
sizeof
(
tmp
));
snprintf
(
tmp
,
sizeof
(
tmp
),
"%d"
,
i
+
1
);
strcat
(
repeatStr
,
tmp
);
strcat
(
repeatStr
,
","
);
}
}
pos
=
strlen
(
repeatStr
);
if
(
pos
>
0
){
repeatStr
[
pos
-
1
]
=
'\0'
;
}
}
int
kk_is_trigger_timing
(
char
*
sceneId
)
{
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTimerInfo where sceneId = %s"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
return
1
;
}
return
0
;
}
static
int
kk_creat_starttime_build
(
time_t
current
)
{
struct
tm
*
c
=
gmtime
(
&
current
);
return
(
c
->
tm_hour
*
3600
+
c
->
tm_min
*
60
+
c
->
tm_sec
);
}
static
int
kk_get_scenes_trigger_info
(
cJSON
*
triggerObj
,
char
*
sceneId
)
{
{
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
//char *zErrMsg = 0;
...
@@ -385,65 +792,166 @@ static int kk_get_scenes_trigger_info(cJSON *triggerArray,char *sceneId)
...
@@ -385,65 +792,166 @@ static int kk_get_scenes_trigger_info(cJSON *triggerArray,char *sceneId)
char
*
propertyName
=
NULL
;
char
*
propertyName
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareValue
=
NULL
;
char
*
compareValue
=
NULL
;
//char *type = NULL;
cJSON
*
triggerAry
;
char
*
type
=
NULL
;
int
epNum
=
0
;
int
epNum
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
triggerArray
==
NULL
||
sceneId
==
NULL
){
int
week
;
int
time
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
triggerObj
==
NULL
||
sceneId
==
NULL
){
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
triggerAry
=
cJSON_CreateArray
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTimerInfo where sceneId = %s"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
conditionItem
=
cJSON_CreateObject
();
char
weekStr
[
32
]
=
{
0
};
week
=
sqlite3_column_int
(
stmt
,
DB_SCENETIMER_WEEK
);
time
=
sqlite3_column_int
(
stmt
,
DB_SCENETIMER_TIME
);
kk_build_repeatday_string
(
week
,
weekStr
,
sizeof
(
weekStr
));
cJSON_AddStringToObject
(
conditionItem
,
"type"
,
"trigger/timing"
);
cJSON_AddStringToObject
(
conditionItem
,
"week"
,
weekStr
);
//cJSON_AddNumberToObject(conditionItem, "time", time);
int
startTime
=
kk_creat_starttime_build
(
time
);
char
TimeStr
[
32
]
=
{
0
};
memset
(
TimeStr
,
0
,
sizeof
(
TimeStr
));
snprintf
(
TimeStr
,
sizeof
(
TimeStr
),
"%d"
,
startTime
);
cJSON_AddStringToObject
(
conditionItem
,
"time"
,
TimeStr
);
cJSON_AddItemToArray
(
triggerAry
,
conditionItem
);
}
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo where sceneId = %s"
,
sceneId
);
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo where sceneId = %s"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
triggerItem
=
cJSON_CreateObject
();
cJSON
*
triggerItem
=
cJSON_CreateObject
();
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
//type = (char*)sqlite3_column_text(stmt, DB_SCENETRIGGER_TYPE);
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_TYPE
);
cJSON_AddStringToObject
(
triggerItem
,
"type"
,
type
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_DEVICECODE_STR
,
(
char
*
)
deviceCode
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_DEVICECODE_STR
,
(
char
*
)
deviceCode
);
cJSON_AddNumberToObject
(
triggerItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
cJSON_AddNumberToObject
(
triggerItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
(
char
*
)
propertyName
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
(
char
*
)
propertyName
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_COMPARETYPE_STR
,
(
char
*
)
compareType
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_COMPARETYPE_STR
,
(
char
*
)
compareType
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_COMPAREValue_STR
,
(
char
*
)
compareValue
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_COMPAREValue_STR
,
(
char
*
)
compareValue
);
cJSON_AddItemToArray
(
triggerArray
,
triggerItem
);
cJSON_AddItemToArray
(
triggerAry
,
triggerItem
);
}
}
cJSON_AddItemToObject
(
triggerObj
,
"items"
,
triggerAry
);
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
kk_get_scenes_condition_info
(
cJSON
*
conditionArray
,
char
*
sceneId
)
static
cJSON
*
kk_build_repeatday_array
(
int
repeatday
)
{
int
i
=
0
;
cJSON
*
repeatAry
=
cJSON_CreateArray
();
for
(;
i
<
7
;
i
++
){
if
(
repeatday
&
(
1
<<
i
)){
cJSON_AddItemToArray
(
repeatAry
,
cJSON_CreateNumber
(
i
+
1
));
}
}
return
repeatAry
;
}
static
int
kk_get_scenes_condition_info
(
cJSON
*
conditionObj
,
char
*
sceneId
)
{
{
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
//char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
char
*
type
;
int
starttime
=
0
;
int
starttime
=
0
;
int
endtime
=
0
;
int
endtime
=
0
;
int
crossDay
=
0
;
int
crossDay
=
0
;
int
repeat
=
0
;
int
repeat
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
conditionArray
==
NULL
||
sceneId
==
NULL
){
cJSON
*
conditionAry
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
conditionObj
==
NULL
||
sceneId
==
NULL
){
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
conditionAry
=
cJSON_CreateArray
();
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneConditionInfo where sceneId = %s"
,
sceneId
);
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneConditionInfo where sceneId = %s"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
conditionItem
=
cJSON_CreateObject
();
cJSON
*
conditionItem
=
cJSON_CreateObject
();
starttime
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_STARTTIME
);
cJSON
*
repeatAry
=
NULL
;
endtime
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_ENDTIME
);
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENECONDITION_TYPE
);
crossDay
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_CROSSDAY
);
repeat
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_REPEATDAY
);
starttime
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_STARTTIME
);
cJSON_AddNumberToObject
(
conditionItem
,
KK_SYNC_SCENE_STARTTIME_STR
,
starttime
);
endtime
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_ENDTIME
);
cJSON_AddNumberToObject
(
conditionItem
,
KK_SYNC_SCENE_ENDTIME_STR
,
endtime
);
crossDay
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_CROSSDAY
);
repeat
=
sqlite3_column_int
(
stmt
,
DB_SCENECONDITION_REPEATDAY
);
repeatAry
=
kk_build_repeatday_array
(
repeat
);
cJSON_AddStringToObject
(
conditionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
cJSON_AddNumberToObject
(
conditionItem
,
KK_SYNC_SCENE_STARTTIME_STR
,
starttime
);
cJSON_AddNumberToObject
(
conditionItem
,
KK_SYNC_SCENE_ENDTIME_STR
,
endtime
);
cJSON_AddNumberToObject
(
conditionItem
,
KK_SYNC_SCENE_CROSSDAY_STR
,
crossDay
);
cJSON_AddNumberToObject
(
conditionItem
,
KK_SYNC_SCENE_CROSSDAY_STR
,
crossDay
);
cJSON_AddNumberToObject
(
conditionItem
,
KK_SYNC_SCENE_REPEATDAY_STR
,
repeat
);
cJSON_AddItemToObject
(
conditionItem
,
KK_SYNC_SCENE_REPEATDAY_STR
,
repeatAry
);
cJSON_AddItemToArray
(
conditionArray
,
conditionItem
);
}
cJSON_AddItemToArray
(
conditionAry
,
conditionItem
);
}
char
*
deviceCode
=
NULL
;
char
*
propertyName
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareValue
=
NULL
;
int
epNum
=
0
;
int
isAnd
;
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo where sceneId = %s"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
isAnd
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_ISAND
);
if
(
isAnd
==
1
){
cJSON
*
triggerItem
=
cJSON_CreateObject
();
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_TYPE
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_TYPE_STR
,
(
char
*
)
type
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_DEVICECODE_STR
,
(
char
*
)
deviceCode
);
cJSON_AddNumberToObject
(
triggerItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
(
char
*
)
propertyName
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_COMPARETYPE_STR
,
(
char
*
)
compareType
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_COMPAREValue_STR
,
(
char
*
)
compareValue
);
cJSON_AddItemToArray
(
conditionAry
,
triggerItem
);
}
}
cJSON_AddItemToObject
(
conditionObj
,
"items"
,
conditionAry
);
sqlite3_free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
static
int
kk_get_scenes_info
(
cJSON
*
data
)
static
int
kk_get_scenes_info
(
cJSON
*
data
)
{
{
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
...
@@ -463,9 +971,9 @@ static int kk_get_scenes_info(cJSON *data)
...
@@ -463,9 +971,9 @@ static int kk_get_scenes_info(cJSON *data)
cJSON
*
sceneArrayItem
=
cJSON_CreateObject
();
cJSON
*
sceneArrayItem
=
cJSON_CreateObject
();
enable
=
sqlite3_column_int
(
stmt
,
DB_SCENEINFO_ENABLE
);
enable
=
sqlite3_column_int
(
stmt
,
DB_SCENEINFO_ENABLE
);
if
(
enable
==
1
){
if
(
enable
==
1
){
cJSON_Add
StringToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_ENABLE_STR
,
"启动"
);
cJSON_Add
NumberToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_ENABLE_STR
,
1
);
}
else
{
}
else
{
cJSON_Add
StringToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_ENABLE_STR
,
"禁用"
);
cJSON_Add
NumberToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_ENABLE_STR
,
0
);
}
}
type
=
sqlite3_column_int
(
stmt
,
DB_SCENEINFO_SCENETYPE
);
type
=
sqlite3_column_int
(
stmt
,
DB_SCENEINFO_SCENETYPE
);
...
@@ -476,13 +984,16 @@ static int kk_get_scenes_info(cJSON *data)
...
@@ -476,13 +984,16 @@ static int kk_get_scenes_info(cJSON *data)
cJSON_AddStringToObject
(
sceneArrayItem
,
KK_SYNC_SCENEID_STR
,
sceneId
);
cJSON_AddStringToObject
(
sceneArrayItem
,
KK_SYNC_SCENEID_STR
,
sceneId
);
cJSON
*
actionArray
=
cJSON_CreateArray
();
cJSON
*
actionArray
=
cJSON_CreateArray
();
kk_get_scenes_actions_info
(
actionArray
,
atoi
(
sceneId
));
kk_get_scenes_actions_info
(
actionArray
,
atoi
(
sceneId
));
cJSON_AddItemToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_ACTIONS_STR
,
actionArray
);
cJSON_AddItemToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_ACTIONS_STR
,
actionArray
);
cJSON
*
triggerArray
=
cJSON_CreateArray
();
cJSON
*
triggerObj
=
cJSON_CreateObject
();
kk_get_scenes_trigger_info
(
triggerArray
,
sceneId
);
kk_get_scenes_trigger_info
(
triggerObj
,
sceneId
);
cJSON_AddItemToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_TRIGGER_STR
,
triggerArray
);
cJSON_AddItemToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_TRIGGER_STR
,
triggerObj
);
cJSON
*
conditionArray
=
cJSON_CreateArray
();
if
(
kk_is_trigger_timing
(
sceneId
)
!=
1
){
kk_get_scenes_condition_info
(
conditionArray
,
sceneId
);
cJSON
*
conditionObj
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_CONDITION_STR
,
conditionArray
);
kk_get_scenes_condition_info
(
conditionObj
,
sceneId
);
cJSON_AddItemToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_CONDITION_STR
,
conditionObj
);
}
cJSON_AddItemToArray
(
sceneArray
,
sceneArrayItem
);
cJSON_AddItemToArray
(
sceneArray
,
sceneArrayItem
);
}
}
cJSON_AddItemToObject
(
data
,
KK_SYNC_SCENE_STR
,
sceneArray
);
cJSON_AddItemToObject
(
data
,
KK_SYNC_SCENE_STR
,
sceneArray
);
...
@@ -490,6 +1001,8 @@ static int kk_get_scenes_info(cJSON *data)
...
@@ -490,6 +1001,8 @@ static int kk_get_scenes_info(cJSON *data)
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
/*
static int kk_get_ccu_properties(cJSON *property)
static int kk_get_ccu_properties(cJSON *property)
{
{
char *sqlCmd = NULL;
char *sqlCmd = NULL;
...
@@ -523,6 +1036,7 @@ static int kk_get_ccu_properties(cJSON *property)
...
@@ -523,6 +1036,7 @@ static int kk_get_ccu_properties(cJSON *property)
_kk_sync_unlock();
_kk_sync_unlock();
return SUCCESS_RETURN;
return SUCCESS_RETURN;
}
}
*/
/************************************************************
/************************************************************
*功能描述:检查设备是否有重复
*功能描述:检查设备是否有重复
*输入参数:deviceCode:设备deviceCode
*输入参数:deviceCode:设备deviceCode
...
@@ -537,36 +1051,36 @@ char *kk_sync_get_info()
...
@@ -537,36 +1051,36 @@ char *kk_sync_get_info()
char
ccu_productCode
[
PRODUCT_CODE_MAXLEN
]
=
{
0
};
char
ccu_productCode
[
PRODUCT_CODE_MAXLEN
]
=
{
0
};
char
version
[
32
]
=
{
0
};
char
version
[
32
]
=
{
0
};
char
cloudstatus_str
[
16
]
=
{
0
};
char
cloudstatus_str
[
16
]
=
{
0
};
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
KK_SYNC_CODE_STR
,
"0"
);
cJSON
*
data
=
cJSON_CreateObject
();
cJSON
*
data
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
KK_SYNC_DATA_STR
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_rooms_info
(
data
);
kk_get_rooms_info
(
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_devices_info
(
data
);
kk_get_devices_info
(
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_scenes_info
(
data
);
kk_get_scenes_info
(
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
//HAL_GetDevice_Code(ccu_deviceCode);
HAL_Get_ccuid
(
ccu_deviceCode
);
HAL_Get_ccuid
(
ccu_deviceCode
);
HAL_GetProduct_Code
(
ccu_productCode
);
HAL_GetProduct_Code
(
ccu_productCode
);
HAL_GetVersion
(
version
);
HAL_GetVersion
(
version
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_DEVICECODE_STR
,
ccu_deviceCode
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_DEVICECODE_STR
,
ccu_deviceCode
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_NANE_STR
,
"newccu"
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_NANE_STR
,
"newccu"
);
sprintf
(
cloudstatus_str
,
"%d"
,
kk_get_cloudstatus
());
sprintf
(
cloudstatus_str
,
"%d"
,
kk_get_cloudstatus
());
cJSON_AddStringToObject
(
data
,
KK_SYNC_ONLINE_STR
,
cloudstatus_str
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_ONLINE_STR
,
cloudstatus_str
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_PRODUCTCODE_STR
,
ccu_productCode
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_PRODUCTCODE_STR
,
ccu_productCode
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_VERSION_STR
,
version
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_VERSION_STR
,
version
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON
*
property
=
cJSON_CreateObject
();
kk_get_ccu_properties_info
(
data
);
kk_get_ccu_properties
(
property
);
cJSON_AddItemToObject
(
data
,
KK_SYNC_PROPERTY_STR
,
property
);
out
=
cJSON_Print
(
root
);
out
=
cJSON_Print
(
data
);
printf
(
"kk_sync_get_info:%s
\n
"
,
out
);
printf
(
"kk_sync_get_info:%s
\n
"
,
out
);
cJSON_Delete
(
root
);
cJSON_Delete
(
data
);
//free(out);
//free(out);
return
out
;
return
out
;
}
}
...
...
midware/midware/dm/kk_sync_data.h
View file @
a1a823e4
...
@@ -25,9 +25,9 @@
...
@@ -25,9 +25,9 @@
#define KK_SYNC_SCENE_ACTIONS_STR "actions"
#define KK_SYNC_SCENE_ACTIONS_STR "actions"
#define KK_SYNC_SCENE_ENABLE_STR "enable"
#define KK_SYNC_SCENE_ENABLE_STR "enable"
#define KK_SYNC_SCENE_SCENETYPE_STR "sceneType"
#define KK_SYNC_SCENE_SCENETYPE_STR "sceneType"
#define KK_SYNC_SCENE_TRIGGER_STR "trigger"
#define KK_SYNC_SCENE_TRIGGER_STR "trigger
s
"
#define KK_SYNC_SCENE_ITEMS_STR "items"
#define KK_SYNC_SCENE_ITEMS_STR "items"
#define KK_SYNC_SCENE_CONDITION_STR "condition"
#define KK_SYNC_SCENE_CONDITION_STR "condition
s
"
#define KK_SYNC_SCENE_COMPARETYPE_STR "compareType"
#define KK_SYNC_SCENE_COMPARETYPE_STR "compareType"
#define KK_SYNC_SCENE_COMPAREValue_STR "compareValue"
#define KK_SYNC_SCENE_COMPAREValue_STR "compareValue"
#define KK_SYNC_SCENE_STARTTIME_STR "startTime"
#define KK_SYNC_SCENE_STARTTIME_STR "startTime"
...
...
midware/midware/midware.c
View file @
a1a823e4
...
@@ -167,7 +167,7 @@ void kk_sendData2gw(void* data, int len, char* chalMark){
...
@@ -167,7 +167,7 @@ void kk_sendData2gw(void* data, int len, char* chalMark){
kk_print_long_data
(
data
,
newLen
);
kk_print_long_data
(
data
,
newLen
);
INFO_PRINT
(
"start to send data to gw end
\n
"
);
INFO_PRINT
(
"start to send data to gw end
\n
"
);
}
}
static
void
split
(
char
*
src
,
const
char
*
separator
,
char
**
dest
,
int
*
num
)
{
void
split
(
char
*
src
,
const
char
*
separator
,
char
**
dest
,
int
*
num
)
{
char
*
pNext
;
char
*
pNext
;
int
count
=
0
;
int
count
=
0
;
if
(
src
==
NULL
||
strlen
(
src
)
==
0
)
if
(
src
==
NULL
||
strlen
(
src
)
==
0
)
...
@@ -626,7 +626,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
...
@@ -626,7 +626,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
if
(
jsonPay
==
NULL
)
goto
error
;
if
(
jsonPay
==
NULL
)
goto
error
;
proCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_PRODUCT_CODE_STR
);
proCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_PRODUCT_CODE_STR
);
devCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
devCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
mac
=
cJSON_GetObjectItem
(
jsonPay
,
"mac"
);
//mac = cJSON_GetObjectItem(jsonPay, "mac");
mac
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
if
(
proCode
==
NULL
||
devCode
==
NULL
||
mac
==
NULL
){
if
(
proCode
==
NULL
||
devCode
==
NULL
||
mac
==
NULL
){
ERROR_PRINT
(
"productCode, deviceCode mac params are error
\n
"
);
ERROR_PRINT
(
"productCode, deviceCode mac params are error
\n
"
);
goto
error
;
goto
error
;
...
...
midware/midware/scene/kk_scene_db.c
View file @
a1a823e4
...
@@ -387,10 +387,10 @@ static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const c
...
@@ -387,10 +387,10 @@ static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const c
char
*
dbcompareType
=
NULL
;
char
*
dbcompareType
=
NULL
;
char
*
dbsceneId
=
NULL
;
char
*
dbsceneId
=
NULL
;
const
char
*
selectCmd
=
"select * from SceneTriggerInfo WHERE deviceCode = '%s' and propertyName = '%s';"
;
const
char
*
selectCmd
=
"select * from SceneTriggerInfo WHERE deviceCode = '%s' and propertyName = '%s'
and epNum = '%d'
;"
;
_kk_scene_lock
();
_kk_scene_lock
();
sqlCmd
=
sqlite3_mprintf
(
selectCmd
,
deviceCode
,
propertyName
);
sqlCmd
=
sqlite3_mprintf
(
selectCmd
,
deviceCode
,
propertyName
,
epNum
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
dbepNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
dbepNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
...
@@ -434,6 +434,20 @@ int kk_scene_insert_scene_trigger(const char* type,const char* deviceCode,int ep
...
@@ -434,6 +434,20 @@ int kk_scene_insert_scene_trigger(const char* type,const char* deviceCode,int ep
char
*
zErrMsg
=
0
;
char
*
zErrMsg
=
0
;
/*此触发条件已经存在*/
/*此触发条件已经存在*/
if
(
kk_scene_check_trigger_exist
(
deviceCode
,
epNum
,
propertyName
,
compareType
,
compareValue
,
sceneId
)){
if
(
kk_scene_check_trigger_exist
(
deviceCode
,
epNum
,
propertyName
,
compareType
,
compareValue
,
sceneId
)){
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SceneTriggerInfo SET isAnd=%d WHERE deviceCode = '%s' and propertyName = '%s' and epNum = '%d' and sceneId= '%s';"
,
isAnd
,
deviceCode
,
propertyName
,
epNum
,
sceneId
);
printf
(
"sqlCmd=%s
\n
"
,
sqlCmd
);
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
res
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
sqlite3_free
(
sqlCmd
);
_kk_scene_unlock
();
return
FAIL_RETURN
;
}
sqlite3_free
(
sqlCmd
);
_kk_scene_unlock
();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
const
char
*
insertCmd
=
"insert into SceneTriggerInfo (type, deviceCode,epNum,propertyName,compareType,compareValue,sceneId,isAnd) \
const
char
*
insertCmd
=
"insert into SceneTriggerInfo (type, deviceCode,epNum,propertyName,compareType,compareValue,sceneId,isAnd) \
...
...
midware/midware/scene/kk_scene_handle.c
View file @
a1a823e4
...
@@ -644,6 +644,7 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
...
@@ -644,6 +644,7 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
if
(
type
==
NULL
)
return
FAIL_RETURN
;
if
(
type
==
NULL
)
return
FAIL_RETURN
;
if
(
!
strcmp
(
"trigger/thing/property"
,
type
->
valuestring
)){
if
(
!
strcmp
(
"trigger/thing/property"
,
type
->
valuestring
)){
printf
(
"---------------->isAnd=0
\n
"
);
res
=
kk_scene_parse_trigger_detail
(
type
->
valuestring
,
item
,
sceneId
,
0
);
res
=
kk_scene_parse_trigger_detail
(
type
->
valuestring
,
item
,
sceneId
,
0
);
if
(
res
!=
SUCCESS_RETURN
){
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"kk_scene_parse_scene_trigger fail!!!
\n
"
);
ERROR_PRINT
(
"kk_scene_parse_scene_trigger fail!!!
\n
"
);
...
@@ -859,6 +860,7 @@ int kk_scene_parse_scene_condition(const cJSON* str,const char *sceneId)
...
@@ -859,6 +860,7 @@ int kk_scene_parse_scene_condition(const cJSON* str,const char *sceneId)
}
}
}
}
else
if
(
!
strcmp
(
"trigger/thing/property"
,
type
->
valuestring
)){
else
if
(
!
strcmp
(
"trigger/thing/property"
,
type
->
valuestring
)){
printf
(
"---------------->isAnd=1
\n
"
);
kk_scene_parse_trigger_detail
(
type
->
valuestring
,
item
,
sceneId
,
1
);
kk_scene_parse_trigger_detail
(
type
->
valuestring
,
item
,
sceneId
,
1
);
}
}
else
{
else
{
...
@@ -1052,12 +1054,13 @@ int kk_scene_parse_scene_muticontrol(const cJSON* str,const char *sceneId,int is
...
@@ -1052,12 +1054,13 @@ int kk_scene_parse_scene_muticontrol(const cJSON* str,const char *sceneId,int is
}
}
cJSON_AddItemToArray
(
array
,
arrayParam
);
cJSON_AddItemToArray
(
array
,
arrayParam
);
//break;
//break;
kk_scene_insert_scene_action
(
type
->
valuestring
,
deviceCode
->
valuestring
,
atoi
(
epNum
->
valuestring
),
""
,
""
,
0
,
sceneId
,
node
->
fatherDeviceCode
);
}
}
item
=
item
->
next
;
item
=
item
->
next
;
}
}
res
=
kk_scene_insert_scene_action
(
type
->
valuestring
,
deviceCode
->
valuestring
,
0
,
""
,
""
,
0
,
sceneId
,
node
->
fatherDeviceCode
);
kk_scene_muticontrol_info_send
(
array
,
node
->
fatherDeviceCode
,
sceneId
,
isUpdate
);
kk_scene_muticontrol_info_send
(
array
,
node
->
fatherDeviceCode
,
sceneId
,
isUpdate
);
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
...
@@ -1099,14 +1102,15 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
...
@@ -1099,14 +1102,15 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
dm_msg_scene_event_post
(
MSG_SCENE_ADDNOTIFICATION
,
pSceneShadow
,
msgId
);
dm_msg_scene_event_post
(
MSG_SCENE_ADDNOTIFICATION
,
pSceneShadow
,
msgId
);
}
}
}
}
char
roomIdStr
[
32
]
=
{
0
};
snprintf
(
roomIdStr
,
32
,
"%d"
,
room_id
->
valueint
);
res
=
kk_scene_insert_scene_info
(
roomIdStr
,
name
->
valuestring
,
sceneType
->
valueint
,
enable
->
valueint
,
sceneId
);
/*多控直接下发给网关处理*/
/*多控直接下发给网关处理*/
if
(
enable
->
valueint
==
1
&&
sceneType
->
valueint
==
DB_SCENETYPE_MUTICONTROL
){
if
(
enable
->
valueint
==
1
&&
sceneType
->
valueint
==
DB_SCENETYPE_MUTICONTROL
){
kk_scene_parse_scene_muticontrol
(
args
,
sceneId
,
isUpdate
);
kk_scene_parse_scene_muticontrol
(
args
,
sceneId
,
isUpdate
);
}
}
else
{
else
{
char
roomIdStr
[
32
]
=
{
0
};
snprintf
(
roomIdStr
,
32
,
"%d"
,
room_id
->
valueint
);
res
=
kk_scene_insert_scene_info
(
roomIdStr
,
name
->
valuestring
,
sceneType
->
valueint
,
enable
->
valueint
,
sceneId
);
if
(
res
!=
SUCCESS_RETURN
){
if
(
res
!=
SUCCESS_RETURN
){
INFO_PRINT
(
"kk_scene_insert_scene_info fail!!!
\n
"
);
INFO_PRINT
(
"kk_scene_insert_scene_info fail!!!
\n
"
);
return
res
;
return
res
;
...
...
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