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.

Channel Interference Resolution query in ZigbeePRO

Other Parts Discussed in Thread: Z-STACK

Hi guys,

I am interested in using the Channel inteference detection and resolution feature provided by Zstack 2.4 , everything about it is understood by me in the description provided in the Zstack Developer's Guide.pdf

But a couple of things is unclear because of the way my application is implemented

1) On Channel interference detection at the router/endevice does it do a scan on all channels or only those channels that is defined by the channel mask

2) On the Coordinator side also can it select a Channel which is not defined by the local channel mask

All other conditions being satisfied is this possible?

 

 

  • The channel mask of our Z-Stack found in the f8w cfg files decides what channels that are used for the energy and active scans preformed by the nodes in the network
    How do you utilize this network discovery to start you network?

    LPRF Rocks the World

  • Hi LPRF,

    Am using any one single channel mask at the coordinator and router, for example for channel no 21 i use this , #define DEFAULT_CHANLIST 0x00200000  // 21 - 0x15

    so according to this energy scans will be performed only on this one particular channel, so in case of inteference on a channel a new channel cannot be switched over to , is that what it means?

     

  • Hi LPRF,

    A question away from the point of discussion, Well can i have a way in which my default channel list is all channels (i.e #define DEFAULT_CHANLIST 0x07FFF800 ) which remains the same throught although i would be select the channel of operation by ZMacSetReq() and setting the channel no. and also store it in the flash so that on the next power cycle and hence forth the network operates on this channel.

    So in this case if the first query is in the way i speculate it to be , then i guess this would slove it ? 

     

  • Hi LPRF,

    I came across this function thats called when an inteference is detected, ZDNwkMgr_ProcessChannelInterference() in which it does an energy on all channels    

    // Conduct an energy scan on all channels.
        if ( NLME_EDScanRequest( MAX_CHANNELS_24GHZ, _NIB.scanDuration ) == ZSuccess )

    So according to it if the new proposed channel is something other than the only one thats unmasked in my application (i.e #define DEFAULT_CHANLIST 0x00200000  // 21 - 0x15) Then does the Network Manager( Coordinator in my app ) switches the network to the new channel , and is the new channellist (Channel mask) set to unmask the newly selected channel?  Is this what happens in the follwing piece of code in ZDNwkMgr_ProcessMgmtNwkUpdateReq(). 

        // Request is to change apsChannelMask and nwkManagerAddr
        if ( Req.nwkUpdateId > _NIB.nwkUpdateId )
        {
          NLME_SetUpdateID(Req.nwkUpdateId); // Set the updateID in the beacon
          
          if ( ( Req.channelMask != 0 ) && ( _NIB.channelList != Req.channelMask ) )
          {
            _NIB.channelList = Req.channelMask;
         
            // Our Channel List has been changed -- notify to save info into NV

    Thanks

  • HI LPRF,

    I was attempting to test the whole channel inteference and resolution procedure , i began at the router end by successfully sending periodic messages to the coordinator and receiving acks, after a while i switched off the coordinator so that the router would not receive any more ack for the frames being sent , i did all of this so that the stack could trigger the channel inteference logic , the execution reaches the point twhere the router calls NLME_EDScanRequest from the function ZDNwkMgr_ProcessChannelInterference() , the scan duration is set to 5 ,  the function NLME_EDScanRequest doesnt seem to return back to the point where its called it also doesnt seem to call ZMacScanReq() in zmac.c 

    I tried calling  NLME_EDScanRequest  explicitly from my application with the same arguments and it performs a scan successfully and returns success.

    Note that when in function ZDNwkMgr_ProcessChannelInterference i stop sending any further periodic frames.

    What seems to be the issue?

    Thanks