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
570bd950
Commit
570bd950
authored
Aug 03, 2021
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
20210803
parent
a37d38b7
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
809 additions
and
1034 deletions
+809
-1034
application/klansdk/kk_ccu_msg.c
application/klansdk/kk_ccu_msg.c
+53
-11
application/klansdk/kk_ccu_msg.h
application/klansdk/kk_ccu_msg.h
+34
-1
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+72
-179
application/klansdk/kk_data_handle.h
application/klansdk/kk_data_handle.h
+1
-0
application/klansdk/kk_data_mng.c
application/klansdk/kk_data_mng.c
+138
-267
application/klansdk/kk_data_mng.h
application/klansdk/kk_data_mng.h
+2
-2
application/klansdk/kk_lan_ctrl.c
application/klansdk/kk_lan_ctrl.c
+45
-146
application/klansdk/kk_lan_main.c
application/klansdk/kk_lan_main.c
+8
-23
application/klansdk/kk_login_handle.c
application/klansdk/kk_login_handle.c
+2
-0
application/klansdk/kk_newccu_msg.c
application/klansdk/kk_newccu_msg.c
+55
-1
application/klansdk/kk_newccu_msg.h
application/klansdk/kk_newccu_msg.h
+1
-0
application/klansdk/kk_oldccu_msg.c
application/klansdk/kk_oldccu_msg.c
+119
-351
application/klansdk/kk_oldccu_msg.h
application/klansdk/kk_oldccu_msg.h
+1
-0
common/api/com_api.h
common/api/com_api.h
+3
-1
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+120
-2
midware/midware/area/kk_area_handle.h
midware/midware/area/kk_area_handle.h
+1
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+1
-0
midware/midware/dm/kk_sync_data.c
midware/midware/dm/kk_sync_data.c
+117
-33
midware/midware/scene/kk_scene_db.c
midware/midware/scene/kk_scene_db.c
+7
-6
midware/midware/scene/kk_scene_db.h
midware/midware/scene/kk_scene_db.h
+3
-2
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+26
-9
No files found.
application/klansdk/kk_ccu_msg.c
View file @
570bd950
...
...
@@ -255,14 +255,16 @@ cJSON * msg_convert_value(cJSON *d_type,cJSON *s_type,cJSON *value)
cJSON
*
rlt
=
NULL
;
CONVERT_ITEM_S
*
crt
;
printf
(
"[%s][%d]
type:%s->%s,val=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
d_type
->
valuestring
,
s_type
->
valuestring
,
cJSON_Print
(
value
));
printf
(
"[%s][%d]
%s->%s,val=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
cJSON_Print
(
s_type
),
cJSON_Print
(
d_type
)
,
cJSON_Print
(
value
));
size
=
sizeof
(
convert_table
)
/
sizeof
(
CONVERT_ITEM_S
);
crt
=
&
convert_table
[
0
];
for
(
i
=
0
;
i
<
size
;
i
++
,
crt
++
){
if
(
strcmp
(
d_type
->
valuestring
,
crt
->
type
)
==
0
)
{
if
(
crt
->
func
){
rlt
=
crt
->
func
(
value
,
s_type
);
}
break
;
}
}
...
...
@@ -277,10 +279,6 @@ cJSON *map_type_convert(cJSON *s_dataType,cJSON *s_valueRange,cJSON *value,cJSON
int
vra_size
=
cJSON_GetArraySize
(
s_valueRange
);
printf
(
"[%s][%d]type:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
s_dataType
->
valuestring
);
printf
(
"s_valueRange=%s
\n
"
,
cJSON_Print
(
s_valueRange
));
printf
(
"d_valueRange=%s
\n
"
,
cJSON_Print
(
d_valueRange
));
printf
(
"value=%s
\n
"
,
cJSON_Print
(
value
));
for
(
j
=
0
;
j
<
vra_size
;
j
++
){
if
(
strcmp
(
s_dataType
->
valuestring
,
"dummy"
)
==
0
){
continue
;
...
...
@@ -304,18 +302,18 @@ cJSON *map_type_convert(cJSON *s_dataType,cJSON *s_valueRange,cJSON *value,cJSON
break
;
}
}
else
if
(
strstr
(
s_dataType
->
valuestring
,
"map"
)){
printf
(
"rlt=%d
\n
"
,
rlt
->
type
);
if
(
rlt
->
type
==
cJSON_String
){
printf
(
"111111
\n
"
);
if
(
strcmp
(
rlt
->
valuestring
,
value
->
valuestring
)
==
0
){
printf
(
"22222
\n
"
);
args
=
cJSON_GetArrayItem
(
d_valueRange
,
j
);
break
;
}
}
else
if
(
rlt
->
type
==
cJSON_Number
){
printf
(
"44444
\n
"
);
if
(
rlt
->
valueint
==
value
->
valueint
)
{
printf
(
"33333
\n
"
);
args
=
cJSON_GetArrayItem
(
d_valueRange
,
j
);
break
;
}
...
...
@@ -329,8 +327,52 @@ cJSON *map_type_convert(cJSON *s_dataType,cJSON *s_valueRange,cJSON *value,cJSON
void
add_val_to_obj
(
cJSON
*
obj
,
cJSON
*
val
,
const
char
*
identifier
)
{
if
(
val
->
type
==
cJSON_False
){
cJSON_AddFalseToObject
(
obj
,
identifier
);
}
else
if
(
val
->
type
==
cJSON_True
){
cJSON_AddTrueToObject
(
obj
,
identifier
);
}
else
if
(
val
->
type
==
cJSON_NULL
){
cJSON_AddNullToObject
(
obj
,
identifier
);
}
else
if
(
val
->
type
==
cJSON_Number
){
cJSON_AddNumberToObject
(
obj
,
identifier
,
val
->
valuedouble
);
}
else
if
(
val
->
type
==
cJSON_String
){
cJSON_AddStringToObject
(
obj
,
identifier
,
val
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_Array
){
printf
(
"......................
\n
"
);
}
}
cJSON
*
ccu_value_convert
(
cJSON
*
s_dType
,
cJSON
*
s_range
,
cJSON
*
d_dType
,
cJSON
*
d_range
,
cJSON
*
value
)
{
cJSON
*
val
=
NULL
;
printf
(
"[ccu val convert] s_dType=%s,s_range=%s,d_dType=%s,d_range=%s,value=%s
\n
"
,
cJSON_Print
(
s_dType
),
cJSON_Print
(
s_range
),
cJSON_Print
(
d_dType
),
cJSON_Print
(
d_range
),
cJSON_Print
(
value
));
if
(
strcmp
(
d_dType
->
valuestring
,
"map"
)
==
0
){
val
=
map_type_convert
(
s_dType
,
s_range
,
value
,
d_range
);
}
else
{
val
=
msg_convert_value
(
d_dType
,
s_dType
,
value
);
}
//printf("[val]%s\n",cJSON_Print(val));
return
val
;
}
int
kk_lan_get_msg_id
(
void
)
{
static
int
id
;
return
++
id
;
}
int
kk_lan_get_msg_id_str
(
char
*
msgId
,
int
size
)
{
memset
(
msgId
,
0
,
size
);
snprintf
(
msgId
,
size
,
"%d"
,
kk_lan_get_msg_id
());
}
...
...
application/klansdk/kk_ccu_msg.h
View file @
570bd950
...
...
@@ -10,6 +10,32 @@
#include "kk_data_mng.h"
#include "cJSON.h"
#define WILDCARD_CHARACTER_STR "*"
#define SUCCESS_STR "success"
#define GUARD_STATUS_ARMING_LEAVE_HOME "ARMING_LEAVE_HOME"
#define GUARD_STATUS_DISARMING "DISARMING"
#define GUARD_STATUS_ARMING_IN_HOME "ARMING_IN_HOME"
#define EMPTY_STR ""
#define FLOOR_ID_STR "floor_id"
#define ID_STR "id"
#define ROOM_ICON_STR "room_icon"
#define NAME_STR "name"
#define ROOM_STATUS_STR "room_status"
#define DATA_STR "data"
#define ROOMS_STR "rooms"
#define ROOMS_ID_STR "roomId"
#define DEVICES_STR "devices"
#define SCENES_STR "scenes"
#define ACTIONS_STR "actions"
#define ENABLE_STR "enable"
#define SCENE_ID_STR "sceneId"
#define SCENE_TYPE_STR "sceneType"
#define SCENE_TRIGGER_STR "trigger"
#define CONDITION_STR "condition"
...
...
@@ -17,6 +43,7 @@
#define SWITCH_ARG_ON "ON"
#define SWITCH_ARG_OFF "OFF"
#define HJ_SERVER "HJ_Server"
#define HJ_PROFILE "HJ_Profile"
#define SUCCESS_STATUS_STR "success"
...
...
@@ -33,13 +60,19 @@
#define KK_LAN_VERSION "1.0.0"
cJSON
*
msg_convert_value
(
cJSON
*
d_type
,
cJSON
*
s_type
,
cJSON
*
value
);
cJSON
*
map_type_convert
(
cJSON
*
s_dataType
,
cJSON
*
s_valueRange
,
cJSON
*
value
,
cJSON
*
d_valueRange
);
int
kk_lan_get_msg_id
(
void
);
int
kk_lan_get_msg_id_str
(
char
*
msgId
,
int
size
);
void
add_val_to_obj
(
cJSON
*
obj
,
cJSON
*
val
,
const
char
*
identifier
);
cJSON
*
ccu_value_convert
(
cJSON
*
s_dType
,
cJSON
*
s_range
,
cJSON
*
d_dType
,
cJSON
*
d_range
,
cJSON
*
value
);
#endif
...
...
application/klansdk/kk_data_handle.c
View file @
570bd950
...
...
@@ -16,6 +16,7 @@
#include "com_api.h"
#include "kk_data_mng.h"
#include "kk_lan_ctrl.h"
#include "kk_lan_sync.h"
const
char
DM_MSG_TO_MIDDWARE
[]
=
"{
\"
msgtype
\"
:
\"
%s
\"
,
\"
productCode
\"
:
\"
%s
\"
,
\"
deviceCode
\"
:
\"
%s
\"
}"
;
char
*
strrpl
(
char
*
in
,
char
*
out
,
int
outlen
,
char
*
src
,
char
*
dst
)
...
...
@@ -132,26 +133,7 @@ static int kk_send_ack(cJSON *root,int sockfd)
free
(
tmpBuf
);
return
0
;
}
static
int
_kk_send_data_to_sdk
(
char
*
nodeid
,
char
*
opcode
,
cJSON
*
arg
)
{
cJSON
*
root
;
char
*
out
=
NULL
;
root
=
cJSON_CreateObject
();
if
(
root
){
cJSON_AddStringToObject
(
root
,
"nodeid"
,
nodeid
);
cJSON_AddStringToObject
(
root
,
"opcode"
,
opcode
);
cJSON_AddStringToObject
(
root
,
"status"
,
"success"
);
cJSON_AddItemToObject
(
root
,
"arg"
,
arg
);
out
=
cJSON_Print
(
root
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"out:%s
\n
"
,
out
);
cJSON_Minify
((
char
*
)
out
);
kk_send_data_to_sdk
(
out
);
}
cJSON_Delete
(
root
);
return
0
;
}
static
int
kk_heartbeat_ack
(
int
sockfd
)
{
cJSON
*
root
;
...
...
@@ -380,27 +362,21 @@ static int kk_parse_syncinfo(cJSON *payload)
cJSON
*
newccuItem
;
cJSON
*
valuejson
;
int
value
;
printf
(
"
\n\n\n
00000000000000000000000000000000000000
\n\n\n
"
);
kk_map_dev_deinit
();
printf
(
"
\n\n\n
11111111111111111111111111111111111
\n\n\n
"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_map_dev_node_t
*
node
=
NULL
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_map_dev_deinit
();
paramStr
=
cJSON_GetObjectItem
(
payload
,
DATA_STRING
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
paramStr
==
NULL
)
return
-
1
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
dataStr
=
cJSON_GetObjectItem
(
paramStr
,
DATA_STRING
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
dataStr
==
NULL
)
return
-
1
;
gwdevices
=
cJSON_GetObjectItem
(
dataStr
,
DEVICES_STRING
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
gwdevices
==
NULL
)
return
-
1
;
gwitem
=
gwdevices
->
child
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"
\n\n
222222222222222222222222222222222
\n\n\n
"
);
while
(
gwitem
!=
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
subdevices
=
cJSON_GetObjectItem
(
gwitem
,
DEVICES_STRING
);
gwdevicecode
=
cJSON_GetObjectItem
(
gwitem
,
MSG_DEVICE_CODE_STR
)
->
valuestring
;
...
...
@@ -410,25 +386,20 @@ static int kk_parse_syncinfo(cJSON *payload)
while
(
subitem
!=
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
deviceCode
=
cJSON_GetObjectItem
(
subitem
,
MSG_DEVICE_CODE_STR
)
->
valuestring
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
productCode
=
cJSON_GetObjectItem
(
subitem
,
MSG_PRODUCT_CODE_STR
)
->
valuestring
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
onlineStatus
=
cJSON_GetObjectItem
(
subitem
,
MSG_ONLINE_STATUS_STR
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
properties
=
cJSON_GetObjectItem
(
subitem
,
MSG_PROPERTIES_STR
);
onlineStatus
=
cJSON_GetObjectItem
(
subitem
,
MSG_ONLINE_STATUS_STR
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
properties
=
cJSON_GetObjectItem
(
subitem
,
MSG_PROPERTIES_STR
);
node
=
kk_map_dev_add
(
deviceCode
,
productCode
,
gwdevicecode
,
onlineStatus
->
valuestring
);
kk_map_dev_node_add
(
deviceCode
,
productCode
,
gwdevicecode
,
onlineStatus
->
valuestring
);
property_syn_deal
(
deviceCode
,
properties
);
...
...
@@ -436,175 +407,97 @@ static int kk_parse_syncinfo(cJSON *payload)
subitem
=
subitem
->
next
;
}
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
gwitem
=
gwitem
->
next
;
}
printf
(
"
\n\n
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\n\n\n
"
);
return
0
;
}
static
int
kk_create_floors_to_sdk
(
cJSON
*
root
)
{
cJSON
*
floors
=
cJSON_CreateArray
();
cJSON
*
floorItem
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
floorItem
,
"floor_icon"
,
""
);
cJSON_AddStringToObject
(
floorItem
,
"floor_pos"
,
"1"
);
cJSON_AddStringToObject
(
floorItem
,
"id"
,
"1"
);
cJSON_AddStringToObject
(
floorItem
,
"name"
,
"一楼"
);
cJSON_AddItemToArray
(
floors
,
floorItem
);
cJSON_AddItemToObject
(
root
,
"floors"
,
floors
);
return
0
;
}
static
int
kk_create_roominfo_to_sdk
(
cJSON
*
root
)
{
cJSON
*
rooms
=
cJSON_CreateArray
();
cJSON
*
roomsItem
=
cJSON_CreateObject
();
cJSON
*
room_status
;
cJSON_AddStringToObject
(
roomsItem
,
"floor_id"
,
"1"
);
cJSON_AddStringToObject
(
roomsItem
,
"id"
,
"1"
);
cJSON_AddStringToObject
(
roomsItem
,
"room_icon"
,
""
);
cJSON_AddStringToObject
(
roomsItem
,
"name"
,
"卧室"
);
room_status
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
roomsItem
,
"room_status"
,
room_status
);
cJSON_AddItemToArray
(
rooms
,
roomsItem
);
cJSON_AddItemToObject
(
root
,
"rooms"
,
rooms
);
return
0
;
}
static
int
kk_create_scene_to_sdk
(
cJSON
*
root
)
{
cJSON
*
scenes
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"scenes"
,
scenes
);
return
0
;
}
int
kk_create_syncinfo_to_sdk
(
cJSON
*
payload
)
{
cJSON
*
air_box_devices
;
cJSON
*
alarms
;
cJSON
*
ccu_link_status
;
cJSON
*
link_arg
;
cJSON
*
ccu_version
;
cJSON
*
central_ac_gws
;
cJSON
*
central_ac_indoorunits
;
cJSON
*
cnwise_music_controllers
;
cJSON
*
code_lib_controllers
;
cJSON
*
controllers
;
cJSON
*
expand_rules
;
cJSON
*
group
;
cJSON
*
guard
;
cJSON
*
gw_version
;
char
*
out
=
NULL
;
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
aiks_controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"aiks_controllers"
,
aiks_controllers
);
air_box_devices
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"air_box_devices"
,
air_box_devices
);
alarms
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"alarms"
,
alarms
);
ccu_link_status
=
cJSON_CreateObject
();
link_arg
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
ccu_link_status
,
"link_arg"
,
link_arg
);
cJSON_AddStringToObject
(
ccu_link_status
,
"link_type"
,
"broadband_net"
);
cJSON_AddItemToObject
(
root
,
"ccu_link_status"
,
ccu_link_status
);
ccu_version
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
ccu_version
,
"cur_ccu_version"
,
"1.0.0"
);
cJSON_AddStringToObject
(
ccu_version
,
"downloaded_ccu_version"
,
"1.0.0"
);
cJSON_AddItemToObject
(
root
,
"ccu_version"
,
ccu_version
);
central_ac_gws
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"central_ac_gws"
,
central_ac_gws
);
central_ac_indoorunits
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"central_ac_indoorunits"
,
central_ac_indoorunits
);
cnwise_music_controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"cnwise_music_controllers"
,
cnwise_music_controllers
);
code_lib_controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"code_lib_controllers"
,
code_lib_controllers
);
controllers
=
cJSON_CreateArray
();
cJSON_AddItemToObject
(
root
,
"controllers"
,
controllers
);
kk_create_devicestatus_to_sdk
(
root
);
kk_create_devices_to_sdk
(
root
);
kk_create_rooms_to_sdk
(
root
);
#if 1
expand_rules
=
cJSON_CreateArray
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddItemToObject
(
root
,
"expand_rules"
,
expand_rules
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_create_floors_to_sdk
(
root
);
group
=
cJSON_CreateArray
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddItemToObject
(
root
,
"group"
,
group
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
guard
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
"guard"
,
guard
);
gw_version
=
cJSON_CreateObject
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddItemToObject
(
root
,
"gw_version"
,
gw_version
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_create_roominfo_to_sdk
(
root
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_create_scene_to_sdk
(
root
);
#endif
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
out
=
cJSON_Print
(
root
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"out:%s
\n
"
,
out
);
_kk_send_data_to_sdk
(
"*"
,
"SYNC_INFO"
,
root
);
int
is_ccu_msg
(
cJSON
*
productCode
,
cJSON
*
deviceCode
)
{
if
((
strlen
(
productCode
->
valuestring
)
==
strlen
(
KK_CCU_PRODUCTID
)
&&
!
strcmp
(
productCode
->
valuestring
,
KK_CCU_PRODUCTID
))
&&
(
strlen
(
deviceCode
->
valuestring
)
==
strlen
(
KK_CCU_ID
)
&&
!
strcmp
(
deviceCode
->
valuestring
,
KK_CCU_ID
))){
return
1
;
}
return
0
;
}
int
is_arming_status_notify
(
cJSON
*
payload
)
{
cJSON
*
params
=
NULL
;
cJSON
*
ArmingState
=
NULL
;
if
((
params
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
))
!=
NULL
){
if
((
ArmingState
=
cJSON_GetObjectItem
(
payload
,
"ArmingState"
))
!=
NULL
){
if
(
ArmingState
->
type
==
cJSON_String
&&
ArmingState
->
valuestring
!=
NULL
){
return
atoi
(
ArmingState
->
valuestring
);
}
}
}
return
-
1
;
}
void
KK_Data_FromMid
(
void
*
str
,
int
len
)
{
cJSON
*
json
;
cJSON
*
info_root
;
cJSON
*
payload
,
*
typeJson
;
cJSON
*
deviceCode
;
cJSON
*
info
,
*
payload
;
cJSON
*
msgtype
,
*
deviceCode
,
*
productCode
;
printf
(
"[midware->lan]
:%s
\n
"
,
str
);
printf
(
"[midware->lan]
len=%d,data=%s
\n
"
,
len
,
str
);
json
=
cJSON_Parse
(
str
);
if
(
json
==
NULL
){
if
((
json
=
cJSON_Parse
(
str
))
==
NULL
)
{
return
;
}
info_root
=
cJSON_GetObjectItem
(
json
,
MSG_INFO_STR
);
if
(
info_root
==
NULL
)
return
;
info
=
cJSON_GetObjectItem
(
json
,
MSG_INFO_STR
);
payload
=
cJSON_GetObjectItem
(
json
,
MSG_PAYLOAD_STR
);
if
(
payload
==
NULL
)
return
;
if
(
info
==
NULL
||
payload
==
NULL
||
info
->
type
!=
cJSON_Object
||
payload
->
type
!=
cJSON_Object
){
return
;
}
deviceCode
=
cJSON_GetObjectItem
(
info_root
,
MSG_DEVICE_CODE_STR
);
msgtype
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
productCode
=
cJSON_GetObjectItem
(
info
,
MSG_PRODUCT_CODE_STR
);
deviceCode
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
;
if
(
msgtype
==
NULL
||
productCode
==
NULL
||
deviceCode
==
NULL
||
msgtype
->
type
!=
cJSON_String
||
productCode
->
type
!=
cJSON_String
||
deviceCode
->
type
!=
cJSON_String
||
msgtype
->
valuestring
==
NULL
||
productCode
->
valuestring
==
NULL
||
deviceCode
->
valuestring
==
NULL
){
typeJson
=
cJSON_GetObjectItem
(
info_root
,
MSG_TYPE_STR
);
return
;
}
if
(
typeJson
==
NULL
)
return
;
if
(
strstr
(
typeJson
->
valuestring
,
SYNC_MSG_TYPE_REPLY
)
!=
NULL
){
if
(
strstr
(
msgtype
->
valuestring
,
SYNC_MSG_TYPE_REPLY
)
!=
NULL
){
kk_parse_syncinfo
(
payload
);
kk_create_syncinfo_to_sdk
(
payload
);
printf
(
"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
\n
"
);
}
else
if
(
strstr
(
typeJson
->
valuestring
,
"/thing/event/property/post"
)
!=
NULL
){
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/event/property/post"
)
!=
NULL
){
if
(
is_ccu_msg
(
productCode
,
deviceCode
)){
int
type
;
if
((
type
=
is_arming_status_notify
(
payload
))
!=-
1
){
arming_status_notify
(
type
);
}
}
else
{
property_post_deal
(
deviceCode
->
valuestring
,
payload
);
}
else
if
(
strstr
(
typeJson
->
valuestring
,
"/thing/topo/delete"
)
!=
NULL
){
}
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/topo/delete"
)
!=
NULL
){
device_delete_sync
(
payload
);
}
else
if
(
strstr
(
typeJson
->
valuestring
,
"/thing/status/online"
)
!=
NULL
){
}
else
if
(
strstr
(
msgtype
->
valuestring
,
"/thing/status/online"
)
!=
NULL
){
device_add_sync
(
payload
);
}
}
...
...
application/klansdk/kk_data_handle.h
View file @
570bd950
...
...
@@ -5,5 +5,6 @@
#include "cJSON.h"
#include "kk_product.h"
int
kk_data_handle
(
cJSON
*
json
,
int
sockfd
);
void
kk_handle_sync_info
(
void
);
void
KK_Data_FromMid
(
void
*
str
,
int
len
);
#endif
\ No newline at end of file
application/klansdk/kk_data_mng.c
View file @
570bd950
...
...
@@ -4,6 +4,9 @@
#include <string.h>
#include "kk_data_mng.h"
#include "kk_lan_node_db.h"
#include "kk_oldccu_msg.h"
static
kk_map_dev_ctx
g_map_dev_mgr
=
{
0
};
...
...
@@ -50,10 +53,10 @@ void kk_map_dev_deinit(void)
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
_kk_map_dev_mutex_lock
();
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
printf
(
"[remove list] node->linked_list000000000
\n
"
);
if
(
node
!=
NULL
)
{
_kk_map_dev_mutex_lock
();
if
(
node
->
json
){
printf
(
"[delete cjson] node->json.
\n
"
);
...
...
@@ -67,126 +70,154 @@ void kk_map_dev_deinit(void)
printf
(
"[remove list] node->linked_list
\n
"
);
dlist_del
(
&
node
->
linked_list
);
memset
(
node
,
0
,
sizeof
(
kk_map_dev_node_t
));
}
}
_kk_map_dev_mutex_unlock
();
}
static
kk_map_dev_node_t
*
kk_map_dev_node_create
(
const
char
*
deviceCode
,
const
char
*
productCode
,
const
char
*
gwdeviceCode
,
const
char
*
onlineStatus
,
char
*
buf
)
{
kk_map_dev_node_t
*
node
=
NULL
;
cJSON
*
json
=
NULL
;
cJSON
*
newccu
=
NULL
,
*
oldccu
=
NULL
,
*
channel
=
NULL
,
*
optype
=
NULL
;
cJSON
*
syn_type
=
NULL
,
*
syn_opcode
=
NULL
;
node
=
malloc
(
sizeof
(
kk_map_dev_node_t
));
if
(
node
==
NULL
)
{
return
NULL
;
}
memset
(
node
,
0x0
,
sizeof
(
kk_map_dev_node_t
));
json
=
cJSON_Parse
(
buf
);
if
(
json
==
NULL
){
free
(
buf
);
return
NULL
;
}
node
->
json
=
json
;
optype
=
cJSON_GetObjectItem
(
json
,
OPEARTETYPE_STRING
);
channel
=
cJSON_GetObjectItem
(
json
,
CHANNEL_STRING
);
newccu
=
cJSON_GetObjectItem
(
json
,
NEWCCU_STRING
);
oldccu
=
cJSON_GetObjectItem
(
json
,
OLDCCU_STRING
);
syn_type
=
cJSON_GetObjectItem
(
json
,
"syn_type"
);
syn_opcode
=
cJSON_GetObjectItem
(
json
,
"syn_opcode"
);
if
(
optype
==
NULL
||
optype
->
type
!=
cJSON_String
||
channel
==
NULL
||
channel
->
type
!=
cJSON_Number
){
goto
err
;
}
if
(
newccu
==
NULL
||
newccu
->
type
!=
cJSON_Array
||
oldccu
==
NULL
||
oldccu
->
type
!=
cJSON_Array
){
goto
err
;
}
if
(
syn_type
!=
NULL
){
if
(
syn_type
->
type
==
cJSON_Number
){
if
(
syn_opcode
==
NULL
||
syn_opcode
->
type
!=
cJSON_String
){
goto
err
;
}
}
else
{
goto
err
;
}
}
memcpy
(
node
->
gwDeviceCode
,
gwdeviceCode
,
strlen
(
gwdeviceCode
));
memcpy
(
node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
));
memcpy
(
node
->
productCode
,
productCode
,
strlen
(
productCode
));
node
->
online_status
=
(
strcmp
(
onlineStatus
,
"1"
)
==
0
)
?
1
:
0
;
memcpy
(
node
->
opearteType
,
optype
->
valuestring
,
strlen
(
optype
->
valuestring
));
node
->
channelNum
=
channel
->
valueint
;
node
->
newccu
=
newccu
;
node
->
oldccu
=
oldccu
;
if
(
syn_type
){
node
->
syn_type
=
syn_type
->
valueint
;
node
->
syn_opcode
=
(
char
*
)
malloc
(
strlen
(
syn_opcode
->
valuestring
)
+
1
);
memset
(
node
->
syn_opcode
,
0
,
strlen
(
node
->
syn_opcode
)
+
1
);
memcpy
(
node
->
syn_opcode
,
syn_opcode
->
valuestring
,
strlen
(
syn_opcode
->
valuestring
));
}
free
(
buf
);
return
node
;
err:
free
(
buf
);
return
NULL
;
}
static
int
kk_open_cfg_file
(
char
*
deviceCode
,
kk_map_dev_node_t
*
n
ode
)
static
char
*
kk_open_lan_cfg_file
(
char
*
deviceC
ode
)
{
char
path
[
128
]
=
{
0
};
unsigned
int
filesize
;
FILE
*
fp
;
char
*
buf
=
NULL
;
cJSON
*
json
=
NULL
;
cJSON
*
optype
=
NULL
;
cJSON
*
syn_type
=
NULL
;
sprintf
(
path
,
KK_DEVICE_MAP_FILE_PATH
,
deviceCode
);
snprintf
(
path
,
sizeof
(
path
),
KK_DEVICE_MAP_FILE_PATH
,
deviceCode
);
printf
(
"kk_open_cfg_file path:%s
\n
"
,
path
);
if
(
!
(
fp
=
fopen
(
path
,
"r"
)))
{
ERROR_PRINT
(
"can't open the file tslPath:%s
\n
"
,
path
);
return
-
1
;
return
NULL
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
fseek
(
fp
,
0L
,
SEEK_END
);
filesize
=
ftell
(
fp
);
buf
=
malloc
(
filesize
+
1
);
if
(
buf
==
NULL
)
{
ERROR_PRINT
(
"MALLOC FAIL!!!
\n
"
);
fclose
(
fp
);
return
-
1
;
return
NULL
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
memset
(
buf
,
0x0
,
filesize
+
1
);
fseek
(
fp
,
0L
,
SEEK_SET
);
fread
(
buf
,
1
,
filesize
,
fp
);
printf
(
"buf:%s
\n
"
,
buf
);
json
=
cJSON_Parse
(
buf
);
if
(
json
==
NULL
){
ERROR_PRINT
(
"cJSON_Parse FAIL!!!
\n
"
);
free
(
buf
);
fclose
(
fp
);
return
-
1
;
}
node
->
json
=
json
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
optype
=
cJSON_GetObjectItem
(
json
,
OPEARTETYPE_STRING
);
if
(
optype
!=
NULL
){
memcpy
(
node
->
opearteType
,
optype
->
valuestring
,
strlen
(
optype
->
valuestring
));
}
syn_type
=
cJSON_GetObjectItem
(
json
,
"syn_type"
);
if
(
syn_type
){
cJSON
*
syn_opcode
=
cJSON_GetObjectItem
(
json
,
"syn_opcode"
);
node
->
syn_type
=
syn_type
->
valueint
;
node
->
syn_opcode
=
(
char
*
)
malloc
(
strlen
(
syn_opcode
->
valuestring
)
+
1
);
memset
(
node
->
syn_opcode
,
0
,
strlen
(
node
->
syn_opcode
)
+
1
);
memcpy
(
node
->
syn_opcode
,
syn_opcode
->
valuestring
,
strlen
(
syn_opcode
->
valuestring
));
}
printf
(
"[%s][%d]node->syn_type=%d****************
\n
"
,
__FUNCTION__
,
__LINE__
,
node
->
syn_type
);
printf
(
"[read lan cfg]:%s
\n
"
,
buf
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
node
->
channelNum
=
cJSON_GetObjectItem
(
json
,
CHANNEL_STRING
)
->
valueint
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
node
->
newccu
=
cJSON_GetObjectItem
(
json
,
NEWCCU_STRING
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
node
->
oldccu
=
cJSON_GetObjectItem
(
json
,
OLDCCU_STRING
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
node
->
newccu
==
NULL
||
node
->
oldccu
==
NULL
){
ERROR_PRINT
(
"cJSON_Parse DATA FAIL!!!
\n
"
);
free
(
buf
);
fclose
(
fp
);
return
-
1
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
free
(
buf
);
fclose
(
fp
);
return
0
;
return
buf
;
}
//todo:
int
kk_creater_nodeid
(
char
*
deviceCode
,
int
channel
,
char
*
nodeId
)
{
static
int
next
=
1
;
int
node
=-
1
;
if
(
deviceCode
==
NULL
||
channel
==
NULL
||
nodeId
==
NULL
){
printf
(
"bbb
\n
"
);
if
(
deviceCode
==
NULL
||
nodeId
==
NULL
){
return
-
1
;
}
printf
(
"aaa
\n
"
);
printf
(
"channel=%d
\n
"
,
channel
);
printf
(
"deviceCode=%s
\n
"
,
deviceCode
);
printf
(
",,,,
\n
"
);
INFO_PRINT
(
"-------------->deviceCode=%s,channel=%d
\n
"
,
deviceCode
,
channel
);
printf
(
"aaa-1
\n
"
);
if
(
kk_check_lan_node_exist
(
deviceCode
,
channel
)){
printf
(
"aaa-2
\n
"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
node
=
kk_lan_db_node_get
(
deviceCode
,
channel
);
}
else
{
printf
(
"aaa-3
\n
"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
while
(
kk_check_lan_node
(
next
)){
++
next
;
}
INFO_PRINT
(
"#################next=%d
\n
"
,
next
);
if
(
0
==
kk_lan_db_node_insert
(
deviceCode
,
channel
,
next
)){
node
=
next
;
}
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"aaa-44,node=%d
\n
"
,
node
);
sprintf
(
nodeId
,
"%d"
,
node
);
printf
(
"aaa-4
\n
"
);
INFO_PRINT
(
"[node]deviceCode=%s,channel=%d,node=%d,nodeId=%s
\n
"
,
deviceCode
,
channel
,
node
,
nodeId
);
return
0
;
...
...
@@ -280,170 +311,43 @@ int _deviceCode_switchto_mac(char * deviceCode,char *mac)
}
typedef
struct
{
char
*
floor_id
;
char
*
room_id
;
char
*
room_icon
;
char
*
room_name
;
cJSON
*
room_status
;
}
ROOM_ITEM
;
cJSON
*
_room_build
(
ROOM_ITEM
*
item
)
{
cJSON
*
room
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
room
,
"floor_id"
,
item
->
floor_id
);
cJSON_AddStringToObject
(
room
,
"id"
,
item
->
room_id
);
cJSON_AddStringToObject
(
room
,
"room_icon"
,
item
->
room_icon
);
cJSON_AddStringToObject
(
room
,
"name"
,
item
->
room_name
);
cJSON_AddItemToObject
(
room
,
"room_status"
,
item
->
room_status
);
return
room
;
}
cJSON
*
_rooms_build
(
int
num
,
ROOM_ITEM
**
items
)
{
cJSON
*
rooms
=
cJSON_CreateArray
();
cJSON
*
room
;
int
i
;
for
(
int
i
=
0
;
i
<
num
;
i
++
){
room
=
_room_build
(
items
[
i
]);
if
(
room
!=
NULL
){
cJSON_AddItemToArray
(
rooms
,
room
);
}
}
return
rooms
;
}
cJSON
*
kk_create_rooms_to_sdk
(
cJSON
*
payload
)
{
cJSON
*
data_1
=
cJSON_GetObjectItem
(
payload
,
"data"
);
cJSON
*
data_2
=
cJSON_GetObjectItem
(
data_1
,
"data"
);
cJSON
*
rooms
=
cJSON_GetObjectItem
(
data_2
,
"rooms"
);
cJSON
*
room
;
cJSON
*
roomId
,
*
name
,
*
devices
,
*
scenes
;
int
i
;
int
num
=
cJSON_GetArraySize
(
rooms
);
ROOM_ITEM
*
items
=
(
ROOM_ITEM
*
)
malloc
(
sizeof
(
ROOM_ITEM
)
*
num
);
ROOM_ITEM
*
item
=
item
;
memset
(
items
,
0
,(
sizeof
(
ROOM_ITEM
)
*
num
));
for
(
i
=
0
;
i
<
num
;
i
++
,
item
++
){
room
=
cJSON_GetArrayItem
(
rooms
,
i
);
roomId
=
cJSON_GetObjectItem
(
room
,
"roomId"
);
name
=
cJSON_GetObjectItem
(
room
,
"name"
);
devices
=
cJSON_GetObjectItem
(
room
,
"devices"
);
scenes
=
cJSON_GetObjectItem
(
room
,
"scenes"
);
memcpy
(
item
->
floor_id
,
""
,
sizeof
(
""
));
memcpy
(
item
->
room_id
,
roomId
->
valuestring
,
sizeof
(
roomId
->
valuestring
));
memcpy
(
item
->
room_icon
,
""
,
sizeof
(
""
));
memcpy
(
item
->
room_name
,
name
->
valuestring
,
sizeof
(
name
->
valuestring
));
memcpy
(
item
->
room_status
,
""
,
sizeof
(
""
));
}
_rooms_build
(
num
,
&
items
);
}
int
kk_create_devices_to_sdk
(
cJSON
*
root
)
{
kk_map_dev_node_t
*
node
=
NULL
;
char
nodeid
[
32
]
=
{
0
};
char
gwmac
[
32
]
=
{
0
};
char
submac
[
32
]
=
{
0
};
char
channel
[
4
];
int
idx
=
1
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
cJSON
*
devices
=
cJSON_CreateArray
();
list_for_each_entry
(
node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
if
(
node
!=
NULL
)
{
for
(
idx
=
1
;
idx
<=
node
->
channelNum
;
idx
++
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
sprintf
(
channel
,
"%d"
,
idx
);
cJSON_AddStringToObject
(
subdevicesItem
,
CHANNEL_STRING
,
channel
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_FIELD_STRING
,
""
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_FIELD_IDNDEX_STRING
,
"1"
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_ICON_STRING
,
""
);
cJSON_AddStringToObject
(
subdevicesItem
,
DEVICE_POS_STRING
,
"1"
);
_deviceCode_switchto_mac
(
node
->
gwDeviceCode
,
gwmac
);
printf
(
"gwmac:%s
\n
"
,
gwmac
);
cJSON_AddStringToObject
(
subdevicesItem
,
GW_MAC_STRING
,
gwmac
);
_deviceCode_switchto_mac
(
node
->
deviceCode
,
submac
);
cJSON_AddStringToObject
(
subdevicesItem
,
MAC_STRING
,
submac
);
//todo name字段
cJSON_AddStringToObject
(
subdevicesItem
,
NAME_STRING
,
"默认灯"
);
memset
(
nodeid
,
0x0
,
sizeof
(
nodeid
));
kk_creater_nodeid
(
node
->
deviceCode
,
idx
,
nodeid
);
cJSON_AddStringToObject
(
subdevicesItem
,
NODEID_STRING
,
nodeid
);
cJSON_AddStringToObject
(
subdevicesItem
,
OPERATE_TYPE_STRING
,
node
->
opearteType
);
cJSON_AddStringToObject
(
subdevicesItem
,
ROOM_ID_STRING
,
"1"
);
cJSON_AddItemToArray
(
devices
,
subdevicesItem
);
}
}
}
cJSON_AddItemToObject
(
root
,
DEVICES_STRING
,
devices
);
return
0
;
}
char
*
double_value_string
(
double
val
)
{
char
*
value
=
(
char
*
)
malloc
(
33
);
memset
(
value
,
0
,
33
);
snprintf
(
value
,
32
,
"%6f"
,
val
);
return
value
;
}
int
kk_create_devicestatus_to_sdk
(
cJSON
*
root
)
{
kk_map_dev_node_t
*
node
=
NULL
;
char
nodeid
[
32
]
=
{
0
};
char
indxId
[
4
]
=
{
0
};
int
idx
=
1
;
int
syn_type
=
0
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
cJSON
*
device_status
=
cJSON_CreateArray
();
cJSON
*
args
;
cJSON
*
sub_device
;
kk_map_dev_node_t
*
n
=
NULL
;
list_for_each_entry_safe
(
node
,
n
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
){
if
(
node
->
syn_type
==
1
){
kk_creater_nodeid
(
node
->
deviceCode
,
1
,
nodeid
);
if
((
args
=
kk_devicestatus_build
(
node
))
!=
NULL
){
sub_device
=
old_ccu_msg_build_json_node_int
(
atoi
(
nodeid
),
node
->
syn_opcode
,
NULL
,
args
);
if
(
sub_device
){
cJSON_AddItemToArray
(
device_status
,
sub_device
);
}
}
}
else
{
kk_devicestatus_build_aaa
(
device_status
,
node
);
}
}
cJSON_AddItemToObject
(
root
,
DEVICE_STATUS_STRING
,
device_status
);
char
*
double_value_string
(
double
val
)
{
char
*
value
=
(
char
*
)
malloc
(
33
);
memset
(
value
,
0
,
33
);
return
0
;
snprintf
(
value
,
32
,
"%6f"
,
val
);
return
value
;
}
...
...
@@ -451,6 +355,11 @@ int kk_create_devicestatus_to_sdk(cJSON *root)
int
kk_map_dev_update_int_value
(
kk_map_dev_node_t
*
node
,
char
*
identifier
,
int
val
)
{
int
ret
=
0
;
...
...
@@ -516,74 +425,36 @@ int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node)
kk_map_dev_node_t
*
kk_map_dev_
add
(
char
*
deviceCode
,
char
*
productCode
,
char
*
gwdeviceCode
,
char
*
onlineStatus
)
kk_map_dev_node_t
*
kk_map_dev_
node_add
(
const
char
*
deviceCode
,
const
char
*
productCode
,
const
char
*
gwdeviceCode
,
const
char
*
onlineStatus
)
{
#if 1
kk_map_dev_node_t
*
node
=
NULL
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
char
*
buf
=
NULL
;
node
=
malloc
(
sizeof
(
kk_map_dev_node_t
));
if
(
node
==
NULL
)
{
if
(
deviceCode
==
NULL
||
productCode
==
NULL
||
gwdeviceCode
==
NULL
||
onlineStatus
==
NULL
){
return
NULL
;
}
printf
(
"----------------------------------------->%s
\n
"
,
onlineStatus
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
_kk_map_dev_mutex_lock
();
printf
(
"[%s][%d]%d
\n
"
,
__FUNCTION__
,
__LINE__
,
onlineStatus
);
memset
(
node
,
0x0
,
sizeof
(
kk_map_dev_node_t
));
printf
(
"[%s][%d]%d
\n
"
,
__FUNCTION__
,
__LINE__
,
onlineStatus
);
memcpy
(
node
->
gwDeviceCode
,
gwdeviceCode
,
strlen
(
gwdeviceCode
));
printf
(
"[%s][%d]%d
\n
"
,
__FUNCTION__
,
__LINE__
,
onlineStatus
);
memcpy
(
node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
));
printf
(
"[%s][%d]%d
\n
"
,
__FUNCTION__
,
__LINE__
,
onlineStatus
);
memcpy
(
node
->
productCode
,
productCode
,
strlen
(
productCode
));
printf
(
"[%s][%d]%d
\n
"
,
__FUNCTION__
,
__LINE__
,
onlineStatus
);
if
(
onlineStatus
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]%d
\n
"
,
__FUNCTION__
,
__LINE__
,
onlineStatus
);
}
else
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
strcmp
(
onlineStatus
,
"1"
)
==
0
){
node
->
online_status
=
1
;
}
else
{
node
->
online_status
=
0
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_open_cfg_file
(
productCode
,
node
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
((
buf
=
kk_open_lan_cfg_file
(
productCode
))
!=
NULL
){
node
=
kk_map_dev_node_create
(
deviceCode
,
productCode
,
gwdeviceCode
,
onlineStatus
,
buf
);
if
(
node
){
INIT_LIST_HEAD
(
&
node
->
linked_list
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"#55,%d
\n
"
,
node
);
list_add_tail
(
&
node
->
linked_list
,
&
ctx
->
dev_list
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
}
}
_kk_map_dev_mutex_unlock
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
node
;
#endif
}
return
node
;
}
/*
int get_productCode_by_deviceCode(const char *deviceCode)
{
kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
kk_map_dev_node_t *search_node = NULL;
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) &&
(memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) {
item = kk_zb_dev_hw_info_build(search_node->deviceCode,search_node->productCode,search_node->online_status,NULL,NULL);
return item;
}
}
return NULL;
}
*/
...
...
application/klansdk/kk_data_mng.h
View file @
570bd950
...
...
@@ -28,12 +28,12 @@ typedef struct {
struct
list_head
dev_list
;
}
kk_map_dev_ctx
;
kk_map_dev_node_t
*
kk_map_dev_
add
(
char
*
deviceCode
,
char
*
productCode
,
char
*
gwdeviceCode
,
char
*
onlineStatus
);
kk_map_dev_node_t
*
kk_map_dev_
node_add
(
const
char
*
deviceCode
,
const
char
*
productCode
,
const
char
*
gwdeviceCode
,
const
char
*
onlineStatus
);
int
kk_create_devicestatus_to_sdk
(
cJSON
*
root
);
int
kk_create_devices_to_sdk
(
cJSON
*
root
);
int
_deviceCode_switchto_mac
(
char
*
deviceCode
,
char
*
mac
);
int
mac_switchto_deviceCode
(
char
*
mac
,
char
*
deviceCode
);
kk_map_dev_ctx
*
_kk_map_dev_ctx
(
void
);
int
kk_map_dev_init
(
void
);
#endif
\ No newline at end of file
application/klansdk/kk_lan_ctrl.c
View file @
570bd950
...
...
@@ -13,24 +13,6 @@
int
find_match_pos
(
cJSON
*
array
,
const
char
*
tag
,
const
char
*
match
)
{
int
i
=
0
;
int
pos
=
-
1
;
cJSON
*
item
;
cJSON
*
mh
;
int
size
=
cJSON_GetArraySize
(
array
);
for
(;
i
<
size
;
i
++
){
item
=
cJSON_GetArrayItem
(
array
,
i
);
mh
=
cJSON_GetObjectItem
(
item
,
tag
);
if
(
strcmp
(
mh
->
valuestring
,
match
)
==
0
){
pos
=
i
;
break
;
}
}
return
pos
;
}
int
match_opcode_pos
(
cJSON
*
array
,
const
char
*
opcode
,
int
ch
)
{
...
...
@@ -55,26 +37,9 @@ int match_opcode_pos(cJSON *array,const char *opcode,int ch)
}
int
match_value_string
(
cJSON
*
valueRange
,
const
char
*
val
)
{
cJSON
*
item
;
int
i
=
0
;
int
pos
=
-
1
;
int
size
=
cJSON_GetArraySize
(
valueRange
);
for
(;
i
<
size
;
i
++
){
item
=
cJSON_GetArrayItem
(
valueRange
,
i
);
if
(
strcmp
(
item
->
valuestring
,
val
)
==
0
){
pos
=
i
;
break
;
}
}
return
pos
;
}
cJSON
*
ctrl_conver
(
kk_map_dev_node_t
*
devNode
,
int
nodeId
,
cJSON
*
arg
,
cJSON
*
opcode
)
cJSON
*
kk_control_protocol_convert
(
kk_map_dev_node_t
*
devNode
,
int
nodeId
,
cJSON
*
arg
,
cJSON
*
opcode
)
{
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
val
;
...
...
@@ -89,6 +54,7 @@ cJSON * ctrl_conver(kk_map_dev_node_t *devNode,int nodeId,cJSON *arg,cJSON *opco
cJSON
*
o_valueRange
;
cJSON
*
n_identifier
;
cJSON
*
epNum
;
int
pos
;
int
channel
;
...
...
@@ -118,18 +84,17 @@ cJSON * ctrl_conver(kk_map_dev_node_t *devNode,int nodeId,cJSON *arg,cJSON *opco
n_dataType
=
cJSON_GetObjectItem
(
newccuItem
,
"dataType"
);
n_valueRange
=
cJSON_GetObjectItem
(
newccuItem
,
"valueRange"
);
n_identifier
=
cJSON_GetObjectItem
(
newccuItem
,
"identifier"
);
epNum
=
cJSON_GetObjectItem
(
newccuItem
,
"channel"
);
printf
(
"1111
\n
"
);
if
(
strcmp
(
o_dataType
->
valuestring
,
"map"
)
==
0
){
printf
(
"2222
\n
"
);
val
=
map_type_convert
(
o_dataType
,
o_valueRange
,
arg
,
n_valueRange
);
}
else
{
printf
(
"3333
\n
"
);
val
=
msg_convert_value
(
o_dataType
,
n_dataType
,
arg
);
}
printf
(
"4444-->%d
\n
"
,
val
->
type
);
printf
(
"----------->epNum=%s
\n
"
,
epNum
->
valuestring
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
->
valuestring
);
if
(
val
->
type
==
cJSON_False
){
cJSON_AddFalseToObject
(
params
,
n_identifier
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_True
){
...
...
@@ -144,73 +109,16 @@ cJSON * ctrl_conver(kk_map_dev_node_t *devNode,int nodeId,cJSON *arg,cJSON *opco
printf
(
"......................
\n
"
);
}
return
params
;
}
typedef
int
(
*
match_func
)(
cJSON
*
);
typedef
struct
{
char
*
Opcode
;
match_func
func
;
}
MATCH_ITEM_S
;
int
opcode_switch
(
cJSON
*
root
);
static
MATCH_ITEM_S
match_table
[]
=
{
{
SWITCH_OPCODE
,
opcode_switch
}
};
MATCH_ITEM_S
*
get_match_table
(
void
)
{
return
&
match_table
;
}
int
kk_ccu_opcode_handle
(
cJSON
*
root
)
{
int
i
;
//int size = sizeof(match_table)/sizeof(MATCH_ITEM_S);
cJSON
*
opcode
=
cJSON_GetObjectItem
(
root
,
OPCODE_STR
);
//MATCH_ITEM_S *pMh = get_match_table();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
opcode
==
NULL
||
opcode
->
type
!=
cJSON_String
){
return
-
1
;
}
/*for(i=0;i<size;i++,pMh++) {
if(strcmp(opcode->valuestring,pMh->Opcode)==0){
if(pMh->func){
printf("[%s][%d]match table[%d]\n",__FUNCTION__,__LINE__,i);
pMh->func(root);
}
}
}*/
opcode_switch
(
root
);
}
//向midware发送数据
int
kk_ipc_send_json
(
cJSON
*
root
)
{
char
*
msg
;
if
(
root
==
NULL
){
return
-
1
;
}
msg
=
cJSON_Print
(
root
);
printf
(
"[lan->midware]json:
\n
%s
\n
"
,
msg
);
cJSON_Minify
(
msg
);
kk_ipc_send
(
IPC_APP2MID
,
msg
,
strlen
(
msg
)
+
1
);
free
(
msg
);
return
0
;
}
int
opcode_switch
(
cJSON
*
root
)
int
kk_ccu_opcode_handle
(
cJSON
*
root
)
{
cJSON
*
msg
;
...
...
@@ -226,31 +134,44 @@ int opcode_switch(cJSON *root)
nodeId
=
cJSON_GetObjectItem
(
root
,
NODEID_STR
);
opcode
=
cJSON_GetObjectItem
(
root
,
OPCODE_STR
);
arg
=
cJSON_GetObjectItem
(
root
,
ARG_STR
);
requester
=
cJSON_GetObjectItem
(
root
,
REQUEST_STR
);
if
(
opcode
==
NULL
||
opcode
->
type
!=
cJSON_String
){
return
-
1
;
}
if
(
nodeId
==
NULL
||
opcode
==
NULL
||
arg
==
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
;
}
if
(
(
requester
!=
NULL
)
&&
(
strcmp
(
requester
->
valuestring
,
HJ_SERVER
)
!=
0
)
){
WARNING_PRINT
(
"[
%s] err,%s,%s
\n
"
,
REQUEST_STR
,
HJ_SERVER
,
requester
->
valuestring
);
if
(
requester
!=
NULL
){
WARNING_PRINT
(
"[
requester]%s
\n
"
,
requester
->
valuestring
);
}
kk_lan_db_deviceCode_get
(
atoi
(
nodeId
->
valuestring
),
deviceCode
);
if
((
requester
!=
NULL
)
&&
(
strcmp
(
requester
->
valuestring
,
HJ_PROFILE
)
==
0
)
&&
(
strcmp
(
opcode
->
valuestring
,
"SWITCH"
)
==
0
)){
msg
=
scene_execute
(
nodeId
->
valuestring
);
kk_ipc_send_json
(
msg
);
return
0
;
}
if
(
kk_map_dev_search_by_deviceCode
(
deviceCode
,
&
dev
)
==
0
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON
*
params
=
ctrl_conver
(
dev
,
atoi
(
nodeId
->
valuestring
),
arg
,
opcode
);
cJSON
*
params
=
kk_control_protocol_convert
(
dev
,
atoi
(
nodeId
->
valuestring
),
arg
,
opcode
);
msg
=
property_set
(
dev
->
productCode
,
dev
->
deviceCode
,
"*"
,
"*"
,
params
);
kk_ipc_send_json
(
msg
);
}
else
{
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
WARNING_PRINT
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
}
}
...
...
@@ -261,6 +182,11 @@ int opcode_switch(cJSON *root)
char
*
node_string
(
int
nodeId
)
{
char
*
node
=
(
char
*
)
malloc
(
33
);
...
...
@@ -270,39 +196,12 @@ char *node_string(int nodeId)
return
node
;
}
char
*
double_string
(
double
dVal
,
int
size
)
{
char
*
buff
=
(
char
*
)
malloc
(
size
+
1
);
memset
(
buff
,
0
,
size
+
1
);
snprintf
(
buff
,
size
,
"%6f"
,
dVal
);
return
buff
;
}
int
update_device_status_2_oldccu
(
int
nodeId
,
const
char
*
opcode
,
const
char
*
arg
)
{
cJSON
*
msg
;
char
*
nodeStr
;
if
(
arg
==
NULL
){
return
-
1
;
}
printf
(
"[%s][%d]nodeId=%d,status=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
nodeId
,
arg
);
if
((
nodeStr
=
node_string
(
nodeId
))
!=
NULL
){
msg
=
old_ccu_msg_build
(
nodeStr
,
opcode
,
"success"
,
arg
);
send_msg_to_module
(
msg
);
cJSON_Delete
(
msg
);
free
(
nodeStr
);
return
0
;
}
return
-
1
;
}
...
...
application/klansdk/kk_lan_main.c
View file @
570bd950
...
...
@@ -19,6 +19,10 @@
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "com_api.h"
#include "kk_product.h"
#include "kk_findccu_handle.h"
...
...
@@ -27,49 +31,30 @@
//#include "kk_lan_queue.h"
#include "kk_lan_node_db.h"
#include "kk_data_mng.h"
static
void
sig_handler
(
int
sig
)
{
printf
(
"Received signal: %d
\n
"
,
sig
);
abort
();
}
extern
void
ttttt_test
();
extern
void
kk_scene_build_test
(
void
);
int
main
(
int
argc
,
char
*
argv
[])
{
int
rc
=
0
;
char
*
ppp
;
open
(
"kk_lan"
,
LOG_PID
,
LOG_USER
);
ttttt_test
();
kk_scene_build_test
();
/*set the callback to get the device date to cloud*/
kk_ipc_init
(
IPC_APP2MID
,(
ipc_cb
*
)
KK_Data_FromMid
,
NULL
,
NULL
);
kk_findccu_handle_init
();
kk_map_dev_init
();
kk_login_init
();
struct
sigaction
sig
=
{
0
};
sig
.
sa_handler
=
sig_handler
;
sig
.
sa_flags
=
0
;
for
(
int
i
=
0
;
i
<
31
;
i
++
){
//sigaction(i, &sig, NULL);
}
//lan_queue_init();
kk_lan_db_node_init
();
kk_handle_sync_info
();
//
kk_handle_sync_info();
while
(
1
){
//count++;
//if(count == 10){
//kk_ipc_send(IPC_APP2MID, "wooooooooooooooooooooooooooooooooooollllll!", strlen("wooooooooooooooooooooooooooooooooooollllll!")+1);
//}
sleep
(
1
);
}
return
rc
;
...
...
application/klansdk/kk_login_handle.c
View file @
570bd950
...
...
@@ -106,6 +106,8 @@ void *TCP_Analyzer(void *pPara)
Size
=
read
(
s_ConnInfo
[
index
].
socketfd
,
Buf
,
sizeof
(
Buf
)
);
if
(
Size
<=
0
)
//没有接收到数据,关闭描述符,释放在TCPServer申请的空间
{
printf
(
"Size=%d,errno=%d"
,
Size
,
errno
);
ERROR_PRINT
(
"TCP_Analyzer:remote client close:%d
\n
"
,
s_ConnInfo
[
index
].
socketfd
);
pthread_mutex_lock
(
&
data_mutex
);
close
(
s_ConnInfo
[
index
].
socketfd
);
...
...
application/klansdk/kk_newccu_msg.c
View file @
570bd950
...
...
@@ -10,7 +10,7 @@
#include "kk_data_mng.h"
#include "kk_newccu_msg.h"
#include "kk_product.h"
...
...
@@ -64,10 +64,64 @@ cJSON * property_report(const char *productCode,const char *deviceCode,const cha
}
cJSON
*
scene_payload_build
(
const
char
*
method
,
const
char
*
msgId
,
cJSON
*
params
)
{
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"productCode"
,
KK_CCU_PRODUCTID
);
cJSON_AddStringToObject
(
payload
,
"deviceCode"
,
KK_CCU_ID
);
cJSON_AddStringToObject
(
payload
,
"identity"
,
"executeScene"
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgId
);
cJSON_AddStringToObject
(
payload
,
"version"
,
KK_LAN_VERSION
);
cJSON_AddStringToObject
(
payload
,
"method"
,
method
);
cJSON_AddItemToObject
(
payload
,
PARAMS_STRING
,
params
);
return
payload
;
}
cJSON
*
scene_execute
(
const
char
*
sceneId
)
{
char
msgId
[
32
]
=
{
0
};
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
info
,
*
payload
;
printf
(
"[execute scene]sceneId=%s
\n
"
,
sceneId
);
kk_lan_get_msg_id_str
(
msgId
,
sizeof
(
msgId
));
cJSON_AddStringToObject
(
params
,
"sceneId"
,
sceneId
);
info
=
property_info_build
(
"/thing/service/executeScene"
,
KK_CCU_PRODUCTID
,
KK_CCU_ID
);
payload
=
scene_payload_build
(
"thing.service.executeScene"
,
msgId
,
params
);
cJSON_AddItemToObject
(
root
,
INFO_STRING
,
info
);
cJSON_AddItemToObject
(
root
,
PAYLOAD_STRING
,
payload
);
return
root
;
}
//向midware发送数据
int
kk_ipc_send_json
(
cJSON
*
root
)
{
char
*
msg
;
if
(
root
==
NULL
){
return
-
1
;
}
msg
=
cJSON_Print
(
root
);
printf
(
"[lan->midware]json:
\n
%s
\n
"
,
msg
);
cJSON_Minify
(
msg
);
kk_ipc_send
(
IPC_APP2MID
,
msg
,
strlen
(
msg
)
+
1
);
free
(
msg
);
return
0
;
}
...
...
application/klansdk/kk_newccu_msg.h
View file @
570bd950
...
...
@@ -12,6 +12,7 @@ cJSON * property_report(const char *productCode,const char *deviceCode,const cha
int
kk_ipc_send_json
(
cJSON
*
root
);
...
...
application/klansdk/kk_oldccu_msg.c
View file @
570bd950
...
...
@@ -107,8 +107,6 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type)
cJSON
*
n_value
=
cJSON_GetObjectItem
(
newccuItem
,
"value"
);
cJSON
*
o_dataType
;
cJSON
*
val
;
cJSON
*
o_valueRange
=
cJSON_GetObjectItem
(
oldccuItem
,
"valueRange"
);
cJSON
*
n_valueRange
=
cJSON_GetObjectItem
(
newccuItem
,
"valueRange"
);
...
...
@@ -118,213 +116,80 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type)
}
else
{
o_dataType
=
cJSON_GetObjectItem
(
oldccuItem
,
DATATYPE_STRING
);
}
if
(
strcmp
(
o_dataType
->
valuestring
,
"map"
)
==
0
){
val
=
map_type_convert
(
n_dataType
,
n_valueRange
,
n_value
,
o_valueRange
);
}
else
{
val
=
msg_convert_value
(
o_dataType
,
n_dataType
,
n_value
);
}
return
val
;
}
typedef
struct
{
char
*
area
;
char
*
name
;
char
*
delay
;
char
*
nodeid
;
char
*
operate_type
;
char
*
operation
;
char
*
room_id
;
}
SCENE_ACTION
;
typedef
struct
{
char
*
scene_id
;
char
*
name
;
char
*
pannel_id
;
char
*
room_id
;
char
*
time
;
char
*
week
;
SCENE_ACTION
**
act
;
int
act_num
;
}
SCENE_BUILD
;
cJSON
*
kk_action_build
(
SCENE_ACTION
*
act
)
{
cJSON
*
action
=
cJSON_CreateObject
();
if
(
act
->
nodeid
==
NULL
||
act
->
operation
==
NULL
||
act
->
operation
==
NULL
||
act
->
room_id
==
NULL
){
return
;
}
cJSON_AddStringToObject
(
action
,
"area"
,(
act
->
area
==
NULL
)
?
""
:
act
->
area
);
cJSON_AddStringToObject
(
action
,
"name"
,(
act
->
name
==
NULL
)
?
""
:
act
->
name
);
cJSON_AddStringToObject
(
action
,
"delay"
,(
act
->
delay
==
NULL
)
?
"0"
:
act
->
delay
);
cJSON_AddStringToObject
(
action
,
"nodeid"
,
act
->
nodeid
);
cJSON_AddStringToObject
(
action
,
"operate_type"
,
act
->
operate_type
);
cJSON_AddStringToObject
(
action
,
"operation"
,
act
->
operation
);
cJSON_AddStringToObject
(
action
,
"room_id"
,
act
->
room_id
);
return
action
;
}
cJSON
*
kk_actions_build
(
SCENE_ACTION
**
act
,
int
num
)
{
int
i
;
cJSON
*
actions
=
cJSON_CreateArray
();
cJSON
*
action
;
for
(
i
=
0
;
i
<
num
;
i
++
){
action
=
kk_action_build
(
act
[
i
]);
cJSON_AddItemToArray
(
actions
,
action
);
}
return
actions
;
return
ccu_value_convert
(
n_dataType
,
n_valueRange
,
o_dataType
,
o_valueRange
,
n_value
);
}
cJSON
*
kk_scene_build
(
SCENE_BUILD
*
content
)
{
cJSON
*
scene
=
cJSON_CreateObject
();
cJSON
*
actions
=
kk_actions_build
(
content
->
act
,
content
->
act_num
);
cJSON_AddItemToObject
(
scene
,
"actions"
,
actions
);
cJSON_AddStringToObject
(
scene
,
"id"
,
content
->
scene_id
);
cJSON_AddStringToObject
(
scene
,
"name"
,
content
->
name
);
cJSON_AddStringToObject
(
scene
,
"pannel_id"
,(
content
->
pannel_id
==
NULL
)
?
"*"
:
content
->
pannel_id
);
cJSON_AddStringToObject
(
scene
,
"room_id"
,
content
->
room_id
);
cJSON_AddStringToObject
(
scene
,
"scene_image"
,
""
);
cJSON_AddStringToObject
(
scene
,
"scene_type"
,
""
);
if
(
content
->
time
==
NULL
){
cJSON_AddStringToObject
(
scene
,
"timer_enable"
,
"0"
);
cJSON_AddStringToObject
(
scene
,
"time"
,
""
);
}
else
{
cJSON_AddStringToObject
(
scene
,
"timer_enable"
,
"1"
);
cJSON_AddStringToObject
(
scene
,
"time"
,
content
->
time
);
}
cJSON_AddStringToObject
(
scene
,
"week"
,
content
->
week
);
return
scene
;
}
void
kk_scene_build_test
(
void
)
{
cJSON
*
msg
;
SCENE_BUILD
scene
;
scene
.
name
=
calloc
(
1
,
20
);
memcpy
(
scene
.
name
,
"离家"
,
strlen
(
"离家"
));
scene
.
scene_id
=
calloc
(
1
,
20
);
memcpy
(
scene
.
scene_id
,
"123"
,
strlen
(
"123"
));
scene
.
pannel_id
=
calloc
(
1
,
20
);
memcpy
(
scene
.
pannel_id
,
"*"
,
strlen
(
"*"
));
scene
.
room_id
=
calloc
(
1
,
20
);
memcpy
(
scene
.
room_id
,
"456"
,
strlen
(
"456"
));
scene
.
time
=
calloc
(
1
,
20
);
memcpy
(
scene
.
time
,
""
,
strlen
(
""
));
scene
.
week
=
calloc
(
1
,
20
);
memcpy
(
scene
.
week
,
""
,
strlen
(
""
));
scene
.
act_num
=
1
;
SCENE_ACTION
*
act
=
calloc
(
1
,
sizeof
(
SCENE_ACTION
)
*
scene
.
act_num
);
scene
.
act
=&
act
;
scene
.
act
[
0
]
->
area
=
calloc
(
1
,
20
);
memcpy
(
scene
.
act
[
0
]
->
area
,
""
,
strlen
(
""
));
scene
.
act
[
0
]
->
delay
=
calloc
(
1
,
20
);
memcpy
(
scene
.
act
[
0
]
->
delay
,
""
,
strlen
(
""
));
scene
.
act
[
0
]
->
name
=
calloc
(
1
,
20
);
memcpy
(
scene
.
act
[
0
]
->
name
,
""
,
strlen
(
""
));
scene
.
act
[
0
]
->
nodeid
=
calloc
(
1
,
20
);
memcpy
(
scene
.
act
[
0
]
->
nodeid
,
""
,
strlen
(
""
));
scene
.
act
[
0
]
->
operate_type
=
calloc
(
1
,
20
);
memcpy
(
scene
.
act
[
0
]
->
operate_type
,
""
,
strlen
(
""
));
scene
.
act
[
0
]
->
operation
=
calloc
(
1
,
20
);
memcpy
(
scene
.
act
[
0
]
->
operation
,
""
,
strlen
(
""
));
scene
.
act
[
0
]
->
room_id
=
calloc
(
1
,
20
);
memcpy
(
scene
.
act
[
0
]
->
room_id
,
""
,
strlen
(
""
));
msg
=
kk_scene_build
(
&
scene
);
printf
(
"--------scene--------->
\n
%s
\n
"
,
cJSON_Print
(
msg
));
}
cJSON
*
kk_devicestatus_build
(
kk_map_dev_node_t
*
node
)
{
int
i
,
num
=
0
;
char
nodeid
[
32
]
=
{
0
};
char
indxId
[
4
]
=
{
0
};
int
idx
=
1
;
int
syn_type
=
0
;
cJSON
*
dev_status
;
if
(
node
==
NULL
)
return
NULL
;
dev_status
=
cJSON_CreateObject
();
cJSON
*
newccu
,
*
oldccu
;
cJSON
*
dev_status
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
#if 1
printf
(
"@@@@kk_devicestatus_build
\n
"
);
if
(
node
==
NULL
||
node
->
syn_opcode
==
NULL
){
return
NULL
;
}
newccu
=
node
->
newccu
;
oldccu
=
node
->
oldccu
;
cJSON
*
newccuItem
=
node
->
newccu
->
child
;
cJSON
*
oldccuItem
=
node
->
oldccu
->
child
;
if
(
newccu
==
NULL
||
newccu
->
type
!=
cJSON_Object
||
oldccu
==
NULL
||
oldccu
->
type
!=
cJSON_Object
){
return
NULL
;
}
syn_type
=
node
->
syn_type
;
dev_status
=
cJSON_CreateObject
()
;
{
cJSON
*
status
=
cJSON_CreateObject
();
num
=
cJSON_GetArraySize
(
newccu
);
for
(
i
=
0
;
i
<
num
;
i
++
){
cJSON
*
newccuItem
=
cJSON_GetArrayItem
(
newccu
,
i
);
cJSON
*
oldccuItem
=
cJSON_GetArrayItem
(
oldccu
,
i
);
cJSON
*
synType
=
cJSON_GetObjectItem
(
oldccuItem
,
"synType"
);
cJSON
*
synKey
=
cJSON_GetObjectItem
(
oldccuItem
,
"syn"
);
cJSON
*
val
=
NULL
;
cJSON
*
status
=
NULL
;
char
indexId
[
4
]
=
{
0
};
cJSON
*
synKey
;
cJSON
*
synType
;
if
(
synType
){
if
(
synType
->
type
!=
cJSON_String
||
synKey
==
NULL
||
synKey
->
type
!=
cJSON_String
)
{
continue
;
}
status
=
cJSON_CreateObject
();
printf
(
"yyy-1
\n
"
);
memset
(
nodeid
,
0x0
,
sizeof
(
nodeid
));
printf
(
"yyy-2
\n
"
);
kk_creater_nodeid
(
node
->
deviceCode
,
1
,
nodeid
);
printf
(
"yyy-3,%s
\n
"
,
nodeid
);
if
(
node
->
syn_opcode
){
cJSON_AddStringToObject
(
status
,
OPCODE_STRING
,
node
->
syn_opcode
);
}
printf
(
"yyy-4
\n
"
);
cJSON_AddNumberToObject
(
status
,
NODEID_STRING
,
atoi
(
nodeid
));
printf
(
"yyy-5
\n
"
);
sprintf
(
indxId
,
"%d"
,
idx
++
);
printf
(
"yyy-6
\n
"
);
cJSON_AddStringToObject
(
status
,
"index"
,
indxId
);
printf
(
"yyy-7
\n
"
);
while
(
newccuItem
!=
NULL
){
//printf("oldccuItem--->%s\n",cJSON_Print(oldccuItem));
synType
=
cJSON_GetObjectItem
(
oldccuItem
,
"synType"
);
memset
(
indexId
,
0
,
sizeof
(
indexId
));
snprintf
(
indexId
,
sizeof
(
indexId
),
"%d"
,
i
+
1
);
printf
(
"synType->valuestring--->%s
\n
"
,
synType
->
valuestring
);
if
(
strcmp
(
synType
->
valuestring
,
"dummy"
)){
synKey
=
cJSON_GetObjectItem
(
oldccuItem
,
"syn"
);
cJSON_AddStringToObject
(
status
,
"index"
,
indexId
);
//todo:
if
(
strcmp
(
synType
->
valuestring
,
"timing_shutdown"
)
==
0
)
{
cJSON
*
syn_obj
=
cJSON_CreateObject
();
double
t
=
cJSON_GetObjectItem
(
newccuItem
,
"value"
)
->
valuedouble
;
char
buff
[
32
]
=
{
0
};
snprintf
(
buff
,
32
,
"%f"
,
t
);
printf
(
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%s
\n
"
,
buff
);
if
(
t
>
0
){
cJSON_AddBoolToObject
(
syn_obj
,
"enable"
,
1
);
...
...
@@ -337,133 +202,47 @@ cJSON *kk_devicestatus_build(kk_map_dev_node_t *node)
cJSON_AddItemToObject
(
dev_status
,
synKey
->
valuestring
,
syn_obj
);
}
else
{
cJSON
*
val
=
val_conver_new2old
(
newccuItem
,
oldccuItem
,
1
);
if
(
val
){
printf
(
"val--->%s
\n
"
,
cJSON_Print
(
val
));
printf
(
"val->type=%d,%d,%d
\n
"
,
val
->
type
,
cJSON_String
,
cJSON_Number
);
if
(
val
->
type
==
cJSON_String
)
{
cJSON_AddStringToObject
(
dev_status
,
synKey
->
valuestring
,
val
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_Number
)
{
cJSON_AddNumberToObject
(
dev_status
,
synKey
->
valuestring
,
val
->
valuedouble
);
}
else
{
cJSON_AddItemToObject
(
dev_status
,
synKey
->
valuestring
,
val
);
if
((
val
=
val_conver_new2old
(
newccuItem
,
oldccuItem
,
1
))
!=
NULL
){
add_val_to_obj
(
dev_status
,
val
,
synKey
->
valuestring
);
}
}
}
}
newccuItem
=
newccuItem
->
next
;
oldccuItem
=
oldccuItem
->
next
;
}
}
#endif
printf
(
"@##$%^&&*(*(((*^%$$#@@@--->%s
\n
"
,
cJSON_Print
(
dev_status
));
return
dev_status
;
}
int
kk_devicestatus_build_aaa
(
cJSON
*
Array
,
kk_map_dev_node_t
*
node
)
{
char
nodeid
[
32
]
=
{
0
};
char
indxId
[
4
]
=
{
0
};
int
idx
=
1
;
cJSON
*
dev_status
;
if
(
node
==
NULL
)
return
-
1
;
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
cJSON
*
newccuItem
=
node
->
newccu
->
child
;
cJSON
*
oldccuItem
=
node
->
oldccu
->
child
;
while
(
newccuItem
!=
NULL
){
dev_status
=
cJSON_CreateObject
();
memset
(
nodeid
,
0x0
,
sizeof
(
nodeid
));
char
*
opcodemap
=
cJSON_GetObjectItem
(
newccuItem
,
OPCODEMAP_STRING
)
->
valuestring
;
char
*
channel
=
cJSON_GetObjectItem
(
newccuItem
,
CHANNEL_STRING
)
->
valuestring
;
char
*
dataType
=
cJSON_GetObjectItem
(
newccuItem
,
DATATYPE_STRING
)
->
valuestring
;
cJSON
*
range
=
cJSON_GetObjectItem
(
newccuItem
,
VALUERANGE_STRING
);
char
*
o_dataType
=
cJSON_GetObjectItem
(
oldccuItem
,
DATATYPE_STRING
)
->
valuestring
;
printf
(
"identifier=%s
\n
"
,
cJSON_GetObjectItem
(
newccuItem
,
"identifier"
)
->
valuestring
);
printf
(
"newccuItem=%s
\n
"
,
cJSON_Print
(
newccuItem
));
kk_creater_nodeid
(
node
->
deviceCode
,
atoi
(
channel
),
nodeid
);
cJSON_AddStringToObject
(
dev_status
,
OPCODE_STRING
,
opcodemap
);
cJSON_AddNumberToObject
(
dev_status
,
NODEID_STRING
,
atoi
(
nodeid
));
sprintf
(
indxId
,
"%d"
,
idx
++
);
cJSON_AddStringToObject
(
dev_status
,
"index"
,
indxId
);
printf
(
"index=%s,dataType=%s,o_dataType=%s
\n
"
,
indxId
,
dataType
,
o_dataType
);
if
(
strcmp
(
o_dataType
,
"string"
)
==
0
){
if
(
strcmp
(
dataType
,
"int"
)
==
0
||
strcmp
(
dataType
,
"double"
)
==
0
){
int
value
=
cJSON_GetObjectItem
(
newccuItem
,
"value"
)
->
valueint
;
if
(
range
!=
NULL
){
int
index
=
kk_get_int_value_idx
(
range
,
value
);
if
(
index
==-
1
){
index
=
0
;
}
cJSON
*
ary
=
cJSON_GetObjectItem
(
oldccuItem
,
"valueRange"
);
cJSON
*
def
=
cJSON_GetArrayItem
(
ary
,
index
);
cJSON_AddStringToObject
(
dev_status
,
"arg"
,
def
->
valuestring
);
printf
(
"yjq=%d
\n
"
,
index
);
}
}
else
if
(
strcmp
(
dataType
,
"double"
)
==
0
){
}
}
else
if
(
strcmp
(
o_dataType
,
"string_double"
)
==
0
){
static
int
update_device_status
(
int
nodeId
,
const
char
*
opcode
,
const
char
*
arg
)
{
cJSON
*
msg
;
char
*
nodeStr
;
double
value
=
cJSON_GetObjectItem
(
newccuItem
,
"value"
)
->
valuedouble
;
char
*
val
=
double_value_string
(
value
);
cJSON_AddNumberToObject
(
dev_status
,
"arg"
,
value
);
free
(
val
);
if
(
arg
==
NULL
){
return
-
1
;
}
printf
(
"[%s][%d]nodeId=%d,status=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
nodeId
,
arg
);
cJSON_AddItemToArray
(
Array
,
dev_status
);
//todo
newccuItem
=
newccuItem
->
next
;
oldccuItem
=
oldccuItem
->
next
;
if
((
nodeStr
=
node_string
(
nodeId
))
!=
NULL
){
msg
=
old_ccu_msg_build
(
nodeStr
,
opcode
,
"success"
,
arg
);
send_msg_to_module
(
msg
);
cJSON_Delete
(
msg
);
free
(
nodeStr
);
return
0
;
}
return
0
;
return
-
1
;
}
cJSON
*
attr_report_conver
(
const
char
*
deviceCode
,
kk_map_dev_node_t
*
devNode
,
cJSON
*
params
)
{
cJSON
*
root
;
...
...
@@ -495,38 +274,22 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
cJSON
*
args
;
oldccu
=
devNode
->
oldccu
;
newccu
=
devNode
->
newccu
;
item_size
=
cJSON_GetArraySize
(
oldccu
);
printf
(
"item_size=%d
\n
"
,
item_size
);
for
(
i
=
0
;
i
<
item_size
;
i
++
){
o_item
=
cJSON_GetArrayItem
(
oldccu
,
i
);
n_item
=
cJSON_GetArrayItem
(
newccu
,
i
);
o_id_map
=
cJSON_GetObjectItem
(
o_item
,
"identifiermap"
);
printf
(
"o_id_map=%s
\n
"
,
o_id_map
->
valuestring
);
if
(
o_id_map
){
printf
(
"o_id_map=%s
\n
"
,
cJSON_Print
(
o_id_map
));
}
n_id
=
cJSON_GetObjectItem
(
params
,
o_id_map
->
valuestring
);
printf
(
"[%s][%d]n_id=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
cJSON_Print
(
n_id
));
if
(
n_id
!=
NULL
){
if
(
params
){
printf
(
"21-params=%s
\n
"
,
cJSON_Print
(
params
));
}
n_dataType
=
cJSON_GetObjectItem
(
n_item
,
"dataType"
);
n_valueRange
=
cJSON_GetObjectItem
(
n_item
,
"valueRange"
);
...
...
@@ -534,90 +297,64 @@ cJSON * attr_report_conver(const char *deviceCode,kk_map_dev_node_t *devNode,cJS
o_valueRange
=
cJSON_GetObjectItem
(
o_item
,
"valueRange"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
channel
=
cJSON_GetObjectItem
(
o_item
,
"channel"
);
ch
=
atoi
(
channel
->
valuestring
);
nodeId
=
kk_lan_db_node_get
(
deviceCode
,
ch
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
opcode
=
cJSON_GetObjectItem
(
o_item
,
"opcode"
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
printf
(
"[%s][%d]n_dataType->valuestring=%s,opcode->valuestring=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
n_dataType
->
valuestring
,
opcode
->
valuestring
);
printf
(
"
\n
n_id->type=%d
\n
"
,
n_id
->
type
);
//cJSON_ReplaceItemInObject(n_item, "value", cJSON_CreateString(""));//
if
(
n_id
->
type
==
cJSON_False
){
printf
(
"[replace] cJSON_False
\n
"
);
cJSON_ReplaceItemInObject
(
n_item
,
"value"
,
cJSON_CreateFalse
());
}
else
if
(
n_id
->
type
==
cJSON_True
){
printf
(
"[replace] cJSON_True
\n
"
);
cJSON_ReplaceItemInObject
(
n_item
,
"value"
,
cJSON_CreateTrue
());
}
else
if
(
n_id
->
type
==
cJSON_NULL
){
printf
(
"[replace] cJSON_NULL
\n
"
);
cJSON_ReplaceItemInObject
(
n_item
,
"value"
,
cJSON_CreateNull
());
}
else
if
(
n_id
->
type
==
cJSON_Number
){
printf
(
"[replace] cJSON_Number
\n
"
);
if
(
strcmp
(
n_dataType
->
valuestring
,
"double"
)
==
0
){
cJSON_ReplaceItemInObject
(
n_item
,
"value"
,
cJSON_CreateNumber
(
n_id
->
valuedouble
));
}
else
{
cJSON_ReplaceItemInObject
(
n_item
,
"value"
,
cJSON_CreateNumber
(
n_id
->
valueint
));
}
}
else
if
(
n_id
->
type
==
cJSON_String
){
printf
(
"[replace] cJSON_String
\n
"
);
cJSON_ReplaceItemInObject
(
n_item
,
"value"
,
cJSON_CreateString
(
n_id
->
valuestring
));
}
else
if
(
n_id
->
type
==
cJSON_Array
){
//cJSON_ReplaceItemInObject(n_item, "value", cJSON_CreateArray(n_id->valuestring));
/*
#define cJSON_Array (1 << 5)
#define cJSON_Object (1 << 6)
#define cJSON_Raw (1 << 7)
*/
printf
(
"......................
\n
"
);
}
//cJSON_ReplaceItemInObject(newccuItem, "value", cJSON_CreateNumber(val));
printf
(
"o_dataType=%s
\n
"
,
o_dataType
->
valuestring
);
if
(
strcmp
(
o_dataType
->
valuestring
,
"map"
)
==
0
){
args
=
map_type_convert
(
n_dataType
,
n_valueRange
,
n_id
,
o_valueRange
);
}
else
{
args
=
msg_convert_value
(
o_dataType
,
n_dataType
,
n_id
);
if
((
args
=
ccu_value_convert
(
n_dataType
,
n_valueRange
,
o_dataType
,
o_valueRange
,
n_id
))
!=
NULL
){
update_device_status
(
nodeId
,
opcode
->
valuestring
,
args
->
valuestring
);
//cJSON_Delete(args);
}
if
(
args
){
printf
(
"yy111y,args=%s
\n
"
,
cJSON_Print
(
args
));
update_device_status_2_oldccu
(
nodeId
,
opcode
->
valuestring
,
args
->
valuestring
);
}
else
{
printf
(
"yy111y,args=NULL
\n
"
);
}
}
}
printf
(
"yy2222y
\n
"
);
if
(
devNode
->
syn_type
==
1
){
cJSON
*
arg
;
char
*
node_str
;
arg
=
kk_devicestatus_build
(
devNode
);
printf
(
"yy444y
\n
"
);
//
arg = kk_devicestatus_build(devNode);
arg
=
_kk_sync_devicestatus_arg_build
(
devNode
);
nodeId
=
kk_lan_db_node_get
(
deviceCode
,
1
);
printf
(
"yy555y
\n
"
);
node_str
=
node_string
(
nodeId
);
printf
(
"yy666y
\n
"
);
node_str
=
node_string
(
nodeId
);
msg
=
old_ccu_msg_build_json
(
node_str
,
devNode
->
syn_opcode
,
NULL
,
arg
);
printf
(
"66666666666=%s
\n
"
,
cJSON_Print
(
msg
));
send_msg_to_module
(
msg
);
free
(
node_str
);
cJSON_Delete
(
msg
);
}
return
root
;
}
...
...
@@ -733,9 +470,40 @@ void property_syn_deal(const char *deviceCode,cJSON *properties)
}
//同步信息
//房间同步
//布防撤防
/*
"0": "离家布防",
"1": "撤防",
"2": "在家布防",
"3": "区域布防"
*/
int
arming_status_notify
(
int
type
)
{
cJSON
*
msg
=
NULL
;
printf
(
"[arming status notify] type=%d
\n
"
,
type
);
if
(
type
==
0
){
msg
=
old_ccu_msg_build
(
WILDCARD_CHARACTER_STR
,
GUARD_STATUS_ARMING_LEAVE_HOME
,
SUCCESS_STR
,
WILDCARD_CHARACTER_STR
);
}
else
if
(
type
==
1
){
msg
=
old_ccu_msg_build
(
WILDCARD_CHARACTER_STR
,
GUARD_STATUS_DISARMING
,
SUCCESS_STR
,
WILDCARD_CHARACTER_STR
);
}
else
if
(
type
==
2
){
msg
=
old_ccu_msg_build
(
WILDCARD_CHARACTER_STR
,
GUARD_STATUS_ARMING_IN_HOME
,
SUCCESS_STR
,
WILDCARD_CHARACTER_STR
);
}
else
{
printf
(
"[unkown arming type]!!!
\n
"
);
return
-
1
;
}
send_msg_to_module
(
msg
);
cJSON_Delete
(
msg
);
return
0
;
}
...
...
application/klansdk/kk_oldccu_msg.h
View file @
570bd950
...
...
@@ -12,6 +12,7 @@ int send_msg_to_module(cJSON *root);
int
arming_status_notify
(
int
type
);
...
...
common/api/com_api.h
View file @
570bd950
...
...
@@ -108,7 +108,9 @@ typedef enum {
#define MSG_SCENE_NEGATICE "negativeProperty"
#define MSG_SCENE_SUPPORT "sceneSupport"
#define MSG_SCENE_MSGID "msgId"
#define MSG_SCENE_NAME "name"
#define MSG_SCENE_SCENE_NAME "name"
#define MSG_SCENE_ROOM_ID "roomId"
#define MSG_SCENE_ROOM_NAME "roomName"
#define MSG_SCENE_SCENCTYPE "sceneType"
#define MSG_SCENE_ENABLE "enable"
#define MSG_SCENE_TRIGGERS "triggers"
...
...
midware/midware/area/kk_area_handle.c
View file @
570bd950
...
...
@@ -103,13 +103,41 @@ int kk_area_init(void)
}
return
SUCCESS_RETURN
;
}
int
kk_room_add
(
const
char
*
name
,
const
char
*
roomId
)
static
int
kk_check_room_exist
(
const
char
*
roomId
)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
proomId
=
NULL
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaInfo;"
;
_kk_area_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
proomId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_ROOM_ID
);
if
(
!
strcmp
(
proomId
,
roomId
))
{
isExist
=
1
;
break
;
}
}
sqlite3_finalize
(
stmt
);
_kk_area_unlock
();
return
isExist
;
}
static
int
_kk_room_add
(
const
char
*
name
,
const
char
*
roomId
)
{
int
res
=
0
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
printf
(
"--->kk_room_add,name=%s,roomid=%s
\n
"
,
name
,
roomId
);
const
char
*
insertCmd
=
"insert into AreaInfo (name, roomId) \
values ('%s','%s');"
;
_kk_area_lock
();
...
...
@@ -127,6 +155,65 @@ int kk_room_add(const char *name,const char *roomId)
_kk_area_unlock
();
return
SUCCESS_RETURN
;
}
static
int
_kk_room_update
(
const
char
*
name
,
const
char
*
roomId
)
{
int
res
=
0
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
sqlCmd
=
sqlite3_mprintf
(
"UPDATE AreaInfo SET name='%s' WHERE roomId= '%s'"
,
name
,
roomId
);
_kk_area_lock
();
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
res
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
//INFO_PRINT("sub device insert data successfully\n");
}
sqlite3_free
(
sqlCmd
);
_kk_area_unlock
();
return
SUCCESS_RETURN
;
}
static
int
_kk_room_dev_update
(
const
char
*
name
,
const
char
*
roomId
)
{
int
res
=
0
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
sqlCmd
=
sqlite3_mprintf
(
"UPDATE AreaDevInfo SET roomName='%s' WHERE roomId= '%s'"
,
name
,
roomId
);
_kk_area_lock
();
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
res
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
//INFO_PRINT("sub device insert data successfully\n");
}
sqlite3_free
(
sqlCmd
);
_kk_area_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_room_add
(
const
char
*
name
,
const
char
*
roomId
)
{
if
(
kk_check_room_exist
(
roomId
)){
printf
(
"name=%s,room id=%s
\n
"
,
name
,
roomId
);
_kk_room_dev_update
(
name
,
roomId
);
_kk_room_update
(
name
,
roomId
);
return
0
;
}
else
{
return
_kk_room_add
(
name
,
roomId
);
}
}
int
kk_room_delete
(
const
char
*
roomId
)
{
int
res
=
0
;
...
...
@@ -153,6 +240,37 @@ int kk_room_delete(const char *roomId)
return
SUCCESS_RETURN
;
}
int
kk_get_device_name
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
devName
,
int
size
)
{
int
isGet
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
char
*
pEpNum
=
NULL
;
char
*
pDevName
=
NULL
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaDevInfo;"
;
_kk_area_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
pEpNum
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_EPNUM
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&
!
strcmp
(
pEpNum
,
epNum
))
{
pDevName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEV_NAME
);
memset
(
devName
,
0
,
size
);
snprintf
(
devName
,
size
,
"%s"
,
pDevName
);
isGet
=
1
;
}
}
//INFO_PRINT("\n");
sqlite3_finalize
(
stmt
);
_kk_area_unlock
();
return
isGet
;
}
static
int
_kk_check_dev_exist
(
const
char
*
deviceCode
,
const
char
*
epNum
)
{
int
isExist
=
0
;
...
...
midware/midware/area/kk_area_handle.h
View file @
570bd950
...
...
@@ -29,6 +29,7 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum);
int
kk_room_device_list_add
(
const
char
*
deviceCode
);
kk_dev_list_t
*
kk_get_room_deviceCode
(
const
char
*
roomId
);
void
kk_free_room_dev_list
(
void
);
int
kk_get_device_name
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
devName
,
int
size
);
#endif
midware/midware/dm/kk_linkkit.c
View file @
570bd950
...
...
@@ -878,6 +878,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
char
*
payload_Str
=
NULL
;
cJSON
*
deviceCode
=
NULL
;
json
=
cJSON_Parse
(
data
);
if
(
json
==
NULL
)
{
WARNING_PRINT
(
"Error before: [%s]
\n
"
,
"cJSON_Parse"
);
return
;
...
...
midware/midware/dm/kk_sync_data.c
View file @
570bd950
...
...
@@ -68,29 +68,61 @@ int kk_sync_init(void)
ctx
->
pDb
=
g_kk_pDb
;
return
SUCCESS_RETURN
;
}
static
int
kk_get_rooms_devices
(
cJSON
*
roomDevicesArray
,
char
*
roomId
)
static
cJSON
*
kk_get_room_devices
(
const
char
*
roomId
)
{
const
char
*
selectCmd
=
"select * from AreaDevInfo WHERE roomId = '%s' and epNum = 1;"
;
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
char
*
deviceCode
=
NULL
;
cJSON
*
deviceObj
=
NULL
;
cJSON
*
devs
=
cJSON_CreateArray
();
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
roomDevicesArray
==
NULL
||
roomId
==
NULL
){
return
FAIL_RETURN
;
}
sqlCmd
=
sqlite3_mprintf
(
"select * from AreaDevInfo where roomId = '%s'"
,
roomId
);
sqlCmd
=
sqlite3_mprintf
(
selectCmd
,
roomId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
deviceObj
=
cJSON_CreateObject
();
cJSON
*
dev
=
cJSON_CreateObject
();
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
cJSON_AddStringToObject
(
dev
iceObj
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
//cJSON_AddItemToArray(roomDevicesArray,deviceObj
);
cJSON_AddStringToObject
(
dev
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddItemToArray
(
devs
,
dev
);
}
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
devs
;
}
static
cJSON
*
kk_get_room_sences
(
const
char
*
roomId
)
{
const
char
*
selectCmd
=
"select * from SceneInfo where roomId = '%s';"
;
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
char
*
sceneId
=
NULL
;
cJSON
*
scenes
=
cJSON_CreateArray
();
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
sqlCmd
=
sqlite3_mprintf
(
selectCmd
,
roomId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
scene
=
cJSON_CreateObject
();
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_SCENEID
);
cJSON_AddStringToObject
(
scene
,
KK_SYNC_SCENEID_STR
,
sceneId
);
cJSON_AddItemToArray
(
scenes
,
scene
);
}
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
return
scenes
;
}
static
int
kk_get_rooms_info
(
cJSON
*
data
)
{
char
*
sqlCmd
=
NULL
;
...
...
@@ -103,31 +135,34 @@ static int kk_get_rooms_info(cJSON *data)
return
FAIL_RETURN
;
}
cJSON
*
rooms
=
cJSON_CreateArray
();
cJSON
*
roomItem
=
cJSON_CreateObject
();
cJSON
*
roomDevicesArray
=
cJSON_CreateArray
();
cJSON
*
roomItem
=
NULL
;
cJSON
*
roomDevicesArray
=
NULL
;
cJSON
*
scenesArray
=
NULL
;
_kk_sync_lock
();
sqlCmd
=
sqlite3_mprintf
(
"select * from AreaInfo"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
roomItem
=
cJSON_CreateObject
();
roomId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_ROOM_ID
);
roomName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_ROOM_NAME
);
cJSON_AddStringToObject
(
roomItem
,
KK_SYNC_ROOMID_STR
,
roomId
);
cJSON_AddStringToObject
(
roomItem
,
KK_SYNC_NANE_STR
,
roomName
);
kk_get_rooms_devices
(
roomDevicesArray
,
roomId
);
roomDevicesArray
=
kk_get_room_devices
(
roomId
);
cJSON_AddItemToObject
(
roomItem
,
KK_SYNC_DEVICES_STR
,
roomDevicesArray
);
scenesArray
=
kk_get_room_sences
(
roomId
);
cJSON_AddItemToObject
(
roomItem
,
KK_SYNC_SCENE_STR
,
scenesArray
);
cJSON_AddItemToArray
(
rooms
,
roomItem
);
}
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
_kk_sync_unlock
();
cJSON_AddItemToObject
(
roomItem
,
KK_SYNC_DEVICES_STR
,
roomDevicesArray
);
cJSON
*
sceneId
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
sceneId
,
KK_SYNC_SCENEID_STR
,
"sceneId"
);
cJSON
*
scenes
=
cJSON_CreateArray
();
cJSON_AddItemToArray
(
scenes
,
sceneId
);
cJSON_AddItemToObject
(
roomItem
,
KK_SYNC_SCENE_STR
,
scenes
);
cJSON_AddItemToArray
(
rooms
,
roomItem
);
cJSON_AddItemToObject
(
data
,
KK_SYNC_ROOMS_STR
,
rooms
);
return
SUCCESS_RETURN
;
}
static
int
kk_get_properties_info
(
char
*
deviceCode
,
cJSON
*
obj
)
...
...
@@ -185,6 +220,7 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
char
devName
[
64
]
=
{
0
};
subDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
subProductCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
subVersion
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_VERSION
);
...
...
@@ -192,7 +228,8 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_DEVICECODE_STR
,
subDeviceCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_VERSION_STR
,
subVersion
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_MAC_STR
,
subDeviceCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_NANE_STR
,
"SUBDEV"
);
kk_get_device_name
(
subDeviceCode
,
"1"
,
devName
,
sizeof
(
devName
));
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_NANE_STR
,
devName
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_ONLINE_STR
,
subIsline
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_PRODUCTCODE_STR
,
subProductCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_SN_STR
,
""
);
...
...
@@ -261,7 +298,35 @@ static int kk_get_devices_info(cJSON *data)
cJSON_AddItemToObject
(
data
,
KK_SYNC_DEVICES_STR
,
gwdevices
);
return
SUCCESS_RETURN
;
}
static
int
kk_get_scenes_actions_info
(
cJSON
*
actionArray
)
int
kk_get_room_name_by_scene_id
(
int
scene_id
,
char
*
room_name
)
{
int
res
=
-
1
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
char
*
sqlCmd
=
NULL
;
sqlite3_stmt
*
stmt
;
int
dbepNum
=
0
;
char
*
roomNameStr
=
NULL
;
const
char
*
selectCmd
=
"select * from SceneInfo WHERE sceneId = '%d';"
;
_kk_scene_lock
();
sqlCmd
=
sqlite3_mprintf
(
selectCmd
,
scene_id
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
roomNameStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_ROOMID
);
memcpy
(
room_name
,
roomNameStr
,
strlen
(
roomNameStr
));
res
=
0
;
break
;
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
_kk_scene_unlock
();
return
res
;
}
static
int
kk_get_scenes_actions_info
(
cJSON
*
actionArray
,
int
id
)
{
char
*
sqlCmd
=
NULL
;
//char *zErrMsg = 0;
...
...
@@ -269,8 +334,10 @@ static int kk_get_scenes_actions_info(cJSON *actionArray )
char
*
deviceCode
=
NULL
;
char
*
propertyName
=
NULL
;
char
*
propertyValue
=
NULL
;
char
room_name
[
64
]
=
{
0
};
char
*
type
=
NULL
;
int
delay
=
0
,
epNum
=
0
;
int
delay
=
0
,
epNum
=
0
,
scene_id
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
actionArray
==
NULL
){
return
FAIL_RETURN
;
...
...
@@ -278,20 +345,31 @@ static int kk_get_scenes_actions_info(cJSON *actionArray )
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
actionItem
=
cJSON_CreateObject
();
cJSON
*
actionItem
;
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_room_name_by_scene_id
(
scene_id
,
room_name
);
actionItem
=
cJSON_CreateObject
();
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
);
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
,
""
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
room_name
);
cJSON_AddItemToArray
(
actionArray
,
actionItem
);
}
sqlite3_free
(
sqlCmd
);
...
...
@@ -392,12 +470,12 @@ static int kk_get_scenes_info(cJSON *data)
}
type
=
sqlite3_column_int
(
stmt
,
DB_SCENEINFO_SCENETYPE
);
cJSON_AddNumberToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_SCENETYPE_STR
,
type
);
name
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_NAME
);
name
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_
SCENE
NAME
);
cJSON_AddStringToObject
(
sceneArrayItem
,
KK_SYNC_NANE_STR
,
name
);
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_SCENEID
);
cJSON_AddStringToObject
(
sceneArrayItem
,
KK_SYNC_SCENEID_STR
,
sceneId
);
cJSON
*
actionArray
=
cJSON_CreateArray
();
kk_get_scenes_actions_info
(
actionArray
);
kk_get_scenes_actions_info
(
actionArray
,
atoi
(
sceneId
)
);
cJSON_AddItemToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_ACTIONS_STR
,
actionArray
);
cJSON
*
triggerArray
=
cJSON_CreateArray
();
kk_get_scenes_trigger_info
(
triggerArray
,
sceneId
);
...
...
@@ -463,11 +541,17 @@ char *kk_sync_get_info()
cJSON_AddStringToObject
(
root
,
KK_SYNC_CODE_STR
,
"0"
);
cJSON
*
data
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
KK_SYNC_DATA_STR
,
data
);
kk_get_rooms_info
(
data
);
kk_get_devices_info
(
data
);
kk_get_scenes_info
(
data
);
HAL_GetDevice_Code
(
ccu_deviceCode
);
HAL_GetProduct_Code
(
ccu_productCode
);
HAL_GetVersion
(
version
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_DEVICECODE_STR
,
ccu_deviceCode
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_NANE_STR
,
"newccu"
);
...
...
midware/midware/scene/kk_scene_db.c
View file @
570bd950
...
...
@@ -47,7 +47,8 @@ int kk_scene_db_init(void)
INFO_PRINT
(
"scene db Database opened
\n
"
);
const
char
*
pSceneTable
=
"CREATE TABLE IF NOT EXISTS SceneInfo( \
name varchar(255), \
roomId varchar(255), \
sceneName varchar(255), \
sceneType INTEGER, \
enable INTEGER, \
sceneId varchar(255) UNIQUE)"
;
...
...
@@ -207,18 +208,18 @@ int kk_scene_update_scene_enable(int enable,const char *sceneId)
*其他说明:
*************************************************************/
int
kk_scene_insert_scene_info
(
const
char
*
n
ame
,
int
sceneType
,
int
enable
,
const
char
*
sceneId
)
int
kk_scene_insert_scene_info
(
const
char
*
roomId
,
const
char
*
sceneN
ame
,
int
sceneType
,
int
enable
,
const
char
*
sceneId
)
{
int
res
=
0
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
const
char
*
insertCmd
=
"insert into SceneInfo (
n
ame, sceneType,enable,sceneId) \
values ('%s','%d','%d','%s');"
;
const
char
*
insertCmd
=
"insert into SceneInfo (
roomId,sceneN
ame, sceneType,enable,sceneId) \
values ('%s','%
s','%
d','%d','%s');"
;
_kk_scene_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
n
ame
,
sceneType
,
enable
,
sceneId
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
roomId
,
sceneN
ame
,
sceneType
,
enable
,
sceneId
);
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
res
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
...
...
@@ -494,7 +495,7 @@ int kk_scene_insert_scene_action(const char* type,const char* deviceCode,int epN
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
printf
(
"----->kk_scene_insert_scene_action
\n
"
);
const
char
*
insertCmd
=
"insert into SceneActionInfo (type, deviceCode,epNum,propertyName,propertyValue,delay,sceneId,gwdeviceCode) \
values ('%s','%s','%d','%s','%s','%d','%s','%s');"
;
...
...
midware/midware/scene/kk_scene_db.h
View file @
570bd950
...
...
@@ -10,7 +10,8 @@ enum{
};
enum
{
DB_SCENEINFO_NAME
=
0
,
DB_SCENEINFO_ROOMID
=
0
,
DB_SCENEINFO_SCENENAME
,
DB_SCENEINFO_SCENETYPE
,
DB_SCENEINFO_ENABLE
,
DB_SCENEINFO_SCENEID
,
...
...
@@ -83,7 +84,7 @@ int kk_scene_insert_scene_condition(const char* type,int startTime,int endTime,i
char
repeat_days
,
const
char
*
sceneId
);
int
kk_scene_insert_scene_trigger
(
const
char
*
type
,
const
char
*
deviceCode
,
int
epNum
,
const
char
*
propertyName
,
const
char
*
compareType
,
const
char
*
compareValue
,
const
char
*
sceneId
,
int
isAnd
);
int
kk_scene_insert_scene_info
(
const
char
*
name
,
int
sceneType
,
int
enable
,
const
char
*
sceneId
);
int
kk_scene_insert_scene_info
(
const
char
*
roomName
,
const
char
*
name
,
int
sceneType
,
int
enable
,
const
char
*
sceneId
);
int
kk_scene_update_scene_enable
(
int
enable
,
const
char
*
sceneId
);
int
kk_scene_db_init
(
void
);
#endif
midware/midware/scene/kk_scene_handle.c
View file @
570bd950
...
...
@@ -582,6 +582,7 @@ static int kk_scene_parse_trigger_detail(const char *type,const cJSON *item,cons
cJSON
*
deviceCode
,
*
epNum
;
cJSON
*
propertyName
,
*
compareType
;
cJSON
*
compareValue
;
int
ep
;
if
(
type
==
NULL
||
item
==
NULL
||
sceneId
==
NULL
){
return
INVALID_PARAMETER
;
}
...
...
@@ -589,15 +590,22 @@ static int kk_scene_parse_trigger_detail(const char *type,const cJSON *item,cons
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
){
epNum
=
cJSON_CreateNumber
(
1
);
ep
=
1
;
}
else
{
if
(
epNum
->
type
==
cJSON_Number
){
ep
=
epNum
->
valueint
;
}
else
{
ep
=
atoi
(
epNum
->
valuestring
);
}
}
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
if
(
propertyName
==
NULL
)
return
FAIL_RETURN
;
compareType
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPARETYPE
);
if
(
compareType
==
NULL
)
return
FAIL_RETURN
;
compareValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPAREVALUE
);
if
(
compareValue
==
NULL
)
return
FAIL_RETURN
;
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
ep
Num
->
valueint
,
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
ep
,
propertyName
->
valuestring
,
compareType
->
valuestring
,
compareValue
->
valuestring
,
sceneId
,
isAnd
);
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"kk_scene_parse_scene_trigger fail!!!
\n
"
);
...
...
@@ -890,6 +898,7 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
cJSON
*
deviceCode
;
cJSON
*
epNum
;
int
iepnum
;
char
propertyValueStr
[
64
]
=
{
0
};
printf
(
"----->kk_scene_parse_scene_action
\r\n
"
);
...
...
@@ -942,7 +951,11 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
if
(
epNum
==
NULL
){
iepnum
=
1
;
}
else
{
if
(
epNum
->
type
==
cJSON_Number
){
iepnum
=
epNum
->
valueint
;
}
else
{
iepnum
=
atoi
(
epNum
->
valuestring
);
}
}
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
if
(
delay
==
NULL
)
return
FAIL_RETURN
;
...
...
@@ -963,10 +976,10 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
memcpy
(
info
.
propertyName
,
propertyName
->
valuestring
,
strlen
(
propertyName
->
valuestring
));
if
(
propertyValue
->
type
==
cJSON_Number
){
char
temp
[
64
]
=
{
0
};
snprintf
(
temp
,
64
,
"%d"
,
propertyValue
->
valueint
);
memcpy
(
info
.
propertyValue
,
temp
,
strlen
(
temp
));
snprintf
(
propertyValueStr
,
64
,
"%d"
,
propertyValue
->
valueint
);
memcpy
(
info
.
propertyValue
,
propertyValueStr
,
strlen
(
propertyValueStr
));
}
else
{
memcpy
(
info
.
propertyValue
,
propertyValue
->
valuestring
,
strlen
(
propertyValue
->
valuestring
));
}
...
...
@@ -980,7 +993,7 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
}
res
=
kk_scene_insert_scene_action
(
type
->
valuestring
,
node
->
deviceCode
,
iepnum
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
idelay
,
sceneId
,
node
->
fatherDeviceCode
);
propertyName
->
valuestring
,
propertyValue
Str
,
idelay
,
sceneId
,
node
->
fatherDeviceCode
);
if
(
res
!=
SUCCESS_RETURN
){
INFO_PRINT
(
"kk_scene_insert_scene_action fail!!!
\n
"
);
...
...
@@ -1069,7 +1082,9 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
ERROR_PRINT
(
"[%d]kk_scene_parse_addscene fail!!!
\n
"
,
__LINE__
);
return
INVALID_PARAMETER
;
}
cJSON
*
name
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_NAME
);
cJSON
*
room_id
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_ROOM_ID
);
if
(
room_id
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
name
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_SCENE_NAME
);
if
(
name
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
sceneType
=
cJSON_GetObjectItem
(
args
,
MSG_SCENE_SCENCTYPE
);
if
(
sceneType
==
NULL
)
return
FAIL_RETURN
;
...
...
@@ -1089,7 +1104,9 @@ int kk_scene_parse_addscene(const cJSON* args,char *sceneId,int isUpdate,const c
kk_scene_parse_scene_muticontrol
(
args
,
sceneId
,
isUpdate
);
}
else
{
res
=
kk_scene_insert_scene_info
(
name
->
valuestring
,
sceneType
->
valueint
,
enable
->
valueint
,
sceneId
);
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
){
INFO_PRINT
(
"kk_scene_insert_scene_info fail!!!
\n
"
);
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