Commit 0de6644f authored by 黄振令's avatar 黄振令
parents 1e3c7b60 bab0bf4f
......@@ -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 = read(watcher->fd, buffer, sizeof(buffer));
int32_t bytes = recv(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("11buf = %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__);
......
......@@ -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)
......
......@@ -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);
......
......@@ -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;
......
......@@ -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");
}
......
......@@ -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;
}
......
......@@ -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;
}
......@@ -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,startIdx2 = 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 + startIdx2;
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)
{
......
#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
#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)
{
......
......@@ -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);
......
#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\nMAC Address = " );
EmberEUI64 eui64;
emberAfGetEui64(eui64);
emberAfPrintBigEndianEui64(eui64);
emberAfAppFlush();
EmberNetworkStatus status = ezspNetworkState();
if (status== EMBER_JOINED_NETWORK ){
emberAfAppPrintln("\r\nNode ID = 0x%2x", emberAfGetNodeId() );
emberAfAppPrintln("\r\nPANID = 0x%2x", emberAfGetPanId() );
emberAfAppPrintln("\r\nChannel = 0x%x", emberAfGetRadioChannel() );
emberAfAppPrintln("\r\nTX Power(dBm) = %d", emberAfGetRadioChannel() );
emberAfAppFlush();
EmberKeyStruct nwkKey;
if ( emberGetKey(EMBER_CURRENT_NETWORK_KEY,&nwkKey) == EMBER_SUCCESS )
{
emberAfAppPrintln("\r\nNetwork Key = " );
emberAfPrintZigbeeKey(emberKeyContents(&nwkKey.key));
emberAfAppFlush();
}
}else{
emberAfAppPrintln( "\r\nNot 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\nMAC Address = " );
EmberEUI64 eui64;
emberAfGetEui64(eui64);
emberAfPrintBigEndianEui64(eui64);
emberAfAppFlush();
EmberNetworkStatus status = ezspNetworkState();
if (status== EMBER_JOINED_NETWORK ){
emberAfAppPrintln("\r\nNode ID = 0x%2x", emberAfGetNodeId() );
emberAfAppPrintln("\r\nPANID = 0x%2x", emberAfGetPanId() );
emberAfAppPrintln("\r\nChannel = 0x%x", emberAfGetRadioChannel() );
emberAfAppPrintln("\r\nTX Power(dBm) = %d", emberAfGetRadioChannel() );
emberAfAppFlush();
EmberKeyStruct nwkKey;
if ( emberGetKey(EMBER_CURRENT_NETWORK_KEY,&nwkKey) == EMBER_SUCCESS )
{
emberAfAppPrintln("\r\nNetwork Key = " );
emberAfPrintZigbeeKey(emberKeyContents(&nwkKey.key));
emberAfAppFlush();
}
}else{
emberAfAppPrintln( "\r\nNot 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;
}
#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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment