This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530(Z-stack) 斷網問題

Other Parts Discussed in Thread: Z-STACK

您好,

          想請教一下,以下兩個問題:

1. Coordinator與End-Device連線後,假設斷線,在Coordinator與End-Device的Z-Stack程序中,那部分可以知道彼此已經斷網的訊息呢?

2. 在斷網後,Coordinator或End-Device 使用哪種API可以發出beacon request呢?

  非常感謝您

  • 以Z-Stack 3.0.2的sampleSwitch為例,end device跟父節点断線時会進到zclSampleSw_ProcessCommissioningStatus 的 case BDB_COMMISSIONING_PARENT_LOST: 去启动osal_start_timerEx(zclSampleSw_TaskID, SAMPLEAPP_END_DEVICE_REJOIN_EVT, SAMPLEAPP_END_DEVICE_REJOIN_DELAY)作rejoin;至於協調器並無法得知end device断線、這部份可以透過應用程序去執行heart beat達成

  • beacon request可以用
    NLME_NetworkDiscoveryRequest
  • 感謝您的回覆,因我使用的是Z-stack-2.5.1a版本,沒發現case BDB_COMMISSIONING_PARENT_LOST,請問這兩個版本執行的模式是一樣的嗎? 感謝您
  • Z-stack-2.5.1a要去ZDO_STATE_CHANGE_EVT裡面檢查devState,如果devState不是DEV_END_DEVICE代表跟父節点断線可以透過NLME_NetworkDiscoveryRequest去找父節点
  • 好的,感謝您的回覆,使我獲益良多. 另請教另一個問題,當初會問斷網問題是因為,目前由於END-device使用上必須把設定改成-DRFD_RCVC_ALWAYS_ON=TRUE ,所以在父節點斷線再次上電後,END-device卻無法自動重連,是否可以建議一些方法可以解這問題,感謝您
  • 你RFD_RCVC_ALWAYS_ON=TRUE的END-device有設置polling嗎?
  • blog.csdn.net/.../76128050
    有嘗試使用這篇文章的方式,斷線後可以連回來一次,第二次斷線後就不行了
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    不過會設定RFD_RCVC_ALWAYS_ON=TRUE方式,是因為目前使用上父節點傳輸的資料約1232 bytes(切成16筆發送),要接的End-device約25個,如果25個子節點一連上線,全部一直發beacon request ,會造成父節點傳輸的時候造成封包碰撞,原本3秒鐘傳輸完成,會拉長到5分鐘或者更久(有實測過)...

    設置polling好像會跟原本方式一樣(一直發beacon request),或許是不是只能找end-device測知斷線的區段,再啟動beacon request的功能,重新連網了,感謝您
  • 設定RFD_RCVC_ALWAYS_ON=TRUE後不要把polling rate設置為0應該就可以解決你的問題

  • 您好,您是說f8wConfig.cfg中的以下參數,不要把polling rate設置為0嗎? 感謝

    -DPOLL_RATE=1000
    -DQUEUED_POLL_RATE=51
    -DRESPONSE_POLL_RATE=51
    -DREJOIN_POLL_RATE=440

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    我在ZDO_STATE_CHANGE_EVT中加printf訊息,發現在RFD_RCVC_ALWAYS_ON=TRUE斷網後,不會觸發ZDO_STATE_CHANGE_EVT ,還有其他地方可以觸發斷網狀態嗎? 不好意思麻煩您了,感謝

    if ( events & ZDO_STATE_CHANGE_EVT )
    {
    ZDO_UpdateNwkStatus( devState );

    // At start up, do one MTO route discovery if the device is a concentrator
    if ( zgConcentratorEnable == TRUE )
    {
    // Start next event
    osal_start_timerEx( NWK_TaskID, NWK_MTO_RTG_REQ_EVT, 100 );
    }

    // Return unprocessed events
    return (events ^ ZDO_STATE_CHANGE_EVT);
    }

  • 你提出的連結內的下面這些code要去掉
    NLME_SetPollRate( 0 );

    NLME_SetQueuedPollRate( 0 );

    NLME_SetResponseRate( 0 );