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
Expand all
Hide 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
)
{
rlt
=
crt
->
func
(
value
,
s_type
);
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
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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,99 +84,41 @@ 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
);
if
(
val
->
type
==
cJSON_False
){
cJSON_AddFalseToObject
(
params
,
n_identifier
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_True
){
cJSON_AddTrueToObject
(
params
,
n_identifier
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_NULL
){
cJSON_AddNullToObject
(
params
,
n_identifier
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_Number
){
cJSON_AddNumberToObject
(
params
,
n_identifier
->
valuestring
,
val
->
valuedouble
);
}
else
if
(
val
->
type
==
cJSON_String
){
cJSON_AddStringToObject
(
params
,
n_identifier
->
valuestring
,
val
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_Array
){
printf
(
"......................
\n
"
);
}
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
){
cJSON_AddTrueToObject
(
params
,
n_identifier
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_NULL
){
cJSON_AddNullToObject
(
params
,
n_identifier
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_Number
){
cJSON_AddNumberToObject
(
params
,
n_identifier
->
valuestring
,
val
->
valuedouble
);
}
else
if
(
val
->
type
==
cJSON_String
){
cJSON_AddStringToObject
(
params
,
n_identifier
->
valuestring
,
val
->
valuestring
);
}
else
if
(
val
->
type
==
cJSON_Array
){
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
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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
{
iepnum
=
epNum
->
valueint
;
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
);
snprintf
(
propertyValueStr
,
64
,
"%d"
,
propertyValue
->
valueint
);
memcpy
(
info
.
propertyValue
,
temp
,
strlen
(
temp
));
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