- uint32_t persistenceTime;
- persistenceTime = call MLME_GET.macTransactionPersistenceTime();
- persistenceTime *= IEEE154_aBaseSuperframeDuration;
- persistenceTime *= ((uint16_t) 1) << call MLME_GET.macBeaconOrder();
- return persistenceTime;
+ // transform macTransactionPersistenceTime PIB attribute
+ // from "unit periods" to symbols (cf. page 166)
+ uint32_t unitPeriod;
+ ieee154_macBeaconOrder_t BO = call MLME_GET.macBeaconOrder();
+
+ if (BO <= 14) {
+ unitPeriod = IEEE154_aBaseSuperframeDuration;
+ unitPeriod *= ((uint16_t) 1) << BO;
+ } else
+ unitPeriod = IEEE154_aBaseSuperframeDuration;
+ return unitPeriod * call MLME_GET.macTransactionPersistenceTime();