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
13795e89
Commit
13795e89
authored
Oct 12, 2020
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】gateway端添加白名单处理
【提交人】陈伟灿
parent
a469a7c6
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
303 additions
and
1 deletion
+303
-1
platform/zigbee/app/builder/Z3GatewayHost/Makefile
platform/zigbee/app/builder/Z3GatewayHost/Makefile
+1
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_manager.c
...m/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_manager.c
+11
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_manager.h
...m/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_manager.h
+1
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.c
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.c
+11
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.h
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.h
+4
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.h
...zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.h
+3
-1
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_wlist_mng.c
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_wlist_mng.c
+263
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_wlist_mng.h
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_wlist_mng.h
+8
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.h
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.h
+1
-0
No files found.
platform/zigbee/app/builder/Z3GatewayHost/Makefile
View file @
13795e89
...
...
@@ -293,6 +293,7 @@ APPLICATION_FILES= \
./ZB/kk_color_space.c
\
./ZB/sub_device_manage.c
\
./ZB/kk_topo_batch_handle.c
\
./ZB/kk_wlist_mng.c
\
./kk_test.c
\
./rpc_api/src/rpc_common.c
\
./rpc_api/src/rpc_onoff.c
\
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_manager.c
View file @
13795e89
...
...
@@ -257,6 +257,17 @@ error_return:
return
-
1
;
}
int
kk_wlist_ctrl
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
EmberStatus
status
=
0
;
int
isEnable
=
*
(
int
*
)
data
;
status
=
kk_wlist_status_open
(
isEnable
);
//1: open; 0:close
return
status
;
}
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_manager.h
View file @
13795e89
...
...
@@ -79,6 +79,7 @@ typedef struct kk_dev_config_map{
kk_dev_config_item_extra_data
*
kk_find_extra_data
(
EmberNodeId
node
,
const
char
*
tag
);
int
kk_wlist_ctrl
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.c
View file @
13795e89
...
...
@@ -64,6 +64,17 @@ void kk_msg_report_property(cJSON *data,EmberEUI64 mac)
{
kk_msg_report
(
data
,
KK_REPORT_ATTRIBUTE_TYPE
,
KK_REPORT_ATTRIBUTE_METHOD
,
mac
);
}
void
kk_msg_report_whiteListAddedNotification
(
cJSON
*
data
,
EmberEUI64
mac
)
{
kk_msg_report
(
data
,
KK_REPORT_ADDWHITELIST_NOTIFY_METHOD
,
KK_REPORT_ADDWHITELIST_NOTIFY_TYPE
,
mac
);
}
void
kk_msg_report_whiteListDelNotification
(
cJSON
*
data
,
EmberEUI64
mac
)
{
kk_msg_report
(
data
,
KK_REPORT_DELWHITELIST_NOTIFY_METHOD
,
KK_REPORT_DELWHITELIST_NOTIFY_TYPE
,
mac
);
}
void
kk_msg_report_alarm
(
cJSON
*
data
,
EmberEUI64
mac
)
{
kk_msg_report
(
data
,
KK_REPORT_ALARM_TYPE
,
KK_REPORT_ALARM_METHOD
,
mac
);
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.h
View file @
13795e89
...
...
@@ -14,6 +14,8 @@
#define KK_REPORT_DEVICE_JOINED_METHOD "thing.topo.add"
#define KK_REPORT_DEVICE_LEAVE_METHOD "thing.topo.delete"
#define KK_REPORT_DEVICE_BATCH_LEAVE_METHOD "thing.topo.batchDelete"
#define KK_REPORT_ADDWHITELIST_NOTIFY_METHOD "thing.event.whiteListAddedNotification.post"
#define KK_REPORT_DELWHITELIST_NOTIFY_METHOD "thing.event.whiteListDeletedNotification.post"
...
...
@@ -29,6 +31,8 @@
#define KK_REPORT_DEVICE_BATCH_LEFT_TYPE "/thing/topo/batch_delete"
#define KK_REPORT_ATTRIBUTE_TYPE "/thing/event/property/post"
#define KK_REPORT_ALARM_TYPE "/thing/event/alarm/post"
#define KK_REPORT_ADDWHITELIST_NOTIFY_TYPE "/thing/event/whiteListAddedNotification/post"
#define KK_REPORT_DELWHITELIST_NOTIFY_TYPE "/thing/event/whiteListDeletedNotification/post"
#define GW2CCU_PROTOCOL "tcp"
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.h
View file @
13795e89
...
...
@@ -23,7 +23,9 @@ int kk_tsl_set_colorlight_Brightness(jrpc_context * ctx,EmberNodeId node,unsigne
int
kk_tsl_set_colorlight_mode
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
#define RPC_KK_TEST_FUNCTION_TABLE \
{(
rpc_function
*
)
kk_tsl_property_operation
,
"/thing/service/property/set"
}
\
{(
rpc_function
*
)
kk_tsl_property_operation
,
"/thing/service/property/set"
},
\
{(
rpc_function
*
)
kk_wlist_add
,
"/thing/service/addWhiteList"
},
\
{(
rpc_function
*
)
kk_wlist_delete
,
"/thing/service/deleteWhiteList"
},
\
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_wlist_mng.c
0 → 100644
View file @
13795e89
#include <stdio.h>
#include ".././jsonrpc/jsonrpc-c.h"
#include ".././jsonrpc/rpccJSON.h"
#include "kk_wlist_mng.h"
#include "sqlite3.h"
#define KK_TSL_GATAWAY_ADDWHITELIST_IDENTIFIER "addWhiteList"
#define KK_TSL_GATAWAY_WHITELISTDEVICE_IDENTIFIER "Devices"
#define KK_TSL_GATAWAY_WHITELISTMAC_IDENTIFIER "getWhiteListNotification.Devices[%d].MACAddress"
#define KK_TSL_GATAWAY_WHITELISTPRODUCTID_IDENTIFIER "getWhiteListNotification.Devices[%d].ProductId"
#define KK_TSL_GATAWAY_WHITELISTSN_IDENTIFIER "getWhiteListNotification.Devices[%d].SN"
#define KK_TSL_GATAWAY_WHITELISTDEVICEID_IDENTIFIER "getWhiteListNotification.Devices[%d].deviceId"
#define KK_WLIST_DB_FILE "/usr/kk/kk_wlist.db"
typedef
struct
{
void
*
mutex
;
int
isOpened
;
sqlite3
*
pDb
;
}
kk_wlist_ctx_t
;
static
kk_wlist_ctx_t
s_kk_wlist_ctx
=
{
NULL
,
0
,
NULL
};
static
kk_wlist_ctx_t
*
_kk_wlist_get_ctx
(
void
)
{
return
&
s_kk_wlist_ctx
;
}
static
void
_kk_wlist_lock
(
void
)
{
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexLock
(
ctx
->
mutex
);
}
}
static
void
_kk_wlist_unlock
(
void
)
{
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexUnlock
(
ctx
->
mutex
);
}
}
static
int
kk_wlist_db_Init
(
void
)
{
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
//eUtils_LockLock(&sLock);
_kk_wlist_lock
();
if
(
sqlite3_open_v2
(
KK_WLIST_DB_FILE
,
&
ctx
->
pDb
,
SQLITE_OPEN_READWRITE
|
SQLITE_OPEN_CREATE
|
SQLITE_OPEN_FULLMUTEX
,
NULL
)
!=
SQLITE_OK
)
{
printf
(
"Error initialising linkage database (%s)"
,
sqlite3_errmsg
(
ctx
->
pDb
));
_kk_wlist_unlock
();
return
FAIL_RETURN
;
}
printf
(
"wlist Database opened
\n
"
);
{
const
char
*
pwListTable
=
"CREATE TABLE IF NOT EXISTS WhiteList(deviceMac varchar(17),productId varchar(33), deviceSN varchar(33), deviceId varchar(33),open INTEGER)"
;
char
*
pcErr
;
// DBG_vPrintf(DBG_SQL, "Execute SQL: '%s'\n", pConditionTableDef);
if
(
sqlite3_exec
(
ctx
->
pDb
,
pwListTable
,
NULL
,
NULL
,
&
pcErr
)
!=
SQLITE_OK
)
{
printf
(
"Error creating table (%s)
\n
"
,
pcErr
);
sqlite3_free
(
pcErr
);
//eUtils_LockUnlock(&sLock);
_kk_wlist_unlock
();
return
FAIL_RETURN
;
}
}
//eUtils_LockUnlock(&sLock);
_kk_wlist_unlock
();
return
SUCCESS_RETURN
;
}
static
int
_kk_check_exist
(
const
char
*
device_mac
)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pmac
=
NULL
;
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
const
char
*
searchCmd
=
"select * from WhiteList;"
;
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
printf
(
"total_column = %d
\n
"
,
sqlite3_column_count
(
stmt
));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pmac
=
sqlite3_column_text
(
stmt
,
1
);
if
(
!
strcmp
(
device_mac
,
pmac
))
{
isExist
=
1
;
break
;
}
}
printf
(
"
\n
"
);
sqlite3_finalize
(
stmt
);
return
isExist
;
}
static
int
kk_wlist_insert_db
(
char
device_mac
[
DEVICE_MAC_MAXLEN
],
char
product_Id
[
PRODUCT_CODE_MAXLEN
],
\
char
device_SN
[
DEVICE_SN_MAXLEN
],
char
device_Id
[
DEVICE_CODE_MAXLEN
])
{
const
char
*
insertCmd
=
"insert into WhiteList (deviceMac, productId,deviceSN,deviceId,open) values ('%s','%s','%s','%s','%d');"
;
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
if
(
ctx
->
isOpened
!=
1
){
printf
(
"[%s][%d] PLEASE OPNE THE WHITELIST FUNCTION FIRST!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
return
FAIL_RETURN
;
}
_kk_wlist_lock
();
len
=
strlen
(
insertCmd
)
+
DEVICE_MAC_MAXLEN
+
DEVICE_SN_MAXLEN
+
DEVICE_CODE_MAXLEN
+
PRODUCT_CODE_MAXLEN
;
sqlCmd
=
(
char
*
)
malloc
(
len
);
if
(
sqlCmd
==
NULL
)
{
_kk_wlist_unlock
();
return
MEMORY_NOT_ENOUGH
;
}
memset
(
sqlCmd
,
0x0
,
len
);
sprintf
(
sqlCmd
,
insertCmd
,
device_mac
,
product_Id
,
device_SN
,
device_Id
,
1
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
printf
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
printf
(
"kk_wlist_insert_db successfully
\n
"
);
}
free
(
sqlCmd
);
sqlCmd
=
NULL
;
_kk_wlist_unlock
();
return
SUCCESS_RETURN
;
}
static
int
_kk_wlist_delete_db_byMac
(
char
device_mac
[
DEVICE_MAC_MAXLEN
])
{
const
char
*
deleteCmd
=
"delete from WhiteList where deviceMac = %s;"
;
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
if
(
ctx
->
isOpened
!=
1
){
printf
(
"[%s][%d] PLEASE OPNE THE WHITELIST FUNCTION FIRST!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
return
FAIL_RETURN
;
}
_kk_wlist_lock
();
len
=
strlen
(
deleteCmd
)
+
DEVICE_MAC_MAXLEN
;
sqlCmd
=
(
char
*
)
malloc
(
len
);
if
(
sqlCmd
==
NULL
)
{
_kk_wlist_unlock
();
return
MEMORY_NOT_ENOUGH
;
}
memset
(
sqlCmd
,
0x0
,
len
);
sprintf
(
sqlCmd
,
deleteCmd
,
device_mac
);
printf
(
"Table delete data sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
printf
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
printf
(
"Table delete data successfully
\n
"
);
}
free
(
sqlCmd
);
sqlCmd
=
NULL
;
_kk_wlist_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_wlist_status_open
(
int
isOpen
)
{
int
res
=
0
;
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
ctx
->
isOpened
=
isOpen
;
return
SUCCESS_RETURN
;
}
int
kk_wlist_init
(
void
)
{
int
res
=
0
;
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
/* Create Mutex */
ctx
->
mutex
=
HAL_MutexCreate
();
if
(
ctx
->
mutex
==
NULL
)
{
return
FAIL_RETURN
;
}
res
=
kk_wlist_db_Init
();
if
(
res
!=
SUCCESS_RETURN
){
printf
(
"[%s][%d]kk_wlist_db_Init FAIL!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
}
return
SUCCESS_RETURN
;
}
cJSON
*
kk_wlist_add
(
jrpc_context
*
ctx
,
cJSON
*
params
,
cJSON
*
id
,
cJSON
*
mac
)
{
int
res
=
0
;
char
*
macStr
=
NULL
;
char
*
productCodeStr
=
NULL
;
EmberEUI64
localEui64
=
{
0
};
emberAfGetEui64
(
localEui64
);
if
(
params
==
NULL
){
goto
error_return
;
}
else
{
cJSON
*
deviceArray
=
rpc_cJSON_GetObjectItem
(
params
,
"Devices"
);
cJSON
*
item
=
deviceArray
->
child
;
while
(
item
!=
NULL
){
macStr
=
rpc_cJSON_GetObjectItem
(
item
,
"MACAddress"
)
->
valuestring
;
productCodeStr
=
rpc_cJSON_GetObjectItem
(
item
,
"ProductId"
)
->
valuestring
;
if
(
!
_kk_check_exist
(
macStr
)){
kk_wlist_insert_db
(
macStr
,
productCodeStr
,
""
,
macStr
);
}
item
=
item
->
next
;
}
kk_msg_report_whiteListAddedNotification
(
""
,
localEui64
);
return
rpc_cJSON_CreateNumber
(
res
);
}
error_return:
return
rpc_cJSON_CreateNull
();
}
cJSON
*
kk_wlist_delete
(
jrpc_context
*
ctx
,
cJSON
*
params
,
cJSON
*
id
,
cJSON
*
mac
)
{
int
res
=
0
;
char
*
macStr
=
NULL
;
EmberEUI64
localEui64
=
{
0
};
emberAfGetEui64
(
localEui64
);
if
(
params
==
NULL
){
goto
error_return
;
}
else
{
cJSON
*
deviceArray
=
rpc_cJSON_GetObjectItem
(
params
,
"Devices"
);
cJSON
*
item
=
deviceArray
->
child
;
while
(
item
!=
NULL
){
macStr
=
rpc_cJSON_GetObjectItem
(
item
,
"MACAddress"
)
->
valuestring
;
_kk_wlist_delete_db_byMac
(
macStr
);
item
=
item
->
next
;
}
kk_msg_report_whiteListDelNotification
(
""
,
localEui64
);
return
rpc_cJSON_CreateNumber
(
res
);
}
error_return:
return
rpc_cJSON_CreateNull
();
}
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_wlist_mng.h
0 → 100644
View file @
13795e89
#ifndef __KK_WHITELIST_MNG_H__
#define __KK_WHITELIST_MNG_H__
#include "kk_tsl_common.h"
#include "kk_zb_com.h"
int
kk_wlist_init
(
void
);
int
kk_wlist_status_open
(
int
isOpen
);
int
kk_delete_wlist_byMac
(
const
char
*
device_mac
);
#endif
\ No newline at end of file
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.h
View file @
13795e89
...
...
@@ -20,6 +20,7 @@ void kk_rpc_test(void);
#define KK_RPC_SET_FUNCTION_TABLE {\
{
"kk_permit_join"
,
kk_permit_join
},
\
{
"kk_wlist_ctrl"
,
kk_wlist_ctrl
},
\
{
"zclOnOff"
,
kk_tsl_set_gloabl_OnOff
},
\
{
"zclOnOff_Off"
,
zclOnOff_Off
},
\
{
"kk_tsl_set_colorlight_RGB_red"
,
kk_tsl_set_colorlight_RGB_red
},
\
...
...
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