cancel
Showing results for 
Search instead for 
Did you mean: 

Zigbee permit join timeout limit

tcpctrnk
Associate

Hello, I'm working on a project based on NUCLEO-WB55.USBDongle. 

According to Zigbee specification paragraph 3.6.1.2 referring to to the NLME-PERMIT-JOINING.request procedure:

When this procedure is initiated with the PermitDuration parameter set to a value between 0x01 and 0xfe, the NLME shall set the macAssociationPermit PIB attribute in the MAC sub-layer to TRUE. The NLME shall then start a timer to expire after the specified duration. On expiration of this timer, the NLME shall set the macAssociation-Permit PIB attribute in the MAC sub-layer to FALSE

When this procedure is initiated with the PermitDuration parameter set to 0xff, the NLME shall set the macAssociationPermit PIB attribute in the MAC sub-layer to TRUE for an unlimited amount of time, unless another NLME-PERMIT-JOINING.request primitive is issued.

I implemented the following code on coordinator to update the join permit:

  struct ZbZdoPermitJoinReqT req;

  memset(&req, 0, sizeof(req));
  req.destAddr = ZB_NWK_ADDR_BCAST_ROUTERS;
  req.tcSignificance = true;
  req.duration = ZB_PERMIT_JOIN_DURATION;

  enum ZbStatusCodeT status = ZbZdoPermitJoinReq(zigbee_app_info.zb ,&req, NULL, NULL);
  if (status != ZB_STATUS_SUCCESS) {
    USB_DBG_PRINT(LOG_LEVEL_CRIT, ">> NWK | error 0x%02x. Cannot update join permit.", status);
  }

 Everything works fine if ZB_PERMIT_JOIN_DURATION = 0xfe, but when I try to use ZB_PERMIT_JOIN_DURATION = 0xff I get an error code 0x80, corresponding to ZB_ZDP_STATUS_INV_REQTYPE. Am I missing something? Is the duration = 0xff not supported by the zigbee stack?

Also, is there any relevant difference in calling this function with .destAddr = ZB_NWK_ADDR_BCAST_ROUTERS vs .destAddr = ZB_NWK_ADDR_BCAST_ALL?

0 REPLIES 0