Lines Matching refs:Ctx
102 static LoRaMacClassBCtx_t Ctx; variable
178 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in CalcDownlinkFrequency()
215 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in CalcDownlinkChannelAndFrequency()
223 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in CalcDownlinkChannelAndFrequency()
257 … if( ( Ctx.BeaconCtx.Ctrl.BeaconAcquired == 1 ) || ( Ctx.BeaconCtx.Ctrl.AcquisitionPending == 1 ) ) in CalculateBeaconRxWindowConfig()
263 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in CalculateBeaconRxWindowConfig()
267 maxRxError = MAX( Ctx.LoRaMacClassBParams.LoRaMacParams->SystemMaxRxError, in CalculateBeaconRxWindowConfig()
268 ( uint32_t ) Ctx.BeaconCtx.BeaconTimePrecision.SubSeconds ); in CalculateBeaconRxWindowConfig()
271 RegionComputeRxWindowParameters( *Ctx.LoRaMacClassBParams.LoRaMacRegion, in CalculateBeaconRxWindowConfig()
273 Ctx.LoRaMacClassBParams.LoRaMacParams->MinRxSymbols, in CalculateBeaconRxWindowConfig()
302 …frequency = CalcDownlinkChannelAndFrequency( 0, Ctx.BeaconCtx.BeaconTime.Seconds + ( CLASSB_BEACON… in RxBeaconSetup()
312 if( Ctx.BeaconCtx.Ctrl.BeaconChannelSet == 1 ) in RxBeaconSetup()
315 Ctx.BeaconCtx.Ctrl.BeaconChannelSet = 0; in RxBeaconSetup()
316 frequency = CalcDownlinkFrequency( Ctx.BeaconCtx.BeaconTimingChannel, true ); in RxBeaconSetup()
323 …RegionRxBeaconSetup( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &rxBeaconSetup, &Ctx.LoRaMacClassBPar… in RxBeaconSetup()
325 Ctx.LoRaMacClassBParams.MlmeIndication->BeaconInfo.Frequency = frequency; in RxBeaconSetup()
326 …Ctx.LoRaMacClassBParams.MlmeIndication->BeaconInfo.Datarate = Ctx.LoRaMacClassBParams.McpsIndicati… in RxBeaconSetup()
345 …slotTime = ( ( currentTime - SysTimeToMs( Ctx.BeaconCtx.LastBeaconRx ) ) % CLASSB_BEACON_INTERVAL … in CalcNextSlotTime()
362 …if( slotTime <= ( SysTimeToMs( Ctx.BeaconCtx.NextBeaconRx ) - CLASSB_BEACON_GUARD - CLASSB_PING_SL… in CalcNextSlotTime()
367 slotTime = TimerTempCompensation( slotTime, Ctx.BeaconCtx.Temperature ); in CalcNextSlotTime()
418 if( Ctx.LoRaMacClassBCallbacks.MacProcessNotify != NULL ) in OnClassBMacProcessNotify()
420 Ctx.LoRaMacClassBCallbacks.MacProcessNotify( ); in OnClassBMacProcessNotify()
434 memset1( ( uint8_t* ) &Ctx.PingSlotCtx, 0, sizeof( PingSlotContext_t ) ); in InitClassB()
435 memset1( ( uint8_t* ) &Ctx.BeaconCtx, 0, sizeof( BeaconContext_t ) ); in InitClassB()
438 Ctx.BeaconCtx.Temperature = 25.0; in InitClassB()
439 GetTemperatureLevel( &Ctx.LoRaMacClassBCallbacks, &Ctx.BeaconCtx ); in InitClassB()
443 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in InitClassB()
450 Ctx.BeaconState = BEACON_STATE_ACQUISITION; in InitClassB()
451 Ctx.PingSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in InitClassB()
452 Ctx.MulticastSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in InitClassB()
477 Ctx.BeaconCtx.BeaconWindowMovement *= CLASSB_WINDOW_MOVE_EXPANSION_FACTOR; in EnlargeWindowTimeout()
478 if( Ctx.BeaconCtx.BeaconWindowMovement > CLASSB_WINDOW_MOVE_EXPANSION_MAX ) in EnlargeWindowTimeout()
480 Ctx.BeaconCtx.BeaconWindowMovement = CLASSB_WINDOW_MOVE_EXPANSION_MAX; in EnlargeWindowTimeout()
483 Ctx.BeaconCtx.SymbolTimeout *= CLASSB_BEACON_SYMBOL_TO_EXPANSION_FACTOR; in EnlargeWindowTimeout()
484 if( Ctx.BeaconCtx.SymbolTimeout > CLASSB_BEACON_SYMBOL_TO_EXPANSION_MAX ) in EnlargeWindowTimeout()
486 Ctx.BeaconCtx.SymbolTimeout = CLASSB_BEACON_SYMBOL_TO_EXPANSION_MAX; in EnlargeWindowTimeout()
488 Ctx.PingSlotCtx.SymbolTimeout *= CLASSB_BEACON_SYMBOL_TO_EXPANSION_FACTOR; in EnlargeWindowTimeout()
489 if( Ctx.PingSlotCtx.SymbolTimeout > CLASSB_PING_SLOT_SYMBOL_TO_EXPANSION_MAX ) in EnlargeWindowTimeout()
491 Ctx.PingSlotCtx.SymbolTimeout = CLASSB_PING_SLOT_SYMBOL_TO_EXPANSION_MAX; in EnlargeWindowTimeout()
497 Ctx.BeaconCtx.SymbolTimeout = CLASSB_BEACON_SYMBOL_TO_DEFAULT; in ResetWindowTimeout()
498 Ctx.PingSlotCtx.SymbolTimeout = CLASSB_BEACON_SYMBOL_TO_DEFAULT; in ResetWindowTimeout()
499 Ctx.BeaconCtx.BeaconWindowMovement = CLASSB_WINDOW_MOVE_DEFAULT; in ResetWindowTimeout()
513 if( Ctx.BeaconCtx.Ctrl.ResumeBeaconing == 0 ) in IndicateBeaconStatus()
515 Ctx.LoRaMacClassBParams.MlmeIndication->MlmeIndication = MLME_BEACON; in IndicateBeaconStatus()
516 Ctx.LoRaMacClassBParams.MlmeIndication->Status = status; in IndicateBeaconStatus()
517 Ctx.LoRaMacClassBParams.LoRaMacFlags->Bits.MlmeInd = 1; in IndicateBeaconStatus()
519 Ctx.LoRaMacClassBParams.LoRaMacFlags->Bits.MacDone = 1; in IndicateBeaconStatus()
521 Ctx.BeaconCtx.Ctrl.ResumeBeaconing = 0; in IndicateBeaconStatus()
542 …beaconEventTime = CalcDelayForNextBeacon( currentTime, SysTimeToMs( Ctx.BeaconCtx.LastBeaconRx ) ); in UpdateBeaconState()
543 Ctx.BeaconCtx.NextBeaconRx = SysTimeFromMs( currentTime + beaconEventTime ); in UpdateBeaconState()
546 beaconEventTime = TimerTempCompensation( beaconEventTime, Ctx.BeaconCtx.Temperature ); in UpdateBeaconState()
553 Ctx.BeaconCtx.NextBeaconRxAdjusted = currentTime + beaconEventTime; in UpdateBeaconState()
630 Ctx.LoRaMacClassBCallbacks = *callbacks; in LoRaMacClassBInit()
633 Ctx.LoRaMacClassBParams = *classBParams; in LoRaMacClassBInit()
636 TimerInit( &Ctx.BeaconTimer, LoRaMacClassBBeaconTimerEvent ); in LoRaMacClassBInit()
637 TimerInit( &Ctx.PingSlotTimer, LoRaMacClassBPingSlotTimerEvent ); in LoRaMacClassBInit()
638 TimerInit( &Ctx.MulticastSlotTimer, LoRaMacClassBMulticastSlotTimerEvent ); in LoRaMacClassBInit()
651 if( ( Ctx.BeaconCtx.Ctrl.BeaconDelaySet == 1 ) && in LoRaMacClassBSetBeaconState()
654 Ctx.BeaconState = BEACON_STATE_ACQUISITION_BY_TIME; in LoRaMacClassBSetBeaconState()
658 Ctx.BeaconState = beaconState; in LoRaMacClassBSetBeaconState()
663 if( ( Ctx.BeaconState != BEACON_STATE_ACQUISITION ) && in LoRaMacClassBSetBeaconState()
664 ( Ctx.BeaconState != BEACON_STATE_ACQUISITION_BY_TIME ) ) in LoRaMacClassBSetBeaconState()
666 Ctx.BeaconState = beaconState; in LoRaMacClassBSetBeaconState()
675 Ctx.PingSlotState = pingSlotState; in LoRaMacClassBSetPingSlotState()
682 Ctx.MulticastSlotState = multicastSlotState; in LoRaMacClassBSetMulticastSlotState()
689 if( Ctx.BeaconState == BEACON_STATE_ACQUISITION_BY_TIME ) in LoRaMacClassBIsAcquisitionInProgress()
710 Ctx.BeaconCtx.TimeStamp = TimerGetCurrentTime( ); in LoRaMacClassBBeaconTimerEvent()
711 TimerStop( &Ctx.BeaconTimer ); in LoRaMacClassBBeaconTimerEvent()
724 TimerTime_t beaconTimestamp = Ctx.BeaconCtx.TimeStamp; in LoRaMacClassBProcessBeacon()
727 switch( Ctx.BeaconState ) in LoRaMacClassBProcessBeacon()
733 if( Ctx.BeaconCtx.Ctrl.AcquisitionPending == 1 ) in LoRaMacClassBProcessBeacon()
736 Ctx.BeaconState = BEACON_STATE_LOST; in LoRaMacClassBProcessBeacon()
743 if( Ctx.BeaconCtx.Ctrl.BeaconDelaySet == 1 ) in LoRaMacClassBProcessBeacon()
746 CalculateBeaconRxWindowConfig( &beaconRxConfig, Ctx.BeaconCtx.SymbolTimeout ); in LoRaMacClassBProcessBeacon()
748 if( Ctx.BeaconCtx.BeaconTimingDelay > 0 ) in LoRaMacClassBProcessBeacon()
751 if( SysTimeToMs( Ctx.BeaconCtx.NextBeaconRx ) > now ) in LoRaMacClassBProcessBeacon()
754 …beaconEventTime = TimerTempCompensation( SysTimeToMs( Ctx.BeaconCtx.NextBeaconRx ) - now, Ctx.Beac… in LoRaMacClassBProcessBeacon()
765 Ctx.BeaconCtx.Ctrl.BeaconDelaySet = 0; in LoRaMacClassBProcessBeacon()
766 Ctx.BeaconCtx.Ctrl.BeaconChannelSet = 0; in LoRaMacClassBProcessBeacon()
767 Ctx.BeaconState = BEACON_STATE_ACQUISITION; in LoRaMacClassBProcessBeacon()
769 Ctx.BeaconCtx.BeaconTimingDelay = 0; in LoRaMacClassBProcessBeacon()
776 Ctx.BeaconCtx.Ctrl.BeaconDelaySet = 0; in LoRaMacClassBProcessBeacon()
778 Ctx.BeaconCtx.Ctrl.AcquisitionPending = 1; in LoRaMacClassBProcessBeacon()
787 Ctx.BeaconCtx.NextBeaconRx.Seconds = 0; in LoRaMacClassBProcessBeacon()
788 Ctx.BeaconCtx.NextBeaconRx.SubSeconds = 0; in LoRaMacClassBProcessBeacon()
789 Ctx.BeaconCtx.BeaconTimingDelay = 0; in LoRaMacClassBProcessBeacon()
791 Ctx.BeaconState = BEACON_STATE_ACQUISITION; in LoRaMacClassBProcessBeacon()
800 if( Ctx.BeaconCtx.Ctrl.AcquisitionPending == 1 ) in LoRaMacClassBProcessBeacon()
803 Ctx.BeaconState = BEACON_STATE_LOST; in LoRaMacClassBProcessBeacon()
810 Ctx.BeaconCtx.Ctrl.AcquisitionPending = 1; in LoRaMacClassBProcessBeacon()
814 CalculateBeaconRxWindowConfig( &beaconRxConfig, Ctx.BeaconCtx.SymbolTimeout ); in LoRaMacClassBProcessBeacon()
828 Ctx.BeaconCtx.BeaconTime.Seconds += ( CLASSB_BEACON_INTERVAL / 1000 ); in LoRaMacClassBProcessBeacon()
829 Ctx.BeaconCtx.BeaconTime.SubSeconds = 0; in LoRaMacClassBProcessBeacon()
835 Ctx.BeaconState = BEACON_STATE_REACQUISITION; in LoRaMacClassBProcessBeacon()
843 Ctx.BeaconCtx.Ctrl.BeaconAcquired = 0; in LoRaMacClassBProcessBeacon()
846 …if( ( beaconTimestamp - SysTimeToMs( Ctx.BeaconCtx.LastBeaconRx ) ) > CLASSB_MAX_BEACON_LESS_PERIO… in LoRaMacClassBProcessBeacon()
848 Ctx.BeaconState = BEACON_STATE_LOST; in LoRaMacClassBProcessBeacon()
854 … Ctx.BeaconCtx.BeaconWindowMovement, beaconTimestamp ); in LoRaMacClassBProcessBeacon()
857 Ctx.BeaconState = BEACON_STATE_IDLE; in LoRaMacClassBProcessBeacon()
866 Ctx.BeaconCtx.Ctrl.AcquisitionPending = 0; in LoRaMacClassBProcessBeacon()
873 if( Ctx.LoRaMacClassBParams.LoRaMacFlags->Bits.MlmeReq == 1 ) in LoRaMacClassBProcessBeacon()
878 Ctx.LoRaMacClassBParams.MlmeConfirm->TxTimeOnAir = 0; in LoRaMacClassBProcessBeacon()
883 Ctx.BeaconState = BEACON_STATE_IDLE; in LoRaMacClassBProcessBeacon()
889 GetTemperatureLevel( &Ctx.LoRaMacClassBCallbacks, &Ctx.BeaconCtx ); in LoRaMacClassBProcessBeacon()
890 beaconEventTime = Ctx.BeaconCtx.NextBeaconRxAdjusted - Radio.GetWakeupTime( ); in LoRaMacClassBProcessBeacon()
894 CalculateBeaconRxWindowConfig( &beaconRxConfig, Ctx.BeaconCtx.SymbolTimeout ); in LoRaMacClassBProcessBeacon()
898 Ctx.BeaconState = BEACON_STATE_GUARD; in LoRaMacClassBProcessBeacon()
900 … beaconEventTime = TimerTempCompensation( beaconEventTime, Ctx.BeaconCtx.Temperature ); in LoRaMacClassBProcessBeacon()
910 Ctx.BeaconState = BEACON_STATE_REACQUISITION; in LoRaMacClassBProcessBeacon()
917 Ctx.BeaconState = BEACON_STATE_RX; in LoRaMacClassBProcessBeacon()
930 if( Ctx.LoRaMacClassBParams.LoRaMacFlags->Bits.MlmeReq == 1 ) in LoRaMacClassBProcessBeacon()
939 Ctx.LoRaMacClassBParams.MlmeIndication->MlmeIndication = MLME_BEACON_LOST; in LoRaMacClassBProcessBeacon()
940 Ctx.LoRaMacClassBParams.MlmeIndication->Status = LORAMAC_EVENT_INFO_STATUS_OK; in LoRaMacClassBProcessBeacon()
941 Ctx.LoRaMacClassBParams.LoRaMacFlags->Bits.MlmeInd = 1; in LoRaMacClassBProcessBeacon()
950 Ctx.LoRaMacClassBParams.LoRaMacFlags->Bits.MacDone = 1; in LoRaMacClassBProcessBeacon()
956 Ctx.BeaconState = BEACON_STATE_ACQUISITION; in LoRaMacClassBProcessBeacon()
963 TimerSetValue( &Ctx.BeaconTimer, beaconEventTime ); in LoRaMacClassBProcessBeacon()
964 TimerStart( &Ctx.BeaconTimer ); in LoRaMacClassBProcessBeacon()
986 switch( Ctx.PingSlotState ) in LoRaMacClassBProcessPingSlot()
990 ComputePingOffset( Ctx.BeaconCtx.BeaconTime.Seconds, in LoRaMacClassBProcessPingSlot()
991 *Ctx.LoRaMacClassBParams.LoRaMacDevAddr, in LoRaMacClassBProcessPingSlot()
993 &( Ctx.PingSlotCtx.PingOffset ) ); in LoRaMacClassBProcessPingSlot()
994 Ctx.PingSlotState = PINGSLOT_STATE_SET_TIMER; in LoRaMacClassBProcessPingSlot()
999 …if( CalcNextSlotTime( Ctx.PingSlotCtx.PingOffset, ClassBNvm->PingSlotCtx.PingPeriod, ClassBNvm->Pi… in LoRaMacClassBProcessPingSlot()
1001 if( Ctx.BeaconCtx.Ctrl.BeaconAcquired == 1 ) in LoRaMacClassBProcessPingSlot()
1005 maxRxError = MAX( Ctx.LoRaMacClassBParams.LoRaMacParams->SystemMaxRxError , in LoRaMacClassBProcessPingSlot()
1006 ( uint32_t ) Ctx.BeaconCtx.BeaconTimePrecision.SubSeconds ); in LoRaMacClassBProcessPingSlot()
1010 RegionComputeRxWindowParameters( *Ctx.LoRaMacClassBParams.LoRaMacRegion, in LoRaMacClassBProcessPingSlot()
1012 … Ctx.LoRaMacClassBParams.LoRaMacParams->MinRxSymbols, in LoRaMacClassBProcessPingSlot()
1015 Ctx.PingSlotCtx.SymbolTimeout = pingSlotRxConfig.WindowTimeout; in LoRaMacClassBProcessPingSlot()
1024 Ctx.PingSlotState = PINGSLOT_STATE_IDLE; in LoRaMacClassBProcessPingSlot()
1025 TimerSetValue( &Ctx.PingSlotTimer, pingSlotTime ); in LoRaMacClassBProcessPingSlot()
1026 TimerStart( &Ctx.PingSlotTimer ); in LoRaMacClassBProcessPingSlot()
1038 …frequency = CalcDownlinkChannelAndFrequency( *Ctx.LoRaMacClassBParams.LoRaMacDevAddr, Ctx.BeaconCt… in LoRaMacClassBProcessPingSlot()
1042 if( Ctx.PingSlotCtx.NextMulticastChannel != NULL ) in LoRaMacClassBProcessPingSlot()
1045 …slotHasPriority = CheckSlotPriority( *Ctx.LoRaMacClassBParams.LoRaMacDevAddr, ClassBNvm->PingSlotC… in LoRaMacClassBProcessPingSlot()
1046 …Ctx.PingSlotCtx.NextMulticastChannel->ChannelParams.Address, Ctx.PingSlotCtx.NextMulticastChannel-… in LoRaMacClassBProcessPingSlot()
1051 if( ( Ctx.MulticastSlotState != PINGSLOT_STATE_RX ) || ( slotHasPriority == true ) ) in LoRaMacClassBProcessPingSlot()
1053 if( Ctx.MulticastSlotState == PINGSLOT_STATE_RX ) in LoRaMacClassBProcessPingSlot()
1057 Ctx.MulticastSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBProcessPingSlot()
1058 TimerSetValue( &Ctx.MulticastSlotTimer, CLASSB_PING_SLOT_WINDOW ); in LoRaMacClassBProcessPingSlot()
1059 TimerStart( &Ctx.MulticastSlotTimer ); in LoRaMacClassBProcessPingSlot()
1062 Ctx.PingSlotState = PINGSLOT_STATE_RX; in LoRaMacClassBProcessPingSlot()
1065 … pingSlotRxConfig.DownlinkDwellTime = Ctx.LoRaMacClassBParams.LoRaMacParams->DownlinkDwellTime; in LoRaMacClassBProcessPingSlot()
1069 pingSlotRxConfig.NetworkActivation = *Ctx.LoRaMacClassBParams.NetworkActivation; in LoRaMacClassBProcessPingSlot()
1071 …RegionRxConfig( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &pingSlotRxConfig, ( int8_t* )&Ctx.LoRaMac… in LoRaMacClassBProcessPingSlot()
1075 Radio.Rx( Ctx.LoRaMacClassBParams.LoRaMacParams->MaxRxWindow ); in LoRaMacClassBProcessPingSlot()
1085 Ctx.PingSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBProcessPingSlot()
1086 TimerSetValue( &Ctx.PingSlotTimer, CLASSB_PING_SLOT_WINDOW ); in LoRaMacClassBProcessPingSlot()
1087 TimerStart( &Ctx.PingSlotTimer ); in LoRaMacClassBProcessPingSlot()
1093 Ctx.PingSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBProcessPingSlot()
1116 MulticastCtx_t *cur = Ctx.LoRaMacClassBParams.MulticastChannels; in LoRaMacClassBProcessMulticastSlot()
1124 if( Ctx.MulticastSlotState == PINGSLOT_STATE_RX ) in LoRaMacClassBProcessMulticastSlot()
1130 switch( Ctx.MulticastSlotState ) in LoRaMacClassBProcessMulticastSlot()
1139 ComputePingOffset( Ctx.BeaconCtx.BeaconTime.Seconds, in LoRaMacClassBProcessMulticastSlot()
1146 Ctx.MulticastSlotState = PINGSLOT_STATE_SET_TIMER; in LoRaMacClassBProcessMulticastSlot()
1151 cur = Ctx.LoRaMacClassBParams.MulticastChannels; in LoRaMacClassBProcessMulticastSlot()
1152 Ctx.PingSlotCtx.NextMulticastChannel = NULL; in LoRaMacClassBProcessMulticastSlot()
1165 Ctx.PingSlotCtx.NextMulticastChannel = cur; in LoRaMacClassBProcessMulticastSlot()
1173 if( Ctx.PingSlotCtx.NextMulticastChannel != NULL ) in LoRaMacClassBProcessMulticastSlot()
1175 if( Ctx.BeaconCtx.Ctrl.BeaconAcquired == 1 ) in LoRaMacClassBProcessMulticastSlot()
1180 maxRxError = MAX( Ctx.LoRaMacClassBParams.LoRaMacParams->SystemMaxRxError , in LoRaMacClassBProcessMulticastSlot()
1181 ( uint32_t ) Ctx.BeaconCtx.BeaconTimePrecision.SubSeconds ); in LoRaMacClassBProcessMulticastSlot()
1183 RegionComputeRxWindowParameters( *Ctx.LoRaMacClassBParams.LoRaMacRegion, in LoRaMacClassBProcessMulticastSlot()
1185 … Ctx.LoRaMacClassBParams.LoRaMacParams->MinRxSymbols, in LoRaMacClassBProcessMulticastSlot()
1188 Ctx.PingSlotCtx.SymbolTimeout = multicastSlotRxConfig.WindowTimeout; in LoRaMacClassBProcessMulticastSlot()
1197 Ctx.MulticastSlotState = PINGSLOT_STATE_IDLE; in LoRaMacClassBProcessMulticastSlot()
1198 TimerSetValue( &Ctx.MulticastSlotTimer, multicastSlotTime ); in LoRaMacClassBProcessMulticastSlot()
1199 TimerStart( &Ctx.MulticastSlotTimer ); in LoRaMacClassBProcessMulticastSlot()
1208 if( Ctx.PingSlotCtx.NextMulticastChannel == NULL ) in LoRaMacClassBProcessMulticastSlot()
1210 Ctx.MulticastSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBProcessMulticastSlot()
1211 TimerSetValue( &Ctx.MulticastSlotTimer, 1 ); in LoRaMacClassBProcessMulticastSlot()
1212 TimerStart( &Ctx.MulticastSlotTimer ); in LoRaMacClassBProcessMulticastSlot()
1217 … frequency = Ctx.PingSlotCtx.NextMulticastChannel->ChannelParams.RxParams.Params.ClassB.Frequency; in LoRaMacClassBProcessMulticastSlot()
1223 …frequency = CalcDownlinkChannelAndFrequency( Ctx.PingSlotCtx.NextMulticastChannel->ChannelParams.A… in LoRaMacClassBProcessMulticastSlot()
1224 … Ctx.BeaconCtx.BeaconTime.Seconds, CLASSB_BEACON_INTERVAL, false ); in LoRaMacClassBProcessMulticastSlot()
1228 …slotHasPriority = CheckSlotPriority( Ctx.PingSlotCtx.NextMulticastChannel->ChannelParams.Address, … in LoRaMacClassBProcessMulticastSlot()
1229 … *Ctx.LoRaMacClassBParams.LoRaMacDevAddr, ClassBNvm->PingSlotCtx.FPendingSet, 0 ); in LoRaMacClassBProcessMulticastSlot()
1233 if( ( Ctx.PingSlotState != PINGSLOT_STATE_RX ) || ( slotHasPriority == true ) ) in LoRaMacClassBProcessMulticastSlot()
1235 if( Ctx.PingSlotState == PINGSLOT_STATE_RX ) in LoRaMacClassBProcessMulticastSlot()
1239 Ctx.PingSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBProcessMulticastSlot()
1240 TimerSetValue( &Ctx.PingSlotTimer, CLASSB_PING_SLOT_WINDOW ); in LoRaMacClassBProcessMulticastSlot()
1241 TimerStart( &Ctx.PingSlotTimer ); in LoRaMacClassBProcessMulticastSlot()
1244 Ctx.MulticastSlotState = PINGSLOT_STATE_RX; in LoRaMacClassBProcessMulticastSlot()
1246 …multicastSlotRxConfig.Datarate = Ctx.PingSlotCtx.NextMulticastChannel->ChannelParams.RxParams.Para… in LoRaMacClassBProcessMulticastSlot()
1247 …multicastSlotRxConfig.DownlinkDwellTime = Ctx.LoRaMacClassBParams.LoRaMacParams->DownlinkDwellTime; in LoRaMacClassBProcessMulticastSlot()
1251 … multicastSlotRxConfig.NetworkActivation = *Ctx.LoRaMacClassBParams.NetworkActivation; in LoRaMacClassBProcessMulticastSlot()
1253 …RegionRxConfig( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &multicastSlotRxConfig, ( int8_t* )&Ctx.Lo… in LoRaMacClassBProcessMulticastSlot()
1257 Radio.Rx( Ctx.LoRaMacClassBParams.LoRaMacParams->MaxRxWindow ); in LoRaMacClassBProcessMulticastSlot()
1267 Ctx.MulticastSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBProcessMulticastSlot()
1268 TimerSetValue( &Ctx.MulticastSlotTimer, CLASSB_PING_SLOT_WINDOW ); in LoRaMacClassBProcessMulticastSlot()
1269 TimerStart( &Ctx.MulticastSlotTimer ); in LoRaMacClassBProcessMulticastSlot()
1275 Ctx.MulticastSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBProcessMulticastSlot()
1294 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in LoRaMacClassBRxBeacon()
1297 if( ( Ctx.BeaconState == BEACON_STATE_RX ) || ( Ctx.BeaconCtx.Ctrl.AcquisitionPending == 1 ) ) in LoRaMacClassBRxBeacon()
1317 …Ctx.LoRaMacClassBParams.MlmeIndication->BeaconInfo.Param = ( payload[phyParam.BeaconFormat.Rfu1Siz… in LoRaMacClassBRxBeacon()
1319 …Ctx.BeaconCtx.BeaconTimePrecision.SubSeconds = BeaconPrecTimeValue[Ctx.LoRaMacClassBParams.MlmeInd… in LoRaMacClassBRxBeacon()
1322 …Ctx.BeaconCtx.BeaconTime.Seconds = ( ( uint32_t )payload[phyParam.BeaconFormat.Rfu1Size + 1] ) & … in LoRaMacClassBRxBeacon()
1323 …Ctx.BeaconCtx.BeaconTime.Seconds |= ( ( uint32_t )( payload[phyParam.BeaconFormat.Rfu1Size + 2] <<… in LoRaMacClassBRxBeacon()
1324 …Ctx.BeaconCtx.BeaconTime.Seconds |= ( ( uint32_t )( payload[phyParam.BeaconFormat.Rfu1Size + 3] <<… in LoRaMacClassBRxBeacon()
1325 …Ctx.BeaconCtx.BeaconTime.Seconds |= ( ( uint32_t )( payload[phyParam.BeaconFormat.Rfu1Size + 4] <<… in LoRaMacClassBRxBeacon()
1326 Ctx.BeaconCtx.BeaconTime.SubSeconds = 0; in LoRaMacClassBRxBeacon()
1327 Ctx.LoRaMacClassBParams.MlmeIndication->BeaconInfo.Time = Ctx.BeaconCtx.BeaconTime; in LoRaMacClassBRxBeacon()
1341 …Ctx.LoRaMacClassBParams.MlmeIndication->BeaconInfo.GwSpecific.InfoDesc = payload[phyParam.BeaconFo… in LoRaMacClassBRxBeacon()
1342 …memcpy1( Ctx.LoRaMacClassBParams.MlmeIndication->BeaconInfo.GwSpecific.Info, &payload[phyParam.Bea… in LoRaMacClassBRxBeacon()
1352 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in LoRaMacClassBRxBeacon()
1356 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in LoRaMacClassBRxBeacon()
1360 phyParam = RegionGetPhyParam( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &getPhy ); in LoRaMacClassBRxBeacon()
1368 Ctx.BeaconCtx.LastBeaconRx = Ctx.BeaconCtx.BeaconTime; in LoRaMacClassBRxBeacon()
1369 Ctx.BeaconCtx.LastBeaconRx.Seconds += UNIX_GPS_EPOCH_OFFSET; in LoRaMacClassBRxBeacon()
1372 SysTimeSet( SysTimeAdd( Ctx.BeaconCtx.LastBeaconRx, timeOnAir ) ); in LoRaMacClassBRxBeacon()
1374 Ctx.BeaconCtx.Ctrl.BeaconAcquired = 1; in LoRaMacClassBRxBeacon()
1375 Ctx.BeaconCtx.Ctrl.BeaconMode = 1; in LoRaMacClassBRxBeacon()
1377 Ctx.BeaconState = BEACON_STATE_LOCKED; in LoRaMacClassBRxBeacon()
1383 if( Ctx.BeaconState == BEACON_STATE_RX ) in LoRaMacClassBRxBeacon()
1385 Ctx.BeaconState = BEACON_STATE_TIMEOUT; in LoRaMacClassBRxBeacon()
1406 if( ( Ctx.BeaconCtx.Ctrl.AcquisitionPending == 1 ) || in LoRaMacClassBIsBeaconExpected()
1407 ( Ctx.BeaconState == BEACON_STATE_RX ) ) in LoRaMacClassBIsBeaconExpected()
1420 if( Ctx.PingSlotState == PINGSLOT_STATE_RX ) in LoRaMacClassBIsPingExpected()
1433 if( Ctx.MulticastSlotState == PINGSLOT_STATE_RX ) in LoRaMacClassBIsMulticastExpected()
1446 if( Ctx.BeaconCtx.Ctrl.AcquisitionPending == 1 ) in LoRaMacClassBIsAcquisitionPending()
1459 if( ( Ctx.BeaconCtx.Ctrl.BeaconMode == 1 ) || in LoRaMacClassBIsBeaconModeActive()
1460 ( Ctx.BeaconState == BEACON_STATE_ACQUISITION_BY_TIME ) ) in LoRaMacClassBIsBeaconModeActive()
1481 if( Ctx.BeaconCtx.Ctrl.BeaconMode == 1 ) in LoRaMacClassBHaltBeaconing()
1483 if( ( Ctx.BeaconState == BEACON_STATE_TIMEOUT ) || in LoRaMacClassBHaltBeaconing()
1484 ( Ctx.BeaconState == BEACON_STATE_LOST ) ) in LoRaMacClassBHaltBeaconing()
1495 TimerStop( &Ctx.BeaconTimer ); in LoRaMacClassBHaltBeaconing()
1498 Ctx.BeaconState = BEACON_STATE_HALT; in LoRaMacClassBHaltBeaconing()
1509 if( Ctx.BeaconState == BEACON_STATE_HALT ) in LoRaMacClassBResumeBeaconing()
1511 Ctx.BeaconCtx.Ctrl.ResumeBeaconing = 1; in LoRaMacClassBResumeBeaconing()
1514 Ctx.BeaconState = BEACON_STATE_LOCKED; in LoRaMacClassBResumeBeaconing()
1516 if( Ctx.BeaconCtx.Ctrl.BeaconAcquired == 0 ) in LoRaMacClassBResumeBeaconing()
1519 Ctx.BeaconState = BEACON_STATE_REACQUISITION; in LoRaMacClassBResumeBeaconing()
1532 … if( ( Ctx.BeaconCtx.Ctrl.BeaconMode == 1 ) && ( ClassBNvm->PingSlotCtx.Ctrl.Assigned == 1 ) ) in LoRaMacClassBSwitchClass()
1622 … if( RegionVerify( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &verify, PHY_FREQUENCY ) == false ) in LoRaMacClassBPingSlotChannelReq()
1629 …verify.DatarateParams.DownlinkDwellTime = Ctx.LoRaMacClassBParams.LoRaMacParams->DownlinkDwellTime; in LoRaMacClassBPingSlotChannelReq()
1631 if( RegionVerify( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &verify, PHY_RX_DR ) == false ) in LoRaMacClassBPingSlotChannelReq()
1660 Ctx.BeaconCtx.BeaconTimingDelay = ( CLASSB_BEACON_DELAY_BEACON_TIMING_ANS * beaconTimingDelay ); in LoRaMacClassBBeaconTimingAns()
1661 Ctx.BeaconCtx.BeaconTimingChannel = beaconTimingChannel; in LoRaMacClassBBeaconTimingAns()
1665 if( Ctx.BeaconCtx.BeaconTimingDelay > CLASSB_BEACON_INTERVAL ) in LoRaMacClassBBeaconTimingAns()
1668 Ctx.BeaconCtx.BeaconTimingDelay = 0; in LoRaMacClassBBeaconTimingAns()
1669 Ctx.BeaconCtx.BeaconTimingChannel = 0; in LoRaMacClassBBeaconTimingAns()
1674 Ctx.BeaconCtx.Ctrl.BeaconDelaySet = 1; in LoRaMacClassBBeaconTimingAns()
1675 Ctx.BeaconCtx.Ctrl.BeaconChannelSet = 1; in LoRaMacClassBBeaconTimingAns()
1676 … Ctx.BeaconCtx.NextBeaconRx = SysTimeFromMs( lastRxDone + Ctx.BeaconCtx.BeaconTimingDelay ); in LoRaMacClassBBeaconTimingAns()
1680 Ctx.LoRaMacClassBParams.MlmeConfirm->BeaconTimingDelay = Ctx.BeaconCtx.BeaconTimingDelay; in LoRaMacClassBBeaconTimingAns()
1681 … Ctx.LoRaMacClassBParams.MlmeConfirm->BeaconTimingChannel = Ctx.BeaconCtx.BeaconTimingChannel; in LoRaMacClassBBeaconTimingAns()
1696 Ctx.BeaconCtx.NextBeaconRx = nextBeacon; in LoRaMacClassBDeviceTimeAns()
1697 …Ctx.BeaconCtx.LastBeaconRx = SysTimeSub( Ctx.BeaconCtx.NextBeaconRx, ( SysTime_t ){ .Seconds = CLA… in LoRaMacClassBDeviceTimeAns()
1701 if( currentTimeMs > SysTimeToMs( Ctx.BeaconCtx.NextBeaconRx ) ) in LoRaMacClassBDeviceTimeAns()
1704 Ctx.BeaconCtx.LastBeaconRx.Seconds = 0; in LoRaMacClassBDeviceTimeAns()
1705 Ctx.BeaconCtx.LastBeaconRx.SubSeconds = 0; in LoRaMacClassBDeviceTimeAns()
1706 Ctx.BeaconCtx.NextBeaconRx.Seconds = 0; in LoRaMacClassBDeviceTimeAns()
1707 Ctx.BeaconCtx.NextBeaconRx.SubSeconds = 0; in LoRaMacClassBDeviceTimeAns()
1712 Ctx.BeaconCtx.Ctrl.BeaconDelaySet = 1; in LoRaMacClassBDeviceTimeAns()
1713 … Ctx.BeaconCtx.BeaconTimingDelay = SysTimeToMs( Ctx.BeaconCtx.NextBeaconRx ) - currentTimeMs; in LoRaMacClassBDeviceTimeAns()
1714 Ctx.BeaconCtx.BeaconTime.Seconds = nextBeacon.Seconds - UNIX_GPS_EPOCH_OFFSET - 128; in LoRaMacClassBDeviceTimeAns()
1715 Ctx.BeaconCtx.BeaconTime.SubSeconds = 0; in LoRaMacClassBDeviceTimeAns()
1731 if( RegionVerify( *Ctx.LoRaMacClassBParams.LoRaMacRegion, &verify, PHY_FREQUENCY ) == true ) in LoRaMacClassBBeaconFreqReq()
1754 TimerTime_t nextBeacon = SysTimeToMs( Ctx.BeaconCtx.NextBeaconRx ); in LoRaMacClassBIsUplinkCollision()
1758 Ctx.LoRaMacClassBParams.LoRaMacParams->ReceiveDelay1 - in LoRaMacClassBIsUplinkCollision()
1759 Ctx.LoRaMacClassBParams.LoRaMacParams->ReceiveDelay2 - in LoRaMacClassBIsUplinkCollision()
1776 TimerStop( &Ctx.PingSlotTimer ); in LoRaMacClassBStopRxSlots()
1777 TimerStop( &Ctx.MulticastSlotTimer ); in LoRaMacClassBStopRxSlots()
1791 Ctx.PingSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBStartRxSlots()
1792 TimerSetValue( &Ctx.PingSlotTimer, 1 ); in LoRaMacClassBStartRxSlots()
1793 TimerStart( &Ctx.PingSlotTimer ); in LoRaMacClassBStartRxSlots()
1795 Ctx.MulticastSlotState = PINGSLOT_STATE_CALC_PING_OFFSET; in LoRaMacClassBStartRxSlots()
1796 TimerSetValue( &Ctx.MulticastSlotTimer, 1 ); in LoRaMacClassBStartRxSlots()
1797 TimerStart( &Ctx.MulticastSlotTimer ); in LoRaMacClassBStartRxSlots()
1816 MulticastCtx_t *cur = Ctx.LoRaMacClassBParams.MulticastChannels; in LoRaMacClassBSetFPendingBit()
1818 if( address == *Ctx.LoRaMacClassBParams.LoRaMacDevAddr ) in LoRaMacClassBSetFPendingBit()