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
e02fd780
Commit
e02fd780
authored
Aug 03, 2021
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yjq' into 'master'
Yjq See merge request chenweican/k-sdk!97
parents
cc48e429
90005f06
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
804 additions
and
1014 deletions
+804
-1014
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
+2
-2
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
+118
-34
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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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
;
...
...
@@ -382,27 +364,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
;
...
...
@@ -412,25 +388,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
);
...
...
@@ -438,175 +409,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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -69,8 +69,8 @@ int main(int argc, char* argv[])
int
rc
=
0
;
char
*
ppp
;
open
(
"kk_lan"
,
LOG_PID
,
LOG_USER
);
kk_lan_ccuid_init
();
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
);
...
...
application/klansdk/kk_login_handle.c
View file @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -12,6 +12,7 @@ int send_msg_to_module(cJSON *root);
int
arming_status_notify
(
int
type
);
...
...
common/api/com_api.h
View file @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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_Get_ccuid
(
ccu_deviceCode
);
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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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 @
e02fd780
...
...
@@ -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