[求助] 休眠模式下,终端节点搜索网络的时间间隔在哪里设置?

lin1413969042   2014-1-13 11:12 楼主
现在遇到的情况就是,在休眠模式下,我就只开启一个终端节点,怎么让它在固定的时间下搜索协调器,搜不到就进入休眠。这个时间我看了TI论坛,是说改#define BEACON_REQUEST_DELAY这个变长,但是实际好像没什么效果 本帖最后由 lin1413969042 于 2014-1-13 11:16 编辑

回复评论 (5)

TI ZStack支持beacon嘛?我貌似记得不支持,TIMAC支持
淘宝:https://viiot.taobao.com/Q群243090717 多年专业物联网行业经验,个人承接各类物联网外包项目
点赞  2014-1-14 21:00
这个功能好像Z-Stack目前不支持的,需要你自己编程序来实现。自己定义一个定时器,时间到就停止搜索网络。
点赞  2014-1-15 08:05
停止搜索网络在哪设置啊,我再osal_start_system()中加了ZDApp_stopjoiningcycle(),但是好像没起作用,也调用了osal_pwrmgr_powerconserve();功耗还是很大,怎么把功耗降下来,
点赞  2014-9-2 14:29
这个我有研究过,如果不配置DEV_HOLD,设备会一直加网,直到有网络。如果想要设备隔一段时间再加网,可以参照下面的做法(需要注意的是,我只验证了设备会按照设定的时间起来加网,并不能说明降低了功耗)。
#define NWK_INIT_fAIL_MAX     5
UINT16 ZDApp_event_loop( uint8 task_id, UINT16 events )

    ……
  if ( events & ZDO_NETWORK_INIT )
  {
    static uint8 initFailCounter = 0;       
    // Initialize apps and start the network
    devState = DEV_INIT;
    osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );
        //by asura 20140901
        if(initFailCounter++ >= NWK_INIT_fAIL_MAX )
    {
          osal_start_timerEx( ZDAppTaskID, ZDO_NETWORK_INIT, 60000 );
          initFailCounter = 0;
          return(events ^ ZDO_NETWORK_INIT);
        }
       
    ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
                     DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );

    // Return unprocessed events
    return (events ^ ZDO_NETWORK_INIT);
  }
……

这样更改以后,设备上电会首先尝试5次加网,如果都失败,其后就会每1分钟起来加网一次。
另外,由于osal_start_timerEx()第二个参数为uint16类型的,这样就限制了延迟时间的大小,我想问下,怎么设置5分钟或更长时间的延迟?
点赞  2014-9-4 10:59
最新的协议栈中osal_start_timerEx函数的时间参数已经是32位的了,可以定义更长时间的定时器了。
点赞  2014-9-5 09:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复