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
9a29244b
Commit
9a29244b
authored
Sep 16, 2020
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
以配置的方式加载表
parent
fda1de55
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
892 additions
and
0 deletions
+892
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_3001.json
...uilder/Z3GatewayHost/ZB/dev_config_table/device_3001.json
+21
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_3002.json
...uilder/Z3GatewayHost/ZB/dev_config_table/device_3002.json
+21
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_3003.json
...uilder/Z3GatewayHost/ZB/dev_config_table/device_3003.json
+28
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_table_db.c
.../zigbee/app/builder/Z3GatewayHost/ZB/kk_device_table_db.c
+546
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_table_db.h
.../zigbee/app/builder/Z3GatewayHost/ZB/kk_device_table_db.h
+57
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.c
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.c
+114
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.h
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.h
+49
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zb_com.h
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zb_com.h
+56
-0
No files found.
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_3001.json
0 → 100644
View file @
9a29244b
{
"productCode"
:
"3001"
,
"config"
:[
{
"identity"
:
"PowerSwitch_1"
,
"endpoint"
:
18
,
"cluster"
:
"0x0011"
,
"attribute"
:
"0x0022"
,
"reportFunc"
:
"A"
,
"controlFunc"
:
"B"
},{
"identity"
:
"PowerSwitch_2"
,
"endpoint"
:
19
,
"cluster"
:
"0x0033"
,
"attribute"
:
"0x0044"
,
"reportFunc"
:
"C"
,
"controlFunc"
:
"D"
}
]
}
\ No newline at end of file
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_3002.json
0 → 100644
View file @
9a29244b
{
"productCode"
:
"3002"
,
"config"
:[
{
"identity"
:
"AAA"
,
"endpoint"
:
11
,
"cluster"
:
"0x1111"
,
"attribute"
:
"0x2222"
,
"reportFunc"
:
"zclOnOff_On"
,
"controlFunc"
:
"zclOnOff_On"
},{
"identity"
:
"BBB"
,
"endpoint"
:
22
,
"cluster"
:
"0x3333"
,
"attribute"
:
"0x4444"
,
"reportFunc"
:
"zclOnOff_Off"
,
"controlFunc"
:
"zclOnOff_Off"
}
]
}
\ No newline at end of file
platform/zigbee/app/builder/Z3GatewayHost/ZB/dev_config_table/device_3003.json
0 → 100644
View file @
9a29244b
{
"productCode"
:
"3003"
,
"config"
:[
{
"identity"
:
"AAA"
,
"endpoint"
:
11
,
"cluster"
:
"0x1111"
,
"attribute"
:
"0x2222"
,
"reportFunc"
:
"zclOnOff_On"
,
"controlFunc"
:
"zclOnOff_On"
},{
"identity"
:
"BBB"
,
"endpoint"
:
22
,
"cluster"
:
"0x3333"
,
"attribute"
:
"0x4444"
,
"reportFunc"
:
"zclOnOff_Off"
,
"controlFunc"
:
"zclOnOff_Off"
},{
"identity"
:
"CCCC"
,
"endpoint"
:
33
,
"cluster"
:
"0x5555"
,
"attribute"
:
"0x6666"
,
"reportFunc"
:
"zclOnOff_Off"
,
"controlFunc"
:
"zclOnOff_Off"
}
]
}
\ No newline at end of file
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_table_db.c
0 → 100644
View file @
9a29244b
#include "kk_device_table_db.h"
#include "sqlite3.h"
void
kk_mac_conver
(
EmberEUI64
mac
,
char
*
macString
)
{
sprintf
(
macString
,
"%02X%02X%02X%02X%02X%02X%02X%02X"
,
mac
[
7
],
mac
[
6
],
mac
[
5
],
mac
[
4
],
mac
[
3
],
mac
[
2
],
mac
[
1
],
mac
[
0
]);
}
void
kk_macString_conver_mac
(
EmberEUI64
mac
,
char
*
macString
)
{
sscanf
(
macString
,
"%02X%02X%02X%02X%02X%02X%02X%02X"
,
&
mac
[
7
],
&
mac
[
6
],
&
mac
[
5
],
&
mac
[
4
],
&
mac
[
3
],
&
mac
[
2
],
&
mac
[
1
],
&
mac
[
0
]);
}
static
kk_device_table_s
*
kk_zb_device_table
=
NULL
;
kk_device_table_s
*
kk_get_device_table_pointer
(
void
)
{
return
kk_zb_device_table
;
}
void
kk_print_device_table
(
void
)
{
int
i
,
cnt
=
0
;
kk_device_table_s
*
ptr
=
kk_zb_device_table
;
emberAfAppPrint
(
"
\n
-----------kk device table-----------
\n
"
);
while
(
ptr
!=
NULL
){
emberAfAppPrint
(
"
\n
%d:"
,
++
cnt
);
emberAfAppPrint
(
"
\n
MAC = "
);
emberAfPrintBigEndianEui64
(
ptr
->
mac
);
emberAfAppPrint
(
"
\n
productCode = %s"
,(
ptr
->
productCode
!=
NULL
)
?
ptr
->
productCode
:
"unknow"
);
emberAfAppPrint
(
"
\n
identifyCnt = %d"
,
ptr
->
identifyCnt
);
ptr
=
ptr
->
next
;
}
}
static
kk_device_table_s
*
kk_device_table_create
()
{
kk_device_table_s
*
node
=
(
kk_device_table_s
*
)
malloc
(
sizeof
(
kk_device_table_s
));
if
(
node
==
NULL
){
return
node
;
}
MEMSET
(
node
,
0
,
sizeof
(
kk_device_table_s
));
return
node
;
}
static
kk_device_table_s
*
kk_device_table_find_next_empty
()
{
kk_device_table_s
*
ptr
=
kk_zb_device_table
;
if
(
ptr
==
NULL
)
return
ptr
;
while
(
ptr
!=
NULL
){
if
(
ptr
->
next
==
NULL
)
return
ptr
;
ptr
=
ptr
->
next
;
}
}
static
void
kk_device_fill
(
kk_device_table_s
*
ptr
,
EmberEUI64
mac
,
EmberNodeId
nodeId
,
char
*
productCode
,
uint16_t
deviceId
)
{
memcpy
(
ptr
->
mac
,
mac
,
sizeof
(
EmberEUI64
));
ptr
->
nodeId
=
nodeId
;
ptr
->
deviceId
=
deviceId
;
ptr
->
identifyCnt
=
KK_MAX_READ_MODLE_ID_COUNT
;
if
(
productCode
!=
NULL
){
memcpy
(
ptr
->
productCode
,
productCode
,
strlen
(
productCode
));
}
}
char
*
kk_device_find_productCode
(
EmberEUI64
mac
)
{
kk_device_table_s
*
dev
;
dev
=
kk_device_find_by_mac
(
mac
);
if
(
dev
==
NULL
)
return
NULL
;
return
dev
->
productCode
;
}
kk_device_table_s
*
kk_device_find_by_mac
(
EmberEUI64
mac
)
{
kk_device_table_s
*
ptr
=
kk_zb_device_table
;
while
(
ptr
!=
NULL
){
if
(
MEMCOMPARE
(
ptr
->
mac
,
mac
,
sizeof
(
EmberEUI64
))
==
0
){
return
ptr
;
}
ptr
=
ptr
->
next
;
}
return
NULL
;
}
kk_device_table_s
*
kk_device_find_by_node
(
EmberNodeId
node
)
{
kk_device_table_s
*
ptr
=
kk_zb_device_table
;
while
(
ptr
!=
NULL
){
if
(
ptr
->
nodeId
==
node
){
return
ptr
;
}
ptr
=
ptr
->
next
;
}
return
NULL
;
}
void
kk_device_table_add
(
EmberEUI64
mac
,
EmberNodeId
nodeId
,
const
char
*
productCode
,
uint16_t
deviceId
)
{
kk_device_table_s
*
ptr
=
kk_zb_device_table
;
kk_device_table_s
*
newNode
;
emberAfDebugPrintln
(
"
\n
--------------------kk device table add--------------------
\n
"
);
emberAfDebugPrint
(
"mac:"
);
emberAfPrintBigEndianEui64
(
mac
);
kk_sub_tsl_add
(
mac
,
productCode
);
if
(
kk_device_find_by_node
(
nodeId
)
!=
NULL
){
emberAfDebugPrintln
(
" is already in device table!!!"
);
kk_print_device_table
();
return
;
}
emberAfAppPrintln
(
",nodeId:0x%04x,productCode:%s,device id:0x%04x"
,
nodeId
,(
productCode
==
NULL
)
?
"nukown"
:
productCode
,
deviceId
);
if
(
ptr
==
NULL
){
kk_zb_device_table
=
kk_device_table_create
();
ptr
=
kk_zb_device_table
;
kk_device_fill
(
ptr
,
mac
,
nodeId
,
productCode
,
deviceId
);
return
;
}
ptr
=
kk_device_table_find_next_empty
();
if
(
ptr
!=
NULL
){
newNode
=
kk_device_table_create
();
if
(
newNode
!=
NULL
){
ptr
->
next
=
newNode
;
kk_device_fill
(
newNode
,
mac
,
nodeId
,
productCode
,
deviceId
);
}
}
else
{
emberAfCorePrintln
(
"[KK device table] fatal!!!%s"
,
__LINE__
);
}
}
void
kk_device_joined
(
EmberNodeId
node
)
{
EmberEUI64
mac
;
uint16_t
deviceId
;
uint16_t
deviceTableIndex
;
EmberAfPluginDeviceTableEntry
*
devPtr
;
UTIL_LOG_INFO
(
"
\n
********************kk device joined********************
\n
"
);
if
(
emberAfDeviceTableGetEui64FromNodeId
(
node
,
mac
)
==
false
){
deviceTableIndex
=
emberAfDeviceTableGetIndexFromNodeId
(
node
);
if
(
deviceTableIndex
!=
0xffff
){
devPtr
=
emberAfDeviceTablePointer
();
kk_add_device_to_table
(
mac
,
node
,
devPtr
[
deviceTableIndex
].
deviceId
);
}
}
else
{
emberAfDebugPrintln
(
"[not find 111]"
);
if
(
emberLookupEui64ByNodeId
(
node
,
mac
)
==
EMBER_SUCCESS
){
deviceTableIndex
=
emberAfDeviceTableGetIndexFromNodeId
(
node
);
if
(
deviceTableIndex
!=
0xffff
){
devPtr
=
emberAfDeviceTablePointer
();
kk_add_device_to_table
(
mac
,
node
,
devPtr
[
deviceTableIndex
].
deviceId
);
}
}
else
{
emberAfDebugPrintln
(
"[not find 222]"
);
}
}
}
void
kk_device_table_delete
(
EmberEUI64
mac
)
{
kk_device_table_s
*
ptr
=
kk_zb_device_table
;
kk_device_table_s
*
ptr_temp
=
kk_zb_device_table
;
if
(
ptr
==
NULL
){
emberAfCorePrintln
(
"[KK device table] is empty!!!"
);
return
;
}
while
(
ptr
!=
NULL
){
if
(
MEMCOMPARE
(
ptr
->
mac
,
mac
,
sizeof
(
EmberEUI64
))
==
0
){
if
(
ptr
->
next
==
NULL
){
free
(
ptr
);
kk_zb_device_table
=
NULL
;
emberAfCorePrintln
(
"[KK device table]delete,now is empty !!!"
);
return
;
}
else
{
if
(
ptr
==
kk_zb_device_table
){
kk_zb_device_table
=
ptr
->
next
;
emberAfCorePrintln
(
"[KK device table] delete list header"
);
free
(
ptr
);
return
;
}
else
{
ptr_temp
->
next
=
ptr
->
next
;
free
(
ptr
);
emberAfCorePrintln
(
"[KK device table] delete "
);
return
;
}
}
}
ptr_temp
=
ptr
;
ptr
=
ptr
->
next
;
}
}
/*
void kk_device_table_save(void)
{
FILE *fp;
int i;
uint16_t pLen;
kk_device_table_s *ptr = kk_zb_device_table;
fp = fopen("kk_devices.txt", "w");
while(ptr!=NULL){
for (i = 0; i < 8; i++) {
fprintf(fp, "%x ", ptr->mac[i]);
}
fprintf(fp, "%x ",ptr->nodeId);
fprintf(fp, "%x ",ptr->deviceId);
if(ptr->productCode==NULL){
pLen = 0;
}else{
pLen = strlen(ptr->productCode);
}
fprintf(fp,"%x ",pLen);
for(i=0;i<pLen;i++){
fprintf(fp,"%x ",ptr->productCode[i]);
}
ptr = ptr->next;
}
fclose(fp);
}
void kk_device_table_load(void)
{
UTIL_LOG_INFO("\n********************kk load device table********************\n");
FILE *fp;
int i;
EmberEUI64 mac;
uint16_t nodeId;
uint16_t deviceId;
uint16_t len;
char pCode[33];
fp = fopen("kk_devices.txt", "r");
if(fp==NULL) return;
while(feof(fp) == false){
emberAfDebugPrintln("111");
for (i = 0; i< 8; i++) {
fscanf(fp, "%x ", &mac[i]);
}
emberAfDebugPrintln("222");
fscanf(fp, "%x", &nodeId);
fscanf(fp, "%x ", &deviceId);
emberAfDebugPrintln("len=%d",len);
fscanf(fp, "%x", &len);
for(i=0;i<len;i++){
fscanf(fp,"%x ",&pCode[i]);
}
pCode[i] = 0;
if(len==0){
kk_device_table_add(mac,nodeId,NULL,deviceId);
}else{
kk_device_table_add(mac,nodeId,pCode,deviceId);
}
}
fclose(fp);
//kk_device_table_add(EmberEUI64 mac,EmberNodeId nodeId,uint8_t epNum,uint8_t* epVal,char *productCode)
//kk_print_device_table();
}
void kk_device_table_clear(void)
{
kk_device_table_s *ptr = kk_zb_device_table;
kk_device_table_s *ptr_temp = kk_zb_device_table;
if(ptr==NULL){
return ;
}
while(ptr!=NULL){
if(ptr->next==NULL){
free(ptr);
kk_zb_device_table = NULL;
return ;
}else{
if(ptr==kk_zb_device_table){
kk_zb_device_table = ptr->next;
free(ptr);
return ;
}else{
ptr_temp->next = ptr->next;
free(ptr);
return ;
}
}
ptr_temp = ptr;
ptr = ptr->next;
}
kk_device_table_save();
}
*/
//************************************************************************
char
*
insertCmd
=
"insert into "
KK_DEVICE_DB_TABLE
" values('%s','%d','%d','%s');"
;
char
*
createCmd
=
"create table "
KK_DEVICE_DB_TABLE
" (MAC text PRIMARY KEY, node integer, deviceId integer, productCode text);"
;
char
*
deleteCmd
=
"delete from "
KK_DEVICE_DB_TABLE
" where MAC = '%s'"
;
char
*
searchCmd
=
"select * from "
KK_DEVICE_DB_TABLE
";"
;
void
kk_device_db_init
(
void
)
{
sqlite3
*
db
=
NULL
;
char
*
errmsg
=
NULL
;
int
ret
=
sqlite3_open
(
KK_DEVICE_DB_FILE
,
&
db
);
if
(
ret
){
emberAfDebugPrintln
(
"can not open database.
\n
"
);
return
;
}
else
{
emberAfDebugPrintln
(
"open database succsee.
\n
"
);
ret
=
sqlite3_exec
(
db
,
createCmd
,
NULL
,
NULL
,
&
errmsg
);
if
(
ret
!=
0
){
emberAfDebugPrintln
(
"create fail,%s
\n
"
,
errmsg
);
}
}
sqlite3_close
(
db
);
}
void
kk_device_db_insert
(
EmberEUI64
mac
,
EmberNodeId
nodeId
,
uint16_t
deviceId
,
char
*
productCode
)
{
sqlite3
*
db
=
NULL
;
char
*
errmsg
=
NULL
;
char
*
sqlCmd
;
int
ret
=
sqlite3_open
(
KK_DEVICE_DB_FILE
,
&
db
);
char
macString
[
17
]
=
{
0
};
if
(
ret
==
0
){
kk_mac_conver
(
mac
,
macString
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
macString
,
nodeId
,
deviceId
,
productCode
);
emberAfDebugPrintln
(
"sqlCmd=%s"
,
sqlCmd
);
if
(
sqlite3_exec
(
db
,
sqlCmd
,
NULL
,
NULL
,
&
errmsg
)
!=
0
){
emberAfDebugPrintln
(
"insert fail,%s
\n
"
,
errmsg
);
kk_device_db_init
();
if
(
sqlite3_exec
(
db
,
sqlCmd
,
NULL
,
NULL
,
&
errmsg
)
!=
0
){
emberAfDebugPrintln
(
"insert fail again,%s
\n
"
,
errmsg
);
}
}
}
else
{
emberAfDebugPrintln
(
"open database fail,%s
\n
"
,
__LINE__
);
return
;
}
sqlite3_close
(
db
);
}
void
kk_device_db_delete
(
EmberEUI64
mac
)
{
sqlite3
*
db
=
NULL
;
char
*
errmsg
=
NULL
;
char
*
sqlCmd
;
int
ret
=
sqlite3_open
(
KK_DEVICE_DB_FILE
,
&
db
);
char
macString
[
17
]
=
{
0
};
if
(
ret
==
0
){
kk_mac_conver
(
mac
,
macString
);
sqlCmd
=
sqlite3_mprintf
(
deleteCmd
,
macString
);
emberAfDebugPrintln
(
"sqlCmd=%s"
,
sqlCmd
);
if
(
sqlite3_exec
(
db
,
sqlCmd
,
NULL
,
NULL
,
&
errmsg
)
!=
0
){
emberAfDebugPrintln
(
"delete fail,%s
\n
"
,
errmsg
);
}
}
else
{
emberAfDebugPrintln
(
"open database fail,%s
\n
"
,
__LINE__
);
return
;
}
sqlite3_close
(
db
);
}
void
kk_device_db_update
(
EmberEUI64
mac
,
EmberNodeId
nodeId
,
uint16_t
deviceId
,
char
*
productCode
)
{
kk_device_db_delete
(
mac
);
kk_device_db_insert
(
mac
,
nodeId
,
deviceId
,
productCode
);
}
bool
kk_device_db_check
(
EmberEUI64
mac
)
{
sqlite3_stmt
*
stmt
;
sqlite3
*
db
=
NULL
;
char
*
errmsg
=
NULL
;
char
*
sqlCmd
;
char
*
eui64
=
NULL
;
int
ret
=
sqlite3_open
(
KK_DEVICE_DB_FILE
,
&
db
);
char
macString
[
17
]
=
{
0
};
bool
flag
=
false
;
if
(
ret
==
0
){
kk_mac_conver
(
mac
,
macString
);
sqlite3_prepare_v2
(
db
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
eui64
=
sqlite3_column_text
(
stmt
,
0
);
if
(
!
strcmp
(
eui64
,
macString
)){
flag
=
true
;
break
;
}
}
sqlite3_finalize
(
stmt
);
if
(
flag
==
true
){
emberAfDebugPrintln
(
"find,%s
\n
"
,
macString
);
}
else
{
emberAfDebugPrintln
(
"not find,%s
\n
"
,
macString
);
}
}
else
{
emberAfDebugPrintln
(
"open database fail,%s
\n
"
,
__LINE__
);
return
false
;
}
sqlite3_close
(
db
);
return
flag
;
}
void
kk_device_db_load
()
{
sqlite3_stmt
*
stmt
;
sqlite3
*
db
=
NULL
;
char
*
errmsg
=
NULL
;
char
*
macString
=
NULL
;
EmberEUI64
mac
;
EmberNodeId
nodeId
;
char
*
productCode
;
uint16_t
deviceId
;
UTIL_LOG_INFO
(
"
\n
********************kk device table load********************
\n
"
);
int
ret
=
sqlite3_open
(
KK_DEVICE_DB_FILE
,
&
db
);
sqlite3_prepare_v2
(
db
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
macString
=
sqlite3_column_text
(
stmt
,
0
);
//kk_macString_conver_mac(mac,macString); //todo: why???
rpc_get_mac
(
macString
,
mac
);
nodeId
=
sqlite3_column_int
(
stmt
,
1
);
deviceId
=
sqlite3_column_int
(
stmt
,
2
);
productCode
=
sqlite3_column_text
(
stmt
,
3
);
if
(
productCode
==
""
){
productCode
=
NULL
;
emberAfDebugPrintln
(
"unkown product code"
);
}
kk_device_table_add
(
mac
,
nodeId
,
productCode
,
deviceId
);
}
sqlite3_finalize
(
stmt
);
sqlite3_close
(
db
);
}
int
kk_device_db_get_num
()
{
sqlite3
*
db
=
NULL
;
char
*
errmsg
=
NULL
;
int
nRow
=
0
;
int
nColumn
=
0
;
char
**
dbResult
;
sqlite3_open
(
KK_DEVICE_DB_FILE
,
&
db
);
sqlite3_get_table
(
db
,
searchCmd
,
&
dbResult
,
&
nRow
,
&
nColumn
,
&
errmsg
);
emberAfDebugPrintln
(
"nRow=%d,nColumn=%d,errmsg=%s"
,
nRow
,
nColumn
,
errmsg
);
sqlite3_close
(
db
);
}
void
kk_device_config_load_from_db
(
void
)
{
kk_device_table_s
*
ptr
=
kk_zb_device_table
;
while
(
ptr
!=
NULL
){
if
(
ptr
->
productCode
!=
NULL
){
kk_device_config_map_add
(
ptr
->
productCode
);
}
ptr
=
ptr
->
next
;
}
}
void
emberAfPluginDeviceTableInitialized
(
void
)
{
kk_device_db_load
();
kk_print_device_table
();
kk_load_dev_map_table
();
kk_device_map_print
();
kk_device_config_load_from_db
();
}
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_device_table_db.h
0 → 100644
View file @
9a29244b
#ifndef __KK_DEVICE_TABLE_DB_H
#define __KK_DEVICE_TABLE_DB_H
#include "kk_zb_com.h"
#include "kk_test.h"
#define KK_MAX_PRODUCT_CODE_SIZE 33
#define KK_DEVICE_DB_TABLE "kk_device"
#define KK_DEVICE_DB_FILE "kk_device.db"
void
kk_device_db_init
(
void
);
void
kk_device_db_insert
(
EmberEUI64
mac
,
EmberNodeId
nodeId
,
uint16_t
deviceId
,
char
*
productCode
);
void
kk_device_db_delete
(
EmberEUI64
mac
);
void
kk_device_db_update
(
EmberEUI64
mac
,
EmberNodeId
nodeId
,
uint16_t
deviceId
,
char
*
productCode
);
bool
kk_device_db_check
(
EmberEUI64
mac
);
int
kk_device_db_get_num
();
kk_device_table_s
*
kk_get_device_table_pointer
(
void
);
void
kk_print_device_table
(
void
);
char
*
kk_device_find_productCode
(
EmberEUI64
mac
);
kk_device_table_s
*
kk_device_find_by_mac
(
EmberEUI64
mac
);
void
kk_device_table_add
(
EmberEUI64
mac
,
EmberNodeId
nodeId
,
const
char
*
productCode
,
uint16_t
deviceId
);
void
kk_device_table_delete
(
EmberEUI64
mac
);
void
kk_add_device_to_table
(
EmberEUI64
mac
,
EmberNodeId
nodeId
,
uint16_t
deviceId
);
#endif
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.c
0 → 100644
View file @
9a29244b
#include "kk_msg_report.h"
static
void
kk_msg_report
(
cJSON
*
data
,
char
*
msgtype
,
char
*
method
,
EmberEUI64
mac
)
{
static
uint16_t
msgid
;
char
msgIdString
[
10
]
=
{
0
};
char
macString
[
19
]
=
{
0
};
sub_dev_node_t
*
node
=
NULL
;
int
res
=
0
;
rpc_eui64ToString
(
mac
,
macString
);
res
=
kk_sub_tsl_get_device_by_mac
(
macString
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
printf
(
"[%s][%d]kk_rpc_send_message error!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
return
;
}
cJSON
*
info
=
rpc_cJSON_CreateObject
();
if
(
info
!=
NULL
){
rpc_cJSON_AddStringToObject
(
info
,
"msgType"
,
msgtype
);
rpc_cJSON_AddStringToObject
(
info
,
"productCode"
,
node
->
productCode
);
rpc_cJSON_AddStringToObject
(
info
,
"deviceCode"
,
macString
);
}
cJSON
*
payload
=
rpc_cJSON_CreateObject
();
if
(
payload
!=
NULL
){
sprintf
(
msgIdString
,
"%d"
,
++
msgid
);
rpc_cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgIdString
);
rpc_cJSON_AddStringToObject
(
payload
,
"version"
,
KK_IPC_VERSION
);
rpc_cJSON_AddStringToObject
(
payload
,
"method"
,
method
);
rpc_cJSON_AddItemToObject
(
payload
,
"params"
,
data
);
}
cJSON
*
root
=
rpc_cJSON_CreateObject
();
if
(
root
!=
NULL
){
rpc_cJSON_AddItemToObject
(
root
,
"info"
,
info
);
rpc_cJSON_AddItemToObject
(
root
,
"payload"
,
payload
);
}
char
*
p
=
rpc_cJSON_Print
(
root
);
emberAfAppPrintln
(
"send json:
\n
%s
\n
"
,
p
);
free
(
p
);
jrpc_send_msg
(
root
);
rpc_cJSON_Delete
(
root
);
}
static
void
kk_msg_report_joined
(
cJSON
*
data
,
EmberEUI64
mac
)
{
kk_msg_report
(
data
,
KK_REPORT_DEVICE_JOINED_TYPE
,
KK_REPORT_DEVICE_JOINED_METHOD
,
mac
);
}
static
void
kk_msg_report_leave
(
cJSON
*
data
,
EmberEUI64
mac
)
{
kk_msg_report
(
data
,
KK_REPORT_DEVICE_LEFT_TYPE
,
KK_REPORT_DEVICE_LEAVE_METHOD
,
mac
);
}
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_dev_joined
(
EmberEUI64
mac
,
const
char
*
productCode
)
{
cJSON
*
devicesJson
;
EmberEUI64
localEui64
=
{
0
};
char
macString
[
KK_EUI64_STRING_LENGTH
]
=
{
0
};
UTIL_LOG_WARNING
(
"report tsl product code:%s
\n
"
,
productCode
);
emberAfDebugPrint
(
"mac:"
);
emberAfPrintBigEndianEui64
(
mac
);
emberAfDebugPrintln
(
""
);
devicesJson
=
rpc_cJSON_CreateObject
();
rpc_eui64ToString
(
mac
,
macString
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"productCode"
,
productCode
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"deviceCode"
,
macString
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"mac"
,
macString
);
kk_sub_tsl_add
(
mac
,
productCode
);
emberAfGetEui64
(
localEui64
);
kk_msg_report_joined
(
devicesJson
,
localEui64
);
}
void
kk_msg_report_dev_leave
(
EmberEUI64
mac
)
{
int
res
=
0
;
cJSON
*
devicesJson
;
sub_dev_node_t
*
node
=
NULL
;
EmberEUI64
localEui64
=
{
0
};
char
macString
[
KK_EUI64_STRING_LENGTH
];
rpc_eui64ToString
(
mac
,
macString
);
res
=
kk_sub_tsl_get_device_by_mac
(
macString
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
emberAfDebugPrintln
(
"[%s][%d]kk msg send error!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
return
;
}
devicesJson
=
rpc_cJSON_CreateObject
();
rpc_cJSON_AddStringToObject
(
devicesJson
,
"productCode"
,
node
->
productCode
);
rpc_cJSON_AddStringToObject
(
devicesJson
,
"deviceCode"
,
macString
);
emberAfGetEui64
(
localEui64
);
kk_msg_report_leave
(
devicesJson
,
localEui64
);
kk_sub_tsl_delete
(
mac
);
kk_device_table_delete
(
mac
);
kk_device_db_delete
(
mac
);
}
int
kk_sendData2CCU
(
char
*
data
,
int
len
)
{
if
(
strcmp
(
GW2CCU_PROTOCOL
,
"tcp"
)
==
0
){
kk_tcp_client_send
(
data
,
len
);
}
else
{
kk_ipc_send
(
IPC_PLAT2MID
,
data
,
len
);
}
}
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_msg_report.h
0 → 100644
View file @
9a29244b
#ifndef __KK_MSG_REPORT_H
#define __KK_MSG_REPORT_H
#include <stdio.h>
#include "app/framework/include/af.h"
#include ".././jsonrpc/jsonrpc-c.h"
#include ".././jsonrpc/rpccJSON.h"
#include "com_api.h"
#include "kk_zb_com.h"
#include "kk_sub_tsl.h"
#define KK_IPC_VERSION "1.0"
#define KK_REPORT_DEVICE_JOINED_METHOD "thing.topo.add"
#define KK_REPORT_DEVICE_LEAVE_METHOD "thing.topo.delete"
#define KK_REPORT_ATTRIBUTE_METHOD "thing.event.property.post"
#define KK_READ_ATTRIBUTE_METHOD "thing.service.property.get"
#define KK_REPORT_DEVICE_JOINED_TYPE "/thing/topo/add"
#define KK_REPORT_DEVICE_LEFT_TYPE "/thing/topo/delete"
#define KK_REPORT_ATTRIBUTE_TYPE "/thing/event/property/post"
#define GW2CCU_PROTOCOL "tcp"
int
kk_sendData2CCU
(
char
*
data
,
int
len
);
void
kk_msg_report_dev_leave
(
EmberEUI64
mac
);
void
kk_msg_report_dev_joined
(
EmberEUI64
mac
,
const
char
*
productCode
);
void
kk_msg_report_property
(
cJSON
*
data
,
EmberEUI64
mac
);
#endif
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zb_com.h
0 → 100644
View file @
9a29244b
#ifndef __KK_ZB_COM_H
#define __KK_ZB_COM_H
#include "app/framework/include/af.h"
typedef
struct
kk_device_table_s
{
EmberEUI64
mac
;
EmberNodeId
nodeId
;
uint16_t
deviceId
;
uint16_t
identifyCnt
;
char
productCode
[
33
];
struct
kk_device_table_s
*
next
;
}
kk_device_table_s
;
#define RPC_APPVERSION_STRING_LENGTH 3 //
#define RPC_ENDPOINT_STRING_LENGTH 4 //0-255 + NULL
#define RPC_EUI64_STRING_LENGTH 19 //"0x" + 16 characters + NULL
#define RPC_NODEID_STRING_LENGTH 7 //"0x" + 4 characters + NULL
#define RPC_CLUSTERID_STRING_LENGTH 7 // "0x" + 4 chars + NULL
#define RPC_ATTRIBUTE_STRING_LENGTH 7 // "0x" + 4 chars + NULL
#define RPC_DATATYPE_STRING_LENGTH 4 //0-255 + NULL
#define RPC_LENGTH_STRING_LENGTH 4 //0-255 + NULL
#define RPC_STATUS_STRING_LENGTH 4 //0-255 + NULL
enum
{
WC_normal_dir
=
0
,
//"正转"
WC_reversed_dir
=
1
,
//"反转"
WC_calibration_mode
=
2
,
//"校验"
}
windowCoveringMode
;
#define KK_EUI64_STRING_LENGTH 17 //16 characters + NULL
#define KK_GET_U16( x ) (int16u)( (x[1]<<8)+x[0] )
#define KK_GET_U24( x ) (int32u)( (x[2]<<16)+(x[1]<<8)+x[0] )
#define KK_GET_U32( x ) (int32u)( (x[3]<<24)+(x[2]<<16)+(x[1]<<8)+x[0] )
#define KK_GET_U48( x ) (int64u)( ((int64u)(x[4])<<32)+(x[3]<<24)+(x[2]<<16)+(x[1]<<8)+x[0] )
#endif
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