2025-03-04 2:29 AM
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?