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(Zstack)動態更改PAN ID

您好,

        目前已將End-Device  和  coordinator  f8wConfig.cfg中變更為以下:

       -DZDAPP_CONFIG_PAN_ID=0xFFF0

       後續想使用方式動態更改每個End-Device的PAN ID(例如: 0x0002 )寫入NV去做分群網路管理,

  1. 有參考以下E2E連結,經測試後重開End-device依然可以與coordinator(PAN   ID :0xFFF0)連上線,更改無效

      https://e2echina.ti.com/question_answer/wireless_connectivity/zigbee/f/104/t/135315

  2. 後來參考以下這篇文章,加入定時器5秒後系統重啟zb_SystemReset(); ,系統重啟後,依然可以與coordinator(PAN   ID :0xFFF0)連上線,更改無效

      https://www.twblogs.net/a/5db33af2bd9eee310da03259

     使用以下程式碼: 

      uint16 mypanid = 0x1122;

      _NIB.nwkPanId = mypanid;

      NLME_UpdateNV(0x01);

      zgConfigPANID = mypanid;

      osal_nv_write(ZCD_NV_PANID, 0, osal_nv_item_len( ZCD_NV_PANID ), &zgConfigPANID);

      //要用定時器延時一段時間後再重啓,否則 osal_nv_write 會來不及執行

      osal_start_timerEx( SampleApp_TaskID,

                              SAMPLEAPP_RESET_EVT,

                              SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); 
  if ( events & SAMPLEAPP_RESET_EVT){
     zb_SystemReset();  
     return (events ^ SAMPLEAPP_RESET_EVT);
  }

3. 後來看到以下文章,文中說使用osal_nv_write();之前需要使用 osal_nv_item_init( uint16 id, uint16 len, void *buf ); ,我在使用第二點的程式碼前加了一行osal_nv_item_init(); ,以下為程式碼,經測試後系統重啟依然無法變更PAD ID

  https://www.cnblogs.com/killer-xc/p/5312031.html   

osal_nv_item_init(ZCD_NV_PANID,osal_nv_item_len( ZCD_NV_PANID ),NULL);

  uint16 mypanid = 0x1122;

      _NIB.nwkPanId = mypanid;

      NLME_UpdateNV(0x01);

      zgConfigPANID = mypanid;

      osal_nv_write(ZCD_NV_PANID, 0, osal_nv_item_len( ZCD_NV_PANID ), &zgConfigPANID);

      //要用定時器延時一段時間後再重啓,否則 osal_nv_write 會來不及執行

      osal_start_timerEx( SampleApp_TaskID,

                              SAMPLEAPP_RESET_EVT,

                              SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT ); 
  if ( events & SAMPLEAPP_RESET_EVT){
     zb_SystemReset();  
     return (events ^ SAMPLEAPP_RESET_EVT);
  }

想請教一下,是否我寫的程式碼有問題,或者有其他建議的方法呢? _NIB.nwkPanId 與 -DZDAPP_CONFIG_PAN_ID差異性是?  感謝您