Commit 0d6f9397 authored by 黄振令's avatar 黄振令
parents 07ca1ed8 ccdb5dab
...@@ -164,6 +164,53 @@ int kk_zcl_onoff_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* d ...@@ -164,6 +164,53 @@ int kk_zcl_onoff_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* d
} }
if(macMatch){
node = emberAfDeviceTableGetNodeIdFromEui64(eui64);
if(node==0xffff){
emberAfCorePrintln("\r\n not find device by node!\r\n" );
if(ctx)
set_json_error_type(ctx,JRPC_INVALID_PARAMS,MSG_INVALID_PARAMS);
goto error_return;
}
emberAfCorePrintln("\r\nnode=0x%02X,ep=%d,OnOffStatus=%d\r\n",node,ep,OnOffStatus);
if(OnOffStatus==1){
status = zclOnOff_On(node,ep);
emberAfCorePrintln("\r\nzclOnOff_On,status=0x%x\r\n",status);
}else if(OnOffStatus==0){
status = zclOnOff_Off(node,ep);
emberAfCorePrintln("\r\nzclOnOff_Off,status=0x%x\r\n",status);
}else{
if(ctx)
set_json_error_type(ctx,JRPC_INVALID_PARAMS,MSG_INVALID_PARAMS);
goto error_return;
}
}else{
emberAfCorePrintln("\r\n not find device by mac!\r\n" );
if(ctx)
set_json_error_type(ctx,JRPC_INVALID_PARAMS,MSG_INVALID_PARAMS);
goto error_return;
}
return status;
error_return:
return -1;
}
int kk_zcl_windowCovering_mode_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* data)
{
uint8_t eui64[EUI64_SIZE];
uint8_t OnOffStatus = 0;
EmberStatus status = 0;
EmberNodeId node = 0xffff;
OnOffStatus = *(uint8_t*)data;
bool macMatch= rpc_get_mac(mac,eui64);
emberAfCorePrintBuffer(eui64,EUI64_SIZE,true);
for(int i=0;i<EUI64_SIZE;i++){
emberAfCorePrintln("i=%d,val=%02x",i,eui64[i]);
}
if(macMatch){ if(macMatch){
node = emberAfDeviceTableGetNodeIdFromEui64(eui64); node = emberAfDeviceTableGetNodeIdFromEui64(eui64);
if(node==0xffff){ if(node==0xffff){
...@@ -195,6 +242,46 @@ int kk_zcl_onoff_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* d ...@@ -195,6 +242,46 @@ int kk_zcl_onoff_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* d
error_return: error_return:
return -1; return -1;
} }
int kk_zcl_windowCovering_position_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* data)
{
uint8_t eui64[EUI64_SIZE];
uint8_t position = 0;
EmberStatus status = 0;
EmberNodeId node = 0xffff;
position = *(uint8_t*)data;
bool macMatch= rpc_get_mac(mac,eui64);
emberAfCorePrintBuffer(eui64,EUI64_SIZE,true);
for(int i=0;i<EUI64_SIZE;i++){
emberAfCorePrintln("i=%d,val=%02x",i,eui64[i]);
}
if(macMatch){
node = emberAfDeviceTableGetNodeIdFromEui64(eui64);
if(node==0xffff){
emberAfCorePrintln("\r\n not find device by node!\r\n" );
if(ctx)
set_json_error_type(ctx,JRPC_INVALID_PARAMS,MSG_INVALID_PARAMS);
goto error_return;
}
emberAfCorePrintln("\r\nnode=0x%02X,ep=%d,position=%d\r\n",node,ep,position);
status = WindowCover_GotoLiftPercentage(node,ep,position);
emberAfCorePrintln("status=0x%x",status);
}else{
emberAfCorePrintln("\r\n not find device by mac!\r\n" );
if(ctx)
set_json_error_type(ctx,JRPC_INVALID_PARAMS,MSG_INVALID_PARAMS);
goto error_return;
}
return status;
error_return:
return -1;
}
#if 0 #if 0
int kk_test_fuc(char *mac,const char *params) int kk_test_fuc(char *mac,const char *params)
{ {
......
...@@ -35,6 +35,11 @@ ...@@ -35,6 +35,11 @@
cJSON *rpc_Control(jrpc_context * ctx, cJSON * params, cJSON *id,cJSON *mac); cJSON *rpc_Control(jrpc_context * ctx, cJSON * params, cJSON *id,cJSON *mac);
cJSON *rpc_read_attribue(jrpc_context * ctx, cJSON * params, cJSON *id,cJSON *mac); cJSON *rpc_read_attribue(jrpc_context * ctx, cJSON * params, cJSON *id,cJSON *mac);
int kk_zcl_onoff_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* data); int kk_zcl_onoff_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* data);
int kk_zcl_windowCovering_mode_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* data);
int kk_zcl_windowCovering_position_set(jrpc_context * ctx,const char *mac,unsigned char ep,void* data);
int kk_sendData2CCU(char* data, int len); int kk_sendData2CCU(char* data, int len);
int rpc_nwkPermitJoin(jrpc_context * ctx,const char *mac,unsigned char ep,void* data); int rpc_nwkPermitJoin(jrpc_context * ctx,const char *mac,unsigned char ep,void* data);
......
...@@ -17,8 +17,8 @@ kk_tsl_zigbee_map_t g_tsl_zigbee_map [] = { ...@@ -17,8 +17,8 @@ kk_tsl_zigbee_map_t g_tsl_zigbee_map [] = {
3, 3,
{ {
{KK_TSL_DATA_TYPE_TEXT,"OperationMode",KK_PRIMARY_EP,kk_zcl_onoff_set,ZCL_ON_OFF_CLUSTER_ID,ZCL_ON_OFF_ATTRIBUTE_ID},//开 {KK_TSL_DATA_TYPE_TEXT,"OperationMode",KK_PRIMARY_EP,kk_zcl_onoff_set,ZCL_ON_OFF_CLUSTER_ID,ZCL_ON_OFF_ATTRIBUTE_ID},//开
{KK_TSL_DATA_TYPE_TEXT,"WorkMode",KK_PRIMARY_EP,kk_zcl_onoff_set,ZCL_WINDOW_COVERING_CLUSTER_ID,ZCL_MODE_ATTRIBUTE_ID}, {KK_TSL_DATA_TYPE_TEXT,"WorkMode",KK_PRIMARY_EP,kk_zcl_windowCovering_mode_set,ZCL_WINDOW_COVERING_CLUSTER_ID,ZCL_MODE_ATTRIBUTE_ID},
{KK_TSL_DATA_TYPE_TEXT,"Position",KK_PRIMARY_EP,kk_zcl_onoff_set,ZCL_WINDOW_COVERING_CLUSTER_ID,ZCL_CURRENT_LIFT_ATTRIBUTE_ID}, {KK_TSL_DATA_TYPE_TEXT,"Position",KK_PRIMARY_EP,kk_zcl_windowCovering_position_set,ZCL_WINDOW_COVERING_CLUSTER_ID,ZCL_CURRENT_LIFT_ATTRIBUTE_ID},
} }
}, },
}; };
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
#define __RPC_ONOFF_H #define __RPC_ONOFF_H
#include "RPC_API.h" #include "RPC_API.h"
EmberStatus WindowCover_GotoLiftPercentage(uint16_t node,uint8_t ep,uint8_t position);
EmberStatus zclOnOff_On(uint16_t node,uint8_t ep); EmberStatus zclOnOff_On(uint16_t node,uint8_t ep);
EmberStatus zclOnOff_Off(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_Toggle(uint16_t node,uint8_t ep);
......
...@@ -593,7 +593,7 @@ bool rpc_ReportAttributesCallback(EmberAfClusterId clusterId, ...@@ -593,7 +593,7 @@ bool rpc_ReportAttributesCallback(EmberAfClusterId clusterId,
emberAfAppPrintln(",EP=%d,cluster=0x%04X\n",ep,clusterId); emberAfAppPrintln(",EP=%d,cluster=0x%04X\n",ep,clusterId);
for (i = 0; i < bufLen - 4; ) { for (i = 0; i < bufLen - 3; ) {
dataType = bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_TYPE]; dataType = bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_TYPE];
if(emberAfIsStringAttributeType(dataType)){ if(emberAfIsStringAttributeType(dataType)){
dataLen = bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_VALUE ]; dataLen = bufferPtr[ATTRIBUTE_BUFFER_REPORT_DATA_VALUE ];
......
...@@ -3,6 +3,19 @@ ...@@ -3,6 +3,19 @@
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 zclOnOff_On(uint16_t node,uint8_t ep)
{ {
EmberStatus status; EmberStatus status;
......
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