cancel
Showing results for 
Search instead for 
Did you mean: 

The stm32wb5mmg terminal can join the network with the specified panid

sumuzhe201
Associate

1. Requirement description

It is expected that the terminal can join the network with the specified panid

2. Problems encountered during the test

2.1 It was found that the given function ZbStartup cannot enable the terminal to join the network with the specified panid.

2.2 Attempt to use a lower-level function, the network layer function ZbNlmeNetDiscReq, to make a network discovery request. This function returned successfully. In the corresponding callback function, use ZbNwkGetIndex to obtain the network list. This function also returned successfully. However, the network list information has never been obtained (the actual space does have a network). If the network information can be obtained at this stage, the panid can be filtered, but currently, the network information cannot be obtained.

2.3 By using the ZbNlmeJoinReq function of the network layer to join the network, it was found that this function was only declared in the header file zigbee.nwk.h. This function was not defined in the protocol stack, and IAR could not compile successfully. Currently, this function cannot be used.

2.4 If it is implemented to enable the terminal to join the network with the specified panid, are there any other ways?

1 ACCEPTED SOLUTION

Accepted Solutions

Hi,

We have been informed that the issue is fixed and was linked to the implementation of the NLME - Discovery Request.

The use of NwkDiscoveryTableCount should be done after performing "ZbNlmeNetDiscReq", otherwise the scanned network list will be empty.

Please find the way to implement ZbNlmeNetDiscReq :

struct ZbNlmeNetDiscReqT req;
  memset(&req, 0, sizeof(req));
  /* 2.4 GHz channels are on page 0; bits 11..26 correspond to channels 11..26 */
  req.scanChannels.count = 1;
  req.scanChannels.list[0].page = 0;
  req.scanChannels.list[0].channelMask = 1 << CHANNEL; 	/*Channel         in use */
  req.scanDuration = 4;                       					   /*   typical value */
  ZbNlmeNetDiscReq(zigbee_app_info.zb, &req, NetDiscCallback, NULL);
// Callback Example :
static void NetDiscCallback(struct ZbNlmeNetDiscConfT *conf, void *arg)
{
    if (conf->status != ZB_STATUS_SUCCESS) {
        /* handle error */
        return;
    }
}

Regards,

Ouadi

View solution in original post

2 REPLIES 2
Ouadi
ST Employee

Hi @sumuzhe201,

According to Zigbee Specification, a join request cannot be formed with only PAN ID, this is not safe, the Extended PAN ID should be used at least. 

2.2 Can you please share the implementations of both ZbNlmeNetDiscReq and ZbNwkGetIndex in your application ? This may be an issue preventing from retrieving the scanned network list.

Best regards,

Ouadi

Hi,

We have been informed that the issue is fixed and was linked to the implementation of the NLME - Discovery Request.

The use of NwkDiscoveryTableCount should be done after performing "ZbNlmeNetDiscReq", otherwise the scanned network list will be empty.

Please find the way to implement ZbNlmeNetDiscReq :

struct ZbNlmeNetDiscReqT req;
  memset(&req, 0, sizeof(req));
  /* 2.4 GHz channels are on page 0; bits 11..26 correspond to channels 11..26 */
  req.scanChannels.count = 1;
  req.scanChannels.list[0].page = 0;
  req.scanChannels.list[0].channelMask = 1 << CHANNEL; 	/*Channel         in use */
  req.scanDuration = 4;                       					   /*   typical value */
  ZbNlmeNetDiscReq(zigbee_app_info.zb, &req, NetDiscCallback, NULL);
// Callback Example :
static void NetDiscCallback(struct ZbNlmeNetDiscConfT *conf, void *arg)
{
    if (conf->status != ZB_STATUS_SUCCESS) {
        /* handle error */
        return;
    }
}

Regards,

Ouadi