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
0de6644f
Commit
0de6644f
authored
Sep 16, 2020
by
黄振令
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://172.17.3.10:17001/chenweican/k-sdk
parents
1e3c7b60
bab0bf4f
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
2245 additions
and
1081 deletions
+2245
-1081
common/api/tcp_channel.c
common/api/tcp_channel.c
+4
-2
common/mqtt/MQTTAsync.c
common/mqtt/MQTTAsync.c
+1
-2
common/mqtt/MQTTProtocolClient.c
common/mqtt/MQTTProtocolClient.c
+0
-4
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+25
-7
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+38
-0
midware/midware/dm/kk_property_db.c
midware/midware/dm/kk_property_db.c
+23
-0
midware/tsl/tsl_handle/kk_tsl_load.c
midware/tsl/tsl_handle/kk_tsl_load.c
+1
-0
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_report.c
...bee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_report.c
+58
-9
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_report.h
...bee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_report.h
+43
-42
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.c
...zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.c
+265
-65
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.h
...zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.h
+8
-3
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.c
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.c
+1398
-738
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.h
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.h
+381
-209
No files found.
common/api/tcp_channel.c
View file @
0de6644f
...
...
@@ -320,7 +320,7 @@ static void read_cb(struct ev_loop *loop, struct ev_io *watcher, int revents)
}
int
res
=
0
;
kk_tcp_ctrl_t
*
tcp_ctrl
=
(
kk_tcp_ctrl_t
*
)
watcher
->
data
;
int32_t
bytes
=
re
ad
(
watcher
->
fd
,
buffer
,
sizeof
(
buffer
)
);
int32_t
bytes
=
re
cv
(
watcher
->
fd
,
buffer
,
sizeof
(
buffer
),
0
);
if
(
-
1
==
bytes
)
{
//tcp Error
if
(
EINTR
!=
errno
&&
EAGAIN
!=
errno
)
{
...
...
@@ -659,6 +659,7 @@ static void loop_tcp_client_thread(void *arg){
{
//接受网络数据
_MutexLock
(
g_client_ctrl
.
mutex
);
memset
(
buf
,
0x0
,
sizeof
(
buf
));
ret
=
read
(
g_client_ctrl
.
sd
,
buf
,
sizeof
(
buf
));
_MutexUnlock
(
g_client_ctrl
.
mutex
);
...
...
@@ -670,7 +671,7 @@ static void loop_tcp_client_thread(void *arg){
break
;
}
}
else
if
(
ret
>
0
){
printf
(
"
buf = %s
\n
"
,
buf
);
//printf("11
buf = %s\n",buf);
if
(
g_client_ctrl
.
cb
!=
NULL
){
g_client_ctrl
.
cb
(
buf
,
ret
,
""
);
}
...
...
@@ -701,6 +702,7 @@ int kk_reset_retry_num(){
int
kk_tcp_client_send
(
char
*
data
,
int
len
){
int
ret
=
0
;
int
cnt
=
0
;
if
(
data
!=
NULL
){
while
(
g_client_ctrl
.
sd
==
-
1
&&
cnt
<
5
){
printf
(
"[%s] tcp don't connect, sleep 1s !!!!
\n
"
,
__FUNCTION__
);
...
...
common/mqtt/MQTTAsync.c
View file @
0de6644f
...
...
@@ -2885,7 +2885,7 @@ static int MQTTAsync_cleanSession(Clients* client)
static
int
MQTTAsync_deliverMessage
(
MQTTAsyncs
*
m
,
char
*
topicName
,
size_t
topicLen
,
MQTTAsync_message
*
mm
)
{
int
rc
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
Log
(
TRACE_MIN
,
-
1
,
"Calling messageArrived for client %s, queue depth %d"
,
m
->
c
->
clientID
,
m
->
c
->
messageQueue
->
count
);
rc
=
(
*
(
m
->
ma
))(
m
->
maContext
,
topicName
,
(
int
)
topicLen
,
mm
);
...
...
@@ -2902,7 +2902,6 @@ void Protocol_processPublication(Publish* publish, Clients* client, int allocate
MQTTAsync_message
*
mm
=
NULL
;
MQTTAsync_message
initialized
=
MQTTAsync_message_initializer
;
int
rc
=
0
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
FUNC_ENTRY
;
if
((
mm
=
malloc
(
sizeof
(
MQTTAsync_message
)))
==
NULL
)
...
...
common/mqtt/MQTTProtocolClient.c
View file @
0de6644f
...
...
@@ -304,7 +304,6 @@ int MQTTProtocol_handlePublishes(void* pack, int sock)
Clients
*
client
=
NULL
;
char
*
clientid
=
NULL
;
int
rc
=
TCPSOCKET_COMPLETE
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
FUNC_ENTRY
;
client
=
(
Clients
*
)(
ListFindItem
(
bstate
->
clients
,
&
sock
,
clientSocketCompare
)
->
content
);
...
...
@@ -313,7 +312,6 @@ int MQTTProtocol_handlePublishes(void* pack, int sock)
publish
->
header
.
bits
.
retain
,
publish
->
payloadlen
,
min
(
20
,
publish
->
payloadlen
),
publish
->
payload
);
if
(
publish
->
header
.
bits
.
qos
==
0
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
Protocol_processPublication
(
publish
,
client
,
1
);
}
else
if
(
!
Socket_noPendingWrites
(
sock
))
...
...
@@ -324,7 +322,6 @@ int MQTTProtocol_handlePublishes(void* pack, int sock)
rc
=
MQTTPacket_send_puback
(
publish
->
MQTTVersion
,
publish
->
msgId
,
&
client
->
net
,
client
->
clientID
);
/* if we get a socket error from sending the puback, should we ignore the publication? */
Protocol_processPublication
(
publish
,
client
,
1
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
}
else
if
(
publish
->
header
.
bits
.
qos
==
2
)
{
...
...
@@ -374,7 +371,6 @@ int MQTTProtocol_handlePublishes(void* pack, int sock)
publish1
.
payloadlen
=
m
->
publish
->
payloadlen
;
publish1
.
MQTTVersion
=
m
->
MQTTVersion
;
publish1
.
properties
=
m
->
properties
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
Protocol_processPublication
(
&
publish1
,
client
,
1
);
ListRemove
(
&
(
state
.
publications
),
m
->
publish
);
...
...
midware/midware/dm/kk_dm_mng.c
View file @
0de6644f
...
...
@@ -148,9 +148,10 @@ static int _dm_init_tsl_params(kk_tsl_t * dev_shadow)
}
return
res
;
}
/*目前支持到三级结构体的属性解析保存到数据库*/
int
dm_mgr_properities_db_create
(
kk_tsl_t
*
dev_shadow
,
char
*
deviceCode
,
int
devType
)
{
int
num
=
0
,
idx
=
0
,
index
=
0
;
int
num
=
0
,
idx
=
0
,
index
=
0
,
index1
=
0
;
kk_tsl_data_t
*
pProperty
=
NULL
;
kk_tsl_data_t
*
current_data
=
NULL
;
char
tmp_identifiers
[
256
]
=
{
0
};
...
...
@@ -170,10 +171,28 @@ int dm_mgr_properities_db_create(kk_tsl_t* dev_shadow,char *deviceCode,int devTy
complex_struct
=
pProperty
->
data_value
.
value
;
for
(
index
=
0
;
index
<
complex_struct
->
size
;
index
++
)
{
current_data
=
(
kk_tsl_data_t
*
)
complex_struct
->
value
+
index
;
memset
(
tmp_identifiers
,
0x0
,
sizeof
(
tmp_identifiers
));
sprintf
(
tmp_identifiers
,
"%s.%s"
,
pProperty
->
identifier
,
current_data
->
identifier
);
INFO_PRINT
(
"dm_mgr_properities_db_create tmp_identifiers:%s!!
\n
"
,
tmp_identifiers
);
kk_property_db_insert
(
deviceCode
,
tmp_identifiers
,
current_data
->
data_value
.
type
,
devType
);
if
(
current_data
->
data_value
.
type
!=
KK_TSL_DATA_TYPE_STRUCT
){
memset
(
tmp_identifiers
,
0x0
,
sizeof
(
tmp_identifiers
));
sprintf
(
tmp_identifiers
,
"%s.%s"
,
pProperty
->
identifier
,
current_data
->
identifier
);
INFO_PRINT
(
"dm_mgr_properities_db_create tmp_identifiers:%s!!
\n
"
,
tmp_identifiers
);
kk_property_db_insert
(
deviceCode
,
tmp_identifiers
,
current_data
->
data_value
.
type
,
devType
);
}
else
{
kk_tsl_data_value_complex_t
*
complex_struct_1
=
NULL
;
complex_struct_1
=
current_data
->
data_value
.
value
;
for
(
index1
=
0
;
index1
<
complex_struct_1
->
size
;
index1
++
){
kk_tsl_data_t
*
current_data_1
=
NULL
;
current_data_1
=
(
kk_tsl_data_t
*
)
complex_struct_1
->
value
+
index1
;
if
(
current_data_1
->
data_value
.
type
!=
KK_TSL_DATA_TYPE_STRUCT
){
memset
(
tmp_identifiers
,
0x0
,
sizeof
(
tmp_identifiers
));
sprintf
(
tmp_identifiers
,
"%s.%s.%s"
,
pProperty
->
identifier
,
current_data
->
identifier
,
current_data_1
->
identifier
);
INFO_PRINT
(
"dm_mgr_properities_db_create tmp_identifiers:%s!!
\n
"
,
tmp_identifiers
);
kk_property_db_insert
(
deviceCode
,
tmp_identifiers
,
current_data_1
->
data_value
.
type
,
devType
);
}
}
}
}
}
else
{
...
...
@@ -452,9 +471,8 @@ int dm_mgr_init(void)
/* Init Device List */
INIT_LIST_HEAD
(
&
ctx
->
dev_list
);
//HAL_GetProduct_Type(product_key);
//HAL_GetProduct_Code(device_name);
HAL_Get_mac
(
mac
);
res
=
dm_mgr_device_create
(
KK_DM_DEVICE_CCU
,
KK_DM_CCU_DEVICE_PRODUCT_CODE
,
"CCU_66666"
,
mac
,
""
,
&
devId
);
if
(
res
!=
SUCCESS_RETURN
)
{
goto
ERROR
;
...
...
midware/midware/dm/kk_dm_msg.c
View file @
0de6644f
...
...
@@ -908,6 +908,44 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
current_data
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
kk_property_db_update_value
(
deviceCode
,
tmp_identifiers
,
current_data
->
data_value
.
value
);
}
else
if
(
current_data
->
data_value
.
type
==
KK_TSL_DATA_TYPE_STRUCT
){
kk_tsl_data_value_complex_t
*
complex_struct_1
=
NULL
;
complex_struct_1
=
current_data
->
data_value
.
value
;
int
index1
=
0
;
kk_tsl_data_t
*
current_data_1
=
NULL
;
cJSON
*
propertyItem_2
=
NULL
;
for
(
index1
=
0
;
index1
<
complex_struct_1
->
size
;
index1
++
){
current_data_1
=
(
kk_tsl_data_t
*
)
complex_struct_1
->
value
+
index1
;
propertyItem_2
=
cJSON_GetObjectItem
(
propertyItem_1
,
current_data_1
->
identifier
);
if
(
propertyItem_2
!=
NULL
){
memset
(
tmp_identifiers
,
0x0
,
sizeof
(
tmp_identifiers
));
sprintf
(
tmp_identifiers
,
"%s.%s.%s"
,
property
->
identifier
,
current_data
->
identifier
,
current_data_1
->
identifier
);
if
(
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
||
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_ENUM
||
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_BOOL
){
sprintf
(
tmpValue
,
"%d"
,
current_data_1
->
data_value
.
value_int
);
kk_property_db_update_value
(
deviceCode
,
tmp_identifiers
,
tmpValue
);
}
else
if
(
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_FLOAT
){
sprintf
(
tmpValue
,
"%d"
,
current_data_1
->
data_value
.
value_float
);
kk_property_db_update_value
(
deviceCode
,
tmp_identifiers
,
tmpValue
);
}
else
if
(
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DOUBLE
){
sprintf
(
tmpValue
,
"%d"
,
current_data_1
->
data_value
.
value_double
);
kk_property_db_update_value
(
deviceCode
,
tmp_identifiers
,
tmpValue
);
}
else
if
(
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
||
current_data_1
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
kk_property_db_update_value
(
deviceCode
,
tmp_identifiers
,
current_data_1
->
data_value
.
value
);
}
else
{
ERROR_PRINT
(
"Unsupport Type ~~
\n
"
);
}
}
}
}
else
{
ERROR_PRINT
(
"Unsupport Type
\n
"
);
}
...
...
midware/midware/dm/kk_property_db.c
View file @
0de6644f
...
...
@@ -403,5 +403,28 @@ int kk_property_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN])
return
SUCCESS_RETURN
;
}
int
kk_property_delete_by_identify
(
char
*
identify
)
{
const
char
*
deleteCmd
=
"delete from PropertiesInfo where identifier = '%s';"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_property_db_ctx_t
*
ctx
=
_kk_property_db_get_ctx
();
_kk_property_db_lock
();
sqlCmd
=
sqlite3_mprintf
(
deleteCmd
,
identify
);
INFO_PRINT
(
"Table delete data sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
INFO_PRINT
(
"Table delete data successfully
\n
"
);
}
sqlite3_free
(
sqlCmd
);
_kk_property_db_unlock
();
return
SUCCESS_RETURN
;
}
...
...
midware/tsl/tsl_handle/kk_tsl_load.c
View file @
0de6644f
...
...
@@ -78,6 +78,7 @@ char* kk_load_json(const char *productCode,int type)
fread
(
buf
,
1
,
filesize
,
fp
);
//printf("%s!!!\n",buf);
free
(
tslPath
);
fclose
(
fp
);
return
buf
;
}
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_report.c
View file @
0de6644f
...
...
@@ -10,21 +10,41 @@ const char *kk_tsl_rpt_status_string[] = {
};
static
cJSON
*
kk_check_identify
(
const
char
*
identify
,
cJSON
*
root
,
int
index
,
int
status
)
{
int
rev
=
0
,
startIdx
=
0
;
int
rev
=
0
,
startIdx
2
=
0
,
startIdx1
=
0
;
char
*
Identify_str
;
char
tmp_Identity
[
64
]
=
{
0
};
rev
=
kk_tsl_utils_memtok
(
identify
,
"."
,
1
,
&
startIdx
);
rev
=
kk_tsl_utils_memtok
(
identify
,
'.'
,
2
,
&
startIdx2
);
if
(
!
rev
){
cJSON
*
str
=
NULL
;
cJSON
*
str_r
=
NULL
;
kk_tsl_utils_memtok
(
identify
,
'.'
,
1
,
&
startIdx1
);
str
=
rpc_cJSON_CreateObject
();
Identify_str
=
identify
+
1
+
startIdx
;
Identify_str
=
identify
+
1
+
startIdx
2
;
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
identify
,
startIdx
);
memcpy
(
tmp_Identity
,
identify
+
startIdx1
+
1
,
startIdx2
-
startIdx1
);
rpc_cJSON_AddNumberToObject
(
str
,
Identify_str
,
status
);
rpc_cJSON_AddItemToObject
(
root
,
tmp_Identity
,
str
);
str_r
=
rpc_cJSON_CreateObject
();
rpc_cJSON_AddItemToObject
(
str_r
,
tmp_Identity
,
str
);
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
identify
,
startIdx1
);
rpc_cJSON_AddItemToObject
(
root
,
tmp_Identity
,
str_r
);
return
root
;
}
else
{
rev
=
kk_tsl_utils_memtok
(
identify
,
'.'
,
1
,
&
startIdx1
);
if
(
!
rev
){
cJSON
*
str
=
NULL
;
str
=
rpc_cJSON_CreateObject
();
Identify_str
=
identify
+
1
+
startIdx1
;
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
identify
,
startIdx1
);
rpc_cJSON_AddNumberToObject
(
str
,
Identify_str
,
status
);
rpc_cJSON_AddItemToObject
(
root
,
tmp_Identity
,
str
);
return
root
;
}
}
return
NULL
;
...
...
@@ -54,7 +74,6 @@ static int kk_tsl_report(EmberEUI64 mac,uint8_t EP,int status,uint16_t clusterId
root_tmp
=
kk_check_identify
(
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
,
root
,
index
,
status
);
if
(
root_tmp
!=
NULL
){
kk_rpc_report_status
(
root_tmp
,
mac
);
//rpc_cJSON_Delete(root_tmp);
return
tsl_rpt_success
;
}
else
{
...
...
@@ -65,7 +84,6 @@ static int kk_tsl_report(EmberEUI64 mac,uint8_t EP,int status,uint16_t clusterId
root_tmp
=
kk_check_identify
(
g_tsl_zigbee_map
[
index
].
Identity
,
root
,
index
,
status
);
if
(
root_tmp
!=
NULL
){
kk_rpc_report_status
(
root_tmp
,
mac
);
//rpc_cJSON_Delete(root_tmp);
return
tsl_rpt_success
;
}
else
{
...
...
@@ -74,7 +92,6 @@ static int kk_tsl_report(EmberEUI64 mac,uint8_t EP,int status,uint16_t clusterId
}
rpc_cJSON_AddNumberToObject
(
root
,
Identify
,
status
);
kk_rpc_report_status
(
root
,
mac
);
//rpc_cJSON_Delete(root);
return
tsl_rpt_success
;
}
...
...
@@ -105,7 +122,7 @@ void kk_tsl_report_attribute(EmberEUI64 eui64,
g_tsl_zigbee_map
[
i
].
attributeId
==
attributeId
&&
g_tsl_zigbee_map
[
i
].
zigbee_report
!=
NULL
){
status
=
g_tsl_zigbee_map
[
i
].
zigbee_report
(
eui64
,
EP
,
clusterId
,
attributeId
,
dataType
,
len
,
data
);
emberAfDebugPrintln
(
"report status:%
s"
,
kk_tsl_rpt_status_string
[
status
]
);
emberAfDebugPrintln
(
"report status:%
d"
,
status
);
return
;
}
}
...
...
@@ -129,6 +146,38 @@ void kk_tsl_report_attribute(EmberEUI64 eui64,
}
}
int
kk_tsl_report_global_Brightness
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
)
{
uint8_t
value
=
data
[
0
];
emberAfAppPrintln
(
"[tsl report:kk_tsl_report_global_Brightness] value:%d
\n
"
,
value
);
printf
(
"[%s][%d]dataType:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
dataType
);
if
(
dataType
==
ZCL_INT8U_ATTRIBUTE_TYPE
){
printf
(
"[%s][%d]len:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
len
);
if
(
len
==
1
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_tsl_report
(
eui64
,
EP
,
value
,
clusterId
,
attributeId
);
return
tsl_rpt_success
;
}
return
tsl_rpt_invaild_len
;
}
return
tsl_rpt_invaild_type
;
}
int
kk_tsl_report_global_RGB
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
)
{
uint8_t
value
=
data
[
0
];
emberAfAppPrintln
(
"[tsl report:kk_tsl_report_global_RGB] value:%d
\n
"
,
value
);
printf
(
"[%s][%d]dataType:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
dataType
);
if
(
dataType
==
ZCL_INT8U_ATTRIBUTE_TYPE
){
printf
(
"[%s][%d]len:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
len
);
if
(
len
==
1
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_tsl_report
(
eui64
,
EP
,
value
,
clusterId
,
attributeId
);
return
tsl_rpt_success
;
}
return
tsl_rpt_invaild_len
;
}
return
tsl_rpt_invaild_type
;
}
int
kk_tsl_report_global_onoff
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
)
{
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_report.h
View file @
0de6644f
#ifndef __KK_TSL_PROPERTY_REPORT_H
#define __KK_TSL_PROPERTY_REPORT_H
#include "kk_test.h"
typedef
enum
{
tsl_rpt_success
=
0
,
tsl_rpt_err
=
-
1
,
tsl_rpt_invaild_val
=
-
2
,
tsl_rpt_invaild_len
=
-
3
,
tsl_rpt_invaild_type
=
-
4
,
}
kk_tsl_rpt_status
;
void
kk_tsl_report_attribute
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_global_onoff
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_windowCovering_mode
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_windowCovering_position
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
#endif
#ifndef __KK_TSL_PROPERTY_REPORT_H
#define __KK_TSL_PROPERTY_REPORT_H
#include "kk_test.h"
typedef
enum
{
tsl_rpt_success
=
0
,
tsl_rpt_err
=
-
1
,
tsl_rpt_invaild_val
=
-
2
,
tsl_rpt_invaild_len
=
-
3
,
tsl_rpt_invaild_type
=
-
4
,
}
kk_tsl_rpt_status
;
void
kk_tsl_report_attribute
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_global_onoff
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_windowCovering_mode
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_windowCovering_position
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_global_Brightness
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
int
kk_tsl_report_global_RGB
(
EmberEUI64
eui64
,
uint8_t
EP
,
EmberAfClusterId
clusterId
,
EmberAfAttributeId
attributeId
,
uint8_t
dataType
,
uint8_t
len
,
uint8_t
*
data
);
#endif
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.c
View file @
0de6644f
#include "kk_tsl_property_set.h"
static
uint8_t
s_Red
=
0xff
;
static
uint8_t
s_Green
=
0xff
;
static
uint8_t
s_Blue
=
0xff
;
static
uint8_t
s_RgbCount
=
0
;
//emberAfAppPrintln("[tsl report:Gloabl] OnOff~~~~~~~~~");
...
...
@@ -40,7 +44,7 @@ cJSON *kk_topo_change_operation(jrpc_context * ctx, cJSON *params, cJSON *id,cJS
error_return:
return
rpc_cJSON_CreateNull
();
}
int
kk_tsl_utils_memtok
(
_IN_
char
*
input
,
_IN_
char
delimiter
,
_IN_
int
index
,
_OU_
int
*
offset
)
int
kk_tsl_utils_memtok
(
_IN_
char
*
input
,
_IN_
char
*
delimiter
,
_IN_
int
index
,
_OU_
int
*
offset
)
{
int
item_index
=
0
;
int
count
=
0
;
...
...
@@ -62,6 +66,36 @@ int kk_tsl_utils_memtok(_IN_ char *input, _IN_ char delimiter, _IN_ int index, _
return
-
1
;
}
static
int
kk_tsl_property_execute
(
jrpc_context
*
ctx
,
cJSON
*
propertyItem
,
cJSON
*
mac
,
int
index
,
int
findFlag
)
{
int
value
=
0
;
EmberEUI64
eui64
;
EmberNodeId
nodeId
=
EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_NODE_ID
;
int
res
=
0
;
if
(
propertyItem
==
NULL
||
mac
==
NULL
){
return
-
1
;
}
if
(
propertyItem
->
type
!=
cJSON_Number
){
value
=
rpc_get_u8
(
propertyItem
->
valuestring
);
}
else
{
value
=
propertyItem
->
valueint
;
}
if
(
rpc_get_mac
(
mac
->
valuestring
,
eui64
)
==
false
){
return
-
1
;
}
printf
(
"[%s][%d]g_tsl_zigbee_map[index].endpoint:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
g_tsl_zigbee_map
[
index
].
endpoint
);
nodeId
=
emberAfDeviceTableGetNodeIdFromEui64
(
eui64
);
if
(
findFlag
==
1
)
res
=
g_tsl_zigbee_map
[
index
].
zigbee_set
(
ctx
,
nodeId
,
g_tsl_zigbee_map
[
index
].
endpoint
,
&
value
);
else
if
(
findFlag
==
2
)
res
=
g_tsl_zigbee_map_glb
[
index
].
map
.
zigbee_set
(
ctx
,
nodeId
,
g_tsl_zigbee_map_glb
[
index
].
map
.
endpoint
,
&
value
);
else
res
=
-
1
;
printf
(
"[%s][%d]res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
res
;
}
cJSON
*
kk_tsl_property_operation
(
jrpc_context
*
ctx
,
cJSON
*
params
,
cJSON
*
id
,
cJSON
*
mac
)
{
sub_dev_node_t
*
node
=
NULL
;
...
...
@@ -73,9 +107,9 @@ cJSON *kk_tsl_property_operation(jrpc_context * ctx, cJSON *params, cJSON *id,cJ
int
num
;
uint8_t
findFlag
=
0xff
;
cJSON
*
propertyItem
=
NULL
;
cJSON
*
propertyItem1
=
NULL
;
EmberEUI64
eui64
;
EmberNodeId
nodeId
=
EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_NODE_ID
;
cJSON
*
propertyItem1
=
NULL
;
int
startIdx_1
=
0
;
cJSON
*
propertyItem2
=
NULL
;
int
startIdx
=
0
;
char
tmp_Identity
[
64
]
=
{
0
};
UTIL_LOG_INFO
(
"
\n
********************kk tsl property operation********************
\n
"
);
...
...
@@ -93,96 +127,262 @@ cJSON *kk_tsl_property_operation(jrpc_context * ctx, cJSON *params, cJSON *id,cJ
num
=
kk_get_tsl_num
();
for
(
index
=
0
;
index
<
num
;
index
++
){
rev
=
kk_tsl_utils_memtok
(
g_tsl_zigbee_map
[
index
].
Identity
,
"."
,
1
,
&
startIdx
);
rev
=
kk_tsl_utils_memtok
(
g_tsl_zigbee_map
[
index
].
Identity
,
'.'
,
2
,
&
startIdx
);
if
(
!
rev
){
kk_tsl_utils_memtok
(
g_tsl_zigbee_map
[
index
].
Identity
,
'.'
,
1
,
&
startIdx_1
);
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map
[
index
].
Identity
,
startIdx
);
propertyItem1
=
rpc_cJSON_GetObjectItem
(
params
,
tmp_Identity
);
if
(
propertyItem1
!=
NULL
){
propertyItem
=
rpc_cJSON_GetObjectItem
(
propertyItem1
,
g_tsl_zigbee_map
[
index
].
Identity
+
startIdx
+
1
);
if
(
propertyItem
!=
NULL
){
findFlag
=
1
;
break
;
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map
[
index
].
Identity
,
startIdx_1
);
propertyItem2
=
rpc_cJSON_GetObjectItem
(
params
,
tmp_Identity
);
if
(
propertyItem2
!=
NULL
){
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map
[
index
].
Identity
+
startIdx_1
+
1
,
startIdx
-
startIdx_1
);
propertyItem1
=
rpc_cJSON_GetObjectItem
(
propertyItem2
,
tmp_Identity
);
if
(
propertyItem1
!=
NULL
){
propertyItem
=
rpc_cJSON_GetObjectItem
(
propertyItem1
,
g_tsl_zigbee_map
[
index
].
Identity
+
startIdx
+
1
);
if
(
propertyItem
!=
NULL
){
findFlag
=
1
;
}
//break;
}
}
}
else
{
propertyItem
=
rpc_cJSON_GetObjectItem
(
params
,
g_tsl_zigbee_map
[
index
].
Identity
);
if
(
propertyItem
!=
NULL
){
findFlag
=
1
;
break
;
}
}
}
if
(
findFlag
==
0xff
){
num
=
kk_get_tsl_glb_num
();
for
(
index
=
0
;
index
<
num
;
index
++
){
rev
=
kk_tsl_utils_memtok
(
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
,
"."
,
1
,
&
startIdx
);
rev
=
kk_tsl_utils_memtok
(
g_tsl_zigbee_map
[
index
].
Identity
,
'.'
,
1
,
&
startIdx
);
if
(
!
rev
){
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map
_glb
[
index
].
map
.
Identity
,
startIdx
);
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map
[
index
]
.
Identity
,
startIdx
);
propertyItem1
=
rpc_cJSON_GetObjectItem
(
params
,
tmp_Identity
);
if
(
propertyItem1
!=
NULL
){
propertyItem
=
rpc_cJSON_GetObjectItem
(
propertyItem1
,
g_tsl_zigbee_map
_glb
[
index
].
map
.
Identity
+
startIdx
+
1
);
propertyItem
=
rpc_cJSON_GetObjectItem
(
propertyItem1
,
g_tsl_zigbee_map
[
index
]
.
Identity
+
startIdx
+
1
);
if
(
propertyItem
!=
NULL
){
findFlag
=
2
;
break
;
findFlag
=
1
;
//
break;
}
}
}
else
{
propertyItem
=
rpc_cJSON_GetObjectItem
(
params
,
g_tsl_zigbee_map
_glb
[
index
].
map
.
Identity
);
}
else
{
propertyItem
=
rpc_cJSON_GetObjectItem
(
params
,
g_tsl_zigbee_map
[
index
]
.
Identity
);
if
(
propertyItem
!=
NULL
){
findFlag
=
2
;
break
;
findFlag
=
1
;
//
break;
}
}
}
}
if
(
findFlag
!=
0xff
)
{
int
value
=
0
;
if
(
propertyItem
->
type
!=
cJSON_Number
){
value
=
rpc_get_u8
(
propertyItem
->
valuestring
);
}
else
{
value
=
propertyItem
->
valueint
;
}
if
(
rpc_get_mac
(
mac
->
valuestring
,
eui64
)
==
false
){
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
}
nodeId
=
emberAfDeviceTableGetNodeIdFromEui64
(
eui64
);
emberAfDebugPrint
(
"mac:"
);
emberAfPrintBigEndianEui64
(
eui64
);
emberAfDebugPrintln
(
",node:0x%04X"
,
nodeId
);
if
(
findFlag
==
1
)
res
=
g_tsl_zigbee_map
[
index
].
zigbee_set
(
ctx
,
nodeId
,
g_tsl_zigbee_map
[
index
].
endpoint
,
&
value
);
else
if
(
findFlag
==
2
)
res
=
g_tsl_zigbee_map_glb
[
index
].
map
.
zigbee_set
(
ctx
,
nodeId
,
g_tsl_zigbee_map_glb
[
index
].
map
.
endpoint
,
&
value
);
if
(
res
<
0
)
{
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
if
(
findFlag
==
1
){
res
=
kk_tsl_property_execute
(
ctx
,
propertyItem
,
mac
,
index
,
findFlag
);
if
(
res
<
0
){
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
}
else
{
findFlag
=
0
;
}
}
else
{
return
rpc_cJSON_CreateNumber
(
res
);
}
}
if
(
findFlag
==
0xff
){
num
=
kk_get_tsl_glb_num
();
for
(
index
=
0
;
index
<
num
;
index
++
){
rev
=
kk_tsl_utils_memtok
(
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
,
'.'
,
2
,
&
startIdx
);
if
(
!
rev
){
kk_tsl_utils_memtok
(
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
,
'.'
,
1
,
&
startIdx_1
);
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
,
startIdx_1
);
propertyItem2
=
rpc_cJSON_GetObjectItem
(
params
,
tmp_Identity
);
if
(
propertyItem2
!=
NULL
){
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
+
startIdx_1
+
1
,
startIdx
-
startIdx_1
);
propertyItem1
=
rpc_cJSON_GetObjectItem
(
propertyItem2
,
tmp_Identity
);
if
(
propertyItem1
!=
NULL
){
propertyItem
=
rpc_cJSON_GetObjectItem
(
propertyItem1
,
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
+
startIdx
+
1
);
if
(
propertyItem
!=
NULL
){
findFlag
=
2
;
}
}
}
}
else
{
rev
=
kk_tsl_utils_memtok
(
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
,
'.'
,
1
,
&
startIdx
);
if
(
!
rev
){
memset
(
tmp_Identity
,
0x0
,
sizeof
(
tmp_Identity
));
memcpy
(
tmp_Identity
,
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
,
startIdx
);
propertyItem1
=
rpc_cJSON_GetObjectItem
(
params
,
tmp_Identity
);
if
(
propertyItem1
!=
NULL
){
propertyItem
=
rpc_cJSON_GetObjectItem
(
propertyItem1
,
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
+
startIdx
+
1
);
if
(
propertyItem
!=
NULL
){
findFlag
=
2
;
}
}
}
else
{
propertyItem
=
rpc_cJSON_GetObjectItem
(
params
,
g_tsl_zigbee_map_glb
[
index
].
map
.
Identity
);
if
(
propertyItem
!=
NULL
){
findFlag
=
2
;
}
}
}
if
(
findFlag
==
2
){
res
=
kk_tsl_property_execute
(
ctx
,
propertyItem
,
mac
,
index
,
findFlag
);
if
(
res
<
0
){
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
}
else
{
findFlag
=
0
;
}
}
}
}
return
rpc_cJSON_CreateNumber
(
res
);
}
error_return:
return
rpc_cJSON_CreateNull
();
}
int
kk_tsl_set_colorlight_ModeType
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
int
value
=
*
(
uint8_t
*
)
data
;
emberAfAppPrintln
(
"[tsl set:kk_tsl_set_colorloght_ModeType],value=0x%02x"
,
value
);
return
0
;
}
int
kk_tsl_set_colorlight_Mode
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
EmberStatus
status
=
0
;
int
value
=
*
(
uint8_t
*
)
data
;
emberAfAppPrintln
(
"[tsl set:kk_tsl_set_colorloght_Mode],value=0x%02x"
,
value
);
if
(
node
==
EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_NODE_ID
){
if
(
ctx
)
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
}
status
=
zclColorControlLoopSet
(
node
,
ep
,
value
,
0
,
0
,
1
,
55
,
0
,
0
,
0
);
return
status
;
error_return:
return
-
1
;
}
int
kk_tsl_set_colorlight_Brightness
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
int
value
=
*
(
uint8_t
*
)
data
;
EmberStatus
status
=
0
;
emberAfAppPrintln
(
"[tsl set:kk_tsl_set_colorloght_Brightness],value=0x%02x"
,
value
);
if
(
node
==
EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_NODE_ID
){
if
(
ctx
)
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
}
#if 0
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
value |= BIT(1);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
status = zclGWrite(node,1,ep,false,0x08,
0,
ZCL_BITMAP8_ATTRIBUTE_TYPE,
1,
value,
true);
emberAfAppPrintln("status=0x%02x",status);
#else
status
=
zclLevel_MoveToLevel
(
node
,
ep
,
value
,
0
,
NULL
,
NULL
);
#endif
return
status
;
error_return:
return
-
1
;
}
int
kk_tsl_set_colorlight_WhiteBrightness
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
int
value
=
*
(
uint8_t
*
)
data
;
emberAfAppPrintln
(
"[tsl set:kk_tsl_set_colorloght_WhiteBrightness],value=0x%02x"
,
value
);
return
0
;
}
int
kk_tsl_set_colorlight_RGB_red
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
int
value
=
*
(
uint8_t
*
)
data
;
EmberStatus
status
=
0
;
emberAfAppPrintln
(
"[tsl set:kk_tsl_set_colorloght_RGB_red],value=0x%02x"
,
value
);
s_Red
=
value
;
s_RgbCount
++
;
if
(
s_RgbCount
>=
3
){
status
=
zclColorControlMovetohueandsat
(
node
,
ep
,
s_Red
,
s_Green
,
s_Blue
,
0
,
0
,
0
);
s_RgbCount
=
0
;
}
return
status
;
}
int
kk_tsl_set_colorlight_RGB_green
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
int
value
=
*
(
uint8_t
*
)
data
;
EmberStatus
status
=
0
;
emberAfAppPrintln
(
"[tsl set:kk_tsl_set_colorloght_RGB_green],value=0x%02x"
,
value
);
s_Green
=
value
;
s_RgbCount
++
;
if
(
s_RgbCount
>=
3
){
status
=
zclColorControlMovetohueandsat
(
node
,
ep
,
s_Red
,
s_Green
,
s_Blue
,
0
,
0
,
0
);
s_RgbCount
=
0
;
}
return
status
;
}
int
kk_tsl_set_colorlight_RGB_blue
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
int
value
=
*
(
uint8_t
*
)
data
;
EmberStatus
status
=
0
;
emberAfAppPrintln
(
"[tsl set:kk_tsl_set_colorloght_RGB_blue],value=0x%02x"
,
value
);
s_Blue
=
value
;
s_RgbCount
++
;
if
(
s_RgbCount
>=
3
){
status
=
zclColorControlMovetohueandsat
(
node
,
ep
,
s_Red
,
s_Green
,
s_Blue
,
0
,
0
,
0
);
s_RgbCount
=
0
;
}
return
status
;
}
int
kk_tsl_set_colorlight_OnOff
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
uint8_t
Onoff
=
0
;
EmberStatus
status
=
0
;
Onoff
=
*
(
uint8_t
*
)
data
;
emberAfAppPrintln
(
"[tsl set:OnOff],Onoff=0x%02x"
,
Onoff
);
if
(
node
==
EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_NODE_ID
){
if
(
ctx
)
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
}
if
(
Onoff
==
1
){
//status = zclGWrite(node,1,1,false,0xFCC0,0,ZCL_BITMAP8_ATTRIBUTE_TYPE,1,Onoff,true);
status
=
zclOnOff_On
(
node
,
ep
);
emberAfAppPrintln
(
"On"
);
}
else
if
(
Onoff
==
0
){
//status = zclGWrite(node,1,1,false,0xFCC0,0,ZCL_BITMAP8_ATTRIBUTE_TYPE,1,Onoff,true);
status
=
zclOnOff_Off
(
node
,
ep
);
emberAfAppPrintln
(
"Off"
);
}
else
{
if
(
ctx
)
set_json_error_type
(
ctx
,
JRPC_INVALID_PARAMS
,
MSG_INVALID_PARAMS
);
goto
error_return
;
}
emberAfAppPrintln
(
"status=0x%02x"
,
status
);
return
status
;
error_return:
return
-
1
;
}
int
kk_tsl_set_gloabl_OnOff
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
)
{
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_tsl_property_set.h
View file @
0de6644f
...
...
@@ -13,9 +13,14 @@ int kk_tsl_set_windowCovering_OperationMode(jrpc_context * ctx,EmberNodeId node,
int
kk_tsl_set_windowCovering_mode
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_windowCovering_position
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_OnOff
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_ModeType
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_Mode
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_Brightness
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_WhiteBrightness
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_RGB_red
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_RGB_green
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
int
kk_tsl_set_colorlight_RGB_blue
(
jrpc_context
*
ctx
,
EmberNodeId
node
,
unsigned
char
ep
,
void
*
data
);
...
...
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.c
View file @
0de6644f
#include "kk_zigbee_api.h"
// network leave
EmberStatus
kk_network_leave
(
void
)
{
EmberStatus
status
=
ezspLeaveNetwork
();
if
(
status
==
EMBER_SUCCESS
)
{
emberAfAppPrintln
(
"net_leave: Left network
\r\n
"
);
}
else
{
emberAfAppPrintln
(
"net_leave: Error 0x%X
\r\n
"
,
status
);
}
return
status
;
}
EmberStatus
kk_network_form
(
bool
centralized
,
EmberPanId
panId
,
int8_t
radioTxPower
,
uint8_t
channel
)
{
EmberStatus
status
=
emberAfPluginNetworkCreatorNetworkForm
(
centralized
,
panId
,
radioTxPower
,
channel
);
emberAfAppPrintln
(
"[network form]centralized:%p,PAN ID:0x%2x,TxPower:%d,channel:0x%x,status=0x%x"
,
(
centralized
==
true
)
?
"yes"
:
"no"
,
panId
,
radioTxPower
,
channel
,
status
);
return
status
;
}
void
kk_print_network_info
(
void
)
{
emberAfAppPrint
(
"
\r\n
MAC Address = "
);
EmberEUI64
eui64
;
emberAfGetEui64
(
eui64
);
emberAfPrintBigEndianEui64
(
eui64
);
emberAfAppFlush
();
EmberNetworkStatus
status
=
ezspNetworkState
();
if
(
status
==
EMBER_JOINED_NETWORK
){
emberAfAppPrintln
(
"
\r\n
Node ID = 0x%2x"
,
emberAfGetNodeId
()
);
emberAfAppPrintln
(
"
\r\n
PANID = 0x%2x"
,
emberAfGetPanId
()
);
emberAfAppPrintln
(
"
\r\n
Channel = 0x%x"
,
emberAfGetRadioChannel
()
);
emberAfAppPrintln
(
"
\r\n
TX Power(dBm) = %d"
,
emberAfGetRadioChannel
()
);
emberAfAppFlush
();
EmberKeyStruct
nwkKey
;
if
(
emberGetKey
(
EMBER_CURRENT_NETWORK_KEY
,
&
nwkKey
)
==
EMBER_SUCCESS
)
{
emberAfAppPrintln
(
"
\r\n
Network Key = "
);
emberAfPrintZigbeeKey
(
emberKeyContents
(
&
nwkKey
.
key
));
emberAfAppFlush
();
}
}
else
{
emberAfAppPrintln
(
"
\r\n
Not joined network: Network Satus: 0x%x
\r\n
"
,
status
);
}
}
EmberStatus
kk_zdo_leave_request
(
EmberNodeId
target
,
bool
removeChildren
,
bool
rejoin
)
{
EmberEUI64
nullEui64
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
EmberStatus
status
;
uint8_t
options
=
0
;
if
(
rejoin
)
{
options
|=
EMBER_ZIGBEE_LEAVE_AND_REJOIN
;
}
if
(
removeChildren
)
{
options
|=
EMBER_ZIGBEE_LEAVE_AND_REMOVE_CHILDREN
;
}
status
=
emberLeaveRequest
(
target
,
nullEui64
,
options
,
EMBER_APS_OPTION_RETRY
);
emberAfAppPrintln
(
"Leave %p0x%X"
,
"Request: "
,
status
);
}
EmberStatus
zclGRead
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
bool
svr
)
{
EmberStatus
status
;
zclBufferSetup
(
ZCL_GLOBAL_COMMAND
|
((
svr
==
true
)
?
ZCL_FRAME_CONTROL_CLIENT_TO_SERVER
:
ZCL_FRAME_CONTROL_SERVER_TO_CLIENT
),
clusterId
,
ZCL_READ_ATTRIBUTES_COMMAND_ID
);
zclBufferAddByte
(
LOW_BYTE
(
attrId
));
zclBufferAddByte
(
HIGH_BYTE
(
attrId
));
rpcBufferPrint
();
status
=
rpcSendCommand
(
node
,
srcEP
,
dstEP
,
multicast
);
return
status
;
}
EmberStatus
zclGWrite
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
uint8_t
dataType
,
uint8_t
dataLen
,
uint8_t
*
data
,
bool
svr
)
{
EmberStatus
status
=
EMBER_ERR_FATAL
;
int
i
;
if
(
data
==
NULL
||
dataLen
==
0
)
return
status
;
zclBufferSetup
(
ZCL_GLOBAL_COMMAND
|
((
svr
==
true
)
?
ZCL_FRAME_CONTROL_CLIENT_TO_SERVER
:
ZCL_FRAME_CONTROL_SERVER_TO_CLIENT
),
clusterId
,
ZCL_WRITE_ATTRIBUTES_COMMAND_ID
);
zclBufferAddByte
(
LOW_BYTE
(
attrId
));
zclBufferAddByte
(
HIGH_BYTE
(
attrId
));
zclBufferAddByte
(
dataType
);
for
(
i
=
0
;
i
<
dataLen
;
i
++
){
zclBufferAddByte
(
data
[
i
]);
}
rpcBufferPrint
();
status
=
rpcSendCommand
(
node
,
srcEP
,
dstEP
,
multicast
);
return
status
;
}
//
EmberStatus
WindowCover_UpOpen
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Up/Open]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
WindowCover_DownClose
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Down/Close]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
WindowCover_Stop
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_STOP_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Stop]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
WindowCover_GotoLiftPercentage
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
position
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID
);
zclBufferAddByte
(
position
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[GotoLiftPercentage]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_On
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[On]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_Off
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_OFF_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Off]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_Toggle
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_TOGGLE_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Toggle]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_OffWithEffect
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
id
,
uint8_t
var
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_OFF_WITH_EFFECT_COMMAND_ID
);
zclBufferAddByte
(
id
);
zclBufferAddByte
(
var
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[off with effect]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_OnWithRecallGlobalScene
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[On with recall global scene]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_OnWithTimedOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
Control
,
uint16_t
OnTime
,
uint16_t
OffWaitTime
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_WITH_TIMED_OFF_COMMAND_ID
);
zclBufferAddByte
(
Control
);
zclBufferAddWord
(
OnTime
);
zclBufferAddWord
(
OffWaitTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[on with timed off]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_HUE_COMMAND_ID
);
zclBufferAddByte
(
hue
);
zclBufferAddByte
(
dir
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
kk_print_debug
(
"hue=%d,dir=%d,trsTime=%d,mask=%d,Override=%d
\r\n
"
,
hue
,
dir
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
rate
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=0x%02x,rate=0x%02x,mask=0x%02x,Override=0x%02x
\r\n
"
,
mode
,
rate
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
size
);
zclBufferAddByte
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step mode=%d,step size=%d,transition time=%d,mask=%d,override=%d
\r\n
"
,
mode
,
size
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Step hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetosat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
saturation
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"saturation=%d,trsTime=%d,options mask=%d,options override=%d
\r\n
"
,
saturation
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovesat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
rate
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"move mode=0x%02x,rate=0x%02x,mask=0x%02x,Override=0x%02x
\r\n
"
,
mode
,
rate
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStepsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
size
);
zclBufferAddByte
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step mode=%d,step size=%d,transition time=%d,mask=%d,override=%d
\r\n
"
,
mode
,
size
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
hue
);
zclBufferAddByte
(
saturation
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"hue=%d,saturation=%d,trsTime=%d,mask=%d,Override=%d
\r\n
"
,
hue
,
saturation
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to hue and Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetocolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorX
,
uint16_t
colorY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_COLOR_COMMAND_ID
);
zclBufferAddWord
(
colorX
);
zclBufferAddWord
(
colorY
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"color x=%d,color y=%d,transition time=%d,options mask=0x%02x,options override=0x%02x
\r\n
"
,
colorX
,
colorY
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to color]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovecolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
rateX
,
uint16_t
rateY
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_COLOR_COMMAND_ID
);
zclBufferAddWord
(
rateX
);
zclBufferAddWord
(
rateY
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"rateX=%d,rateY=%d,mask=%d,override=%d
\r\n
"
,
rateX
,
rateY
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move color]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStepcolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
stepX
,
uint16_t
stepY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_COLOR_COMMAND_ID
);
zclBufferAddWord
(
stepX
);
zclBufferAddWord
(
stepY
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step x=%d,step y=%d,transition time=%d,options mask=%d,options override=%d
\r\n
"
,
stepX
,
stepY
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Step color]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetocolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorTemp
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID
);
zclBufferAddWord
(
colorTemp
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"colorTemp=%d,trsTime=%d,mask=%d,Override=%d
\r\n
"
,
colorTemp
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to color temperature]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEmovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID
);
zclBufferAddWord
(
hue
);
zclBufferAddByte
(
dir
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"hue=%d,dir=%d,trsTime=%d
\r\n
"
,
hue
,
dir
,
trsTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced Move to hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEmovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
){
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_MOVE_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
rate
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=%d,rate=%d
\r\n
"
,
mode
,
rate
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced Move hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEstephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_STEP_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
size
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=%d,size=%d,trsTime=%d
\r\n
"
,
mode
,
size
,
trsTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced step hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEmovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID
);
zclBufferAddWord
(
hue
);
zclBufferAddByte
(
saturation
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"hue=%d,saturation=%d,trsTime=%d
\r\n
"
,
hue
,
saturation
,
trsTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced move hue and sauturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlLoopSet
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
flags
,
uint8_t
action
,
uint8_t
dir
,
uint16_t
time
,
uint16_t
sHue
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_COLOR_LOOP_SET_COMMAND_ID
);
zclBufferAddByte
(
flags
);
zclBufferAddByte
(
action
);
zclBufferAddByte
(
dir
);
zclBufferAddWord
(
time
);
zclBufferAddWord
(
sHue
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"update flags=%d,action=%d,direction=%d,time=%d,start hue=%d
\r\n
"
,
flags
,
action
,
dir
,
time
,
sHue
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Color loop set]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStopmovestep
(
uint16_t
node
,
uint8_t
ep
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STOP_MOVE_STEP_COMMAND_ID
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"options mask=%d,options override=%d
\r\n
"
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Stop Move step]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovecolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
uint16_t
Tmin
,
uint16_t
Tmax
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
rate
);
zclBufferAddWord
(
Tmin
);
zclBufferAddWord
(
Tmax
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=%d,rate=%d,Tmin=%d,Tmax=%d,mask=%d,Override=%d
\r\n
"
,
mode
,
rate
,
Tmin
,
Tmax
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move color temperature]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStepcolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
uint16_t
minimum
,
uint16_t
maximum
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
size
);
zclBufferAddWord
(
trsTime
);
zclBufferAddWord
(
minimum
);
zclBufferAddWord
(
maximum
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step mode=%d,step size=%d,transition time=%d,minimum=%d,maximum=%d,mask=%d,override=%d
\r\n
"
,
mode
,
size
,
trsTime
,
minimum
,
maximum
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Step color temperature]status=0x%02X
\n
"
,
status
);
return
status
;
}
#include "kk_zigbee_api.h"
// network leave
EmberStatus
kk_network_leave
(
void
)
{
EmberStatus
status
=
ezspLeaveNetwork
();
if
(
status
==
EMBER_SUCCESS
)
{
emberAfAppPrintln
(
"net_leave: Left network
\r\n
"
);
}
else
{
emberAfAppPrintln
(
"net_leave: Error 0x%X
\r\n
"
,
status
);
}
return
status
;
}
EmberStatus
kk_network_form
(
bool
centralized
,
EmberPanId
panId
,
int8_t
radioTxPower
,
uint8_t
channel
)
{
EmberStatus
status
=
emberAfPluginNetworkCreatorNetworkForm
(
centralized
,
panId
,
radioTxPower
,
channel
);
emberAfAppPrintln
(
"[network form]centralized:%p,PAN ID:0x%2x,TxPower:%d,channel:0x%x,status=0x%x"
,
(
centralized
==
true
)
?
"yes"
:
"no"
,
panId
,
radioTxPower
,
channel
,
status
);
return
status
;
}
void
kk_print_network_info
(
void
)
{
emberAfAppPrint
(
"
\r\n
MAC Address = "
);
EmberEUI64
eui64
;
emberAfGetEui64
(
eui64
);
emberAfPrintBigEndianEui64
(
eui64
);
emberAfAppFlush
();
EmberNetworkStatus
status
=
ezspNetworkState
();
if
(
status
==
EMBER_JOINED_NETWORK
){
emberAfAppPrintln
(
"
\r\n
Node ID = 0x%2x"
,
emberAfGetNodeId
()
);
emberAfAppPrintln
(
"
\r\n
PANID = 0x%2x"
,
emberAfGetPanId
()
);
emberAfAppPrintln
(
"
\r\n
Channel = 0x%x"
,
emberAfGetRadioChannel
()
);
emberAfAppPrintln
(
"
\r\n
TX Power(dBm) = %d"
,
emberAfGetRadioChannel
()
);
emberAfAppFlush
();
EmberKeyStruct
nwkKey
;
if
(
emberGetKey
(
EMBER_CURRENT_NETWORK_KEY
,
&
nwkKey
)
==
EMBER_SUCCESS
)
{
emberAfAppPrintln
(
"
\r\n
Network Key = "
);
emberAfPrintZigbeeKey
(
emberKeyContents
(
&
nwkKey
.
key
));
emberAfAppFlush
();
}
}
else
{
emberAfAppPrintln
(
"
\r\n
Not joined network: Network Satus: 0x%x
\r\n
"
,
status
);
}
}
EmberStatus
kk_zdo_leave_request
(
EmberNodeId
target
,
bool
removeChildren
,
bool
rejoin
)
{
EmberEUI64
nullEui64
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
EmberStatus
status
;
uint8_t
options
=
0
;
if
(
rejoin
)
{
options
|=
EMBER_ZIGBEE_LEAVE_AND_REJOIN
;
}
if
(
removeChildren
)
{
options
|=
EMBER_ZIGBEE_LEAVE_AND_REMOVE_CHILDREN
;
}
status
=
emberLeaveRequest
(
target
,
nullEui64
,
options
,
EMBER_APS_OPTION_RETRY
);
emberAfAppPrintln
(
"Leave %p0x%X"
,
"Request: "
,
status
);
}
EmberStatus
zclGRead
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
bool
svr
)
{
EmberStatus
status
;
zclBufferSetup
(
ZCL_GLOBAL_COMMAND
|
((
svr
==
true
)
?
ZCL_FRAME_CONTROL_CLIENT_TO_SERVER
:
ZCL_FRAME_CONTROL_SERVER_TO_CLIENT
),
clusterId
,
ZCL_READ_ATTRIBUTES_COMMAND_ID
);
zclBufferAddByte
(
LOW_BYTE
(
attrId
));
zclBufferAddByte
(
HIGH_BYTE
(
attrId
));
rpcBufferPrint
();
status
=
rpcSendCommand
(
node
,
srcEP
,
dstEP
,
multicast
);
return
status
;
}
EmberStatus
zclGWrite
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
uint8_t
dataType
,
uint8_t
dataLen
,
uint8_t
*
data
,
bool
svr
)
{
EmberStatus
status
=
EMBER_ERR_FATAL
;
int
i
;
if
(
data
==
NULL
||
dataLen
==
0
)
return
status
;
zclBufferSetup
(
ZCL_GLOBAL_COMMAND
|
((
svr
==
true
)
?
ZCL_FRAME_CONTROL_CLIENT_TO_SERVER
:
ZCL_FRAME_CONTROL_SERVER_TO_CLIENT
),
clusterId
,
ZCL_WRITE_ATTRIBUTES_COMMAND_ID
);
zclBufferAddByte
(
LOW_BYTE
(
attrId
));
zclBufferAddByte
(
HIGH_BYTE
(
attrId
));
zclBufferAddByte
(
dataType
);
for
(
i
=
0
;
i
<
dataLen
;
i
++
){
zclBufferAddByte
(
data
[
i
]);
}
rpcBufferPrint
();
status
=
rpcSendCommand
(
node
,
srcEP
,
dstEP
,
multicast
);
return
status
;
}
//
EmberStatus
WindowCover_UpOpen
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Up/Open]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
WindowCover_DownClose
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Down/Close]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
WindowCover_Stop
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_STOP_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Stop]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
WindowCover_GotoLiftPercentage
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
position
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_WINDOW_COVERING_CLUSTER_ID
,
ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID
);
zclBufferAddByte
(
position
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[GotoLiftPercentage]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_On
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[On]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_Off
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_OFF_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Off]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_Toggle
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_TOGGLE_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Toggle]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_OffWithEffect
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
id
,
uint8_t
var
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_OFF_WITH_EFFECT_COMMAND_ID
);
zclBufferAddByte
(
id
);
zclBufferAddByte
(
var
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[off with effect]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_OnWithRecallGlobalScene
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[On with recall global scene]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclOnOff_OnWithTimedOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
Control
,
uint16_t
OnTime
,
uint16_t
OffWaitTime
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_WITH_TIMED_OFF_COMMAND_ID
);
zclBufferAddByte
(
Control
);
zclBufferAddWord
(
OnTime
);
zclBufferAddWord
(
OffWaitTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[on with timed off]node=0x%02X,ep=%d,status=0x%02X
\n
"
,
node
,
ep
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_HUE_COMMAND_ID
);
zclBufferAddByte
(
hue
);
zclBufferAddByte
(
dir
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
kk_print_debug
(
"hue=%d,dir=%d,trsTime=%d,mask=%d,Override=%d
\r\n
"
,
hue
,
dir
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
rate
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=0x%02x,rate=0x%02x,mask=0x%02x,Override=0x%02x
\r\n
"
,
mode
,
rate
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
size
);
zclBufferAddByte
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step mode=%d,step size=%d,transition time=%d,mask=%d,override=%d
\r\n
"
,
mode
,
size
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Step hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetosat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
saturation
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"saturation=%d,trsTime=%d,options mask=%d,options override=%d
\r\n
"
,
saturation
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovesat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
rate
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"move mode=0x%02x,rate=0x%02x,mask=0x%02x,Override=0x%02x
\r\n
"
,
mode
,
rate
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStepsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
size
);
zclBufferAddByte
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step mode=%d,step size=%d,transition time=%d,mask=%d,override=%d
\r\n
"
,
mode
,
size
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID
);
zclBufferAddByte
(
hue
);
zclBufferAddByte
(
saturation
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"hue=%d,saturation=%d,trsTime=%d,mask=%d,Override=%d
\r\n
"
,
hue
,
saturation
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to hue and Saturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetocolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorX
,
uint16_t
colorY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_COLOR_COMMAND_ID
);
zclBufferAddWord
(
colorX
);
zclBufferAddWord
(
colorY
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"color x=%d,color y=%d,transition time=%d,options mask=0x%02x,options override=0x%02x
\r\n
"
,
colorX
,
colorY
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to color]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovecolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
rateX
,
uint16_t
rateY
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_COLOR_COMMAND_ID
);
zclBufferAddWord
(
rateX
);
zclBufferAddWord
(
rateY
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"rateX=%d,rateY=%d,mask=%d,override=%d
\r\n
"
,
rateX
,
rateY
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move color]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStepcolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
stepX
,
uint16_t
stepY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_COLOR_COMMAND_ID
);
zclBufferAddWord
(
stepX
);
zclBufferAddWord
(
stepY
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step x=%d,step y=%d,transition time=%d,options mask=%d,options override=%d
\r\n
"
,
stepX
,
stepY
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Step color]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovetocolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorTemp
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID
);
zclBufferAddWord
(
colorTemp
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"colorTemp=%d,trsTime=%d,mask=%d,Override=%d
\r\n
"
,
colorTemp
,
trsTime
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Move to color temperature]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEmovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID
);
zclBufferAddWord
(
hue
);
zclBufferAddByte
(
dir
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"hue=%d,dir=%d,trsTime=%d
\r\n
"
,
hue
,
dir
,
trsTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced Move to hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEmovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
){
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_MOVE_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
rate
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=%d,rate=%d
\r\n
"
,
mode
,
rate
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced Move hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEstephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_STEP_HUE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
size
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=%d,size=%d,trsTime=%d
\r\n
"
,
mode
,
size
,
trsTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced step hue]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlEmovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID
);
zclBufferAddWord
(
hue
);
zclBufferAddByte
(
saturation
);
zclBufferAddWord
(
trsTime
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"hue=%d,saturation=%d,trsTime=%d
\r\n
"
,
hue
,
saturation
,
trsTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
kk_print_debug
(
"[Enhanced move hue and sauturation]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlLoopSet
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
flags
,
uint8_t
action
,
uint8_t
dir
,
uint16_t
time
,
uint16_t
sHue
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_COLOR_LOOP_SET_COMMAND_ID
);
zclBufferAddByte
(
flags
);
zclBufferAddByte
(
action
);
zclBufferAddByte
(
dir
);
zclBufferAddWord
(
time
);
zclBufferAddWord
(
sHue
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"update flags=%d,action=%d,direction=%d,time=%d,start hue=%d
\r\n
"
,
flags
,
action
,
dir
,
time
,
sHue
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Color loop set]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStopmovestep
(
uint16_t
node
,
uint8_t
ep
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STOP_MOVE_STEP_COMMAND_ID
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"options mask=%d,options override=%d
\r\n
"
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Stop Move step]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlMovecolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
uint16_t
Tmin
,
uint16_t
Tmax
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
rate
);
zclBufferAddWord
(
Tmin
);
zclBufferAddWord
(
Tmax
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"mode=%d,rate=%d,Tmin=%d,Tmax=%d,mask=%d,Override=%d
\r\n
"
,
mode
,
rate
,
Tmin
,
Tmax
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move color temperature]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclColorControlStepcolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
uint16_t
minimum
,
uint16_t
maximum
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_COLOR_CONTROL_CLUSTER_ID
,
ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
size
);
zclBufferAddWord
(
trsTime
);
zclBufferAddWord
(
minimum
);
zclBufferAddWord
(
maximum
);
if
(
options
==
true
){
zclBufferAddByte
(
mask
);
zclBufferAddByte
(
Override
);
}
emberAfCorePrintln
(
"step mode=%d,step size=%d,transition time=%d,minimum=%d,maximum=%d,mask=%d,override=%d
\r\n
"
,
mode
,
size
,
trsTime
,
minimum
,
maximum
,
mask
,
Override
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Step color temperature]status=0x%02X
\n
"
,
status
);
return
status
;
}
EmberStatus
zclGroupsAddGroup
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
,
char
*
name
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
if
(
name
==
NULL
)
return
EMBER_INVALID_CALL
;
len
=
strlen
(
name
);
zcl_clu_client_cmd_buffer_setup
(
ZCL_GROUPS_CLUSTER_ID
,
ZCL_ADD_GROUP_COMMAND_ID
);
zclBufferAddWord
(
id
);
for
(
i
=
0
;
i
<
len
;
i
++
){
zclBufferAddByte
(
name
[
i
]);
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Add Group] id:%d,Name:%s,status:0x%02x
\r\n
"
,
id
,
name
,
status
);
return
status
;
}
EmberStatus
zclGroupsViewGroup
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_GROUPS_CLUSTER_ID
,
ZCL_VIEW_GROUP_COMMAND_ID
);
zclBufferAddWord
(
id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[View Group] id:%d,status:0x%02x
\r\n
"
,
id
,
status
);
return
status
;
}
EmberStatus
zclGroupsGetGroupMembership
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
count
,
uint16_t
*
list
)
{
uint8_t
i
;
EmberStatus
status
;
if
(
count
==
0
||
list
==
NULL
)
return
EMBER_INVALID_CALL
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_GROUPS_CLUSTER_ID
,
ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID
);
zclBufferAddWord
(
count
);
for
(
i
=
0
;
i
<
count
;
i
++
){
zclBufferAddWord
(
list
[
i
]);
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Get Group Membership] count:%d,status:0x%02x
\r\n
"
,
count
,
status
);
return
status
;
}
EmberStatus
zclGroupsRemoveGroup
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_GROUPS_CLUSTER_ID
,
ZCL_REMOVE_GROUP_COMMAND_ID
);
zclBufferAddWord
(
id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Remove Group] id:%d,status:0x%02x
\r\n
"
,
id
,
status
);
return
status
;
}
EmberStatus
zclGroupsRemoveAllGroups
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_GROUPS_CLUSTER_ID
,
ZCL_REMOVE_ALL_GROUPS_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Remove All Groups]status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclGroupsAddGroupIfIdentifying
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
,
char
*
name
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
if
(
name
==
NULL
)
return
EMBER_INVALID_CALL
;
len
=
strlen
(
name
);
zcl_clu_client_cmd_buffer_setup
(
ZCL_GROUPS_CLUSTER_ID
,
ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID
);
zclBufferAddWord
(
id
);
for
(
i
=
0
;
i
<
len
;
i
++
){
zclBufferAddByte
(
name
[
i
]);
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Add Group if Identifying] id:%d,Name:%s,status:0x%02x
\r\n
"
,
id
,
name
,
status
);
return
status
;
}
EmberStatus
zclScenesAddScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
,
uint16_t
trs_time
,
char
*
name
,
uint8_t
extLen
,
uint8_t
*
extData
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_ADD_SCENE_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
zclBufferAddWord
(
s_id
);
zclBufferAddWord
(
trs_time
);
if
(
name
!=
NULL
){
len
=
strlen
(
name
);
for
(
i
=
0
;
i
<
len
;
i
++
){
zclBufferAddByte
(
name
[
i
]);
}
for
(
i
=
0
;
i
<
extLen
;
i
++
){
zclBufferAddByte
(
extData
[
i
]);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Add Scene] g_id:%d,s_id:%d,status:0x%02x
\r\n
"
,
g_id
,
s_id
,
status
);
return
status
;
}
EmberStatus
zclScenesViewScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_VIEW_SCENE_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
zclBufferAddWord
(
s_id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[View Scene] g_id:%d,s_id:%d,status:0x%02x
\r\n
"
,
g_id
,
s_id
,
status
);
return
status
;
}
EmberStatus
zclScenesRemoveScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_REMOVE_SCENE_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
zclBufferAddWord
(
s_id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Remove Scene] g_id:%d,s_id:%d,status:0x%02x
\r\n
"
,
g_id
,
s_id
,
status
);
return
status
;
}
EmberStatus
zclScenesRemoveAllScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_REMOVE_ALL_SCENES_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Remove All Scene] g_id:%d,status:0x%02x
\r\n
"
,
g_id
,
status
);
return
status
;
}
EmberStatus
zclScenesStoreScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_STORE_SCENE_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
zclBufferAddWord
(
s_id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Store Scene] g_id:%d,s_id:%d,status:0x%02x
\r\n
"
,
g_id
,
s_id
,
status
);
return
status
;
}
EmberStatus
zclScenesRecallScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
,
uint16_t
trsTime
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_RECALL_SCENE_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
zclBufferAddWord
(
s_id
);
zclBufferAddWord
(
trsTime
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Recall Scene] g_id:%d,s_id:%d,trsTime:%d,status:0x%02x
\r\n
"
,
g_id
,
s_id
,
trsTime
,
status
);
return
status
;
}
EmberStatus
zclScenesGetSceneMembership
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[View Scene] g_id:%d,status:0x%02x
\r\n
"
,
g_id
,
status
);
return
status
;
}
EmberStatus
zclScenesEnhancedAddScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
,
uint16_t
trs_time
,
char
*
name
,
uint8_t
extLen
,
uint8_t
*
extData
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_ENHANCED_ADD_SCENE_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
zclBufferAddWord
(
s_id
);
zclBufferAddWord
(
trs_time
);
if
(
name
!=
NULL
){
len
=
strlen
(
name
);
for
(
i
=
0
;
i
<
len
;
i
++
){
zclBufferAddByte
(
name
[
i
]);
}
for
(
i
=
0
;
i
<
extLen
;
i
++
){
zclBufferAddByte
(
extData
[
i
]);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Enhanced Add Scene] g_id:%d,s_id:%d,status:0x%02x
\r\n
"
,
g_id
,
s_id
,
status
);
return
status
;
}
EmberStatus
zclScenesEnhancedViewScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_ENHANCED_VIEW_SCENE_COMMAND_ID
);
zclBufferAddWord
(
g_id
);
zclBufferAddWord
(
s_id
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Enhanced View Scene] g_id:%d,s_id:%d,status:0x%02x
\r\n
"
,
g_id
,
s_id
,
status
);
return
status
;
}
EmberStatus
zclScenesCopyScene
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
gidFrom
,
uint16_t
sidFrom
,
uint16_t
gidTo
,
uint16_t
sidTo
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_SCENES_CLUSTER_ID
,
ZCL_COPY_SCENE_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
gidFrom
);
zclBufferAddWord
(
sidFrom
);
zclBufferAddWord
(
gidTo
);
zclBufferAddWord
(
sidTo
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Copy Scene] mode:%d,gidFrom:%d,sidFrom:%d,gidTo:%d,sidTo:%d,status:0x%02x
\r\n
"
,
mode
,
gidFrom
,
sidFrom
,
gidTo
,
sidTo
,
status
);
return
status
;
}
EmberStatus
zclLevel_MoveToLevel
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
level
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_LEVEL_COMMAND_ID
);
zclBufferAddByte
(
level
);
zclBufferAddWord
(
trsTime
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move To Level] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclLevel_Move
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_STEP_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
rate
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclLevel_Step
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_STEP_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
size
);
zclBufferAddWord
(
trsTime
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move] step:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclLevel_Stop
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_STOP_COMMAND_ID
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move] step:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclLevel_MoveToLevelWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
level
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID
);
zclBufferAddByte
(
level
);
zclBufferAddWord
(
trsTime
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move To Level] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclLevel_MoveWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_MOVE_WITH_ON_OFF_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
rate
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclLevel_StepWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_STEP_WITH_ON_OFF_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
size
);
zclBufferAddWord
(
trsTime
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move] step:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclLevel_StopWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
*
mask
,
uint8_t
*
override
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_LEVEL_CONTROL_CLUSTER_ID
,
ZCL_STOP_WITH_ON_OFF_COMMAND_ID
);
if
(
mask
!=
NULL
){
zclBufferAddByte
(
mask
);
if
(
override
!=
NULL
){
zclBufferAddByte
(
override
);
}
}
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Move] step:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclWD_StartWarning
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
duration
,
uint8_t
cycle
,
uint8_t
level
)
{
uint8_t
i
,
len
;
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_IAS_WD_CLUSTER_ID
,
ZCL_START_WARNING_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddWord
(
duration
);
zclBufferAddByte
(
cycle
);
zclBufferAddByte
(
level
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Start Warning] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclWD_Squawk
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_IAS_WD_CLUSTER_ID
,
ZCL_SQUAWK_COMMAND_ID
);
zclBufferAddByte
(
mode
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Squawk] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclThermostat_Setpoint_Raise_Lower
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
amount
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID
);
zclBufferAddByte
(
mode
);
zclBufferAddByte
(
amount
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Setpoint Raise/Lower] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
/*
EmberStatus zclThermostat_Set_Weekly_Schedule(uint16_t node,
uint8_t ep,
uint8_t mode,
uint8_t amount)
{
EmberStatus status;
zcl_clu_client_cmd_buffer_setup( ZCL_THERMOSTAT_CLUSTER_ID,
ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID);
zclBufferAddByte(mode);
zclBufferAddByte(amount);
status = rpcSendCommand(node,1,ep,false);
emberAfCorePrintln("[Setpoint Raise/Lower] status:0x%02x\r\n",status);
return status;
}*/
EmberStatus
zclThermostat_GetWeeklySchedule
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
days
,
uint8_t
mode
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_GET_WEEKLY_SCHEDULE_COMMAND_ID
);
zclBufferAddByte
(
days
);
zclBufferAddByte
(
mode
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Get Weekly Schedule] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclThermostat_ClearWeeklySchedule
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_CLEAR_WEEKLY_SCHEDULE_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Clear Weekly Schedule] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
EmberStatus
zclThermostat_GetRelayStatusLog
(
uint16_t
node
,
uint8_t
ep
)
{
EmberStatus
status
;
zcl_clu_client_cmd_buffer_setup
(
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_GET_RELAY_STATUS_LOG_COMMAND_ID
);
status
=
rpcSendCommand
(
node
,
1
,
ep
,
false
);
emberAfCorePrintln
(
"[Get Relay Status Log] status:0x%02x
\r\n
"
,
status
);
return
status
;
}
platform/zigbee/app/builder/Z3GatewayHost/ZB/kk_zigbee_api.h
View file @
0de6644f
#ifndef __KK_ZIGBEE_API_H
#define __KK_ZIGBEE_API_H
#include "kk_test.h"
EmberStatus
kk_network_leave
(
void
);
EmberStatus
kk_network_form
(
bool
centralized
,
EmberPanId
panId
,
int8_t
radioTxPower
,
uint8_t
channel
);
void
kk_print_network_info
(
void
);
EmberStatus
kk_zdo_leave_request
(
EmberNodeId
target
,
bool
removeChildren
,
bool
rejoin
);
EmberStatus
zclGRead
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
bool
svr
);
EmberStatus
zclGWrite
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
uint8_t
dataType
,
uint8_t
dataLen
,
uint8_t
*
data
,
bool
svr
);
EmberStatus
zclOnOff_On
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_Off
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_Toggle
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_OffWithEffect
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
id
,
uint8_t
var
);
EmberStatus
zclOnOff_OnWithRecallGlobalScene
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_OnWithTimedOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
Control
,
uint16_t
OnTime
,
uint16_t
OffWaitTime
);
EmberStatus
WindowCover_UpOpen
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
WindowCover_DownClose
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
WindowCover_Stop
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
WindowCover_GotoLiftPercentage
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
position
);
EmberStatus
zclColorControlMovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetosat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovesat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStepsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetocolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorX
,
uint16_t
colorY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovecolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
rateX
,
uint16_t
rateY
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStepcolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
stepX
,
uint16_t
stepY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetocolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorTemp
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEmovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEmovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEstephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEmovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlLoopSet
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
flags
,
uint8_t
action
,
uint8_t
dir
,
uint16_t
time
,
uint16_t
sHue
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStopmovestep
(
uint16_t
node
,
uint8_t
ep
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovecolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
uint16_t
Tmin
,
uint16_t
Tmax
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStepcolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
uint16_t
minimum
,
uint16_t
maximum
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
#endif
#ifndef __KK_ZIGBEE_API_H
#define __KK_ZIGBEE_API_H
#include "kk_test.h"
EmberStatus
kk_network_leave
(
void
);
EmberStatus
kk_network_form
(
bool
centralized
,
EmberPanId
panId
,
int8_t
radioTxPower
,
uint8_t
channel
);
void
kk_print_network_info
(
void
);
EmberStatus
kk_zdo_leave_request
(
EmberNodeId
target
,
bool
removeChildren
,
bool
rejoin
);
EmberStatus
zclGRead
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
bool
svr
);
EmberStatus
zclGWrite
(
uint16_t
node
,
uint8_t
srcEP
,
uint8_t
dstEP
,
bool
multicast
,
uint16_t
clusterId
,
uint16_t
attrId
,
uint8_t
dataType
,
uint8_t
dataLen
,
uint8_t
*
data
,
bool
svr
);
EmberStatus
zclOnOff_On
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_Off
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_Toggle
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_OffWithEffect
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
id
,
uint8_t
var
);
EmberStatus
zclOnOff_OnWithRecallGlobalScene
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclOnOff_OnWithTimedOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
Control
,
uint16_t
OnTime
,
uint16_t
OffWaitTime
);
EmberStatus
WindowCover_UpOpen
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
WindowCover_DownClose
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
WindowCover_Stop
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
WindowCover_GotoLiftPercentage
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
position
);
EmberStatus
zclColorControlMovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetosat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovesat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStepsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint8_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetocolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorX
,
uint16_t
colorY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovecolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
rateX
,
uint16_t
rateY
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStepcolor
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
stepX
,
uint16_t
stepY
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovetocolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
colorTemp
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEmovetohue
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
dir
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEmovehue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEstephue
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlEmovetohueandsat
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
hue
,
uint8_t
saturation
,
uint16_t
trsTime
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlLoopSet
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
flags
,
uint8_t
action
,
uint8_t
dir
,
uint16_t
time
,
uint16_t
sHue
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStopmovestep
(
uint16_t
node
,
uint8_t
ep
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlMovecolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
rate
,
uint16_t
Tmin
,
uint16_t
Tmax
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclColorControlStepcolortemp
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
size
,
uint16_t
trsTime
,
uint16_t
minimum
,
uint16_t
maximum
,
bool
options
,
uint8_t
mask
,
uint8_t
Override
);
EmberStatus
zclGroupsAddGroup
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
,
char
*
name
);
EmberStatus
zclGroupsViewGroup
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
);
EmberStatus
zclGroupsGetGroupMembership
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
count
,
uint16_t
*
list
);
EmberStatus
zclGroupsRemoveGroup
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
);
EmberStatus
zclGroupsRemoveAllGroups
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclGroupsAddGroupIfIdentifying
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
id
,
char
*
name
);
EmberStatus
zclScenesAddScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
,
uint16_t
trs_time
,
char
*
name
,
uint8_t
extLen
,
uint8_t
*
extData
);
EmberStatus
zclScenesViewScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
);
EmberStatus
zclScenesRemoveScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
);
EmberStatus
zclScenesRemoveAllScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
);
EmberStatus
zclScenesStoreScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
);
EmberStatus
zclScenesRecallScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
,
uint16_t
trsTime
);
EmberStatus
zclScenesGetSceneMembership
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
);
EmberStatus
zclScenesEnhancedAddScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
,
uint16_t
trs_time
,
char
*
name
,
uint8_t
extLen
,
uint8_t
*
extData
);
EmberStatus
zclScenesEnhancedViewScene
(
uint16_t
node
,
uint8_t
ep
,
uint16_t
g_id
,
uint16_t
s_id
);
EmberStatus
zclScenesCopyScene
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
gidFrom
,
uint16_t
sidFrom
,
uint16_t
gidTo
,
uint16_t
sidTo
);
EmberStatus
zclLevel_MoveToLevel
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
level
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclLevel_Move
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclLevel_Step
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclLevel_Stop
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclLevel_MoveToLevelWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
level
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclLevel_MoveWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
rate
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclLevel_StepWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
size
,
uint16_t
trsTime
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclLevel_StopWithOnOff
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
*
mask
,
uint8_t
*
override
);
EmberStatus
zclWD_StartWarning
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint16_t
duration
,
uint8_t
cycle
,
uint8_t
level
);
EmberStatus
zclWD_Squawk
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
);
EmberStatus
zclThermostat_Setpoint_Raise_Lower
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
mode
,
uint8_t
amount
);
EmberStatus
zclThermostat_GetWeeklySchedule
(
uint16_t
node
,
uint8_t
ep
,
uint8_t
days
,
uint8_t
mode
);
EmberStatus
zclThermostat_ClearWeeklySchedule
(
uint16_t
node
,
uint8_t
ep
);
EmberStatus
zclThermostat_GetRelayStatusLog
(
uint16_t
node
,
uint8_t
ep
);
#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