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
c58f1bab
Commit
c58f1bab
authored
Aug 13, 2021
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yjq' into 'master'
20210813 See merge request chenweican/k-sdk!105
parents
d34621bd
8865bb27
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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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 @
c58f1bab
...
@@ -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