Commit d7b3a49f authored by limm's avatar limm

V1.1

parent 44bb2d63
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -380,6 +380,21 @@ ...@@ -380,6 +380,21 @@
<type>1</type> <type>1</type>
<locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/util/common/form-and-join.c</locationURI> <locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/util/common/form-and-join.c</locationURI>
</link> </link>
<link>
<name>green-power-client/green-power-client-cli.c</name>
<type>1</type>
<locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/framework/plugin/green-power-client/green-power-client-cli.c</locationURI>
</link>
<link>
<name>green-power-client/green-power-client.c</name>
<type>1</type>
<locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/framework/plugin/green-power-client/green-power-client.c</locationURI>
</link>
<link>
<name>green-power-common/green-power-common.c</name>
<type>1</type>
<locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/framework/plugin/green-power-common/green-power-common.c</locationURI>
</link>
<link> <link>
<name>groups-server/groups-server-cli.c</name> <name>groups-server/groups-server-cli.c</name>
<type>1</type> <type>1</type>
...@@ -425,11 +440,6 @@ ...@@ -425,11 +440,6 @@
<type>1</type> <type>1</type>
<locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/framework/plugin/network-steering/network-steering-v2.c</locationURI> <locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/framework/plugin/network-steering/network-steering-v2.c</locationURI>
</link> </link>
<link>
<name>network-steering/network-steering.c</name>
<type>1</type>
<locationURI>STUDIO_SDK_LOC/protocol/zigbee/app/framework/plugin/network-steering/network-steering.c</locationURI>
</link>
<link> <link>
<name>nvm3/nvm3_lock.c</name> <name>nvm3/nvm3_lock.c</name>
<type>1</type> <type>1</type>
......
...@@ -52,12 +52,17 @@ EmberStatus Write_Attr(bool Report,uint8_t ep,uint16_t cluster,uint16_t attr, ui ...@@ -52,12 +52,17 @@ EmberStatus Write_Attr(bool Report,uint8_t ep,uint16_t cluster,uint16_t attr, ui
#define Write_MinTemp_Attr(x,ep,data) Write_Attr(x,ep,ZCL_THERMOSTAT_CLUSTER_ID,ZCL_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID,(uint8_t*)data,ZCL_INT16S_ATTRIBUTE_TYPE) #define Write_MinTemp_Attr(x,ep,data) Write_Attr(x,ep,ZCL_THERMOSTAT_CLUSTER_ID,ZCL_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID,(uint8_t*)data,ZCL_INT16S_ATTRIBUTE_TYPE)
typedef struct
{
EmberEUI64 addr1,addr2;
uint8_t bind_flag1,bind_flag2;
}BIND_Info_Store;
typedef struct typedef struct
{ {
uint8_t Device_Type; uint8_t Device_Type;
uint8_t Device_subType; uint8_t Device_subType;
uint8_t Binding_Device_SrcEP; uint8_t is_support_winddirect;
uint8_t Binding_Device_SrcEP[2];
uint8_t mcu_software_version; uint8_t mcu_software_version;
uint8_t mcu_hardware_version; uint8_t mcu_hardware_version;
}DEVICVE_INFO_ST; }DEVICVE_INFO_ST;
...@@ -65,7 +70,8 @@ typedef struct ...@@ -65,7 +70,8 @@ typedef struct
extern DEVICVE_INFO_ST g_sDevice_Info; extern DEVICVE_INFO_ST g_sDevice_Info;
uint8_t Read_Zigbee_Version(void); uint8_t Read_Zigbee_Version(void);
kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd); kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd);
void kGetBindConfigInfo(void);
void Reset_Binding_Token(void);
/**********************common interface*******************************/ /**********************common interface*******************************/
uint8_t Get_Device_Endpoint(void); uint8_t Get_Device_Endpoint(void);
uint8_t Get_Binding_Device_EP(void); uint8_t Get_Binding_Device_EP(void);
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#define Z30_DEVICE_OTA_ENABLE true #define Z30_DEVICE_OTA_ENABLE true
//产测总开关, 是否有老化或单板和整机测试 //产测总开关, 是否有老化或单板和整机测试
#define Z30_DEVICE_FACTORY_TEST_ENABLE true #define Z30_DEVICE_FACTORY_TEST_ENABLE false
// 定义是否需要老化,目前一般路由设备需要 // 定义是否需要老化,目前一般路由设备需要
#define Z30_DEVICE_AGING_ENABLE false #define Z30_DEVICE_AGING_ENABLE false
//单板测试,目前一般是休眠设备需要 //单板测试,目前一般是休眠设备需要
......
...@@ -674,12 +674,13 @@ void kNwkFactoryReset(bool is_nwk_indicator) ...@@ -674,12 +674,13 @@ void kNwkFactoryReset(bool is_nwk_indicator)
kk_err_t kNwkClusterBindingObjIsOK(uint8_t endpoint, uint16_t cluster ) kk_err_t kNwkClusterBindingObjIsOK(uint8_t endpoint, uint16_t cluster )
{ {
EmberBindingTableEntry result; EmberBindingTableEntry result;
kNwkGetGateWayEui64(g_Eui64GatewayAddr);
for(int index = 0; index < emberAfGetBindingTableSize(); ++index ) { for(int index = 0; index < emberAfGetBindingTableSize(); ++index ) {
EmberStatus status = emberGetBinding(index, &result); EmberStatus status = emberGetBinding(index, &result);
if( status == EMBER_SUCCESS && result.type == EMBER_UNICAST_BINDING ) { if( status == EMBER_SUCCESS && result.type == EMBER_UNICAST_BINDING ) {
if( result.local == endpoint && result.clusterId == cluster ) { if( result.local == endpoint && result.clusterId == cluster && !MEMCOMPARE(result.identifier, g_Eui64GatewayAddr, EUI64_SIZE)) {
return KET_OK; return KET_OK;
} }
} }
...@@ -700,7 +701,6 @@ kk_err_t kNwkClusterBindingObjIsOK(uint8_t endpoint, uint16_t cluster ) ...@@ -700,7 +701,6 @@ kk_err_t kNwkClusterBindingObjIsOK(uint8_t endpoint, uint16_t cluster )
static kk_err_t kNwkClusterBindingObjSet(uint8_t endpoint, uint16_t cluster_id, EmberEUI64 eui64 ) static kk_err_t kNwkClusterBindingObjSet(uint8_t endpoint, uint16_t cluster_id, EmberEUI64 eui64 )
{ {
kk_err_t err = KET_OK; kk_err_t err = KET_OK;
EmberStatus status = emberAfPushEndpointNetworkIndex(1); EmberStatus status = emberAfPushEndpointNetworkIndex(1);
if( status == EMBER_SUCCESS ) { if( status == EMBER_SUCCESS ) {
...@@ -714,7 +714,7 @@ static kk_err_t kNwkClusterBindingObjSet(uint8_t endpoint, uint16_t cluster_id, ...@@ -714,7 +714,7 @@ static kk_err_t kNwkClusterBindingObjSet(uint8_t endpoint, uint16_t cluster_id,
if( EMBER_SUCCESS == status ) { if( EMBER_SUCCESS == status ) {
if( entry.type == EMBER_UNICAST_BINDING ) { if( entry.type == EMBER_UNICAST_BINDING ) {
if( entry.local == endpoint && entry.clusterId == cluster_id ) { if( entry.local == endpoint && entry.clusterId == cluster_id && !MEMCOMPARE(entry.identifier, eui64, EUI64_SIZE)) {
valid_index = index; valid_index = index;
break; break;
} }
...@@ -765,7 +765,7 @@ kk_err_t kNwkClusterBindingInspect(void ) ...@@ -765,7 +765,7 @@ kk_err_t kNwkClusterBindingInspect(void )
for(int ix = 0; ix < BINDING_CLUSTER_MAXN; ++ix ) { for(int ix = 0; ix < BINDING_CLUSTER_MAXN; ++ix ) {
if( g_lstBindingClusterConf[ix].cluster != CLUSTER_UNKNOW ) { if( g_lstBindingClusterConf[ix].cluster != CLUSTER_UNKNOW ) {
kk_err_t err = kNwkClusterBindingObjIsOK(g_lstBindingClusterConf[ix].endpoint, g_lstBindingClusterConf[ix].cluster); kk_err_t err = kNwkClusterBindingObjIsOK(g_lstBindingClusterConf[ix].endpoint, g_lstBindingClusterConf[ix].cluster);
if( err == KET_ERR_NON_EXIST ) { if( err != KET_OK ) {
kNwkClusterBindingObjSet(g_lstBindingClusterConf[ix].endpoint, g_lstBindingClusterConf[ix].cluster, g_Eui64GatewayAddr); kNwkClusterBindingObjSet(g_lstBindingClusterConf[ix].endpoint, g_lstBindingClusterConf[ix].cluster, g_Eui64GatewayAddr);
} }
}else { }else {
...@@ -1810,6 +1810,7 @@ void kUserJoinSucceedProcedureEventHandler(void ) ...@@ -1810,6 +1810,7 @@ void kUserJoinSucceedProcedureEventHandler(void )
default: break; default: break;
} }
} }
/** @brief Incoming Packet Filter /** @brief Incoming Packet Filter
* *
* ** REQUIRES INCLUDING THE PACKET-HANDOFF PLUGIN ** * ** REQUIRES INCLUDING THE PACKET-HANDOFF PLUGIN **
......
...@@ -907,6 +907,7 @@ void kOptTunnelWriteAttributeResponseToGateway(uint8_t recordedZclSeq, uint8_t a ...@@ -907,6 +907,7 @@ void kOptTunnelWriteAttributeResponseToGateway(uint8_t recordedZclSeq, uint8_t a
//} //}
emberAfSendResponse(); // sending... emberAfSendResponse(); // sending...
emberAfClearResponseData();
} }
/* DESP: Private protocol message(command) write attribute interface /* DESP: Private protocol message(command) write attribute interface
......
...@@ -45,6 +45,7 @@ void kSetOTAStatus(OTAStatusEnum status) ...@@ -45,6 +45,7 @@ void kSetOTAStatus(OTAStatusEnum status)
void kOTAMoudleInit(pOTACallback callback, uint8_t led_id) void kOTAMoudleInit(pOTACallback callback, uint8_t led_id)
{ {
g_pOTACallback = callback; g_pOTACallback = callback;
iKonkeAfSelfPrint("kOTAMoudleInit = 0x%4x\r\n", g_pOTACallback);
g_u8OtaLedId = led_id; g_u8OtaLedId = led_id;
} }
...@@ -52,7 +53,7 @@ static bool kOtaGetGpioStatus(GPIO_Port_TypeDef port, unsigned int pin) ...@@ -52,7 +53,7 @@ static bool kOtaGetGpioStatus(GPIO_Port_TypeDef port, unsigned int pin)
{ {
return GPIO_PinOutGet(port, pin); return GPIO_PinOutGet(port, pin);
} }
extern void kOTAMoudleUserCallback(OTAStatusEnum status);
void kOTAMoudleCallback(OTAStatusEnum status) void kOTAMoudleCallback(OTAStatusEnum status)
{ {
...@@ -72,9 +73,9 @@ void kOTAMoudleCallback(OTAStatusEnum status) ...@@ -72,9 +73,9 @@ void kOTAMoudleCallback(OTAStatusEnum status)
stOTAGpioStatus.gpio[1].port, stOTAGpioStatus.gpio[1].pin); stOTAGpioStatus.gpio[1].port, stOTAGpioStatus.gpio[1].pin);
#endif #endif
} }
iKonkeAfSelfPrint("lmmmm -----OTA GPIO KEEP status(%d),addr = 0x%4x\r\n", g_eOTAStatus,kOTAMoudleUserCallback);
if (g_pOTACallback){ if (kOTAMoudleUserCallback){
g_pOTACallback(status); kOTAMoudleUserCallback(status);
}else { }else {
if (g_u8OtaLedId != LED_UNKNOW_ID){ if (g_u8OtaLedId != LED_UNKNOW_ID){
kOTAMoudleOptCallback(status); kOTAMoudleOptCallback(status);
......
...@@ -27,7 +27,8 @@ ...@@ -27,7 +27,8 @@
#define CREATOR_IS_KONKE_GATEWAY (0x0007) #define CREATOR_IS_KONKE_GATEWAY (0x0007)
#define NVM3KEY_IS_KONKE_GATEWAY ( NVM3KEY_DOMAIN_USER | 0x0007 ) #define NVM3KEY_IS_KONKE_GATEWAY ( NVM3KEY_DOMAIN_USER | 0x0007 )
#define CREATOR_BINDIND_ADDR_TABLE (0x0008)
#define NVM3KEY_BINDIND_ADDR_TABLE ( NVM3KEY_DOMAIN_USER | 0x0008 )
//#define CREATOR_OPTTUNNEL_CMEI_FLG 0x0007 //#define CREATOR_OPTTUNNEL_CMEI_FLG 0x0007
//#define NVM3KEY_OPTTUNNEL_CMEI_FLG ( NVM3KEY_DOMAIN_USER | 0x0007 ) //#define NVM3KEY_OPTTUNNEL_CMEI_FLG ( NVM3KEY_DOMAIN_USER | 0x0007 )
...@@ -40,6 +41,13 @@ ...@@ -40,6 +41,13 @@
#endif #endif
#ifdef DEFINETYPES #ifdef DEFINETYPES
typedef struct{
EmberEUI64 addr1;
EmberEUI64 addr2;
uint8_t bind_flag1;
uint8_t bind_flag2;
}BIND_Info;
typedef BIND_Info tokTypeBindInfo;
//typedef uint8_t tokTypeChunk[33]; //typedef uint8_t tokTypeChunk[33];
#endif //DEFINETYPES #endif //DEFINETYPES
...@@ -51,7 +59,7 @@ DEFINE_BASIC_TOKEN(SINGLE_BOARD_TEST_FLG, uint8_t, 0) ...@@ -51,7 +59,7 @@ DEFINE_BASIC_TOKEN(SINGLE_BOARD_TEST_FLG, uint8_t, 0)
DEFINE_BASIC_TOKEN(FULL_DEVICE_TEST_FLG, uint8_t, 0) DEFINE_BASIC_TOKEN(FULL_DEVICE_TEST_FLG, uint8_t, 0)
DEFINE_BASIC_TOKEN(AGING_TEST_FLG , uint8_t, 0) DEFINE_BASIC_TOKEN(AGING_TEST_FLG , uint8_t, 0)
DEFINE_BASIC_TOKEN(INDICATOR_NOT_DISTURB_MODE_FLG, uint8_t, 0) DEFINE_BASIC_TOKEN(INDICATOR_NOT_DISTURB_MODE_FLG, uint8_t, 0)
DEFINE_BASIC_TOKEN(BINDIND_ADDR_TABLE, tokTypeBindInfo, {{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},0,0})
DEFINE_BASIC_TOKEN(NODE_ID, uint16_t, 0xFFFF) DEFINE_BASIC_TOKEN(NODE_ID, uint16_t, 0xFFFF)
DEFINE_BASIC_TOKEN(IS_KONKE_GATEWAY, uint8_t, 0) DEFINE_BASIC_TOKEN(IS_KONKE_GATEWAY, uint8_t, 0)
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
#define Contro_No_Disturb_Mode(x) CMD_Control_Emplement(CMD_NO_DISTURB_MODE,(uint8_t *)&x,1) #define Contro_No_Disturb_Mode(x) CMD_Control_Emplement(CMD_NO_DISTURB_MODE,(uint8_t *)&x,1)
#define Uart_Send(st,data) uart_send_data(st,0x30,0xff,data,true) #define Uart_Send(st,data) uart_send_data(st,0x30,0xff,data,false)
#define Uart_Resp(st,seq,data) uart_send_data(st,0x20,seq,data,false) #define Uart_Resp(st,seq,data) uart_send_data(st,0x20,seq,data,false)
...@@ -94,6 +94,8 @@ typedef struct ...@@ -94,6 +94,8 @@ typedef struct
uint16_t screen_save_time; //屏保时间 uint16_t screen_save_time; //屏保时间
int8_t correct_temperature; //温度校准值 int8_t correct_temperature; //温度校准值
uint8_t no_disturb_mode; //勿扰模式 uint8_t no_disturb_mode; //勿扰模式
uint8_t air_brand; //空调品牌
uint8_t air_type; //空调类型
}__attribute__((packed))AIR_ATTR_ST; }__attribute__((packed))AIR_ATTR_ST;
typedef struct typedef struct
{ {
...@@ -119,7 +121,7 @@ typedef struct ...@@ -119,7 +121,7 @@ typedef struct
uint8_t wind_speed; //风速 0 关 1 低 2 中 3 高,4 开,5,自动 ,6 智能 7,中低,8 中高 ,9 超高 uint8_t wind_speed; //风速 0 关 1 低 2 中 3 高,4 开,5,自动 ,6 智能 7,中低,8 中高 ,9 超高
uint8_t power_off_time; //倒计时时间 uint8_t power_off_time; //倒计时时间
uint16_t filter_wash_time; //滤网清洗时间 uint16_t filter_wash_time; //滤网清洗时间
uint8_t screen_save_time; //屏保时间 uint16_t screen_save_time; //屏保时间
int8_t correct_temperature; //温度校准值 int8_t correct_temperature; //温度校准值
uint8_t no_disturb_mode; //勿扰模式 uint8_t no_disturb_mode; //勿扰模式
}__attribute__((packed))FAN_ATTR_ST; }__attribute__((packed))FAN_ATTR_ST;
...@@ -163,8 +165,8 @@ typedef struct ...@@ -163,8 +165,8 @@ typedef struct
uint8_t uiPaload[50]; uint8_t uiPaload[50];
}DATA_FIELDED; }DATA_FIELDED;
void Query_MCU_Info(void); void Query_MCU_Info(void);
void Binging_Info_Notify(uint8_t device_type); void Binging_Info_Notify(uint8_t bind_or_unbind,uint8_t device_type);
void Set_No_Disturb_Mode(uint8_t mode); void Set_No_Disturb_Mode(uint8_t channel_id,uint8_t mode);
void Set_LCD_OFF(void); void Set_LCD_OFF(void);
void Set_OTA_CMD(uint8_t OTA_Status); void Set_OTA_CMD(uint8_t OTA_Status);
void Rewite_Attr_Witchout_Report(void); void Rewite_Attr_Witchout_Report(void);
......
...@@ -46,9 +46,17 @@ on ...@@ -46,9 +46,17 @@ on
off off
area name off area name off
appSerial=1 appSerial=1
compile,EMBER_AF_PLUGIN_NVM3
compile,EMBER_AF_PLUGIN_REPORTING
compile,EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY
compile,EMBER_AF_PLUGIN_ZIGBEE_PRO_LIBRARY
compile,ON_OFF_CLUSTER compile,ON_OFF_CLUSTER
compile,SCENES_CLUSTER compile,SCENES_CLUSTER
compile,ZDO compile,ZDO
enable,EMBER_AF_PLUGIN_NVM3
enable,EMBER_AF_PLUGIN_REPORTING
enable,EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY
enable,EMBER_AF_PLUGIN_ZIGBEE_PRO_LIBRARY
enable,ON_OFF_CLUSTER enable,ON_OFF_CLUSTER
enable,SCENES_CLUSTER enable,SCENES_CLUSTER
} }
...@@ -103,8 +111,8 @@ useHwConfigurator=true ...@@ -103,8 +111,8 @@ useHwConfigurator=true
--version:2 --version:2
} }
{setupId:token {setupId:token
application=PATH(ABSOLUTE):D:\Users\11730\SimplicityStudio\v4_workspace\KKAllToOneThermostatPanelMG21SDK665\00ikonke-app\ikk-tokens.h application=PATH(ISC_RELATIVE):00ikonke-app/ikk-tokens.h
manufacturing=PATH(ABSOLUTE):D:\Users\11730\SimplicityStudio\v4_workspace\KKAllToOneThermostatPanelMG21SDK665\00ikonke-app\ikk-mfgtokens.h manufacturing=PATH(ISC_RELATIVE):00ikonke-app/ikk-mfgtokens.h
} }
{setupId:zclAfv2 {setupId:zclAfv2
intMap:ManufacturingCode = 4712 intMap:ManufacturingCode = 4712
...@@ -157,7 +165,7 @@ beginAttrList:REPORTABLE ...@@ -157,7 +165,7 @@ beginAttrList:REPORTABLE
cl:0xFCC0, at:0x100C, di:server, mf:0x0000 cl:0xFCC0, at:0x100C, di:server, mf:0x0000
endAttrList:REPORTABLE endAttrList:REPORTABLE
beginAttributeDefaults beginAttributeDefaults
cl:0x0000, at:0x0001, di:server, mf:0x0000 => 0x10 cl:0x0000, at:0x0001, di:server, mf:0x0000 => 0x11
cl:0x0000, at:0x0003, di:server, mf:0x0000 => 0x10 cl:0x0000, at:0x0003, di:server, mf:0x0000 => 0x10
cl:0x0000, at:0x0004, di:server, mf:0x0000 => Konke cl:0x0000, at:0x0004, di:server, mf:0x0000 => Konke
cl:0x0000, at:0x0005, di:server, mf:0x0000 => 3AFE101003008611 cl:0x0000, at:0x0005, di:server, mf:0x0000 => 3AFE101003008611
...@@ -415,15 +423,23 @@ overrideServerCluster:0x0004,yes ...@@ -415,15 +423,23 @@ overrideServerCluster:0x0004,yes
overrideServerCluster:0x0005,yes overrideServerCluster:0x0005,yes
overrideServerCluster:0x0006,yes overrideServerCluster:0x0006,yes
overrideServerCluster:0x0201,yes overrideServerCluster:0x0201,yes
overrideServerCluster:0x0202,yes overrideServerCluster:0x0202,no
overrideMfgServerCluster:0xFCC0,0x0000,yes overrideMfgServerCluster:0xFCC0,0x0000,yes
endEndpointType endEndpointType
beginEndpointType:Fan beginEndpointType:Fan
device:zcustom device:zcustom
deviceId:-1 deviceId:-1
profileId:-1 profileId:-1
overrideClientCluster:0x0003,yes
overrideClientCluster:0x0019,yes
overrideServerCluster:0x0000,yes
overrideServerCluster:0x0003,yes
overrideServerCluster:0x0004,yes
overrideServerCluster:0x0005,yes
overrideServerCluster:0x0006,yes
overrideServerCluster:0x0202,yes overrideServerCluster:0x0202,yes
overrideServerCluster:0x0402,yes overrideServerCluster:0x0402,yes
overrideMfgServerCluster:0xFCC0,0x0000,yes
endEndpointType endEndpointType
beginEndpointType:GP beginEndpointType:GP
device:GP-proxy-basic device:GP-proxy-basic
...@@ -556,11 +572,14 @@ appPlugin:generic-interrupt-control,true ...@@ -556,11 +572,14 @@ appPlugin:generic-interrupt-control,true
appPlugin:generic-interrupt-control-stub,false appPlugin:generic-interrupt-control-stub,false
appPlugin:glib,false appPlugin:glib,false
appPlugin:gp-library,false appPlugin:gp-library,true
appPlugin:gpio-sensor,false appPlugin:gpio-sensor,false
appPlugin:gpio-sensor-stub,false appPlugin:gpio-sensor-stub,false
appPlugin:green-power-client,false appPlugin:green-power-client,true
appPlugin:green-power-common,false
appPlugin:green-power-common,true
appPlugin:green-power-server,false appPlugin:green-power-server,false
appPlugin:groups-client,false appPlugin:groups-client,false
appPlugin:groups-server,true appPlugin:groups-server,true
...@@ -784,8 +803,9 @@ AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A] ...@@ -784,8 +803,9 @@ AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NETWORK_STEERING_CHANNEL_MASK,0x02108000 AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NETWORK_STEERING_CHANNEL_MASK,0x02108000
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_FLASH_PAGES,8 AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_FLASH_PAGES,8
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY_MAX_ATTEMPTS,10 AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY_MAX_ATTEMPTS,10
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_CACHE_SIZE,300
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE,50
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION,0x10 AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION,0x10
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID,17061 AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID,17061
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE,254
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE,62
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_CACHE_SIZE,335
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION,0x11 AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION,0x11
...@@ -13,7 +13,11 @@ ...@@ -13,7 +13,11 @@
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl1; \ EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl1; \
EmberEventControl emberAfIdentifyClusterServerTickCallbackControl2; \ EmberEventControl emberAfIdentifyClusterServerTickCallbackControl2; \
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl2; \ EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl2; \
EmberEventControl emberAfIdentifyClusterServerTickCallbackControl3; \
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl3; \
extern EmberEventControl emberAfPluginFormAndJoinCleanupEventControl; \ extern EmberEventControl emberAfPluginFormAndJoinCleanupEventControl; \
extern EmberEventControl emberAfPluginGreenPowerClientChannelEventControl; \
extern EmberEventControl emberAfPluginGreenPowerClientExitCommissioningEventControl; \
extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \ extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \
extern EmberEventControl emberAfPluginOtaStorageSimpleEepromPageEraseEventControl; \ extern EmberEventControl emberAfPluginOtaStorageSimpleEepromPageEraseEventControl; \
extern EmberEventControl emberAfPluginReportingTickEventControl; \ extern EmberEventControl emberAfPluginReportingTickEventControl; \
...@@ -37,6 +41,8 @@ ...@@ -37,6 +41,8 @@
extern EmberEventControl kUserJoinSucceedProcedureEventControl; \ extern EmberEventControl kUserJoinSucceedProcedureEventControl; \
extern EmberEventControl kkSystemSetUpEventControl; \ extern EmberEventControl kkSystemSetUpEventControl; \
extern void emberAfPluginFormAndJoinCleanupEventHandler(void); \ extern void emberAfPluginFormAndJoinCleanupEventHandler(void); \
extern void emberAfPluginGreenPowerClientChannelEventHandler(void); \
extern void emberAfPluginGreenPowerClientExitCommissioningEventHandler(void); \
extern void emberAfPluginNetworkSteeringFinishSteeringEventHandler(void); \ extern void emberAfPluginNetworkSteeringFinishSteeringEventHandler(void); \
extern void emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler(void); \ extern void emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler(void); \
extern void emberAfPluginReportingTickEventHandler(void); \ extern void emberAfPluginReportingTickEventHandler(void); \
...@@ -70,6 +76,8 @@ ...@@ -70,6 +76,8 @@
void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallback, 1); } \ void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallback, 1); } \
void emberAfIdentifyClusterServerTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallback, 2); } \ void emberAfIdentifyClusterServerTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallback, 2); } \
void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallback, 2); } \ void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallback, 2); } \
void emberAfIdentifyClusterServerTickCallbackWrapperFunction3(void) { clusterTickWrapper(&emberAfIdentifyClusterServerTickCallbackControl3, emberAfIdentifyClusterServerTickCallback, 3); } \
void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction3(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl3, emberAfOtaBootloadClusterClientTickCallback, 3); } \
// EmberEventData structs used to populate the EmberEventData table // EmberEventData structs used to populate the EmberEventData table
...@@ -78,7 +86,11 @@ ...@@ -78,7 +86,11 @@
{ &emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1 }, \ { &emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1 }, \
{ &emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallbackWrapperFunction2 }, \ { &emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallbackWrapperFunction2 }, \
{ &emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2 }, \ { &emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2 }, \
{ &emberAfIdentifyClusterServerTickCallbackControl3, emberAfIdentifyClusterServerTickCallbackWrapperFunction3 }, \
{ &emberAfOtaBootloadClusterClientTickCallbackControl3, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction3 }, \
{ &emberAfPluginFormAndJoinCleanupEventControl, emberAfPluginFormAndJoinCleanupEventHandler }, \ { &emberAfPluginFormAndJoinCleanupEventControl, emberAfPluginFormAndJoinCleanupEventHandler }, \
{ &emberAfPluginGreenPowerClientChannelEventControl, emberAfPluginGreenPowerClientChannelEventHandler }, \
{ &emberAfPluginGreenPowerClientExitCommissioningEventControl, emberAfPluginGreenPowerClientExitCommissioningEventHandler }, \
{ &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \ { &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \
{ &emberAfPluginOtaStorageSimpleEepromPageEraseEventControl, emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler }, \ { &emberAfPluginOtaStorageSimpleEepromPageEraseEventControl, emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler }, \
{ &emberAfPluginReportingTickEventControl, emberAfPluginReportingTickEventHandler }, \ { &emberAfPluginReportingTickEventControl, emberAfPluginReportingTickEventHandler }, \
...@@ -108,7 +120,11 @@ ...@@ -108,7 +120,11 @@
"Over the Air Bootloading Cluster Client EP 1", \ "Over the Air Bootloading Cluster Client EP 1", \
"Identify Cluster Server EP 2", \ "Identify Cluster Server EP 2", \
"Over the Air Bootloading Cluster Client EP 2", \ "Over the Air Bootloading Cluster Client EP 2", \
"Identify Cluster Server EP 3", \
"Over the Air Bootloading Cluster Client EP 3", \
"Form and Join Library Plugin Cleanup", \ "Form and Join Library Plugin Cleanup", \
"Green Power Client Plugin Channel", \
"Green Power Client Plugin ExitCommissioning", \
"Network Steering Plugin FinishSteering", \ "Network Steering Plugin FinishSteering", \
"OTA Simple Storage EEPROM Driver Plugin PageErase", \ "OTA Simple Storage EEPROM Driver Plugin PageErase", \
"Reporting Plugin Tick", \ "Reporting Plugin Tick", \
...@@ -134,13 +150,15 @@ ...@@ -134,13 +150,15 @@
// The length of the event context table used to track and retrieve cluster events // The length of the event context table used to track and retrieve cluster events
#define EMBER_AF_EVENT_CONTEXT_LENGTH 4 #define EMBER_AF_EVENT_CONTEXT_LENGTH 6
// EmberAfEventContext structs used to populate the EmberAfEventContext table // EmberAfEventContext structs used to populate the EmberAfEventContext table
#define EMBER_AF_GENERATED_EVENT_CONTEXT { 0x1, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl1}, \ #define EMBER_AF_GENERATED_EVENT_CONTEXT { 0x1, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl1}, \
{ 0x1, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl1}, \ { 0x1, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl1}, \
{ 0x2, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl2}, \ { 0x2, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl2}, \
{ 0x2, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl2} { 0x2, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl2}, \
{ 0x3, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl3}, \
{ 0x3, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl3}
#endif // __AF_GEN_EVENT__ #endif // __AF_GEN_EVENT__
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl1; \ EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl1; \
EmberEventControl emberAfIdentifyClusterServerTickCallbackControl2; \ EmberEventControl emberAfIdentifyClusterServerTickCallbackControl2; \
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl2; \ EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl2; \
EmberEventControl emberAfIdentifyClusterServerTickCallbackControl3; \
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl3; \
extern EmberEventControl emberAfPluginFormAndJoinCleanupEventControl; \ extern EmberEventControl emberAfPluginFormAndJoinCleanupEventControl; \
extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \ extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \
extern EmberEventControl emberAfPluginOtaStorageSimpleEepromPageEraseEventControl; \ extern EmberEventControl emberAfPluginOtaStorageSimpleEepromPageEraseEventControl; \
...@@ -70,6 +72,8 @@ ...@@ -70,6 +72,8 @@
void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallback, 1); } \ void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallback, 1); } \
void emberAfIdentifyClusterServerTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallback, 2); } \ void emberAfIdentifyClusterServerTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallback, 2); } \
void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallback, 2); } \ void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallback, 2); } \
void emberAfIdentifyClusterServerTickCallbackWrapperFunction3(void) { clusterTickWrapper(&emberAfIdentifyClusterServerTickCallbackControl3, emberAfIdentifyClusterServerTickCallback, 3); } \
void emberAfOtaBootloadClusterClientTickCallbackWrapperFunction3(void) { clusterTickWrapper(&emberAfOtaBootloadClusterClientTickCallbackControl3, emberAfOtaBootloadClusterClientTickCallback, 3); } \
// EmberEventData structs used to populate the EmberEventData table // EmberEventData structs used to populate the EmberEventData table
...@@ -78,6 +82,8 @@ ...@@ -78,6 +82,8 @@
{ &emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1 }, \ { &emberAfOtaBootloadClusterClientTickCallbackControl1, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction1 }, \
{ &emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallbackWrapperFunction2 }, \ { &emberAfIdentifyClusterServerTickCallbackControl2, emberAfIdentifyClusterServerTickCallbackWrapperFunction2 }, \
{ &emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2 }, \ { &emberAfOtaBootloadClusterClientTickCallbackControl2, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction2 }, \
{ &emberAfIdentifyClusterServerTickCallbackControl3, emberAfIdentifyClusterServerTickCallbackWrapperFunction3 }, \
{ &emberAfOtaBootloadClusterClientTickCallbackControl3, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction3 }, \
{ &emberAfPluginFormAndJoinCleanupEventControl, emberAfPluginFormAndJoinCleanupEventHandler }, \ { &emberAfPluginFormAndJoinCleanupEventControl, emberAfPluginFormAndJoinCleanupEventHandler }, \
{ &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \ { &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \
{ &emberAfPluginOtaStorageSimpleEepromPageEraseEventControl, emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler }, \ { &emberAfPluginOtaStorageSimpleEepromPageEraseEventControl, emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler }, \
...@@ -108,6 +114,8 @@ ...@@ -108,6 +114,8 @@
"Over the Air Bootloading Cluster Client EP 1", \ "Over the Air Bootloading Cluster Client EP 1", \
"Identify Cluster Server EP 2", \ "Identify Cluster Server EP 2", \
"Over the Air Bootloading Cluster Client EP 2", \ "Over the Air Bootloading Cluster Client EP 2", \
"Identify Cluster Server EP 3", \
"Over the Air Bootloading Cluster Client EP 3", \
"Form and Join Library Plugin Cleanup", \ "Form and Join Library Plugin Cleanup", \
"Network Steering Plugin FinishSteering", \ "Network Steering Plugin FinishSteering", \
"OTA Simple Storage EEPROM Driver Plugin PageErase", \ "OTA Simple Storage EEPROM Driver Plugin PageErase", \
...@@ -119,28 +127,30 @@ ...@@ -119,28 +127,30 @@
"Ikk uart msg dispatch event control", \ "Ikk uart msg dispatch event control", \
"Ikk uart recv loop check event control", \ "Ikk uart recv loop check event control", \
"Ikk uart sent loop check event control", \ "Ikk uart sent loop check event control", \
"Event data", \ "K delay clear flag event control", \
"K delay clear sequence event control", \ "K delay clear sequence event control", \
"K delay set led status event control", \ "K delay set led status event control", \
"K factory test event control", \ "K factory test event control", \
"K nwk rejoin procedure event control", \ "K nwk rejoin procedure event control", \
"K endpoint1 delay report attr event control", \ "K on off delay report attr event control", \
"K opt tunnel mto r r delay rsp event control", \ "K opt tunnel mto r r delay rsp event control", \
"K endpoint2 delay report attr event control", \ "K system mode delay report attr event control", \
"K endpoint3 delay report attr event control", \ "K target temper delay report attr event control", \
"K tick event control", \ "K tick event control", \
"K user join succeed procedure event control", \ "K user join succeed procedure event control", \
"Kk system set up event control", \ "Kk system set up event control", \
// The length of the event context table used to track and retrieve cluster events // The length of the event context table used to track and retrieve cluster events
#define EMBER_AF_EVENT_CONTEXT_LENGTH 4 #define EMBER_AF_EVENT_CONTEXT_LENGTH 6
// EmberAfEventContext structs used to populate the EmberAfEventContext table // EmberAfEventContext structs used to populate the EmberAfEventContext table
#define EMBER_AF_GENERATED_EVENT_CONTEXT { 0x1, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl1}, \ #define EMBER_AF_GENERATED_EVENT_CONTEXT { 0x1, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl1}, \
{ 0x1, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl1}, \ { 0x1, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl1}, \
{ 0x2, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl2}, \ { 0x2, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl2}, \
{ 0x2, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl2} { 0x2, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl2}, \
{ 0x3, 0x3, false, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfIdentifyClusterServerTickCallbackControl3}, \
{ 0x3, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl3}
#endif // __AF_GEN_EVENT__ #endif // __AF_GEN_EVENT__
...@@ -25,6 +25,9 @@ EmberAfStatus emberAfScenesClusterServerCommandParse(EmberAfClusterCommand *cmd) ...@@ -25,6 +25,9 @@ EmberAfStatus emberAfScenesClusterServerCommandParse(EmberAfClusterCommand *cmd)
// Cluster: On/off, server // Cluster: On/off, server
EmberAfStatus emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand *cmd); EmberAfStatus emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand *cmd);
// Cluster: Green Power, client
EmberAfStatus emberAfGreenPowerClusterClientCommandParse(EmberAfClusterCommand *cmd);
// Cluster: Thermostat, server // Cluster: Thermostat, server
EmberAfStatus emberAfThermostatClusterServerCommandParse(EmberAfClusterCommand *cmd); EmberAfStatus emberAfThermostatClusterServerCommandParse(EmberAfClusterCommand *cmd);
......
...@@ -90,14 +90,14 @@ def GBL(): ...@@ -90,14 +90,14 @@ def GBL():
def OTA(): def OTA():
if not '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x10 --manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"': if not '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x12 --manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"':
sys.exit(0) sys.exit(0)
print (" ") print (" ")
print ("This creates a ZigBee OTA file if the OTA Client Policy Plugin has been enabled.") print ("This creates a ZigBee OTA file if the OTA Client Policy Plugin has been enabled.")
print ("It uses the parameters defined there. ") print ("It uses the parameters defined there. ")
print (" ") print (" ")
# wine needed by postbuild script under studio for mac/linux # wine needed by postbuild script under studio for mac/linux
IMAGE_BUILDER = '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x10 --manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'.replace("\t", "\\t") IMAGE_BUILDER = '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x12 --manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'.replace("\t", "\\t")
WINE_CMD = WINE.replace("cmd /C ","") if not "echo" in IMAGE_BUILDER else WINE WINE_CMD = WINE.replace("cmd /C ","") if not "echo" in IMAGE_BUILDER else WINE
OTA_COMMAND = WINE_CMD + IMAGE_BUILDER OTA_COMMAND = WINE_CMD + IMAGE_BUILDER
OTA_COMMAND = OTA_COMMAND.replace("%PROJECT_DIR%", PROJECT_DIR) OTA_COMMAND = OTA_COMMAND.replace("%PROJECT_DIR%", PROJECT_DIR)
......
...@@ -222,7 +222,7 @@ ...@@ -222,7 +222,7 @@
<state>APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"</state> <state>APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"</state>
<state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"</state> <state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"</state>
<state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"</state> <state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"</state>
<state>NVM3_FLASH_PAGES=8</state><state>NVM3_DEFAULT_CACHE_SIZE=300</state><state>NVM3_MAX_OBJECT_SIZE=254</state><state>NVM3_DEFAULT_REPACK_HEADROOM=0</state><state>PHY_RAIL=1</state> <state>NVM3_FLASH_PAGES=8</state><state>NVM3_DEFAULT_CACHE_SIZE=335</state><state>NVM3_MAX_OBJECT_SIZE=254</state><state>NVM3_DEFAULT_REPACK_HEADROOM=0</state><state>PHY_RAIL=1</state>
</option> </option>
<option> <option>
<name>CCPreprocFile</name> <name>CCPreprocFile</name>
...@@ -610,7 +610,7 @@ ...@@ -610,7 +610,7 @@
<state>APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"</state> <state>APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"</state>
<state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"</state> <state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"</state>
<state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"</state> <state>MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"</state>
<state>NVM3_FLASH_PAGES=8</state><state>NVM3_DEFAULT_CACHE_SIZE=300</state><state>NVM3_MAX_OBJECT_SIZE=254</state><state>NVM3_DEFAULT_REPACK_HEADROOM=0</state><state>PHY_RAIL=1</state> <state>NVM3_FLASH_PAGES=8</state><state>NVM3_DEFAULT_CACHE_SIZE=335</state><state>NVM3_MAX_OBJECT_SIZE=254</state><state>NVM3_DEFAULT_REPACK_HEADROOM=0</state><state>PHY_RAIL=1</state>
</option> </option>
<option> <option>
<name>AList</name> <name>AList</name>
...@@ -1256,7 +1256,7 @@ ...@@ -1256,7 +1256,7 @@
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\debug-basic-stub-library-cortexm3-iar-efr32mg21-rail\debug-basic-stub-library.a</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\debug-basic-stub-library-cortexm3-iar-efr32mg21-rail\debug-basic-stub-library.a</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\debug-extended-stub-library-cortexm3-iar-efr32mg21-rail\debug-extended-stub-library.a</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\debug-extended-stub-library-cortexm3-iar-efr32mg21-rail\debug-extended-stub-library.a</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\end-device-bind-stub-library-cortexm3-iar-efr32mg21-rail\end-device-bind-stub-library.a</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\end-device-bind-stub-library-cortexm3-iar-efr32mg21-rail\end-device-bind-stub-library.a</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\gp-stub-library-cortexm3-iar-efr32mg21-rail\gp-stub-library.a</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\gp-library-cortexm3-iar-efr32mg21-rail\gp-library.a</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\hal-library-cortexm3-iar-efr32mg21-rail\hal-library.a</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\hal-library-cortexm3-iar-efr32mg21-rail\hal-library.a</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\install-code-library-cortexm3-iar-efr32mg21-rail\install-code-library.a</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\install-code-library-cortexm3-iar-efr32mg21-rail\install-code-library.a</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\mfglib-library-cortexm3-iar-efr32mg21-rail\mfglib-library.a</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\build\mfglib-library-cortexm3-iar-efr32mg21-rail\mfglib-library.a</name></file>
...@@ -1304,6 +1304,9 @@ ...@@ -1304,6 +1304,9 @@
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\util\common\form-and-join.c</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\util\common\form-and-join.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\util\common\form-and-join-node-adapter.c</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\util\common\form-and-join-node-adapter.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/util\plugin\plugin-common\generic-interrupt-control\generic-interrupt-control-efr32.c</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/util\plugin\plugin-common\generic-interrupt-control\generic-interrupt-control-efr32.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\framework\plugin\green-power-client\green-power-client.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\framework\plugin\green-power-client\green-power-client-cli.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\framework\plugin\green-power-common\green-power-common.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\framework\plugin\groups-server\groups-server.c</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\framework\plugin\groups-server\groups-server.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\framework\plugin\groups-server\groups-server-cli.c</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol\zigbee\app\framework\plugin\groups-server\groups-server-cli.c</name></file>
<file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/platform\base\hal\micro\cortexm3\efm32\hal-config.c</name></file> <file><name>$PROJ_DIR$/../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/platform\base\hal\micro\cortexm3\efm32\hal-config.c</name></file>
......
...@@ -68,20 +68,20 @@ ...@@ -68,20 +68,20 @@
#define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL #define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL
/**** Cluster endpoint counts ****/ /**** Cluster endpoint counts ****/
#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (2) #define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (3)
#define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_OTA_BOOTLOAD_CLUSTER_CLIENT_ENDPOINT_COUNT (2) #define EMBER_AF_OTA_BOOTLOAD_CLUSTER_CLIENT_ENDPOINT_COUNT (3)
#define EMBER_AF_GREEN_POWER_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GREEN_POWER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT (2)
#define EMBER_AF_FAN_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (3) #define EMBER_AF_FAN_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (2)
#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_OPT_TUNNEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_OPT_TUNNEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_OPT_TUNNEL_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_OPT_TUNNEL_CLUSTER_SERVER_ENDPOINT_COUNT (3)
/**** Cluster Endpoint Summaries ****/ /**** Cluster Endpoint Summaries ****/
#define EMBER_AF_MAX_SERVER_CLUSTER_COUNT (9) #define EMBER_AF_MAX_SERVER_CLUSTER_COUNT (9)
...@@ -150,6 +150,12 @@ ...@@ -150,6 +150,12 @@
#define EMBER_CALLBACK_GROUPS_CLUSTER_ADD_GROUP_IF_IDENTIFYING #define EMBER_CALLBACK_GROUPS_CLUSTER_ADD_GROUP_IF_IDENTIFYING
#define EMBER_CALLBACK_GROUPS_CLUSTER_ENDPOINT_IN_GROUP #define EMBER_CALLBACK_GROUPS_CLUSTER_ENDPOINT_IN_GROUP
#define EMBER_CALLBACK_GROUPS_CLUSTER_CLEAR_GROUP_TABLE #define EMBER_CALLBACK_GROUPS_CLUSTER_CLEAR_GROUP_TABLE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_NOTIFICATION_RESPONSE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_PAIRING
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_PROXY_COMMISSIONING_MODE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_RESPONSE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_SINK_TABLE_RESPONSE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_PROXY_TABLE_REQUEST
#define EMBER_CALLBACK_CONFIGURE_REPORTING_COMMAND #define EMBER_CALLBACK_CONFIGURE_REPORTING_COMMAND
#define EMBER_CALLBACK_READ_REPORTING_CONFIGURATION_COMMAND #define EMBER_CALLBACK_READ_REPORTING_CONFIGURATION_COMMAND
#define EMBER_CALLBACK_CLEAR_REPORT_TABLE #define EMBER_CALLBACK_CLEAR_REPORT_TABLE
...@@ -271,6 +277,25 @@ ...@@ -271,6 +277,25 @@
// Use this macro to check if Generic GPIO Interrupt Controller plugin is included // Use this macro to check if Generic GPIO Interrupt Controller plugin is included
#define EMBER_AF_PLUGIN_GENERIC_INTERRUPT_CONTROL #define EMBER_AF_PLUGIN_GENERIC_INTERRUPT_CONTROL
// Use this macro to check if Green Power Library plugin is included
#define EMBER_AF_PLUGIN_GP_LIBRARY
// User options for plugin Green Power Library
#define EMBER_GP_PROXY_TABLE_SIZE 5
#define EMBER_GP_SINK_TABLE_SIZE 0
// Use this macro to check if Green Power Client plugin is included
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT
#define EZSP_APPLICATION_HAS_GPEP_INCOMING_MESSAGE_HANDLER
#define EZSP_APPLICATION_HAS_DGP_SENT_HANDLER
// User options for plugin Green Power Client
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_GPP_COMMISSIONING_WINDOW 160
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_GPP_DUPLICATE_TIMEOUT_SEC 160
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_MAX_ADDR_ENTRIES 3
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_MAX_SEQ_NUM_ENTRIES_PER_ADDR 4
// Use this macro to check if Green Power Common plugin is included
#define EMBER_AF_PLUGIN_GREEN_POWER_COMMON
// Use this macro to check if Groups Server Cluster plugin is included // Use this macro to check if Groups Server Cluster plugin is included
#define EMBER_AF_PLUGIN_GROUPS_SERVER #define EMBER_AF_PLUGIN_GROUPS_SERVER
...@@ -308,7 +333,7 @@ ...@@ -308,7 +333,7 @@
#define EMBER_AF_PLUGIN_NVM3 #define EMBER_AF_PLUGIN_NVM3
// User options for plugin NVM3 Library // User options for plugin NVM3 Library
#define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8 #define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8
#define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE 300 #define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE 335
#define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254 #define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254
#define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0 #define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0
...@@ -386,7 +411,7 @@ ...@@ -386,7 +411,7 @@
// Use this macro to check if Reporting plugin is included // Use this macro to check if Reporting plugin is included
#define EMBER_AF_PLUGIN_REPORTING #define EMBER_AF_PLUGIN_REPORTING
// User options for plugin Reporting // User options for plugin Reporting
#define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE 50 #define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE 62
#define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS #define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS
// Use this macro to check if Scan Dispatch plugin is included // Use this macro to check if Scan Dispatch plugin is included
......
...@@ -68,20 +68,20 @@ ...@@ -68,20 +68,20 @@
#define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL #define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL
/**** Cluster endpoint counts ****/ /**** Cluster endpoint counts ****/
#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (2) #define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (3)
#define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (3)
#define EMBER_AF_OTA_BOOTLOAD_CLUSTER_CLIENT_ENDPOINT_COUNT (2) #define EMBER_AF_OTA_BOOTLOAD_CLUSTER_CLIENT_ENDPOINT_COUNT (3)
#define EMBER_AF_GREEN_POWER_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GREEN_POWER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT (2)
#define EMBER_AF_FAN_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (3) #define EMBER_AF_FAN_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (2)
#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_OPT_TUNNEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_OPT_TUNNEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_OPT_TUNNEL_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_OPT_TUNNEL_CLUSTER_SERVER_ENDPOINT_COUNT (3)
/**** Cluster Endpoint Summaries ****/ /**** Cluster Endpoint Summaries ****/
#define EMBER_AF_MAX_SERVER_CLUSTER_COUNT (9) #define EMBER_AF_MAX_SERVER_CLUSTER_COUNT (9)
...@@ -150,6 +150,12 @@ ...@@ -150,6 +150,12 @@
#define EMBER_CALLBACK_GROUPS_CLUSTER_ADD_GROUP_IF_IDENTIFYING #define EMBER_CALLBACK_GROUPS_CLUSTER_ADD_GROUP_IF_IDENTIFYING
#define EMBER_CALLBACK_GROUPS_CLUSTER_ENDPOINT_IN_GROUP #define EMBER_CALLBACK_GROUPS_CLUSTER_ENDPOINT_IN_GROUP
#define EMBER_CALLBACK_GROUPS_CLUSTER_CLEAR_GROUP_TABLE #define EMBER_CALLBACK_GROUPS_CLUSTER_CLEAR_GROUP_TABLE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_NOTIFICATION_RESPONSE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_PAIRING
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_PROXY_COMMISSIONING_MODE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_RESPONSE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_SINK_TABLE_RESPONSE
#define EMBER_CALLBACK_GREEN_POWER_CLUSTER_GP_PROXY_TABLE_REQUEST
#define EMBER_CALLBACK_CONFIGURE_REPORTING_COMMAND #define EMBER_CALLBACK_CONFIGURE_REPORTING_COMMAND
#define EMBER_CALLBACK_READ_REPORTING_CONFIGURATION_COMMAND #define EMBER_CALLBACK_READ_REPORTING_CONFIGURATION_COMMAND
#define EMBER_CALLBACK_CLEAR_REPORT_TABLE #define EMBER_CALLBACK_CLEAR_REPORT_TABLE
...@@ -271,6 +277,25 @@ ...@@ -271,6 +277,25 @@
// Use this macro to check if Generic GPIO Interrupt Controller plugin is included // Use this macro to check if Generic GPIO Interrupt Controller plugin is included
#define EMBER_AF_PLUGIN_GENERIC_INTERRUPT_CONTROL #define EMBER_AF_PLUGIN_GENERIC_INTERRUPT_CONTROL
// Use this macro to check if Green Power Library plugin is included
#define EMBER_AF_PLUGIN_GP_LIBRARY
// User options for plugin Green Power Library
#define EMBER_GP_PROXY_TABLE_SIZE 5
#define EMBER_GP_SINK_TABLE_SIZE 0
// Use this macro to check if Green Power Client plugin is included
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT
#define EZSP_APPLICATION_HAS_GPEP_INCOMING_MESSAGE_HANDLER
#define EZSP_APPLICATION_HAS_DGP_SENT_HANDLER
// User options for plugin Green Power Client
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_GPP_COMMISSIONING_WINDOW 160
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_GPP_DUPLICATE_TIMEOUT_SEC 160
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_MAX_ADDR_ENTRIES 3
#define EMBER_AF_PLUGIN_GREEN_POWER_CLIENT_MAX_SEQ_NUM_ENTRIES_PER_ADDR 4
// Use this macro to check if Green Power Common plugin is included
#define EMBER_AF_PLUGIN_GREEN_POWER_COMMON
// Use this macro to check if Groups Server Cluster plugin is included // Use this macro to check if Groups Server Cluster plugin is included
#define EMBER_AF_PLUGIN_GROUPS_SERVER #define EMBER_AF_PLUGIN_GROUPS_SERVER
...@@ -308,7 +333,7 @@ ...@@ -308,7 +333,7 @@
#define EMBER_AF_PLUGIN_NVM3 #define EMBER_AF_PLUGIN_NVM3
// User options for plugin NVM3 Library // User options for plugin NVM3 Library
#define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8 #define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8
#define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE 300 #define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE 335
#define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254 #define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254
#define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0 #define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0
...@@ -344,7 +369,7 @@ ...@@ -344,7 +369,7 @@
#define CUSTOMER_APPLICATION_VERSION EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION #define CUSTOMER_APPLICATION_VERSION EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
// User options for plugin OTA Bootload Cluster Client Policy // User options for plugin OTA Bootload Cluster Client Policy
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID 17061 #define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID 17061
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION 16 #define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION 18
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION 16 #define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION 16
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_EBL_VERIFICATION #define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_EBL_VERIFICATION
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_DELETE_FAILED_DOWNLOADS #define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_DELETE_FAILED_DOWNLOADS
...@@ -386,7 +411,7 @@ ...@@ -386,7 +411,7 @@
// Use this macro to check if Reporting plugin is included // Use this macro to check if Reporting plugin is included
#define EMBER_AF_PLUGIN_REPORTING #define EMBER_AF_PLUGIN_REPORTING
// User options for plugin Reporting // User options for plugin Reporting
#define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE 50 #define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE 62
#define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS #define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS
// Use this macro to check if Scan Dispatch plugin is included // Use this macro to check if Scan Dispatch plugin is included
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
// Creator for attribute: on/off, endpoint: 2 // Creator for attribute: on/off, endpoint: 2
#define CREATOR_ON_OFF_2 0xB001 #define CREATOR_ON_OFF_2 0xB001
#define NVM3KEY_ON_OFF_2 ( NVM3KEY_DOMAIN_ZIGBEE | 0xB001 ) #define NVM3KEY_ON_OFF_2 ( NVM3KEY_DOMAIN_ZIGBEE | 0xB001 )
// Creator for attribute: on/off, endpoint: 3
#define CREATOR_ON_OFF_3 0xB002
#define NVM3KEY_ON_OFF_3 ( NVM3KEY_DOMAIN_ZIGBEE | 0xB002 )
// Types for the tokens // Types for the tokens
...@@ -24,6 +27,7 @@ typedef uint8_t tokType_on_off; ...@@ -24,6 +27,7 @@ typedef uint8_t tokType_on_off;
#ifdef DEFINETOKENS #ifdef DEFINETOKENS
DEFINE_BASIC_TOKEN(ON_OFF_1, tokType_on_off, 0x00) DEFINE_BASIC_TOKEN(ON_OFF_1, tokType_on_off, 0x00)
DEFINE_BASIC_TOKEN(ON_OFF_2, tokType_on_off, 0x00) DEFINE_BASIC_TOKEN(ON_OFF_2, tokType_on_off, 0x00)
DEFINE_BASIC_TOKEN(ON_OFF_3, tokType_on_off, 0x00)
#endif // DEFINETOKENS #endif // DEFINETOKENS
...@@ -42,6 +46,11 @@ DEFINE_BASIC_TOKEN(ON_OFF_2, tokType_on_off, 0x00) ...@@ -42,6 +46,11 @@ DEFINE_BASIC_TOKEN(ON_OFF_2, tokType_on_off, 0x00)
halCommonGetToken((tokType_on_off *)ptr, TOKEN_ON_OFF_2); \ halCommonGetToken((tokType_on_off *)ptr, TOKEN_ON_OFF_2); \
emberAfWriteServerAttribute(2, ZCL_ON_OFF_CLUSTER_ID, ZCL_ON_OFF_ATTRIBUTE_ID, (uint8_t*)ptr, ZCL_BOOLEAN_ATTRIBUTE_TYPE); \ emberAfWriteServerAttribute(2, ZCL_ON_OFF_CLUSTER_ID, ZCL_ON_OFF_ATTRIBUTE_ID, (uint8_t*)ptr, ZCL_BOOLEAN_ATTRIBUTE_TYPE); \
} \ } \
epNetwork = emberAfNetworkIndexFromEndpoint(3); \
if((endpoint) == 3 || ((endpoint) == EMBER_BROADCAST_ENDPOINT && epNetwork == curNetwork)) { \
halCommonGetToken((tokType_on_off *)ptr, TOKEN_ON_OFF_3); \
emberAfWriteServerAttribute(3, ZCL_ON_OFF_CLUSTER_ID, ZCL_ON_OFF_ATTRIBUTE_ID, (uint8_t*)ptr, ZCL_BOOLEAN_ATTRIBUTE_TYPE); \
} \
} while(false) } while(false)
...@@ -60,6 +69,11 @@ DEFINE_BASIC_TOKEN(ON_OFF_2, tokType_on_off, 0x00) ...@@ -60,6 +69,11 @@ DEFINE_BASIC_TOKEN(ON_OFF_2, tokType_on_off, 0x00)
if ( metadata->attributeId == 0x0000 && 0x0000 == emberAfGetMfgCode(metadata) &&!emberAfAttributeIsClient(metadata) ) \ if ( metadata->attributeId == 0x0000 && 0x0000 == emberAfGetMfgCode(metadata) &&!emberAfAttributeIsClient(metadata) ) \
halCommonSetToken(TOKEN_ON_OFF_2, data); \ halCommonSetToken(TOKEN_ON_OFF_2, data); \
} \ } \
} else if ( endpoint == 3) { \
if ( clusterId == 0x06 ) { \
if ( metadata->attributeId == 0x0000 && 0x0000 == emberAfGetMfgCode(metadata) &&!emberAfAttributeIsClient(metadata) ) \
halCommonSetToken(TOKEN_ON_OFF_3, data); \
} \
} \ } \
} while(false) } while(false)
......
...@@ -1063,7 +1063,9 @@ void emAfStackStatusHandler(EmberStatus status) ...@@ -1063,7 +1063,9 @@ void emAfStackStatusHandler(EmberStatus status)
emberAfRegistrationAbortCallback(); emberAfRegistrationAbortCallback();
emberAfRegistrationStartCallback(); emberAfRegistrationStartCallback();
} else { } else {
halInternalDisableWatchDog(MICRO_DISABLE_WATCH_DOG_KEY); //lmm add for long reporttablesize cause watchdog reset
emberStartWritingStackTokens(); emberStartWritingStackTokens();
halInternalWatchDogEnabled();
} }
// This kicks off registration for newly joined devices. If registration // This kicks off registration for newly joined devices. If registration
......
...@@ -46,9 +46,12 @@ bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,u ...@@ -46,9 +46,12 @@ bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,u
return emberAfPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length); // Global return emberAfPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length); // Global
} }
// RetrieveAttributeAndCraftResponse function declarations.
bool emAfPluginGreenPowerClientRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength); // Plugin: green-power-client
bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength) bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength)
{ {
return 0; // false return emAfPluginGreenPowerClientRetrieveAttributeAndCraftResponse(endpoint, clusterId, attrId, mask, maunfacturerCode, readLength); // Plugin: green-power-client
} }
// ZigbeeKeyEstablishment function declarations. // ZigbeeKeyEstablishment function declarations.
......
...@@ -999,6 +999,78 @@ ...@@ -999,6 +999,78 @@
/** @} */ // end group plugin-eeprom /** @} */ // end group plugin-eeprom
/** @addtogroup plugin-green-power-client Plugin Commands: Green Power Client
* @ingroup cli
* The Green Power Client plugin contributes CLI commands to the application
* framework to be used for getting, setting, and displaying information
* relevant to the Green Power Client cluster.
*
* @{
*/
/** @brief <b>plugin green-power-client add-group-sink [sourceID:4] [sinkGroup:2] </b>
* - <i>Add a groupcast sink for a given GPD</i>
* - sourceID - INT32U - GPD Source ID
* - sinkGroup - INT16U - Sink group
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_ADD_GROUP_SINK
/** @brief <b>plugin green-power-client add-sink [sourceID:4] [sinkIeee:8] </b>
* - <i>Add a sink for a given GPD</i>
* - sourceID - INT32U - GPD Source ID
* - sinkIeee - IEEE_ADDRESS - Sink's IEEE address
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_ADD_SINK
/** @brief <b>plugin green-power-client clear-proxy-table </b>
* - <i>clear the proxy table</i>
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_CLEAR_PROXY_TABLE
/** @brief <b>plugin green-power-client duplicate-filter-test [endpoint:1] [sourceId:4] [sequenceNumber:1] </b>
* - <i>This is used to instrument the current device receiving a message in order to test the duplicate message filtering functionality.</i>
* - endpoint - INT8U
* - sourceId - INT32U - source Id of the fake incoming message
* - sequenceNumber - INT8U
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_DUPLICATE_FILTER_TEST
/** @brief <b>plugin green-power-client print-proxy-table </b>
* - <i>Print the proxy table</i>
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_PRINT_PROXY_TABLE
/** @brief <b>plugin green-power-client rm-gpd [sourceID:4] </b>
* - <i>Remove a given GPD from the proxy table</i>
* - sourceID - INT32U - GPD Source ID
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_RM_GPD
/** @brief <b>plugin green-power-client rm-sink [sourceID:4] [sinkIeee:8] </b>
* - <i>remove a sink for a given GPD. If that's the last sink, remove the proxy table entry</i>
* - sourceID - INT32U - GPD Source ID
* - sinkIeee - IEEE_ADDRESS - Sink's IEEE address
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_RM_SINK
/** @brief <b>plugin green-power-client set-key [index:1] [key:16] </b>
* - <i>This is used to set the key for a proxy table entry</i>
* - index - INT8U
* - key - SECURITY_KEY - source Id of the fake incoming message
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_SET_KEY
/** @brief <b>plugin green-power-client set-proxy-entry [index:1] [sourceID:4] [sinkNodeId:2] [options:4] </b>
* - <i>Set a proxy table entry</i>
* - index - INT8U - index to proxy table
* - sourceID - INT32U - GPD Source ID
* - sinkNodeId - INT16U - Sink's node address
* - options - INT32U
*/
#define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_GREEN_POWER_CLIENT_PLUGIN_GREEN_POWER_CLIENT_SET_PROXY_ENTRY
/** @} */ // end group plugin-green-power-client
/** @addtogroup plugin-groups-server Plugin Commands: Groups Server /** @addtogroup plugin-groups-server Plugin Commands: Groups Server
* @ingroup cli * @ingroup cli
* The groups server plugin contributes a CLI command to the application * The groups server plugin contributes a CLI command to the application
...@@ -1581,6 +1653,17 @@ ...@@ -1581,6 +1653,17 @@
/** @} */ // end group plugin-eeprom /** @} */ // end group plugin-eeprom
/** @addtogroup plugin-green-power-client Plugin Commands: Green Power Client
* @ingroup cli
* The Green Power Client plugin contributes CLI commands to the application
* framework to be used for getting, setting, and displaying information
* relevant to the Green Power Client cluster.
*
* @{
*/
/** @} */ // end group plugin-green-power-client
/** @addtogroup plugin-groups-server Plugin Commands: Groups Server /** @addtogroup plugin-groups-server Plugin Commands: Groups Server
* @ingroup cli * @ingroup cli
* The groups server plugin contributes a CLI command to the application * The groups server plugin contributes a CLI command to the application
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
// Token header for the Reporting plugin. // Token header for the Reporting plugin.
// Custom MFG token header file // Custom MFG token header file
#include "../../KKAllToOneThermostatPanelMG21SDK665/00ikonke-app/ikk-mfgtokens.h" #include "00ikonke-app/ikk-mfgtokens.h"
#ifdef CUSTOM_TOKEN_HEADER #ifdef CUSTOM_TOKEN_HEADER
#include CUSTOM_TOKEN_HEADER #include CUSTOM_TOKEN_HEADER
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include "../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol/zigbee/app/framework/plugin/reporting/reporting-tokens.h" #include "../../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol/zigbee/app/framework/plugin/reporting/reporting-tokens.h"
// Custom token header file // Custom token header file
#include "../../KKAllToOneThermostatPanelMG21SDK665/00ikonke-app/ikk-tokens.h" #include "00ikonke-app/ikk-tokens.h"
#ifdef CUSTOM_TOKEN_HEADER #ifdef CUSTOM_TOKEN_HEADER
#include CUSTOM_TOKEN_HEADER #include CUSTOM_TOKEN_HEADER
......
...@@ -135,11 +135,6 @@ ...@@ -135,11 +135,6 @@
<Key>ARMDBGFLAGS</Key> <Key>ARMDBGFLAGS</Key>
<Name></Name> <Name></Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key></Key>
<Name></Name>
</SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint> <Breakpoint>
<Bp> <Bp>
...@@ -535,7 +530,7 @@ ...@@ -535,7 +530,7 @@
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>17</FileNumber> <FileNumber>17</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\User\src\BL55072A.c</PathWithFileName> <PathWithFileName>.\User\src\BL55072A.c</PathWithFileName>
......
[Version] [Version]
Nu_LinkVersion=V5.14 Nu_LinkVersion=V5.14
[Process] [Process]
ProcessID=0x00004528 ProcessID=0x00001054
ProcessCreationTime_L=0xe7daa86f ProcessCreationTime_L=0xc8cc9aaa
ProcessCreationTime_H=0x01d6c6e0 ProcessCreationTime_H=0x01d6dcdf
NuLinkID=0x18101887 NuLinkID=0x18101887
NuLinkID0=0x18101887 NuLinkID0=0x18101887
NuLinkIDs_Count=0x00000001 NuLinkIDs_Count=0x00000001
......
#ifndef __DEBUG_H__
#define __DEBUG_H__
#endif
#ifndef __BL55072A_H__
#define __BL55072A_H__
#include <stdlib.h>
#include <stdint.h>
#include "control_comm.h"
typedef enum{
BL55072A_SET_END =0x7F,
BL55072A_CMD_MODESET_ON =0xC8,
BL55072A_CMD_MODESET_OFF =0xC0,
BL55072A_CMD_ADSET =0x00,
BL55072A_CMD_DISCTL_DEF =0xB6,
BL55072A_CMD_DISCTL_PSM1 =0xA4,
BL55072A_CMD_ICSET =0xE8,
BL55072A_CMD_ICSET_RST =0xEA,
BL55072A_CMD_BLKCTL_OFF =0x80,
BL55072A_CMD_BLKCTL_HZ5 =0x81,
BL55072A_CMD_BLKCTL_1HZ =0x82,
BL55072A_CMD_BLKCTL_2HZ =0x83,
BL55072A_CMD_BLKCTL_HZ3 =0x84,
BL55072A_CMD_BLKCTL_HZ2 =0x85,
BL55072A_CMD_APCTL_ON =0xFE,
BL55072A_CMD_APCTL_OFF =0xFF,
}blCommands;
typedef enum{
BL55072A_SEG0 = 0x00,
BL55072A_SEG1,
BL55072A_SEG2,
BL55072A_SEG3,
BL55072A_SEG4,
BL55072A_SEG5,
BL55072A_SEG6,
BL55072A_SEG7,
BL55072A_SEG8,
BL55072A_SEG9,
BL55072A_SEG10,
BL55072A_SEG11,
BL55072A_SEG12,
BL55072A_SEG13,
BL55072A_SEG14,
BL55072A_SEG15,
BL55072A_SEG16,
BL55072A_SEG17,
BL55072A_SEG18,
BL55072A_SEG19,
BL55072A_SEG20,
BL55072A_SEG21,
BL55072A_SEG22,
BL55072A_SEG23,
BL55072A_SEG24,
BL55072A_SEG25,
BL55072A_SEG26,
BL55072A_SEG27,
BL55072A_SEG28,
BL55072A_SEG29,
BL55072A_SEG30,
BL55072A_SEG31,
BL55072A_SEG32,
BL55072A_SEG33,
BL55072A_SEG34,
BL55072A_SEG35,
BL55072A_SEG36,
}blSeg;
#define DisplayChar0 0x5F
#define DisplayChar1 0x06
#define DisplayChar2 0x3D
#define DisplayChar3 0x2F
#define DisplayChar4 0x66
#define DisplayChar5 0x6B
#define DisplayChar6 0x7B
#define DisplayChar7 0x0E
#define DisplayChar8 0x7F
#define DisplayChar9 0x6F
#define DisplayCharA 0x7E
#define DisplayCharB 0x73 // ???
#define DisplayCharE 0x79 // E
#define DisplayCharF 0x78 // F
#define DisplayCharr 0x58 // r
#define DisplayCharL 0x51
#define DisplayCharo 0x33
#define OFF 0
#define ON 1
#define FLASHING 2
#define DFLASHING 3
#define LCDDisplayInvalidParameter 0XFFFF
#define SysLCDShowTimer 10
typedef struct Lcd_Display_Status
{
u8 LCD_place; // 需要点亮部分位置,LCDDisplayInvalidParameter/0XFF为无效值
u8 LCD_code_data; // 参数--当前只有温度部分需要使用此参数 范围( NULL - ShowCharNumLitd ),超出此 范围无效,LCDDisplayInvalidParameter/0XFFFF为无效值
u8 LCD_state; // 亮、灭、闪,双闪LCDDisplayInvalidParameter/0XFF为无效值,不包括数码管1、2、3、4、5、6
u16 LCD_display_timer; // 闪烁间隔时间,单位10ms,LCDDisplayInvalidParameter/0XFFFF/NULL为无效值
u16 LCD_display_count; // 部分液晶只需要闪烁几次,一个跳变为一次,LCDDisplayInvalidParameter /0xFFFF为无效值,不使用填充无效值
} Lcd_Status_Info_t;
/*****************************************************************
LCD屏位置定义
*******************************************************************/
#define SYSTEM_MANUAL_OUTLINE_DISPLAY 0X01 //手动模式外圈(S1)
#define SYSTEM_MANUAL_CHAR_DISPLAY 0X02 //手动模式内圈(S2)
#define SYSTEM_ROLLING_OUTLINE_DISPLAY 0X03 //循环模式外圈(S3)
#define SYSTEM_ROLLING_CHAR_DISPLAY 0X04 //循环模式内圈(S4)
#define SYSTEM_AUTO_OUTLINE_DISPLAY 0X05 //自动模式外圈(S13)
#define SYSTEM_AUTO_CHAR_DISPLAY 0X06 //自动模式内圈(S14)
#define DEVICE_TYPE_HEATING_OUTLINE_DISPLAY 0X07 //地暖模式外圈(S5)
#define DEVICE_TYPE_HEATING_CHAR_DISPLAY 0X08 //地暖模式内圈(S6)
#define DEVICE_TYPE_AIRCONDITION_OUTLINE_DISPLAY 0X09 //空调模式外圈(S7)
#define DEVICE_TYPE_AIRCONDITION_CHAR_DISPLAY 0X0A //空调模式内圈(S8)
#define DEVICE_TYPE_FAN_OUTLINE_DISPLAY 0X0B //新风模式外圈(S9)
#define DEVICE_TYPE_FAN_CHAR_DISPLAY 0X0C //新风模式内圈(S10)
#define SETTING_TIMER_DISPLAY 0X0D //定时图标(S12)
#define CURRENT_TEMPER_CHAR_DISPLAY 0X0E //当前温度字符(S15)
#define SETTING_TIMER_CHAR_DISPLAY 0X0F //设定时长字符(S16)
#define H_CHAR_DISPLAY 0X10 //小时“H”字符(S17)
#define UPPER_TEMPER_UNIT_DISPLAY 0X11 //上方摄氏度℃(S18)
#define ZIGBEE_NET_CAHR_DISPLAY 0X12 //zigbee网络灯(S19)
#define CHILD_LOCK_DISPLAY 0X13 //童锁图标(S20)
#define MIDDLE_TEMPER_UNIT_DISPLAY 0X14 //中间摄氏度℃(S21)
#define SYSTEM_HEATING_OUTLINE_DISPLAY 0X15 //制热模式外圈(S22)
#define SYSTEM_HEATING_CHAR_DISPLAY 0X16 //制热模式内圈(S23)
#define SYSTEM_DRY_OUTLINE_DISPLAY 0X17 //除湿模式外圈(S24)
#define SYSTEM_DRY_CHAR_DISPLAY 0X18 //除湿模式内圈(S25)
#define SYSTEM_COOL_OUTLINE_DISPLAY 0X19 //制冷模式外圈(S26)
#define SYSTEM_COOL_CHAR_DISPLAY 0X1A //制冷模式内圈(S27)
#define SYSTEM_FAN_OUTLINE_DISPLAY 0X1B //通风模式外圈(S28)
#define SYSTEM_FAN_CHAR_DISPLAY 0X1C //通风模式内圈(S29)
#define SYSTEM_SLEEP_OUTLINE_DISPLAY 0X1D //睡眠模式外圈(S30)
#define SYSTEM_SLEEP_CHAR_DISPLAY 0X1E //睡眠模式内圈(S31)
#define WIND_DIRECTION_UP_DISPLAY 0X1F //风向上图标(S32)
#define WIND_DIRECTION_MIDDLE_DISPLAY 0X20 //风向中图标(S33)
#define WIND_DIRECTION_DOWN_DISPLAY 0X21 //风向下图标(S34)
#define WIND_DIRECT_CHAR_DISPLAY 0X22 //风向字符图标(S35)
#define WIND_SPEED_CHAR_DISPLAY 0X23 //风速字符图标(S36)
#define MIDDLE_POINT_DISPLAY 0X24 //中间小数点(P0)
#define UPPER_POINT_DISPLAY 0X25 //上方小数点(P1)
#define SET_MIDDLE_DIGITRON_DISPLAY_01 0X26 //中间第一个段码(1)
#define SET_MIDDLE_DIGITRON_DISPLAY_02 0X27 //中间第二个段码(2)
#define SET_MIDDLE_DIGITRON_DISPLAY_03 0X28 //中间第三个段码(3)
#define SET_UPPER_DIGITRON_DISPLAY_01 0X29 //上方第一个段码(4)
#define SET_UPPER_DIGITRON_DISPLAY_02 0X2A //上方第二个段码(5)
#define SET_UPPER_DIGITRON_DISPLAY_03 0X2B //上方第三个段码(6)
#define FAN_SPEED_DIGITRON_DISPLAY_01 0X2C //当前风速第1个段码(7)
#define DELAY_OFF_TIME_DISPLAY 0X2D //延时关机时间显示
#define CALIBRATE_TEMPER_DISPLAY 0X2E //校准温度显示
#define LCD_CONTROL(X) ((X>0)? (P52 = 1):(P52 = 0) );
void PWM_init(void);
void LcdShowCTR( Lcd_Status_Info_t LCDShowTemp_t );
void BL55072A_DisplayON(void);
void BL55072A_Clear(void);
void BL55072A_DisplayALL(void);
void BL55072A_Init(uint8_t slaver_addr,u32 freq);
void BL55072A_DisplayGeneral(u8 addr,u8 control_bits,u8 display_bits);
void LcdShowRunningAll( void );
u16 GetLCDShowTime( void );
void SetLCDShowTime(u16 uSetLCDShowTime);
void Test(void);
#endif
/**
******************************************************************************
* @file USART.h
* @author lo_
* @version V0.0.1
* @date 2018.5.16
* @brief
*
*
******************************************************************************
* @attention
*
******************************************************************************
*/
#ifndef _CC2530_TRANSPARENT_ANALYZE_H
#define _CC2530_TRANSPARENT_ANALYZE_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
//#include "stm32f10x.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
/* Exported macro ------------------------------------------------------------*/
//#define USATR_1_DEBUG 1
#if (USATR_1_DEBUG == 1)
#define DEBUG_USATR1(format,...) printf(format,##__VA_ARGS__)
#else
#define DEBUG_USATR1(format,...)
#endif
typedef unsigned int TP_u32;
typedef unsigned short TP_u16;
typedef unsigned char TP_u8;
typedef signed char TP_s8;
typedef int16_t TP_s16;
typedef TP_u32 TP_uc32; /*!< Read Only */
typedef TP_u16 TP_uc16; /*!< Read Only */
typedef TP_u8 TP_uc8; /*!< Read Only */
typedef enum {TP_false = 0, TP_true = !TP_false} TP_bool;
typedef enum {TP_ERROR = 0, TP_SUCCESS = !TP_ERROR} TP_ErrorStatus;
//定时向cc2530 查询网络状态,如果定时为0,代表不查询
#define DEF_STATUS_CHECK_INTERVAL_TIME 5000 //(MS)
#define BYTE_MOVE(high_byte,low_byte) ((high_byte << 8) | low_byte)
/**************************************************************************************************************
公共部分
***************************************************************************************************************/
#define SOF_HIGH_BYTE_DEF 0XAA
#define SOF_LOW_BYTE_DEF 0X55
#define USART_RECIVE_LEN_DEF 40 //串口最多一次接受的数据量
#define USART_RECIVE_DEPTH 5 //缓存的深度
//透传数据接受最大间隔时间,超时未接收到数据,停止一串数据接收
#define DEF_TRANSPARENT_MAXIMUM_INTERVAL 100 //(ms)
enum NET_STATUS
{
//未入网
no_network = 0,
//组网中
networking,
//已组网
in_network,
};
//usart 数据接受
typedef struct _Recive_usart_data_deal
{
TP_u8 Data[USART_RECIVE_LEN_DEF]; //中断中接受到的数据
TP_u8 Recive_len; //接收到数据的长度
TP_u8 Data_len; //需要接受的数据
TP_u8 time; //时间
}RECIVE_USART_DATA_DEAL;
//homebuf buf缓存
typedef struct _Recive_usart_buff
{
TP_u8 Usart_buff[USART_RECIVE_DEPTH][USART_RECIVE_LEN_DEF]; //homebus 缓存存放区
TP_u8 Usart_buff_len[USART_RECIVE_DEPTH]; //homebus 缓存区长度
TP_u8 Buff_send_serial_num; //BUFF发送序列
TP_u8 Download_serial_num; //BUFF缓存序列
}RECIVE_USART_BUFF;
//协议中的功能码
typedef struct Protocol_
{
//序列号
TP_u16 SEQ;
//通道
TP_u8 Channel_ID;//
//功能呢个码
TP_u16 Opcode;
//控制位
TP_u8 ControlField;
//数据
TP_uc8* ARG;
//长高度
TP_u8 ARG_len;
}PROTOCOL_DEAL;
//协议中的功能码
typedef struct Protocol_send_
{
//序列号
//TP_u16 SEQ;
//通道
TP_u8 Channel_ID;//
//功能呢个码
TP_u16 Opcode;
//控制位
TP_u8 ControlField;
//数据
TP_uc8* ARG;
//长高度
TP_u8 ARG_len;
}PROTOCOL_SEND;
/* Exported constants --------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
/**************************************************************************************************************
外部使用的函数
***************************************************************************************************************/
void transparent_msg_deal(void);
void transparent_time_manage(TP_uc8 timer);
void transparent_msg_recive(TP_uc8 RcvChar);
void ack_dev_info(PROTOCOL_DEAL recv_data, TP_uc8* arg, TP_u8 len);
TP_ErrorStatus tp_function_init(void (*send_drive)(TP_uc8* msg,TP_u32 len),
void (*transparent_function_point)(PROTOCOL_DEAL protocol_data),
void (*non_permeable_function_point)(PROTOCOL_DEAL protocol_data));
void transparent_protocol_send(PROTOCOL_SEND send_protocol,TP_u16 SEQ);
void tp_usart_init(void (*usart_init)());
void opcode_check_status_report(TP_uc8 *recive_data);
//ADD BY YWQ
extern void transparent_data_analyze(PROTOCOL_DEAL recv_data);
extern void not_transparent_data_analyze(PROTOCOL_DEAL recv_data);
extern void UART1_Send_Bytes(TP_uc8* bffs, TP_u32 n);
#ifdef _DEBUG
#define DEBUG(format,...) printf(format,##__VA_ARGS__)
#else
#define DEBUG(format,...)
#endif
#ifdef __cplusplus
}
#endif
#ifdef USE_PRINTF
#include<stdio.h>
int fputc(int ch, FILE *f);
#endif
#endif
#ifndef __DEBUG_H__
#define __DEBUG_H__
#endif
#ifndef __KEY_H__
#define __KEY_H__
#include <stdlib.h>
#include <stdint.h>
#include "control_comm.h"
#define KEY1 P36
#define KEY2 P31
#define KEY3 P30
#define KEY4 P07
#define KEY5 P05
#define KEY6 P01
#define LED1 P55
#define LED2 P32
#define LED3 P54
#define LED4 P06
#define LED5 P04
#define LED6 P00
#define K1 P10
#define K2 P24
#define K3 P13
#define K4 P24
#define K5 P26
#define ZERO_INIT P25
#define KEY(X) (KEY##X)
typedef int32_t s32;
typedef int16_t s16;
typedef int8_t s8;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
typedef struct Time_To_Power_Off
{
u8 timekey_start_status; //按下定时键
u8 timer_status; //定时器开启状态
u8 power_switch_status; //开关按键状态
u8 time_data; //倒计时时间
u8 set_up_status; //进入长按设置状态
u8 set_up_option; //设置选项
s8 temperature_correct; //温度校准值
s16 temperature_value; //实际温度值
u16 temperature_set_value; //设定温度值
u8 system_type; //系统类型
u8 wind_auto_air_status; //风速自动通风状态
u8 lock_status; //按键锁定状态
}TIMEING_INFO;
typedef struct
{
volatile u32 operate_delay_off_ms;
volatile u32 operate_delay_off_s;
volatile u32 operate_delay_off_min;
volatile u32 operate_delay_off_h;
}Filter_Wash_Calc;
typedef struct KEY_OPERATE
{
u8 operate_delay_off_status; //延时关机操作期间标志位判断
volatile u32 operate_delay_off_ms;
volatile u32 operate_delay_off_s;
volatile u32 operate_delay_off_min;
volatile u32 operate_delay_off_h;
u8 operate_join_net ;
uint64_t operate_last_timer ;
s8 operate_calibrate_temp;
u8 operate_calibrate_temper;
u8 record_adjust_delay_off;
Filter_Wash_Calc filter_calc;
u16 set_temper_temp;
}KEY_OPERATE;
typedef void (*KeyProcessCallback)(u8 key_id,u8 KeyPressEvent);
#define Low 0
#define High 1
#define NULL 0
#define AntiShakeTime 6 //30ms = 6*5ms 按键防止抖动时间
#define PressLongTime 800 // 4s = 800*5ms 按键长按时间
#define Press10sLongTime 2000 // 10s = 2000*5ms 退出老化
#define SyskeyScanTimer 5 //5ms
#define KeyEventBufferNum 30
#define HOT_AND_COLD_APART 0
#define ONLY_COLD 1
#define ONLY_HOT 2
#define HOT_AND_COLD_SHARED 3
enum{
SYSTEM_MODE_OFF = 0,
SYSTEM_MODE_AUTO = 1,
SYSTEM_MODE_MANUAL = 2,
SYSTEM_MODE_COOLING = 3,
SYSTEM_MODE_HEATING = 4,
SYSTEM_MODE_EMERGENCY_HEATING = 5,
SYSTEM_MODE_PRE_COOLING = 6,
SYSTEM_MODE_AIR = 7,
SYSTEM_MODE_DRY = 8,
SYSTEM_MODE_SLEEP = 9,
SYSTEM_MODE_ROLL = 10,
};
enum{
WIND_DIRECT_DOWN = 0,
WIND_DIRECT_MIDDLE = 1,
WIND_DIRECT_UP = 2,
};
#define COLD_MODE 0X01 //制冷模式 //wait to modefied lmm test
#define HEAT_MODE 0X02 //加热模式
#define AIR_MODE 0X03 //通风模式
#define AREFACTION 0X04 //除湿模式 /Modify by YWQ
#define WIND_SPEED_LOW 0x01 //低速
#define WIND_SPEED_MID 0x02 //中速
#define WIND_SPEED_HIGH 0x03 //高速
#define WIND_SPEED_AUTO 0x05 //自动
#define SET_LONG_TIME 0X01 //长按SET键
#define SET_SHORT_TIME 0X02 //短按SET键
#define AIR_MODE_CHANGE 0X01 //模式按键
#define WIND_SPEED_CHANGE 0X02 //风速按键
#define TIMING_CHANGE 0X03 //定时按键
#define POWER_SWITCH_CHANGE 0X04 //开关按键
#define SET_CHANGE 0X05 //SET按键
#define RELAY1 0X00
#define RELAY2 0X01
#define RELAY3 0X02
#define RELAY4 0X03
#define RELAY5 0X04
#define RELAY_ALL 0X05
/*
向右
L M H
A = 1 B = 1 C = 0
A = 1 B = 0 C = 1
A = 0 B = 1 C = 1
A = 1 B = 1 C = 0
A = 1 B = 0 C = 1
A = 0 B = 1 C = 1
A = 1 B = 1 C = 0
A = 1 B = 0 C = 1
A = 0 B = 1 C = 1
A = 1 B = 1 C = 0
A = 1 B = 0 C = 1
A = 0 B = 1 C = 1
向左
A = 1 B = 1 C = 0
A = 0 B = 1 C = 1
A = 1 B = 0 C = 1
A = 1 B = 1 C = 0
A = 0 B = 1 C = 1
A = 1 B = 0 C = 1
A = 1 B = 1 C = 0
A = 0 B = 1 C = 1
A = 1 B = 0 C = 1
A = 1 B = 1 C = 0
A = 0 B = 1 C = 1
*/
#define KeyTotalNum 6
#define Key_Button 0x01
#define Key_Rotary 0x02
#define NoButtonEvent 0x00
#define ButtonShortEvent 0x80
#define ButtonLongEvent 0x90
#define ButtonLongUpEvent 0xa0
#define Button10sLongEvent 0xb0
#define AIR_CMD_ONOFF 1
#define AIR_CMD_SYSTEM_MODE 2
#define AIR_CMD_FAN_SPEED 3
#define AIR_CMD_FAN_DIRECT 4
#define AIR_CMD_SET_TEMPER 5
typedef struct key_t
{
/* 上次按下的按键状态 */
u8 PreState;
/* 当前按下的按键状态 */
u8 LastState;
/* 当前按下的按键状态 */
u8 PreKeyEvent;
u16 KeyTime; //消除抖动时间
} KeyScan_t;
typedef struct key_init
{
/* key id */
u8 KeyId;
GPIO_T *port;
/* key pin */
uint32_t u32Pin;
/* 有效电平 */
u8 Valid_Level;
} KeyConfigInit_t;
typedef struct
{
/* key id */
u8 support_tap_num;
u8 save_tap_status[6];
u8 tap_to_do[6]; //对应(K1,K2,K3,K4,K5)
u8 set_tap ;
u8 tap_end_flage ;
} TAP_CONTROL_ST;
extern TAP_CONTROL_ST Tap_Control;
extern u8 InputKeyEvent(u8 Key_index,u8 Event);
extern void SetkeyScanTime(u16 uSetkeyScanTime);
void Delay_OFF_Rel_Display(u8 stop_flash,u8 delay_timer,u8 dispaly_data,u8 H_char,u8 bell_char,u8 setting_time_char);
void Control_OnOff_handler(u8 device_type,u8 onoff);
extern u16 GetkeyScanTime( void );
extern void InputButtonInit(void);
extern void key_scan(void);
extern void display_power_off(u8 ds_type) ;
extern void display_power_off_flage(void);
void KeyEventHandle( s16 SetMode ,u8 Rank);
void Oled_Display_whole(void);
void Tap_Status_Scan(void);
void Save_Tap_Switch(void);
void Tap_Switch(void);
void Auto_Wind (void);
void display_real_temp(int temp_value);
extern void Aging_test(void);
#endif
#ifndef __DEBUG_H__
#define __DEBUG_H__
#endif
#ifndef __SHTC3_H__
#define __SHTC3_H__
#include <stdlib.h>
#include <stdint.h>
#include "control_comm.h"
#include <stdbool.h>
typedef enum{
READ_ID = 0xEFC8, // command: read ID register
SOFT_RESET = 0x805D, // soft reset
SLEEP = 0xB098, // sleep
WAKEUP = 0x3517, // wakeup
MEAS_T_RH_POLLING = 0x7866, // meas. read T first, clock stretching disabled
MEAS_T_RH_CLOCKSTR = 0x7CA2, // meas. read T first, clock stretching enabled
MEAS_T_RH_NOCLOCKSTR = 0x7688, // meas. read T first, clock stretching enabled
MEAS_T_RH_POLLING_LPM = 0x609C,
MEAS_T_RH_CLOCKSTR_LPM = 0x6458,
MEAS_RH_T_POLLING_LPM = 0x44DE,
MEAS_RH_T_CLOCKSTR_LPM = 0x401A,
MEAS_RH_T_POLLING = 0x58E0, // meas. read RH first, clock stretching disabled
MEAS_RH_T_CLOCKSTR = 0x5C24 // meas. read RH first, clock stretching enabled
}etCommands;
typedef enum
{
SHTC3_NO_ERROR = 0x00, // no error
SHTC3_ACK_ERROR = 0x01, // no acknowledgment error
SHTC3_CHECKSUM_ERROR = 0x02, // checksum mismatch error
SHTC3_TIMEOUT_ERROR = 0x04, // timeout error
SHTC3_PARM_ERROR = 0x80, // parameter out of range error
}GetError;
void SHTC3_Init(u8 i2cAddress);
u32 SHTC3_ReadID(u16* id);
u32 SHTC3_GetTempAndHumi(s16* temperature, u16* humidity, bool lowPowerEnable);
u32 SHTC3_SoftReset(void);
u32 SHTC3_GetTemp(s16* temperature);
#define SHTC3_GET_TEMP(X) SHTC3_GetTemp(X)
#endif
#ifndef __DEBUG_H__
#define __DEBUG_H__
#endif
#ifndef __VCNL3040_H__
#define __VCNL3040_H__
#include <stdlib.h>
#include <stdint.h>
#include "control_comm.h"
#include <stdbool.h>
typedef enum{
PS_CONF1_2 = 0X03,
PS_CONF3_PS_MS = 0X04,
PS_CANC = 0X05,
PS_THDL = 0X06,
PS_THDH = 0X07,
PS_DATA = 0X08,
PS_RES_INT_FLGA = 0X0B,
PS_ID = 0X0C,
}ECommand_ID;
void VCNL3040_Init(u8 i2cAddress);
u16 VCNL3040_ReadBytes(ECommand_ID command);
#define VCNL3040_Get_Current_Data() VCNL3040_ReadBytes(PS_DATA)
#define VCNL3040_GetID() VCNL3040_ReadBytes(PS_ID)
#endif
#ifndef _ZH_PROTOCOL_H
#define _ZH_PROTOCOL_H
#include "Mini58Series.h"
#define BUF_COUNT 2
#define FRAME_LEN 10
enum ops_type_e
{
NET_ADDR = 0,
SWITCH,
MODE,
TEMPERATURE,
WIND_SPEED,
WIND_DIRECTION,
ROOM_TEMP,
MALFUNCTION,
STATE,
CRC,
POLL_CHECK,
DELAY_TIME
};
enum sw_state_e
{
SW_OFF = 0,
SW_ON = 1
};
enum mode_e
{
HEATINF = 1,
REFRIGERATION = 2,
SUPPLY_AIR = 4,
XERANSIS = 8
};
enum wind_speed
{
AUTOMATIC = 0,
LOW_SPEED = 1,
INTERMEDIATE_SPEED = 2,
HIGH_SPEED = 3
};
enum wind_direction_e
{
NO_WIND_DIRECTION = 0,
ANGLE_30 = 1,
ANGLE_45 = 2,
ANGLE_60 = 4,
SWING = 7
};
struct ZH_protocol_t
{
uint8_t send_times;
uint8_t buf_handle_flag[BUF_COUNT];
uint8_t send_buf[FRAME_LEN];
uint8_t receive_buf[BUF_COUNT][FRAME_LEN];
uint8_t poll_check_receive[FRAME_LEN];
enum ops_type_e ops_type;
void (*uart_init)(void (*send_uart)(uint8_t *buf, uint8_t len));
void (*send)(enum ops_type_e type, uint8_t state);
void (*receive)(uint8_t re_data);
void (*send_all)(uint8_t On_OFF, uint8_t temperature, uint8_t windspeed,uint8_t mode,uint8_t wind_direct);
};
extern struct ZH_protocol_t *ZH_protocol_i;
#endif
#ifndef __DEBUG_H__
#define __DEBUG_H__
#endif
#ifndef __AIR_CONDITION_H__
#define __AIR_CONDITION_H__
#include <stdlib.h>
#include <stdint.h>
#include "control_comm.h"
#define MIDEA_PRODUCT_ID 142//美的
#define MIDEA_OPERATE_ID 15003//美的
#define MIDEA_COOL_WIND_PRODUCT_ID 143//美的酷风
#define MIDEA_COOL_WIND_OPERATE_ID 15004//美的酷风
#define DAIKIN_PRODUCT_ID 143//大金
#define DAIKIN_OPERATE_ID 15004//大金
#define DAIKIN_MX_PRODUCT_ID 143//大金MX
#define DAIKIN_MX_OPERATE_ID 15004//大金MX
#define DAIKIN_NEW_WIND_PRODUCT_ID 143//大金新风
#define DAIKIN_NEW_WIND_OPERATE_ID 15004//大金新风
#define HITACHI_PRODUCT_ID 143//日立
#define HITACHI_OPERATE_ID 15004//日立
#define HITACHI_US_PRODUCT_ID 143//日立US
#define HITACHI_US_OPERATE_ID 15004//日立US
#define HITACHI_NEW_WIND_PRODUCT_ID 143//日立新风
#define HITACHI_NEW_WIND_OPERATE_ID 15004//日立新风
#define TOSHIBA_PRODUCT_ID 143//东芝
#define TOSHIBA_OPERATE_ID 15004//东芝
#define MITSUBISHI_PRODUCT_ID 143//三菱
#define MITSUBISHI_OPERATE_ID 15004//三菱
#define MITSUBISHI_ELECTRIC_PRODUCT_ID 143//三菱电机
#define MITSUBISHI_ELECTRIC_OPERATE_ID 15004//三菱电机
#define GREE_PRODUCT_ID 143//格力
#define GREE_OPERATE_ID 15004//格力
#define GREE_A_PAD_PRODUCT_ID 143//格力A型风管
#define GREE_A_PAD_OPERATE_ID 15004//格力A型风管
#define GREE_C1_PAD_PRODUCT_ID 143//格力C1型风管
#define GREE_C1_PAD_OPERATE_ID 15004//格力C1型风管
#define GREE_HOTEL_PAD_PRODUCT_ID 143//格力酒店风管
#define GREE_HOTEL_PAD_OPERATE_ID 15004//格力酒店风管
#define GREE_NEW_WIND_AREFACTION_PRODUCT_ID 143//格力新风除湿
#define GREE_NEW_WIND_AREFACTION_OPERATE_ID 15004//格力新风除湿
#define PANASONIC_NEW_WIND_PRODUCT_ID 143//松下新风
#define PANASONIC_NEW_WIND_OPERATE_ID 15004//松下新风
#define YORK_PRODUCT_ID 143//约克
#define YORK_OPERATE_ID 15004//约克
#define MCQUARY_PRODUCT_ID 143//麦克维尔
#define MCQUARY_PAD_OPERATE_ID 15004//麦克维尔
#define TRANE_PRODUCT_ID 143//特灵一拖一
#define TRANE_OPERATE_ID 15004//特灵一拖一
#define HAIER_PRODUCT_ID 143//海尔一拖一
#define HAIER_OPERATE_ID 15004//海尔一拖一
#define SIMULATOR 0 //模拟器
#define DAIKIN 1 //品牌 :大金
#define HITACHI 2 //品牌 :日立
#define TOSHIBA 3 //东芝
#define MITSUBISHI 4 //三菱重工
#define MITSUBISHI_ELECTRIC 5 //三菱电机
#define GREE 6 //格力
#define MIDEA_TRADEMARK 7 //美的
#define DAIKIN_MX 8 //大金MX
#define HITACHI_US 9 //日立US
#define DAIKIN_NEW_WIND 10 //大金新风
#define HITACHI_NEW_WIND 11 //日立新风
#define PANASONIC_NEW_WIND 12 //松下新风
#define GREE_A_PAD 13 //格力A 型风管
#define YORK 14 //约克
#define MCQUARY 15 //麦克斯韦尔
#define GREE_HOTEL_PAD 16 //格力酒店风管
#define TRANE 17 //特灵一拖一
#define HAIER 18 //海尔一拖一
#define MIDEA_COOL_WIND 19 //美的酷风
#define GREE_C1_PAD 20 //格力C1风管
#define GREE_NEW_WIND_AREFACTION 21 //格力新风除湿
u8 air_condition_mode2Standard_mode(uint8_t mode);
u8 Standard_mode2Air_condition_mode(uint8_t mode);
u8 Standard_fan_speed2Air_condition(uint8_t fan_speed);
u8 air_condition_fan_speed2Standard_fan_speed(uint8_t fan_speed);
void Control_AIR_CONDITION_By_RS485(u8 cmd_type,u16 data);
void ZH_msg_deal(void);
#endif
#ifndef __CONTROL_COMM_H__
#define __CONTROL_COMM_H__
#include "mini58series.h"
#include "CC2530_transparent_analyze.h"
typedef int32_t s32;
typedef int16_t s16;
typedef int8_t s8;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
typedef signed char INT8S, S8;
typedef unsigned char BYTE, INT8U;
typedef signed short int INT16S;
typedef unsigned short int WORD, INT16U, U16;
typedef signed long LONG, INT32S, S32;
typedef unsigned long DWORD, INT32U, U32;
#define ABS(a,b) ((a>b) ?(a-b) :(b-a))
typedef struct Power_Off_Time
{
u16 time_ms;
u8 time_sec;
u8 time_min;
u8 time_hour;
}TIMEING_OPTION;
typedef struct
{
u8 blacklight_flag;
volatile u32 time_blacklight_ms;
volatile u8 time_blacklight_s;
u8 blacklight_save_time;
}BACKLIGHT_CONTROL;
extern TIMEING_OPTION _Time_Power_Off;
#define TEMP_SUCCESS 0X0000
#define SWITCH_ON 1
#define SWITCH_OFF 0
#define RUN_FLAG_1 1
#define RUN_FLAG_0 0
#define ALWAYS_RUN 0xFF
#define CLEAR_TO_ZERO 0
#define SET_FLAG_0 0
#define SET_FLAG_1 1
#define Min_1 60000
#define Sec_15 15000
#define Sec_10 10000
#define Sec_8 8000
#define Sec_5 5000
#define Sec_3 3000
#define Sec_2 2000
#define Sec_1_5 1500
#define Sec_1 1000
#define Ms_700 700
#define Ms_500 500
#define Ms_300 300
#define Ms_200 200
#define Ms_100 100
#define Ms_50 50
#define Ms_20 20
#define Ms_15 15
#define Ms_10 10
#define Ms_5 5
#define Ms_2 2
#define Ms_1 1
#define TIMER_ZERO 0 //当设置时间为0时,表面此任务不执行
//但此任务可以在需要时开起
#define task_Hour_48 172800
#define Task_Hour_8 28800
#define Task_Min_1 60
#define Task_Sec_30 30
#define Task_Sec_15 15
#define Task_Sec_10 10
#define Task_Sec_5 5
#define Task_Sec_2 2
#define Task_leave_net_3s 60
#define Task_leave_net_8s 160
#define ENABLE_FAST_AGING_TEST 1
#if ENABLE_FAST_AGING_TEST
#define FAST_AGING_STEP1_TIME 60 //1min
#define FAST_AGING_STEP2_TIME 150 //2.5min
#else
#define FAST_AGING_STEP1_TIME (15*60) //15min
#define FAST_AGING_STEP2_TIME (60*60*4) //4h
#endif
struct task_components_t
{
u8 serial_number; // 任务编号
u8 task_switch; // 任务开关
u8 run_flag; // 执行任务标志---0不执行,1执行
u8 external_open_flag; // 任务已开启标志(避免多次开启此任务,选用)
u16 timer; // 计时器
u16 interval_time; // 任务运行间隔时间(和计时器时间相同,为不变值)
void (*task_hook)(void); // 要运行的任务函数
};
extern struct task_components_t task_comps[];
typedef union
{
u16 u16; // element specifier for accessing whole u16
s16 i16; // element specifier for accessing whole i16
struct
{
u8 u8L; // element specifier for accessing low u8
u8 u8H; // element specifier for accessing high u8
} s16_t; // element spec. for acc. struct with low or high u8
} nt16;
typedef enum
{
Ack = 0,
NO_ACK = 1,
} etI2cAck;
typedef enum
{
ACK_ERROR = 0x01,
TIME_OUT_ERROR = 0x02,
CHECKSUM_ERROR = 0x04,
UNIT_ERROR = 0x08
} etError;
struct device_t
{
u8 channel;
u8 product_id;
u16 type;
};
//typedef struct Strainer_Net_Time
//{
// u8 time_sec;
// u8 time_min;
// u8 time_hour;
//
//}STRAINER_OPTION;
//extern STRAINER_OPTION Strainer_Net_Used_Time;
#define PRODUCTID 92
#define OPERATEID 15002
#define HI_UINT16(a) (((a) >> 8) & 0xFF)
#define LO_UINT16(a) ((a) & 0xFF)
#define DISABLE_DEBUG 1 //lmm debug
/***************** 版本控制 ***************/
#define KK_PANEL_VERSION "v1.1.8"
#define PROTOCOL_VER 0
#define VER_1 1
#define VER_2 1
#define VER_3 8
/*****************************************/
////////////////////////非透传协议四个网络状态/////////////////////////////
#define OUT_LINE 0 //未入网
#define IN_LINE 1 //已入网
#define IN_LINE_NETWORKING 2 //已入网且允许其他设备入网
#define OUT_LINE_NETWORKING 3 //未入网且准备入网
///////////////////////////////////////////////////////////////////////////
#define RECV_ACK_SUCC 0 //执行成功
#define RECV_ACK_FAILED 1 //执行失败
#define RCV_MAX 100
////////////////////////////////透传类opcode////////////////////////////////////
#define OPCODE_GENERAL_MODEID_REPORT 0x100A //设备modeid上报
#define OPCODE_GENERAL_SWITCH 0x1010 //执行开关动作
#define OPCODE_GENERAL_OPERATION_MODE 0x1011 //设定运行模式
#define OPCODE_GENERAL_SET_TEMPERATURE 0x1012 //设定温度
#define OPCODE_GENERAL_SET_WIND_SPEED 0x1013 //设定风速
#define OPCODE_GENERAL_ERROR_CODE 0x1014 //故障码
#define OPCODE_GENERAL_SET_CHILD_LOCK 0x1015 //童锁
#define OPCODE_GENERAL_SET_DELAY_OFF_TIME 0x1016 //延时关机
#define OPCODE_GENERAL_SET_SWING_MODE 0x1017 //设置摆风模式
#define OPCODE_GENERAL_SET_SCREEN_SAVE_TIME 0x1018 //设置屏保时间
#define OPCODE_GENERAL_SET_FILTER_CLEANING_TIME 0x1019 //设置滤网清洗时间
#define OPCODE_GENERAL_CURRENT_REAL_TEMPER 0x101A //当前环境温度
#define OPCODE_GENERAL_SET_TEMPER_CALIBRATION 0x101B //设置校准温度
#define OPCODE_GENERAL_SET_NO_DISTURB_MODE 0x101C //设置勿扰模式
#define OPCODE_GENERAL_STATUS_QUERY 0x101D //查询设备状态
#define OPCODE_GENERAL_BING_DEVICE 0x101E //绑定设备
#define OPCODE_GENERAL_MCU_DATA_QUERY 0x101F //同步mcu信息
#define OPCODE_GENERAL_REPORT_STATUS 0x1020 //状态改变上报
#define OPCODE_GENERAL_LCD_OFF 0x1030 //息屏控制指令
#define OPCODE_GENERAL_PROXIMITY_TRIAGGER_REPORT 0x1031 //接近感应触发上报
#define OPCODE_GENERAL_OPCODE_TEST_PASS 0x01FF //产测通过标志
////////////////////////////////通用透传类opcode////////////////////////////////////
#define OPCODE_GENERAL_STARTUP 0x0007 //上电上报
#define OPCODE_GENERAL_NIGHT_OFF 0x0011 //夜间模式
#define OPCODE_GENERAL_INDENTIFY_DEV 0x000C //设备定位
#define OPCODE_GENERAL_GET_VERSION 0x0012 //查看版本号
#define OPCODE_GENERAL_GET_DEV_INFO 0x000B //查看设备通道信息
////////////////////////////////非透传opcode////////////////////////////////
#define _OPCODE_CHECK_STATUS 0X0000 //查询设备状态
#define _OPCODE_NETWORK_BACK 0X0001 //设备退网
#define _OPCODE_FORCE_TO_RESTART 0X0002 //设备强制重启
#define _OPCODE_PUSH_NET_STATE 0X0003 //2530推送网络状态
#define _OPCODE_INQUIRE_NET_STATE 0X0004 //查询网络状态
#define _OPCODE_SET_DEV_RUN_STATE 0X0005 //配置设备运行状态入网状态
#define _OPCODE_UART_TEST 0X0006 //串口测试
#define _OPCODE_SET_NET_STATE 0X1000 //配置设备入网
#define _OPCODE_PUSH_NETWORK_STATE 0X1002 //网络状态推送
void Send_Device_Data(u8 channel_id,u16 opcode ,u8 *arg,u8 len);
static void network_state_machine(TP_uc8 recv_network_state);
void state_change_report(TP_u16 opcode, TP_u8 channel);
void Setup_Task_Start(void);
u8 Get_Channel_Id(u8 device_type);
void delay_operate_calibrate_temper_Task_Start(void);
void operate_calibrate_temper_delay_2s_off_Task_Start(void);
void send_read_operateID_productID(void);
void aging_test_start(void);
void aging_test_stop(void);
u8 Get_Display_Status(void);
#define Network_Control(join_or_leave) Send_Device_Data(0,_OPCODE_SET_NET_STATE,&join_or_leave,1)
#define proximity_triagger_report_zigbee() do{ uint8_t res = 1; \
Send_Device_Data(0,OPCODE_GENERAL_PROXIMITY_TRIAGGER_REPORT,&res,1);}while(0);
#define Query_Device_Info(res) Send_Device_Data(0,OPCODE_GENERAL_STATUS_QUERY,&res,1);
void Update_Dev_Info(u8 channel_id);
extern void Delay_ms(u16 sec);
extern void delay_us( u32 time);
extern void Reset_Back_Light(void);
extern void recover_current_state(void);
extern void save_data(void);
extern void temp_init(void);
extern void synch_temp(void);
extern void check_error_report(TP_u16 opcode, TP_u8 channel);
extern void Ararm_Init(void);
extern void Tap_Init(void);
void set_2530_net_state(void);
void CC2530_leave_net_check(void);
void task_CC2530_state_check(void);
void tm_change_report(TP_u16 opcode, TP_u8 channel);
static void send_ack(PROTOCOL_DEAL recv_data, TP_uc8* arg, TP_u8 len);
void power_on_report(void);
void Spake_Start(void);
void delay_confirm_system_control(u8 start);
void delay_confirm_fan_speed_control(u8 start);
void Print_Buff(u8 *data,u8 len);
#endif
#ifndef __HARDWARE_INIT_H__
#define __HARDWARE_INIT_H__
#include "Key.h"
#define Flash_Base_Addr 0x00007000
#define NO_FMC_WRITE 0xFFFFFFFF
#define OFFSET_ADDR 4
#define BYTE_ADDR 8
#define SAVE_INDEX_ADDR 0x000071F8 //504
#define SAVE_FLAGE 0xAA000000
#define ALARM_FLAGE 0x55555555
/***************************** 外部声明 ***********************************/
extern void hardware_init(void);
extern enum panel_type_e get_panel_type(void);
extern void Timer1_Open(u16 input_time);
extern void Timer1_Close(void);
extern void Timer0_Close(void);
extern void EINT_start(void);
extern void UART1_Send_Byte(uint8_t byte);
extern void UART0_Send_Bytes(u8* bffs, u8 n);
#endif
/**************************************************************************//**
* @file i2c_software_gpio.h
* @version V0.10
* $Revision: 2 $
* $Date: 15/02/24 4:23p $
* @brief This is the header file of i2c_software_gpio.c
*
* @note
* Copyright (C) 2015 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#ifndef __I2C_SOFTWARE_GPIO_H__
#define __I2C_SOFTWARE_GPIO_H__
#include "Mini58Series.h"
/*---------------------------------------------------------------------------------------------------------*/
/* Define functions prototype */
/*---------------------------------------------------------------------------------------------------------*/
int32_t I2C_SW_Open(uint32_t u32BusClock);
int32_t I2C_SW_Send(uint8_t u8Address, uint8_t* p8Data, uint32_t u32ByteSize);
int32_t I2C_SW_Get(uint8_t u8Address, uint8_t* p8Data, uint32_t u32ByteSize);
int32_t I2C_SW_Get_Without_Delay(uint8_t u8Address, uint8_t* p8Data, uint32_t u32ByteSize); //lmm add
int32_t I2C_SW_Send_Without_Stop(uint8_t u8Address, uint8_t* p8Data, uint32_t u32ByteSize); //lmm add
#endif
#include <stdio.h>
#include "mini58series.h"
#include "VCNL3040.h"
#include "i2c_software_gpio.h"
static u32 VCNL3040_WriteCommand(ECommand_ID command,u16 Data);
u8 _VCNL3040_Addr = 0;
void VCNL3040_Init(u8 i2cAddress)
{
_VCNL3040_Addr = i2cAddress;
//power_on ,ps output 16bits
VCNL3040_WriteCommand(PS_CONF1_2,0x080E);
//active force mode disable (normal mode)
//not interrupt mode ; current 180ma
VCNL3040_WriteCommand(PS_CONF3_PS_MS,0x4700);
// high interrupt threshold setting 560
VCNL3040_WriteCommand(PS_THDH,0x0230);
// low interrupt threshold setting 260
VCNL3040_WriteCommand(PS_THDH,0x0104);
}
static u32 VCNL3040_WriteCommand(ECommand_ID command,u16 Data)
{
u32 error = 0; // error code
u8 cmd_buf[4] = {0};
cmd_buf[0] = command ;
cmd_buf[1] = Data ;
cmd_buf[2] = Data>>8 ;
I2C_SW_Send(_VCNL3040_Addr, cmd_buf,3);
return error;
}
u16 VCNL3040_ReadBytes(ECommand_ID command)
{
u8 cmd_buf[4] = {0};
cmd_buf[0] = command ;
I2C_SW_Send_Without_Stop(_VCNL3040_Addr, cmd_buf,1);
memset(cmd_buf,0,sizeof(cmd_buf));
I2C_SW_Get_Without_Delay(_VCNL3040_Addr, cmd_buf, 2);
//printf("BUFFER DATA = %x ,%x",cmd_buf[1],cmd_buf[0]);
return (((u16)cmd_buf[1]<<8) | cmd_buf[0]);
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define __HARDWARE_INIT_H__ #define __HARDWARE_INIT_H__
#include "Key.h" #include "Key.h"
#define Flash_Base_Addr 0x00007000 #define Flash_Base_Addr 0x00007400
#define NO_FMC_WRITE 0xFFFFFFFF #define NO_FMC_WRITE 0xFFFFFFFF
#define OFFSET_ADDR 4 #define OFFSET_ADDR 4
#define BYTE_ADDR 8 #define BYTE_ADDR 8
......
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