有多个问题要问:
1.官方协议栈给的SimpleApp例程中,终端入网结果的上层处理有以下代码
void zb_StartConfirm( uint8 status )
{
if ( status == ZB_SUCCESS )
{
myAppState = APP_START;
// Set event to bind to a collector
osal_start_timerEx( sapi_TaskID, MY_FIND_COLLECTOR_EVT, myBindRetryDelay ); }
else
{
// Try joining again later with a delay
osal_start_timerEx( sapi_TaskID, MY_START_EVT, myStartRetryDelay );
}
}
我想问这句
osal_start_timerEx( sapi_TaskID, MY_START_EVT, myStartRetryDelay );
有什么用呢,我把他屏蔽后,按键还是一样进行入网流程。
2.入网流程在不定义HOLD_AUTO_START的情况下是自动进行的,假如终端需要长时间不入网,但是需要进行其他动作,比如采集温度之类的,怎么处理才能较好的降低功耗?以下是否合理
UINT16 ZDApp_event_loop( uint8 task_id, UINT16 events )
{
uint8 *msg_ptr;
………………
if ( events & ZDO_NETWORK_INIT )
{
static uint8 joinCount=0;
// Initialize apps and start the network
devState = DEV_INIT;
osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );
#ifdef ED_SENSOR
if(joinCount++<20) { ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER ); } else { joinCount=0; MAC_RADIO_RXTX_OFF(); }
#else
ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );
#endif
// Return unprocessed events
return (events ^ ZDO_NETWORK_INIT);
}
如上,加网20次后关闭加网流程,并关闭RXTX。
我想在不使用RXTX的情况下,关闭32M外部晶振,启用16M内部RC,是否会影响温度采集进程?