SampleSwitch 和SampleLight例程,home 1.2.2
1.开关控制灯的时候,是通过zclGeneral_SendOnOff_CmdToggle函数去控制灯?
2.灯那边处理来自开关命令的是通过哪个函数执行开关灯动作的?
3.灯执行开关动作后,如果想把灯现在的状态再发给开关,用哪个函数发送?开关那边哪个函数接收并处理?
YiKai Chen:
1. 是通过zclGeneral_SendOnOff_CmdToggle函数去控制灯
2. 处理来自开关命令的是zclSampleLight_OnOffCB
3. 灯现在的状态再发给开关用zcl_SendReportCmd,开关那边接收函数用zclSampleSw_ProcessIncomingMsg
user5367314:
回复 YiKai Chen:
1.zclSampleSw_IdentifyCB是做什么用的?识别灯吗?
2.ZCL_READ和ZCL_WRITE以及ZCL_DISCOVER是干什么用的?
3.没有LCD的时候怎么禁用?默认的是LCD_SUPPORTED=DEBUG
4.保存地址信息去掉叉号xNV_RESTORE,终端自动启动保留叉号xHOLD_AUTO_START,对吧?
5.xPOWER_SAVING和-DRFD_RCVC_ALWAYS_ON=FALSE他们有什么不同,我想终端低功耗要怎么做?
YiKai Chen:
回复 user5367314:
1. 识别switch
2. 使能zcl read/write/discover服務用的
3. 拿掉LCD_SUPPORTED=DEBUG
4. 建議使能NV_RESTORE
5. 终端低功耗要使能POWER_SAVING和-DRFD_RCVC_ALWAYS_ON=FALSE
user5367314:
回复 YiKai Chen:
没有屏幕的时候的,禁用LCD,
是直接把LCD_SUPPORTED=DEBUG一行去了,还是加个叉号xLCD_SUPPORTED=DEBUG
Alvin Chen:
回复 user5367314:
ZCL_READ和ZCL_WRITE以及ZCL_DISCOVER
这些都用来处理ZCL read writediscover 命令的。
先去看看ZCLspec。
Alvin Chen:
回复 user5367314:
这就是个宏定义,随便怎么弄,不一样就不生效
YiKai Chen:
回复 user5367314:
没有屏幕的时候的,禁用LCD可以直接把LCD_SUPPORTED=DEBUG一行去了也可以加个叉号 xLCD_SUPPORTED=DEBUG,我私人愛加个叉号
user5367314:
回复 YiKai Chen:
请教一个问题,我们没有使用EZMODE,
协调器开启允许入网,终端加入网络,
但是我下面的绑定是什么意思?
不太明白绑定和NV_RESTORE的区别,
开启NV_RESTORE,重启后终端会自动加入协调器,
但是绑定后又是什么情况?
// bind to remote lightzAddrType_t dstAddr;HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );
// Initiate an End Device Bind Request, this bind request will// only use a cluster list that is important to binding.dstAddr.addrMode = afAddr16Bit;dstAddr.addr.shortAddr = 0;// Coordinator makes the matchZDP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(),SAMPLESW_ENDPOINT,ZCL_HA_PROFILE_ID,0, NULL,// No incoming clusters to bindZCLSAMPLESW_BINDINGLIST, bindingOutClusters,TRUE );
YiKai Chen:
回复 user5367314:
NV_RESTORE是把Zigbee網絡相關的資訊存到NV,所以就算設備重新上電,資料也會保存著;绑定是用來指定command或是report要發送的端點地址跟endpoint的資訊的,跟NV_RESTORE沒有多大關聯,頂多是你始能了NV_RESOTRE,绑定表也會存在NV中