Commit ea981073 authored by 尹佳钦's avatar 尹佳钦

20200902

parent ecde4c19
...@@ -81,7 +81,8 @@ INCLUDES= \ ...@@ -81,7 +81,8 @@ INCLUDES= \
-I./../../../platform/base/hal/micro/generic \ -I./../../../platform/base/hal/micro/generic \
-I./../../../platform/base/hal/micro/unix/host \ -I./../../../platform/base/hal/micro/unix/host \
-I../../../platform/base/hal/micro/unix/host/board \ -I../../../platform/base/hal/micro/unix/host/board \
-I./rpc_api/inc -I./rpc_api/inc \
-I./ZB
\ \
APP_BUILDER_OUTPUT_DIRECTORY=. APP_BUILDER_OUTPUT_DIRECTORY=.
...@@ -272,6 +273,10 @@ APPLICATION_FILES= \ ...@@ -272,6 +273,10 @@ APPLICATION_FILES= \
./jsonrpc/jsonrpc-c.c\ ./jsonrpc/jsonrpc-c.c\
./jsonrpc/rpccJSON.c\ ./jsonrpc/rpccJSON.c\
./yjq_ezsp.c\ ./yjq_ezsp.c\
./ZB/zb_device_id.c\
./ZB/kk_device_manager.c\
./ZB/kk_product_code.c\
./ZB/kk_device_control.c\
./kk_test.c\ ./kk_test.c\
./kk_sub_tsl.c\ ./kk_sub_tsl.c\
./kk_tsl_zigbee_map.c\ ./kk_tsl_zigbee_map.c\
......
#ifndef __KK_DEVICE_CONTROL_H
#define __KK_DEVICE_CONTROL_H
#endif
#include "kk_device_manager.h"
/****************** ******************************************************************
* File Name : kk_device_manager.c
* Author : yjq
* data : 2020/09/01
*************************************************************************************/
#define KK_GP_EP 242
static int kk_get_device_ep_number(EmberEUI64 mac,uint8_t *buffer,uint8_t maxLen,bool *over);
kk_device_table_s *kk_zb_device_table=NULL;
void kk_print_device_table(void)
{
int i,cnt = 0;
kk_device_table_s *ptr = kk_zb_device_table;
emberAfCorePrintln("\n-----------kk device table-----------\n");
while(ptr!=NULL){
emberAfAppPrint("\n%d:",++cnt);
emberAfAppPrint("\nMAC = " );
emberAfPrintBigEndianEui64(ptr->mac);
emberAfAppPrint("\nproductCode = %s",(ptr->productCode!=NULL)?ptr->productCode:"unknow");
emberAfAppPrint("\nEP Number = %d",ptr->epNumber);
for(i=0;i<ptr->epNumber;i++){
if(i==0) emberAfAppPrint("\nEP=" );
emberAfAppPrint("%d ",ptr->epValue[i]);
}
ptr = ptr->next;
}
}
static kk_device_table_s *kk_device_table_create()
{
emberAfCorePrintln("[KK device table] create!");
kk_device_table_s *node = (kk_device_table_s *)malloc(sizeof(kk_device_table_s));
if(node==NULL){
emberAfCorePrintln("[KK device table] malloc fail!!!%s",__LINE__);
return node;
}
MEMSET(node, 0, sizeof(kk_device_table_s));
return node;
}
static kk_device_table_s *kk_device_table_find_next_empty()
{
kk_device_table_s *ptr = kk_zb_device_table;
if(ptr==NULL) return ptr;
while(ptr!=NULL){
if(ptr->next==NULL) return ptr;
ptr = ptr->next;
}
}
static void kk_device_fill(kk_device_table_s *ptr,EmberEUI64 mac,uint8_t epNum,uint8_t* epVal,char *productCode)
{
emberAfPrintBigEndianEui64(mac);
memcpy(ptr->mac,mac,sizeof(EmberEUI64));
ptr->epNumber = epNum;
ptr->epValue = (uint8_t *)malloc(epNum);
memcpy(ptr->epValue,epVal,epNum);
ptr->productCode = productCode;
}
kk_device_table_s * kk_device_find_by_mac(EmberEUI64 mac)
{
kk_device_table_s *ptr = kk_zb_device_table;
while(ptr!=NULL){
if(MEMCOMPARE(ptr->mac,mac,sizeof(EmberEUI64))==0){
return ptr;
}
ptr = ptr->next;
}
return NULL;
}
bool kk_device_find_by_mac11111(EmberEUI64 mac)
{
kk_device_table_s *ptr = kk_zb_device_table;
while(ptr!=NULL){
if(MEMCOMPARE(ptr->mac,mac,sizeof(EmberEUI64))==0){
return true;
}
ptr = ptr->next;
}
return false;
}
void kk_device_table_add(EmberEUI64 mac,uint8_t epNum,uint8_t* epVal,char *productCode)
{
kk_device_table_s *ptr = kk_zb_device_table;
kk_device_table_s *newNode;
if(ptr==NULL){
kk_zb_device_table = kk_device_table_create();
ptr = kk_zb_device_table;
kk_device_fill(ptr,mac,epNum,epVal,productCode);
return;
}
ptr = kk_device_table_find_next_empty();
if(ptr!=NULL){
newNode = kk_device_table_create();
if(newNode!=NULL){
ptr->next = newNode;
kk_device_fill(newNode,mac,epNum,epVal,productCode);
}
}else{
emberAfCorePrintln("[KK device table] fatal!!!%s",__LINE__);
}
}
void kk_device_table_delete(EmberEUI64 mac)
{
kk_device_table_s *ptr = kk_zb_device_table;
kk_device_table_s *ptr_temp = kk_zb_device_table;
if(ptr==NULL){
emberAfCorePrintln("[KK device table] is empty!!!");
return ;
}
while(ptr!=NULL){
if(MEMCOMPARE(ptr->mac,mac,sizeof(EmberEUI64))==0){
if(ptr->next==NULL){
free(ptr->epValue);
free(ptr);
kk_zb_device_table = NULL;
emberAfCorePrintln("[KK device table]delete,now is empty !!!");
return ;
}else{
if(ptr==kk_zb_device_table){
kk_zb_device_table = ptr->next;
emberAfCorePrintln("[KK device table] delete list header");
free(ptr->epValue);
free(ptr);
return ;
}else{
ptr_temp->next = ptr->next;
free(ptr->epValue);
free(ptr);
emberAfCorePrintln("[KK device table] delete ");
return ;
}
}
}
ptr_temp = ptr;
ptr = ptr->next;
}
}
static void kk_device_table_load(void)
{
int i,flag;
uint8_t epNum = 0;
kk_device_table_s *p;
EmberAfPluginDeviceTableEntry*ptr = emberAfDeviceTablePointer();
uint8_t EP[KK_MAX_SUPPORT_ENDPOINT_NUMBER] = {0};
emberAfCorePrintln("\n-------------kk device table load.-------------\n");
for (i = 0; i < EMBER_AF_PLUGIN_DEVICE_TABLE_DEVICE_TABLE_SIZE; i++) {
if(ptr[i].state!=EMBER_AF_PLUGIN_DEVICE_TABLE_STATE_NULL &&
ptr[i].nodeId!=EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_NODE_ID){
p = kk_device_find_by_mac(ptr[i].eui64);//todo
if(p==NULL){
epNum = kk_get_device_ep_number(ptr[i].eui64,EP,KK_MAX_SUPPORT_ENDPOINT_NUMBER,NULL);
kk_device_table_add(ptr[i].eui64,epNum,EP,TEST_PRODUCT_CODE);
}
}
}
kk_print_device_table();
}
////////////////////////////////////////////////////
void emberAfPluginDeviceTableInitialized(void)
{
kk_device_table_load();
}
static int kk_match_device_id(uint16_t deviceId)
{
int i;
if(deviceId==0xffff) return -1;
for(i=0;zb_device_id[i].deviceId!=0xffff;i++){
if(zb_device_id[i].deviceId==deviceId){
#ifdef ZIGBEE_DEVICE_ID_STRING_ENABLE
emberAfDebugPrintln("[device]%s",zb_device_id[i].deviceIdString);
#endif
}
}
return -2;
}
static int kk_match_product_code(uint16_t deviceId,uint8_t num,uint8_t *ep)
{
}
static int kk_get_device_ep_number(EmberEUI64 mac,uint8_t *buffer,uint8_t maxLen,bool *over)
{
uint16_t i;
uint8_t num = 0;
EmberAfPluginDeviceTableEntry*ptr = emberAfDeviceTablePointer();
for (i = 0; i < EMBER_AF_PLUGIN_DEVICE_TABLE_DEVICE_TABLE_SIZE; i++) {
if(MEMCOMPARE(ptr[i].eui64,mac,sizeof(EmberEUI64))==0 &&
ptr[i].state != EMBER_AF_PLUGIN_DEVICE_TABLE_STATE_NULL &&
ptr[i].nodeId!=EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_NODE_ID){
if(ptr[i].endpoint!=KK_GP_EP){
buffer[num] = ptr[i].endpoint;
++num;
if(num>maxLen){
return;
}
}
}
}
return num;
}
void kk_dispatch_productCode(EmberEUI64 mac)
{
uint16_t deviceTableIndex = emberAfDeviceTableGetFirstIndexFromEui64(mac);
EmberAfPluginDeviceTableEntry*deviceTable = emberAfDeviceTablePointer();
uint16_t deviceId = 0xffff;
bool flag = 0;
uint8_t epNum = 0;
uint8_t EP[KK_MAX_SUPPORT_ENDPOINT_NUMBER] = {0};
if(deviceTableIndex!=EMBER_AF_PLUGIN_DEVICE_TABLE_NULL_INDEX){
deviceId = deviceTable[deviceTableIndex].deviceId;
}
if(kk_match_device_id(deviceId)==0){
epNum = kk_get_device_ep_number(mac,EP,KK_MAX_SUPPORT_ENDPOINT_NUMBER,&flag);
if(flag==true){
emberAfCorePrintln("[Warring]device ep num= %d,max=%d",epNum,KK_MAX_SUPPORT_ENDPOINT_NUMBER);
}
kk_device_table_add(mac,epNum,EP,TEST_PRODUCT_CODE);
}
}
#ifndef __KK_DEVICE_MANAGER_H
#define __KK_DEVICE_MANAGER_H
#include "kk_test.h"
#include "kk_sub_tsl.h"
#include "kk_tsl_zigbee_map.h"
#include "kk_product_code.h"
/****************** ******************************************************************
* File Name : kk_device_manager.h
* Author : yjq
* data : 2020/09/01
*************************************************************************************/
typedef struct kk_device_table_s{
EmberEUI64 mac;
uint8_t epNumber;
uint8_t *epValue;
char *productCode;
struct kk_device_table_s *next;
}kk_device_table_s;
#define KK_MAX_SUPPORT_ENDPOINT_NUMBER 32
void kk_print_device_table(void);
kk_device_table_s * kk_device_find_by_mac(EmberEUI64 mac);
void kk_device_table_add(EmberEUI64 mac,uint8_t epNum,uint8_t* epVal,char *productCode);
void kk_device_table_delete(EmberEUI64 mac);
#endif
#include "kk_product_code.h"
/****************** ******************************************************************
* File Name : kk_product_code.c
* Author : yjq
* data : 2020/09/01
*************************************************************************************/
#ifndef NULL
#define NULL (void *)0
#endif
#ifdef KK_PRODUCT_CODE_STRING_ENABLE
kk_product_code_s kk_product_code[]={
{_2EP_ZERO_FIRE_LIGHTING_MODULE_CODE,NULL,_2EP_ZERO_FIRE_LIGHTING_MODULE_NAME},
{DOOYA_CURTAIN_MOTOR_CODE,DOOYA_CURTAIN_MOTOR_MODEL_ID,DOOYA_CURTAIN_MOTOR_NAME},
{_1EP_ZERO_FIRE_PANEL_CODE,NULL,_1EP_ZERO_FIRE_PANEL_NAME},
{_2EP_ZERO_FIRE_PANEL_CODE,NULL,_2EP_ZERO_FIRE_PANEL_NAME},
{_3EP_ZERO_FIRE_PANEL_CODE,NULL,_3EP_ZERO_FIRE_PANE_NAME},
{ADJUSTABLE_LIGHT_KNOB_PANEL_CODE,NULL,ADJUSTABLE_LIGHT_KNOB_PANEL_NAME},
{CHOPIN_WALL_OUTLET_10A_CODE,CHOPIN_WALL_OUTLET_10A_CODE_NAME_MODEL_ID,CHOPIN_WALL_OUTLET_10A_CODE_NAME},
{CHOPIN_WALL_OUTLET_16A_CODE,CHOPIN_WALL_OUTLET_16A_CODE_NAME_MODEL_ID,CHOPIN_WALL_OUTLET_16A_CODE_NAME},
{_1EP_STARS_ZERO_FIRE_PANEL_CODE,_1EP_STARS_ZERO_FIRE_PANEL_MODEL_ID,_1EP_STARS_ZERO_FIRE_PANEL_NAME},
{_2EP_STARS_ZERO_FIRE_PANEL_CODE,_2EP_STARS_ZERO_FIRE_PANEL_MODEL_ID,_2EP_STARS_ZERO_FIRE_PANEL_NAME},
{_3EP_STARS_ZERO_FIRE_PANEL_CODE,_3EP_STARS_ZERO_FIRE_PANEL_MODEL_ID,_3EP_STARS_ZERO_FIRE_PANEL_NAME},
{_1EP_CHOPIN_ZERO_FIRE_PANEL_CODE,_1EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID,_1EP_CHOPIN_ZERO_FIRE_PANEL_NAME},
{_2EP_CHOPIN_ZERO_FIRE_PANEL_CODE,_2EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID,_2EP_CHOPIN_ZERO_FIRE_PANEL_NAME},
{_3EP_CHOPIN_ZERO_FIRE_PANEL_CODE,_3EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID,_3EP_CHOPIN_ZERO_FIRE_PANEL_NAME},
{_1EP_CHOPIN_CURTAIN_MOTOR_CODE,_1EP_CHOPIN_CURTAIN_MOTOR_MODEL_ID,_1EP_CHOPIN_CURTAIN_MOTOR_NAME},
{_2EP_CHOPIN_CURTAIN_MOTOR_CODE,_2EP_CHOPIN_CURTAIN_MOTOR_MODEL_ID,_2EP_CHOPIN_CURTAIN_MOTOR_NAME},
{_1EP_PLATINUM_SWITCH_CODE,_1EP_PLATINUM_SWITCH_MODEL_ID,_1EP_PLATINUM_SWITCH_NAME},
{_2EP_PLATINUM_SWITCH_CODE,_2EP_PLATINUM_SWITCH_MODEL_ID,_2EP_PLATINUM_SWITCH_NAME},
{_3EP_PLATINUM_SWITCH_CODE,_3EP_PLATINUM_SWITCH_MODEL_ID,_3EP_PLATINUM_SWITCH_NAME},
{PLATINUM_ACTUATOR_PANEL_CODE,NULL,PLATINUM_ACTUATOR_PANEL_NAME},
{RGB_LIGHT_CODE,RGB_LIGHT_NAME_MODEL_ID,RGB_LIGHT_NAME},
{NULL,NULL,NULL}
};
#else
kk_product_code_s kk_product_code[]={
{_2EP_ZERO_FIRE_LIGHTING_MODULE_CODE,NULL},
{DOOYA_CURTAIN_MOTOR_CODE,DOOYA_CURTAIN_MOTOR_MODEL_ID},
{_1EP_ZERO_FIRE_PANEL_CODE,NULL},
{_2EP_ZERO_FIRE_PANEL_CODE,NULL},
{_3EP_ZERO_FIRE_PANEL_CODE,NULL},
{ADJUSTABLE_LIGHT_KNOB_PANEL_CODE,NULL},
{CHOPIN_WALL_OUTLET_10A_CODE,CHOPIN_WALL_OUTLET_10A_CODE_NAME_MODEL_ID},
{CHOPIN_WALL_OUTLET_16A_CODE,CHOPIN_WALL_OUTLET_16A_CODE_NAME_MODEL_ID},
{_1EP_STARS_ZERO_FIRE_PANEL_CODE,_1EP_STARS_ZERO_FIRE_PANEL_MODEL_ID},
{_2EP_STARS_ZERO_FIRE_PANEL_CODE,_2EP_STARS_ZERO_FIRE_PANEL_MODEL_ID},
{_3EP_STARS_ZERO_FIRE_PANEL_CODE,_3EP_STARS_ZERO_FIRE_PANEL_MODEL_ID},
{_1EP_CHOPIN_ZERO_FIRE_PANEL_CODE,_1EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID},
{_2EP_CHOPIN_ZERO_FIRE_PANEL_CODE,_2EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID},
{_3EP_CHOPIN_ZERO_FIRE_PANEL_CODE,_3EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID},
{_1EP_CHOPIN_CURTAIN_MOTOR_CODE,_1EP_CHOPIN_CURTAIN_MOTOR_MODEL_ID},
{_2EP_CHOPIN_CURTAIN_MOTOR_CODE,_2EP_CHOPIN_CURTAIN_MOTOR_MODEL_ID},
{_1EP_PLATINUM_SWITCH_CODE,_1EP_PLATINUM_SWITCH_MODEL_ID},
{_2EP_PLATINUM_SWITCH_CODE,_2EP_PLATINUM_SWITCH_MODEL_ID},
{_3EP_PLATINUM_SWITCH_CODE,_3EP_PLATINUM_SWITCH_MODEL_ID},
{PLATINUM_ACTUATOR_PANEL_CODE,NULL},
{RGB_LIGHT_CODE,RGB_LIGHT_NAME_MODEL_ID},
{NULL,NULL}
};
#endif
\ No newline at end of file
#ifndef __KK_PRODUCT_CODE_H
#define __KK_PRODUCT_CODE_H
/****************** ******************************************************************
* File Name : kk_product_code.h
* Author : yjq
* data : 2020/09/01
*************************************************************************************/
#define KK_PRODUCT_CODE_STRING_ENABLE
typedef struct{
char *code;
char *modelId;
#ifdef KK_PRODUCT_CODE_STRING_ENABLE
char *name;
#endif
}kk_product_code_s;
#define _2EP_ZERO_FIRE_LIGHTING_MODULE_CODE "11"
#define DOOYA_CURTAIN_MOTOR_CODE "24"
#define _1EP_ZERO_FIRE_PANEL_CODE "83"
#define _2EP_ZERO_FIRE_PANEL_CODE "84"
#define _3EP_ZERO_FIRE_PANEL_CODE "85"
#define ADJUSTABLE_LIGHT_KNOB_PANEL_CODE "89"
#define CHOPIN_WALL_OUTLET_10A_CODE "90"
#define CHOPIN_WALL_OUTLET_16A_CODE "91"
#define _1EP_STARS_ZERO_FIRE_PANEL_CODE "96"
#define _2EP_STARS_ZERO_FIRE_PANEL_CODE "97"
#define _3EP_STARS_ZERO_FIRE_PANEL_CODE "98"
#define _1EP_CHOPIN_ZERO_FIRE_PANEL_CODE "102"
#define _2EP_CHOPIN_ZERO_FIRE_PANEL_CODE "103"
#define _3EP_CHOPIN_ZERO_FIRE_PANEL_CODE "104"
#define _1EP_CHOPIN_CURTAIN_MOTOR_CODE "105"
#define _2EP_CHOPIN_CURTAIN_MOTOR_CODE "106"
#define _1EP_PLATINUM_SWITCH_CODE "1002"
#define _2EP_PLATINUM_SWITCH_CODE "1003"
#define _3EP_PLATINUM_SWITCH_CODE "1004"
#define PLATINUM_ACTUATOR_PANEL_CODE "1007"
#define RGB_LIGHT_CODE "1022"
#define DOOYA_CURTAIN_MOTOR_MODEL_ID "02020000"
#define CHOPIN_WALL_OUTLET_10A_CODE_NAME_MODEL_ID "00518620"
#define CHOPIN_WALL_OUTLET_16A_CODE_NAME_MODEL_ID "00518626"
#define _1EP_STARS_ZERO_FIRE_PANEL_MODEL_ID "00068611"
#define _2EP_STARS_ZERO_FIRE_PANEL_MODEL_ID "00068612"
#define _3EP_STARS_ZERO_FIRE_PANEL_MODEL_ID "00068613"
#define _1EP_PLATINUM_SWITCH_MODEL_ID "00068601"
#define _2EP_PLATINUM_SWITCH_MODEL_ID "00068602"
#define _3EP_PLATINUM_SWITCH_MODEL_ID "00068603"
#define PLATINUM_ACTUATOR_PANEL_NAME_MODEL_ID "00038603"
#define RGB_LIGHT_NAME_MODEL_ID "01020001"
#define _1EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID "00068621"
#define _2EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID "00068622"
#define _3EP_CHOPIN_ZERO_FIRE_PANEL_MODEL_ID "00068623"
#define _1EP_CHOPIN_CURTAIN_MOTOR_MODEL_ID "00038621"
#define _2EP_CHOPIN_CURTAIN_MOTOR_MODEL_ID "00038622"
#ifdef KK_PRODUCT_CODE_STRING_ENABLE
#define _2EP_ZERO_FIRE_LIGHTING_MODULE_NAME "两路零火灯光模块"
#define DOOYA_CURTAIN_MOTOR_NAME "智能窗帘电机(杜亚)"
#define _1EP_ZERO_FIRE_PANEL_NAME "一路零火面板(肖邦系列)"
#define _2EP_ZERO_FIRE_PANEL_NAME "两路零火面板(肖邦系列)"
#define _3EP_ZERO_FIRE_PANE_NAME "三路零火面板(肖邦系列)"
#define ADJUSTABLE_LIGHT_KNOB_PANEL_NAME "可调光旋钮面板(肖邦系列)"
#define CHOPIN_WALL_OUTLET_10A_CODE_NAME "入墙插座10A(肖邦系列)"
#define CHOPIN_WALL_OUTLET_16A_CODE_NAME "入墙插座16A(肖邦系列)"
#define _1EP_STARS_ZERO_FIRE_PANEL_NAME "星辰一路零火面板"
#define _2EP_STARS_ZERO_FIRE_PANEL_NAME "星辰两路零火面板"
#define _3EP_STARS_ZERO_FIRE_PANEL_NAME "星辰三路零火面板"
#define _1EP_CHOPIN_ZERO_FIRE_PANEL_NAME "一路零火面板(肖邦系列)定制版"
#define _2EP_CHOPIN_ZERO_FIRE_PANEL_NAME "两路零火面板(肖邦系列)定制版"
#define _3EP_CHOPIN_ZERO_FIRE_PANEL_NAME "三路零火面板(肖邦系列)定制版"
#define _1EP_CHOPIN_CURTAIN_MOTOR_NAME "一路窗帘面板(肖邦系列)定制版"
#define _2EP_CHOPIN_CURTAIN_MOTOR_NAME "两路窗帘面板(肖邦系列)定制版"
#define _1EP_PLATINUM_SWITCH_NAME "铂金系列一路灯控"
#define _2EP_PLATINUM_SWITCH_NAME "铂金系列两路灯控"
#define _3EP_PLATINUM_SWITCH_NAME "铂金系列三路灯控"
#define PLATINUM_ACTUATOR_PANEL_NAME "铂金系列推窗面板"
#define RGB_LIGHT_NAME "RGBW灯带"
#endif
/*
Z3D_IASZONE = 0x04020000, // IAS Zone 设备ID,不表示具体设备
Z3D_IASWD = 0x04030000, // IAS WD 设备ID,不表示具体设备
// 高级别状态指示类设备,APP客户端中显示状态需要和设备实际状态保持高度一致!状态上报不允许丢失,所以需要尝试多次上报!
Z3D_SMARTPLUG = 0x00510000, // 智能插座插座
Z3D_IAS_CONTACT_SWITCH = 0x04020015, // 门磁: IAS Zone device id + device type
Z3D_IAS_FIRE_SENSOR = 0x04020028, // 烟雾传感器: IAS Zone device id + device type
Z3D_IAS_WATER_SENSOR = 0x0402002A, // 水浸传感器: IAS Zone device id + device type
Z3D_IAS_GAS_SENSOR = 0x0402002B, // 气体传感器: IAS Zone device id + device type
Z3D_IAS_WD = 0x04030225, // 标准报警器(声光报警等): IAS WD device id + device type[in IAS Zone]
Z3D_WINDOW_COVERING = 0x02020000, // 窗帘电机(杜亚)
// Serial - 铂金
Z3D_BJSP_S1G = 0x00068601, // 铂金开关面板1路
Z3D_BJSP_S2G = 0x00068602, // 铂金开关面板2路
Z3D_BJSP_S3G = 0x00068603, // 铂金开关面板3路
Z3D_BJPP_C20 = 0x00518610, // 铂金墙插面板10A
Z3D_BJPP_C26 = 0x00518616, // 铂金墙插面板16A
Z3D_BJCP_S1G = 0x00038601, // 铂金窗帘面板1路
Z3D_BJOWP_S1G = 0x00038603, // 铂金一路推窗器面板
Z3D_BJDLP_S1G = 0x01018601, // 铂金调光面板
Z3D_BJSCP_S3G = 0x00048601, // 铂金情景面板(3路)
Z3D_BJQKP_S3G = 0x00048602, // 铂金快捷面板(3路)
Z3D_BJSOS_PANEL = 0X0402802C, // 铂金SOS面板(零火线)
Z3D_BJSOS_BUTTON= 0X0402812C, // 铂金SOS按钮(电池)
// Serial - 星辰
Z3D_XCSP_S1G = 0x00068611, // 星辰开关面板1路
Z3D_XCSP_S2G = 0x00068612, // 星辰开关面板2路
Z3D_XCSP_S3G = 0x00068613, // 星辰开关面板3路
Z3D_XCCP_S1G = 0x00038611, // 星辰窗帘面板1路
Z3D_XCCP_S2G = 0x00038612, // 星辰窗帘面板2路
Z3D_XCSCP_S4G = 0x00048611, // 星辰情景面板(4路)
// Serial - 肖邦
Z3D_XBSP_S1G = 0x00068621, // 肖邦开关面板1路
Z3D_XBSP_S2G = 0x00068622, // 肖邦开关面板2路
Z3D_XBSP_S3G = 0x00068623, // 肖邦开关面板3路
Z3D_XBPP_D20 = 0x00518620, // 肖邦墙插面板10A
Z3D_XBPP_D26 = 0x00518626, // 肖邦墙插面板16A
Z3D_XBCP_S1G = 0x00038621, // 肖邦窗帘面板1路
Z3D_XBCP_S2G = 0x00038622, // 肖邦窗帘面板2路
Z3D_XBSCP_S4G = 0x00048621, // 肖邦情景面板(4路)
Z3D_LMCW_LOCK0 = 0x01018000, // 创维门锁不带指纹
Z3D_LMCW_LOCK1 = 0x01018001, // 创维门锁带指纹
// 低等级状态指示类设备,APP客户端中仅记录历史状态,状态上报允许存在丢失
Z3D_ENVI_SENSOR = 0x03020000, // 温度传感器: Temperature device id + model id,注意控客环境同时存在温度和湿度,为了兼容其他厂家仅有温度的传感,这里设备类型仅使用温度device_id+model_id来确定!
// 动作触发类设备,APP客户端中仅记录历史操作,动作触发上报为实时,且允许存在丢失
Z3D_SWITCH = 0x00510001, // 快捷按钮
Z3D_IAS_MOTION_SENSOR = 0x0402000D, // 移动传感器: IAS Zone device id + device type
Z3D_UNKNOW = 0xFFFFFFFF, // 未知类型
*/
extern kk_product_code_s kk_product_code[];
#endif
#include "zb_device_id.h"
/****************** ******************************************************************
* File Name : zb_device_id.c
* Author : yjq
* data : 2020/09/01
*************************************************************************************/
#ifdef ZIGBEE_DEVICE_ID_STRING_ENABLE
zb_device_id_s zb_device_id[]={
{DEVICE_ID_HA_ON_OFF_SWITCH,DEVICE_ID_HA_ON_OFF_SWITCH_STRING},
{DEVICE_ID_HA_LEVEL_SWITCH,DEVICE_ID_HA_LEVEL_SWITCH_STRING},
{DEVICE_ID_HA_ON_OFF_OUTPUT,DEVICE_ID_HA_ON_OFF_OUTPUT_STRING},
{DEVICE_ID_HA_LEVEL_OUTPUT,DEVICE_ID_HA_LEVEL_OUTPUT_STRING},
{DEVICE_ID_HA_SCENE_SELECTOR,DEVICE_ID_HA_SCENE_SELECTOR_STRING},
{DEVICE_ID_HA_CONFIGURATION_TOOL,DEVICE_ID_HA_CONFIGURATION_TOOL_STRING},
{DEVICE_ID_HA_REMOTE_CONTROL,DEVICE_ID_HA_REMOTE_CONTROL_STRING},
{DEVICE_ID_HA_COMBINED_INTERFACE,DEVICE_ID_HA_COMBINED_INTERFACE_STRING},
{DEVICE_ID_HA_RANGE_EXTENDER,DEVICE_ID_HA_RANGE_EXTENDER_STRING},
{DEVICE_ID_HA_MAINS_POWER_OUTLET,DEVICE_ID_HA_MAINS_POWER_OUTLET_STRING},
{DEVICE_ID_HA_DOOR_LOCK,DEVICE_ID_HA_DOOR_LOCK_STRING},
{DEVICE_ID_HA_DOOR_LOCK_CONTROLER,DEVICE_ID_HA_DOOR_LOCK_CONTROLER_STRING},
{DEVICE_ID_HA_SIMPLE_SENSOR,DEVICE_ID_HA_SIMPLE_SENSOR_STRING},
{DEVICE_ID_HA_CONSUMPTION_AWARE,DEVICE_ID_HA_CONSUMPTION_AWARE_STRING},
{DEVICE_ID_HA_HOME_GATEWAY,DEVICE_ID_HA_HOME_GATEWAY_STRING},
{DEVICE_ID_HA_SMART_PLUG,DEVICE_ID_HA_SMART_PLUG_STRING},
{DEVICE_ID_HA_WHITE_GOODS,DEVICE_ID_HA_WHITE_GOODS_STRING},
{DEVICE_ID_HA_METER_INTERFACE,DEVICE_ID_HA_METER_INTERFACE_STRING},
{DEVICE_ID_HA_ON_OFF_LIGHT,DEVICE_ID_HA_ON_OFF_LIGHT_STRING},
{DEVICE_ID_HA_DIMMABLE_LIGHT,DEVICE_ID_HA_DIMMABLE_LIGHT_STRING},
{DEVICE_ID_HA_COLOR_DIMMABLE_LIGHT,DEVICE_ID_HA_COLOR_DIMMABLE_LIGHT_STRING},
{DEVICE_ID_HA_ON_OFF_LIGHT_SWITCH,DEVICE_ID_HA_ON_OFF_LIGHT_SWITCH_STRING},
{DEVICE_ID_HA_DIMMER_SWITCH,DEVICE_ID_HA_DIMMER_SWITCH_STRING},
{DEVICE_ID_HA_COLOR_DIMMAER_SWITCH,DEVICE_ID_HA_COLOR_DIMMAER_SWITCH_STRING},
{DEVICE_ID_HA_LIGHT_SENSOR,DEVICE_ID_HA_LIGHT_SENSOR_STRING},
{DEVICE_ID_HA_OCCUPANCY_SENSOR,DEVICE_ID_HA_OCCUPANCY_SENSOR_STRING},
{DEVICE_ID_HA_SHADE,DEVICE_ID_HA_SHADE_STRING},
{DEVICE_ID_HA_SHADE_CONTROL,DEVICE_ID_HA_SHADE_CONTROL_STRING},
{DEVICE_ID_HA_WINDOW_COVERING_DEVICE,DEVICE_ID_HA_WINDOW_COVERING_DEVICE_STRING},
{DEVICE_ID_HA_WINDOW_COVERING_CONTROL,DEVICE_ID_HA_WINDOW_COVERING_CONTROL_STRING},
{DEVICE_ID_HA_HEATING_COOLING_UNIT,DEVICE_ID_HA_HEATING_COOLING_UNIT_STRING},
{DEVICE_ID_HA_THERMOSTAT,DEVICE_ID_HA_THERMOSTAT_STRING},
{DEVICE_ID_HA_TEMPERATURE_SENSOR,DEVICE_ID_HA_TEMPERATURE_SENSOR_STRING},
{DEVICE_ID_HA_PUMP,DEVICE_ID_HA_PUMP_STRING},
{DEVICE_ID_HA_PUMP_CONTROL,DEVICE_ID_HA_PUMP_CONTROL_STRING},
{DEVICE_ID_HA_PRESSURE_SENSOR,DEVICE_ID_HA_PRESSURE_SENSOR_STRING},
{DEVICE_ID_HA_FLOW_SENSOR,DEVICE_ID_HA_FLOW_SENSOR_STRING},
{DEVICE_ID_HA_MINI_SPLIT_AC,DEVICE_ID_HA_MINI_SPLIT_AC_STRING},
{DEVICE_ID_HA_IAS_CIE,DEVICE_ID_HA_IAS_CIE_STRING},
{DEVICE_ID_HA_IAS_ACE,DEVICE_ID_HA_IAS_ACE_STRING},
{DEVICE_ID_HA_IAS_ZONE,DEVICE_ID_HA_IAS_ZONE_STRING},
{DEVICE_ID_HA_IAS_WARNING_DEVICE,DEVICE_ID_HA_IAS_WARNING_DEVICE_STRING},
{0xffff,(void *)0}
};
#else
zb_device_id_s zb_device_id[]={
{DEVICE_ID_HA_ON_OFF_SWITCH},
{DEVICE_ID_HA_LEVEL_SWITCH},
{DEVICE_ID_HA_ON_OFF_OUTPUT},
{DEVICE_ID_HA_LEVEL_OUTPUT},
{DEVICE_ID_HA_SCENE_SELECTOR},
{DEVICE_ID_HA_CONFIGURATION_TOOL},
{DEVICE_ID_HA_REMOTE_CONTROL},
{DEVICE_ID_HA_COMBINED_INTERFACE},
{DEVICE_ID_HA_RANGE_EXTENDER},
{DEVICE_ID_HA_MAINS_POWER_OUTLET},
{DEVICE_ID_HA_DOOR_LOCK},
{DEVICE_ID_HA_DOOR_LOCK_CONTROLER},
{DEVICE_ID_HA_SIMPLE_SENSOR},
{DEVICE_ID_HA_CONSUMPTION_AWARE},
{DEVICE_ID_HA_HOME_GATEWAY},
{DEVICE_ID_HA_SMART_PLUG},
{DEVICE_ID_HA_WHITE_GOODS},
{DEVICE_ID_HA_METER_INTERFACE},
{DEVICE_ID_HA_ON_OFF_LIGHT},
{DEVICE_ID_HA_DIMMABLE_LIGHT},
{DEVICE_ID_HA_COLOR_DIMMABLE_LIGHT},
{DEVICE_ID_HA_ON_OFF_LIGHT_SWITCH},
{DEVICE_ID_HA_DIMMER_SWITCH},
{DEVICE_ID_HA_COLOR_DIMMAER_SWITCH},
{DEVICE_ID_HA_LIGHT_SENSOR},
{DEVICE_ID_HA_OCCUPANCY_SENSOR},
{DEVICE_ID_HA_SHADE},
{DEVICE_ID_HA_SHADE_CONTROL},
{DEVICE_ID_HA_WINDOW_COVERING_DEVICE},
{DEVICE_ID_HA_WINDOW_COVERING_CONTROL},
{DEVICE_ID_HA_HEATING_COOLING_UNIT},
{DEVICE_ID_HA_THERMOSTAT},
{DEVICE_ID_HA_TEMPERATURE_SENSOR},
{DEVICE_ID_HA_PUMP},
{DEVICE_ID_HA_PUMP_CONTROL},
{DEVICE_ID_HA_PRESSURE_SENSOR},
{DEVICE_ID_HA_FLOW_SENSOR},
{DEVICE_ID_HA_MINI_SPLIT_AC},
{DEVICE_ID_HA_IAS_CIE},
{DEVICE_ID_HA_IAS_ACE},
{DEVICE_ID_HA_IAS_ZONE},
{DEVICE_ID_HA_IAS_WARNING_DEVICE},
{0xffff}
}
#endif
#ifndef __ZB_DEVICE_ID_H
#define __ZB_DEVICE_ID_H
/****************** ******************************************************************
* File Name : zb_device_id.h
* Author : yjq
* data : 2020/09/01
*************************************************************************************/
#define ZIGBEE_DEVICE_ID_STRING_ENABLE
//Generic
#define DEVICE_ID_HA_ON_OFF_SWITCH 0x0000
#define DEVICE_ID_HA_LEVEL_SWITCH 0x0001
#define DEVICE_ID_HA_ON_OFF_OUTPUT 0x0002
#define DEVICE_ID_HA_LEVEL_OUTPUT 0x0003
#define DEVICE_ID_HA_SCENE_SELECTOR 0x0004
#define DEVICE_ID_HA_CONFIGURATION_TOOL 0x0005
#define DEVICE_ID_HA_REMOTE_CONTROL 0x0006
#define DEVICE_ID_HA_COMBINED_INTERFACE 0x0007
#define DEVICE_ID_HA_RANGE_EXTENDER 0x0008
#define DEVICE_ID_HA_MAINS_POWER_OUTLET 0x0009
#define DEVICE_ID_HA_DOOR_LOCK 0x000A
#define DEVICE_ID_HA_DOOR_LOCK_CONTROLER 0x000B
#define DEVICE_ID_HA_SIMPLE_SENSOR 0x000C
#define DEVICE_ID_HA_CONSUMPTION_AWARE 0x000D
#define DEVICE_ID_HA_HOME_GATEWAY 0x0050
#define DEVICE_ID_HA_SMART_PLUG 0x0051
#define DEVICE_ID_HA_WHITE_GOODS 0x0052
#define DEVICE_ID_HA_METER_INTERFACE 0x0053
//Lighting
#define DEVICE_ID_HA_ON_OFF_LIGHT 0x0100
#define DEVICE_ID_HA_DIMMABLE_LIGHT 0x0101
#define DEVICE_ID_HA_COLOR_DIMMABLE_LIGHT 0x0102
#define DEVICE_ID_HA_ON_OFF_LIGHT_SWITCH 0x0103
#define DEVICE_ID_HA_DIMMER_SWITCH 0x0104
#define DEVICE_ID_HA_COLOR_DIMMAER_SWITCH 0x0105
#define DEVICE_ID_HA_LIGHT_SENSOR 0x0106
#define DEVICE_ID_HA_OCCUPANCY_SENSOR 0x0107
//Closures
#define DEVICE_ID_HA_SHADE 0x0200
#define DEVICE_ID_HA_SHADE_CONTROL 0x0201
#define DEVICE_ID_HA_WINDOW_COVERING_DEVICE 0x0202
#define DEVICE_ID_HA_WINDOW_COVERING_CONTROL 0x0203
//HVAC
#define DEVICE_ID_HA_HEATING_COOLING_UNIT 0x0300
#define DEVICE_ID_HA_THERMOSTAT 0x0301
#define DEVICE_ID_HA_TEMPERATURE_SENSOR 0x0302
#define DEVICE_ID_HA_PUMP 0x0303
#define DEVICE_ID_HA_PUMP_CONTROL 0x0304
#define DEVICE_ID_HA_PRESSURE_SENSOR 0x0305
#define DEVICE_ID_HA_FLOW_SENSOR 0x0306
#define DEVICE_ID_HA_MINI_SPLIT_AC 0x0307
//IAS
#define DEVICE_ID_HA_IAS_CIE 0x0400
#define DEVICE_ID_HA_IAS_ACE 0x0401
#define DEVICE_ID_HA_IAS_ZONE 0x0402
#define DEVICE_ID_HA_IAS_WARNING_DEVICE 0x0403
/***********************device id string****************************************/
//{device id string define start
#ifdef ZIGBEE_DEVICE_ID_STRING_ENABLE
//Generic
#define DEVICE_ID_HA_ON_OFF_SWITCH_STRING "On/Off Switch"
#define DEVICE_ID_HA_LEVEL_SWITCH_STRING "Level Control Switch"
#define DEVICE_ID_HA_ON_OFF_OUTPUT_STRING "On/Off Output"
#define DEVICE_ID_HA_LEVEL_OUTPUT_STRING "Level Controllable Output"
#define DEVICE_ID_HA_SCENE_SELECTOR_STRING "Scene Selector"
#define DEVICE_ID_HA_CONFIGURATION_TOOL_STRING "Configuration Tool"
#define DEVICE_ID_HA_REMOTE_CONTROL_STRING "Remote Control"
#define DEVICE_ID_HA_COMBINED_INTERFACE_STRING "Combined Interface"
#define DEVICE_ID_HA_RANGE_EXTENDER_STRING "Range Extender"
#define DEVICE_ID_HA_MAINS_POWER_OUTLET_STRING "Mains Power Outlet"
#define DEVICE_ID_HA_DOOR_LOCK_STRING "Door Lock"
#define DEVICE_ID_HA_DOOR_LOCK_CONTROLER_STRING "Door Lock Controller"
#define DEVICE_ID_HA_SIMPLE_SENSOR_STRING "Simple Sensor"
#define DEVICE_ID_HA_CONSUMPTION_AWARE_STRING "Consumption Awareness Device"
#define DEVICE_ID_HA_HOME_GATEWAY_STRING "Home Gateway"
#define DEVICE_ID_HA_SMART_PLUG_STRING "Smart plug"
#define DEVICE_ID_HA_WHITE_GOODS_STRING "White Goods"
#define DEVICE_ID_HA_METER_INTERFACE_STRING "Meter Interface"
//Lighting
#define DEVICE_ID_HA_ON_OFF_LIGHT_STRING "On/Off Light"
#define DEVICE_ID_HA_DIMMABLE_LIGHT_STRING "Dimmable Light"
#define DEVICE_ID_HA_COLOR_DIMMABLE_LIGHT_STRING "Color Dimmable Light"
#define DEVICE_ID_HA_ON_OFF_LIGHT_SWITCH_STRING "On/Off Light Switch"
#define DEVICE_ID_HA_DIMMER_SWITCH_STRING "Dimmable Light"
#define DEVICE_ID_HA_COLOR_DIMMAER_SWITCH_STRING "Color Dimmable Light"
#define DEVICE_ID_HA_LIGHT_SENSOR_STRING "Light Sensor"
#define DEVICE_ID_HA_OCCUPANCY_SENSOR_STRING "Occupancy Sensor"
//Closures
#define DEVICE_ID_HA_SHADE_STRING "Shade"
#define DEVICE_ID_HA_SHADE_CONTROL_STRING "Shade Controller"
#define DEVICE_ID_HA_WINDOW_COVERING_DEVICE_STRING "Window Covering Device"
#define DEVICE_ID_HA_WINDOW_COVERING_CONTROL_STRING "Window Covering Controller"
//HVAC
#define DEVICE_ID_HA_HEATING_COOLING_UNIT_STRING "Heating/Cooling Unit"
#define DEVICE_ID_HA_THERMOSTAT_STRING "Thermostat"
#define DEVICE_ID_HA_TEMPERATURE_SENSOR_STRING "Temperature Sensor"
#define DEVICE_ID_HA_PUMP_STRING "Pump"
#define DEVICE_ID_HA_PUMP_CONTROL_STRING "Pump Control"
#define DEVICE_ID_HA_PRESSURE_SENSOR_STRING "Pressure Sensor"
#define DEVICE_ID_HA_FLOW_SENSOR_STRING "Flow Sensor"
#define DEVICE_ID_HA_MINI_SPLIT_AC_STRING "Mini Split AC"
//IAS
#define DEVICE_ID_HA_IAS_CIE_STRING "IAS Control and Indicating Equipment"
#define DEVICE_ID_HA_IAS_ACE_STRING "IAS Ancillary Control Equipment"
#define DEVICE_ID_HA_IAS_ZONE_STRING "IAS Zone"
#define DEVICE_ID_HA_IAS_WARNING_DEVICE_STRING "IAS Warning Device"
#endif
//}device id string define end
typedef struct{
unsigned short deviceId;
#ifdef ZIGBEE_DEVICE_ID_STRING_ENABLE
char *deviceIdString;
#endif
}zb_device_id_s;
extern zb_device_id_s zb_device_id[];
#endif
...@@ -799,15 +799,7 @@ void emberAfMainInitCallback(void) ...@@ -799,15 +799,7 @@ void emberAfMainInitCallback(void)
{ {
} }
/** @brief Main Tick
*
* Whenever main application tick is called, this callback will be called at the
* end of the main tick execution.
*
*/
void emberAfMainTickCallback(void)
{
}
/** @brief Scenes Cluster Make Invalid /** @brief Scenes Cluster Make Invalid
* *
...@@ -1290,14 +1282,7 @@ void emberAfPluginDeviceTableIndexRemovedCallback(uint16_t currentIndex) ...@@ -1290,14 +1282,7 @@ void emberAfPluginDeviceTableIndexRemovedCallback(uint16_t currentIndex)
{ {
} }
/*
*
* Called when the device table has been initialized.
*
*/
void emberAfPluginDeviceTableInitialized(void)
{
}
/** @brief Client Complete /** @brief Client Complete
* *
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "kk_tsl_zigbee_map.h" #include "kk_tsl_zigbee_map.h"
extern kk_tsl_zigbee_map_t g_tsl_zigbee_map []; extern kk_tsl_zigbee_map_t g_tsl_zigbee_map [];
extern int kk_get_map_Num(void);
static void kk_rpc_send_message(cJSON *data,char *msgtype,char *method,EmberEUI64 mac) static void kk_rpc_send_message(cJSON *data,char *msgtype,char *method,EmberEUI64 mac)
{ {
...@@ -90,7 +91,17 @@ int kk_sendData2CCU(char* data, int len){ ...@@ -90,7 +91,17 @@ int kk_sendData2CCU(char* data, int len){
} }
//void kk_dispatch_report_attribute(EmberEUI64 eui64, uint8_t EP, EmberAfClusterId clusterId, EmberAfAttributeId attributeId, uint8_t dataType, uint8_t len, uint8_t * data);
void kk_rpc_reportDevices(EmberEUI64 mac) void kk_rpc_reportDevices(EmberEUI64 mac)
{ {
...@@ -632,6 +643,17 @@ int kk_report_windowCovering_position_attribute(EmberEUI64 eui64,uint8_t EP,Embe ...@@ -632,6 +643,17 @@ int kk_report_windowCovering_position_attribute(EmberEUI64 eui64,uint8_t EP,Embe
return -3; return -3;
} }
void emberAfMainTickCallback(void)
{
static int last_time;
int time = halCommonGetInt32uMillisecondTick();
if((time-last_time)>=3000){
last_time = time;
//printf("loop 3 test!\n");
}
}
void kk_dispatch_report_attribute(EmberEUI64 eui64, void kk_dispatch_report_attribute(EmberEUI64 eui64,
uint8_t EP, uint8_t EP,
...@@ -644,9 +666,14 @@ void kk_dispatch_report_attribute(EmberEUI64 eui64, ...@@ -644,9 +666,14 @@ void kk_dispatch_report_attribute(EmberEUI64 eui64,
emberAfAppPrintln("kk_dispatch_report_attribute"); emberAfAppPrintln("kk_dispatch_report_attribute");
int i,j,result; int i,j,result;
int map_num,property_num;
kk_tsl_zigbee_map_t *device_item; kk_tsl_zigbee_map_t *device_item;
kk_zigbee_ctrl_map_t *report_item; kk_zigbee_ctrl_map_t *report_item;
for(i=0;i<PROPERTIES_MAX_NUM;i++){
map_num = kk_get_map_Num();
emberAfAppPrintln("map_num=%d",map_num);
for(i=0;i<map_num;i++){
emberAfAppPrintln("i=%d",i);
device_item = &g_tsl_zigbee_map[i]; device_item = &g_tsl_zigbee_map[i];
if(device_item != NULL){ if(device_item != NULL){
report_item = &device_item->zigbee_ctrl; report_item = &device_item->zigbee_ctrl;
...@@ -658,11 +685,12 @@ void kk_dispatch_report_attribute(EmberEUI64 eui64, ...@@ -658,11 +685,12 @@ void kk_dispatch_report_attribute(EmberEUI64 eui64,
emberAfAppPrintln("not find in map table-1"); emberAfAppPrintln("not find in map table-1");
return; return;
} }
property_num = (device_item->num>PROPERTIES_MAX_NUM)?PROPERTIES_MAX_NUM:device_item->num;
for(j=0;j<device_item->num;j++){ for(j=0;j<property_num;j++){
emberAfAppPrintln("i=%d,j=%d,num=%d",i,j,device_item->num);
if(report_item[j].clusterId == clusterId && if(report_item[j].clusterId == clusterId &&
report_item[j].attributeId == attributeId){ report_item[j].attributeId == attributeId){
emberAfAppPrintln("i=%d,j=%d",i,j);
if(report_item[j].zigbee_report!=NULL){ if(report_item[j].zigbee_report!=NULL){
result = report_item[j].zigbee_report(eui64,EP,clusterId,attributeId,dataType,len,data); result = report_item[j].zigbee_report(eui64,EP,clusterId,attributeId,dataType,len,data);
if(!result){ if(!result){
......
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
#include "network-creator-security.h" #include "network-creator-security.h"
#include "RPC_API.h" #include "RPC_API.h"
#include "com_api.h" #include "com_api.h"
#include "zb_device_id.h"
#include "kk_device_manager.h"
#define KK_REPORT_DEVICE_JOINED_TYPE "/thing/topo/add" #define KK_REPORT_DEVICE_JOINED_TYPE "/thing/topo/add"
#define KK_REPORT_DEVICE_LEFT_TYPE "/thing/topo/delete" #define KK_REPORT_DEVICE_LEFT_TYPE "/thing/topo/delete"
...@@ -92,4 +93,7 @@ enum { ...@@ -92,4 +93,7 @@ enum {
#endif #endif
...@@ -39,6 +39,10 @@ int kk_get_Identity_Num(int index) ...@@ -39,6 +39,10 @@ int kk_get_Identity_Num(int index)
{ {
return g_tsl_zigbee_map[index].num; return g_tsl_zigbee_map[index].num;
} }
int kk_get_map_Num(void)
{
return sizeof(g_tsl_zigbee_map) / sizeof(kk_tsl_zigbee_map_t);
}
...@@ -86,6 +86,10 @@ void kk_read_ncp_configuration_without_memory_allocation(void) ...@@ -86,6 +86,10 @@ void kk_read_ncp_configuration_without_memory_allocation(void)
} }
extern void kk_print_device_table(void);
extern void kk_device_table_add(EmberEUI64 mac,uint8_t epNum,uint8_t* epVal,char *productCode);
extern void kk_device_table_delete(EmberEUI64 mac);
extern bool kk_device_find_by_mac11111(EmberEUI64 mac);
void kk_message_process(char *messageString) void kk_message_process(char *messageString)
{ {
...@@ -97,8 +101,36 @@ void kk_message_process(char *messageString) ...@@ -97,8 +101,36 @@ void kk_message_process(char *messageString)
emberAfAppPrint("set txpower = 10\r\n" ); emberAfAppPrint("set txpower = 10\r\n" );
setTxPower(10); setTxPower(10);
} }
if(MEMCOMPARE(messageString,"AT+123\r\n",len)==0){
kk_print_device_table();
}
if(MEMCOMPARE(messageString,"AT+KKTEST1\r\n",len)==0){
uint8_t ep[2]={1,242};
static uint8_t aaa =0x00;
EmberEUI64 mac = {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77};
mac[0]=++aaa;
kk_device_table_add(mac,2,ep,"24");
}
if(MEMCOMPARE(messageString,"AT+456\r\n",len)==0){
uint8_t ep[2]={1,242};
static uint8_t aaa =0x01;
EmberEUI64 mac = {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77};
mac[0]=aaa++%5;
kk_device_table_delete(mac);
}
if(MEMCOMPARE(messageString,"AT+678\r\n",len)==0){
uint8_t ep[2]={1,242};
EmberEUI64 mac = {0x01,0x11,0x22,0x33,0x44,0x55,0x66,0x77};
if(kk_device_find_by_mac11111(mac)==true){
emberAfAppPrint(" Exist!!!\r\n" );
}else{
emberAfAppPrint(" not Exist!!!\r\n" );
}
}
if(MEMCOMPARE(messageString,"AT+GETINFO\r\n",len)==0){ if(MEMCOMPARE(messageString,"AT+GETINFO\r\n",len)==0){
emberAfAppPrint("\r\nMAC Address = " ); emberAfAppPrint("\r\nMAC Address = " );
EmberEUI64 eui64; EmberEUI64 eui64;
......
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