Documentation ¶
Index ¶
- Constants
- Variables
- func AdaptDataRate(ctx context.Context, dev *ttnpb.EndDevice, phy *band.Band, ...) error
- func DeviceClassBTimeout(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) time.Duration
- func DeviceClassCTimeout(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) time.Duration
- func DeviceDefaultBeaconFrequency(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint64
- func DeviceDefaultChannels(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) []*ttnpb.MACParameters_Channel
- func DeviceDefaultClass(dev *ttnpb.EndDevice) (ttnpb.Class, error)
- func DeviceDefaultLoRaWANVersion(dev *ttnpb.EndDevice) ttnpb.MACVersion
- func DeviceDefaultMaxDutyCycle(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) ttnpb.AggregatedDutyCycle
- func DeviceDefaultPingSlotDataRateIndexValue(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) *ttnpb.DataRateIndexValue
- func DeviceDefaultPingSlotFrequency(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) uint64
- func DeviceDefaultPingSlotPeriodicity(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) *ttnpb.PingSlotPeriodValue
- func DeviceDefaultRX1DataRateOffset(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint32
- func DeviceDefaultRX1Delay(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) ttnpb.RxDelay
- func DeviceDefaultRX2DataRateIndex(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) ttnpb.DataRateIndex
- func DeviceDefaultRX2Frequency(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) uint64
- func DeviceDesiredADRAckDelayExponent(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) *ttnpb.ADRAckDelayExponentValue
- func DeviceDesiredADRAckLimitExponent(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) *ttnpb.ADRAckLimitExponentValue
- func DeviceDesiredBeaconFrequency(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint64
- func DeviceDesiredChannels(phy *band.Band, fp *frequencyplans.FrequencyPlan, defaults ttnpb.MACSettings) []*ttnpb.MACParameters_Channel
- func DeviceDesiredDownlinkDwellTime(fp *frequencyplans.FrequencyPlan) *pbtypes.BoolValue
- func DeviceDesiredMaxDutyCycle(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) ttnpb.AggregatedDutyCycle
- func DeviceDesiredMaxEIRP(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, ...) float32
- func DeviceDesiredPingSlotDataRateIndexValue(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, ...) *ttnpb.DataRateIndexValue
- func DeviceDesiredPingSlotFrequency(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, ...) uint64
- func DeviceDesiredRX1DataRateOffset(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint32
- func DeviceDesiredRX1Delay(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) ttnpb.RxDelay
- func DeviceDesiredRX2DataRateIndex(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, ...) ttnpb.DataRateIndex
- func DeviceDesiredRX2Frequency(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, ...) uint64
- func DeviceDesiredUplinkDwellTime(fp *frequencyplans.FrequencyPlan) *pbtypes.BoolValue
- func DeviceNeedsADRParamSetupReq(dev *ttnpb.EndDevice, phy *band.Band) bool
- func DeviceNeedsBeaconFreqReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsBeaconTimingReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsDLChannelReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsDLChannelReqAtIndex(dev *ttnpb.EndDevice, i int) bool
- func DeviceNeedsDevStatusReq(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings, transmitAt time.Time) bool
- func DeviceNeedsDevStatusReqAt(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) (time.Time, bool)
- func DeviceNeedsDutyCycleReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsLinkADRReq(ctx context.Context, dev *ttnpb.EndDevice, defaults ttnpb.MACSettings, ...) bool
- func DeviceNeedsNewChannelReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsNewChannelReqAtIndex(dev *ttnpb.EndDevice, i int) bool
- func DeviceNeedsPingSlotChannelReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsRejoinParamSetupReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsRxParamSetupReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsRxTimingSetupReq(dev *ttnpb.EndDevice) bool
- func DeviceNeedsTxParamSetupReq(dev *ttnpb.EndDevice, phy *band.Band) bool
- func DeviceResetsFCnt(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) bool
- func DeviceSupports32BitFCnt(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) bool
- func DeviceUseADR(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings, phy *band.Band) bool
- func HandleADRParamSetupAns(ctx context.Context, dev *ttnpb.EndDevice) (events.Builders, error)
- func HandleBeaconFreqAns(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_BeaconFreqAns) (events.Builders, error)
- func HandleBeaconTimingReq(ctx context.Context, dev *ttnpb.EndDevice) (events.Builders, error)
- func HandleDLChannelAns(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_DLChannelAns) (events.Builders, error)
- func HandleDevStatusAns(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_DevStatusAns, ...) (events.Builders, error)
- func HandleDeviceModeInd(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_DeviceModeInd) (events.Builders, error)
- func HandleDeviceTimeReq(ctx context.Context, dev *ttnpb.EndDevice, msg *ttnpb.UplinkMessage) (events.Builders, error)
- func HandleDutyCycleAns(ctx context.Context, dev *ttnpb.EndDevice) (events.Builders, error)
- func HandleLinkADRAns(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_LinkADRAns, ...) (events.Builders, error)
- func HandleLinkCheckReq(ctx context.Context, dev *ttnpb.EndDevice, msg *ttnpb.UplinkMessage) (events.Builders, error)
- func HandleNewChannelAns(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_NewChannelAns) (events.Builders, error)
- func HandlePingSlotChannelAns(ctx context.Context, dev *ttnpb.EndDevice, ...) (events.Builders, error)
- func HandlePingSlotInfoReq(ctx context.Context, dev *ttnpb.EndDevice, ...) (events.Builders, error)
- func HandleRejoinParamSetupAns(ctx context.Context, dev *ttnpb.EndDevice, ...) (events.Builders, error)
- func HandleRekeyInd(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_RekeyInd, ...) (events.Builders, error)
- func HandleResetInd(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_ResetInd, ...) (events.Builders, error)
- func HandleRxParamSetupAns(ctx context.Context, dev *ttnpb.EndDevice, ...) (events.Builders, error)
- func HandleRxTimingSetupAns(ctx context.Context, dev *ttnpb.EndDevice) (events.Builders, error)
- func HandleTxParamSetupAns(ctx context.Context, dev *ttnpb.EndDevice) (events.Builders, error)
- func NewState(dev *ttnpb.EndDevice, fps *frequencyplans.Store, defaults ttnpb.MACSettings) (*ttnpb.MACState, error)
- func NextPingSlotAt(ctx context.Context, dev *ttnpb.EndDevice, earliestAt time.Time) (time.Time, bool)
- type EnqueueState
- func EnqueueADRParamSetupReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16, ...) EnqueueState
- func EnqueueBeaconFreqReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueDLChannelReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueDevStatusReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16, ...) EnqueueState
- func EnqueueDutyCycleReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueForceRejoinReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueLinkADRReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16, ...) (EnqueueState, error)
- func EnqueueNewChannelReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueuePingSlotChannelReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueRejoinParamSetupReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueRxParamSetupReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueRxTimingSetupReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16) EnqueueState
- func EnqueueTxParamSetupReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16, ...) EnqueueState
Constants ¶
View Source
const ( // OptimalADRUplinkCount is the amount of uplinks required to ensure optimal results from the ADR algorithm. OptimalADRUplinkCount = 20 // DefaultADRMargin is the default ADR margin used if not specified in MACSettings of the device or NS-wide defaults. DefaultADRMargin = 15 )
View Source
const ( DefaultStatusCountPeriodicity uint32 = 200 DefaultStatusTimePeriodicity = 24 * time.Hour )
View Source
const (
BeaconPeriod = 128 * time.Second
)
View Source
const DefaultClassBTimeout = 10 * time.Minute
DefaultClassBTimeout is the default time-out for the device to respond to class B downlink messages. When waiting for a response times out, the downlink message is considered lost, and the downlink task triggers again.
View Source
const DefaultClassCTimeout = 5 * time.Minute
DefaultClassCTimeout is the default time-out for the device to respond to class C downlink messages. When waiting for a response times out, the downlink message is considered lost, and the downlink task triggers again.
Variables ¶
View Source
var ( EvtEnqueueADRParamSetupRequest = defineEnqueueMACRequestEvent( "adr_param_setup", "ADR parameter setup", events.WithDataType(&ttnpb.MACCommand_ADRParamSetupReq{}), )() EvtReceiveADRParamSetupAnswer = defineReceiveMACAnswerEvent( "adr_param_setup", "ADR parameter setup", )() )
View Source
var ( EvtEnqueueBeaconFreqRequest = defineEnqueueMACRequestEvent( "beacon_freq", "beacon frequency change", events.WithDataType(&ttnpb.MACCommand_BeaconFreqReq{}), )() EvtReceiveBeaconFreqReject = defineReceiveMACRejectEvent( "beacon_freq", "beacon frequency change", events.WithDataType(&ttnpb.MACCommand_BeaconFreqAns{}), )() EvtReceiveBeaconFreqAccept = defineReceiveMACAcceptEvent( "beacon_freq", "beacon frequency change", events.WithDataType(&ttnpb.MACCommand_BeaconFreqAns{}), )() )
View Source
var ( EvtEnqueueDevStatusRequest = defineEnqueueMACRequestEvent( "dev_status", "device status", )() EvtReceiveDevStatusAnswer = defineReceiveMACAnswerEvent( "dev_status", "device status", events.WithDataType(&ttnpb.MACCommand_DevStatusAns{}), )() )
View Source
var ( EvtReceiveDeviceModeIndication = defineReceiveMACIndicationEvent( "device_mode", "device mode", events.WithDataType(&ttnpb.MACCommand_DeviceModeInd{}), )() EvtEnqueueDeviceModeConfirmation = defineEnqueueMACConfirmationEvent( "device_mode", "device mode", events.WithDataType(&ttnpb.MACCommand_DeviceModeConf{}), )() )
View Source
var ( EvtReceiveDeviceTimeRequest = defineReceiveMACRequestEvent( "device_time", "device time", )() EvtEnqueueDeviceTimeAnswer = defineEnqueueMACAnswerEvent( "device_time", "device time", events.WithData(&ttnpb.MACCommand_DeviceTimeAns{}), )() )
View Source
var ( EvtEnqueueDLChannelRequest = defineEnqueueMACRequestEvent( "dl_channel", "downlink Rx1 channel frequency modification", events.WithDataType(&ttnpb.MACCommand_DLChannelReq{}), )() EvtReceiveDLChannelAccept = defineReceiveMACAcceptEvent( "dl_channel", "downlink Rx1 channel frequency modification", events.WithDataType(&ttnpb.MACCommand_DLChannelAns{}), )() EvtReceiveDLChannelReject = defineReceiveMACRejectEvent( "dl_channel", "downlink Rx1 channel frequency modification", events.WithDataType(&ttnpb.MACCommand_DLChannelAns{}), )() )
View Source
var ( EvtEnqueueDutyCycleRequest = defineEnqueueMACRequestEvent( "duty_cycle", "maximum aggregated transmit duty-cycle change", events.WithDataType(&ttnpb.MACCommand_DutyCycleReq{}), )() EvtReceiveDutyCycleAnswer = defineReceiveMACAnswerEvent( "duty_cycle", "maximum aggregated transmit duty-cycle change", )() )
View Source
var ( ErrRequestNotFound = errors.DefineInvalidArgument("request_not_found", "MAC response received, but corresponding request not found") ErrNoPayload = errors.DefineInvalidArgument("no_payload", "no message payload specified") )
View Source
var ( EvtEnqueueLinkADRRequest = defineEnqueueMACRequestEvent( "link_adr", "link ADR", events.WithDataType(&ttnpb.MACCommand_LinkADRReq{}), )() EvtReceiveLinkADRAccept = defineReceiveMACAcceptEvent( "link_adr", "link ADR", events.WithDataType(&ttnpb.MACCommand_LinkADRAns{}), )() EvtReceiveLinkADRReject = defineReceiveMACRejectEvent( "link_adr", "link ADR", events.WithDataType(&ttnpb.MACCommand_LinkADRAns{}), )() )
View Source
var ( EvtReceiveLinkCheckRequest = defineReceiveMACRequestEvent( "link_check", "link check", )() EvtEnqueueLinkCheckAnswer = defineEnqueueMACAnswerEvent( "link_check", "link check", events.WithDataType(&ttnpb.MACCommand_LinkCheckAns{}), )() )
View Source
var ( EvtEnqueueNewChannelRequest = defineEnqueueMACRequestEvent( "new_channel", "new channel", events.WithDataType(&ttnpb.MACCommand_NewChannelReq{}), )() EvtReceiveNewChannelAccept = defineReceiveMACAcceptEvent( "new_channel", "new channel", events.WithDataType(&ttnpb.MACCommand_NewChannelAns{}), )() EvtReceiveNewChannelReject = defineReceiveMACRejectEvent( "new_channel", "new channel", events.WithDataType(&ttnpb.MACCommand_NewChannelAns{}), )() )
View Source
var ( EvtEnqueueProprietaryMACAnswer = defineEnqueueMACAnswerEvent("proprietary", "proprietary MAC command") EvtEnqueueProprietaryMACRequest = defineEnqueueMACRequestEvent("proprietary", "proprietary MAC command") EvtReceiveProprietaryMAC = events.Define( "ns.mac.proprietary.receive", "receive proprietary MAC command", events.WithVisibility(ttnpb.RIGHT_APPLICATION_TRAFFIC_READ), ) EvtClassASwitch = defineClassSwitchEvent('a')() EvtClassBSwitch = defineClassSwitchEvent('b')() EvtClassCSwitch = defineClassSwitchEvent('c')() )
View Source
var ( EvtEnqueuePingSlotChannelRequest = defineEnqueueMACRequestEvent( "ping_slot_channel", "ping slot channel", events.WithDataType(&ttnpb.MACCommand_PingSlotChannelReq{}), )() EvtReceivePingSlotChannelAnswer = defineReceiveMACAcceptEvent( "ping_slot_channel", "ping slot channel", events.WithDataType(&ttnpb.MACCommand_PingSlotChannelAns{}), )() )
View Source
var ( EvtEnqueuePingSlotInfoAnswer = defineEnqueueMACAnswerEvent( "ping_slot_info", "ping slot info", )() EvtReceivePingSlotInfoRequest = defineReceiveMACRequestEvent( "ping_slot_info", "ping slot info", events.WithDataType(&ttnpb.MACCommand_PingSlotInfoReq{}), )() )
View Source
var ( EvtEnqueueRejoinParamSetupRequest = defineEnqueueMACRequestEvent( "rejoin_param_setup", "rejoin parameter setup", events.WithDataType(&ttnpb.MACCommand_RejoinParamSetupReq{}), )() EvtReceiveRejoinParamSetupAnswer = defineReceiveMACAnswerEvent( "rejoin_param_setup", "rejoin parameter setup", events.WithDataType(&ttnpb.MACCommand_RejoinParamSetupAns{}), )() )
View Source
var ( EvtReceiveRekeyIndication = defineReceiveMACIndicationEvent( "rekey", "device rekey", events.WithDataType(&ttnpb.MACCommand_RekeyInd{}), )() EvtEnqueueRekeyConfirmation = defineEnqueueMACConfirmationEvent( "rekey", "device rekey", events.WithDataType(&ttnpb.MACCommand_RekeyConf{}), )() )
View Source
var ( EvtReceiveResetIndication = defineReceiveMACIndicationEvent( "reset", "device reset", events.WithDataType(&ttnpb.MACCommand_ResetInd{}), )() EvtEnqueueResetConfirmation = defineEnqueueMACConfirmationEvent( "reset", "device reset", events.WithDataType(&ttnpb.MACCommand_ResetConf{}), )() )
View Source
var ( EvtEnqueueRxParamSetupRequest = defineEnqueueMACRequestEvent( "rx_param_setup", "Rx parameter setup", events.WithDataType(&ttnpb.MACCommand_RxParamSetupReq{}), )() EvtReceiveRxParamSetupAccept = defineReceiveMACAcceptEvent( "rx_param_setup", "Rx parameter setup", events.WithDataType(&ttnpb.MACCommand_RxParamSetupAns{}), )() EvtReceiveRxParamSetupReject = defineReceiveMACRejectEvent( "rx_param_setup", "Rx parameter setup", events.WithDataType(&ttnpb.MACCommand_RxParamSetupAns{}), )() )
View Source
var ( EvtEnqueueRxTimingSetupRequest = defineEnqueueMACRequestEvent( "rx_timing_setup", "Rx timing setup", events.WithDataType(&ttnpb.MACCommand_RxTimingSetupReq{}), )() EvtReceiveRxTimingSetupAnswer = defineReceiveMACAnswerEvent( "rx_timing_setup", "Rx timing setup", )() )
View Source
var ( EvtEnqueueTxParamSetupRequest = defineEnqueueMACRequestEvent( "tx_param_setup", "Tx parameter setup", events.WithDataType(&ttnpb.MACCommand_TxParamSetupReq{}), )() EvtReceiveTxParamSetupAnswer = defineReceiveMACAnswerEvent( "tx_param_setup", "Tx parameter setup", )() )
View Source
var EvtEnqueueForceRejoinRequest = defineEnqueueMACRequestEvent("force_rejoin", "force rejoin")()
Functions ¶
func AdaptDataRate ¶
func DeviceClassBTimeout ¶
func DeviceClassCTimeout ¶
func DeviceDefaultBeaconFrequency ¶
func DeviceDefaultBeaconFrequency(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint64
func DeviceDefaultChannels ¶
func DeviceDefaultChannels(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) []*ttnpb.MACParameters_Channel
func DeviceDefaultLoRaWANVersion ¶
func DeviceDefaultLoRaWANVersion(dev *ttnpb.EndDevice) ttnpb.MACVersion
func DeviceDefaultMaxDutyCycle ¶
func DeviceDefaultMaxDutyCycle(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) ttnpb.AggregatedDutyCycle
func DeviceDefaultPingSlotDataRateIndexValue ¶
func DeviceDefaultPingSlotDataRateIndexValue(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) *ttnpb.DataRateIndexValue
func DeviceDefaultPingSlotPeriodicity ¶
func DeviceDefaultPingSlotPeriodicity(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) *ttnpb.PingSlotPeriodValue
func DeviceDefaultRX1DataRateOffset ¶
func DeviceDefaultRX1DataRateOffset(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint32
func DeviceDefaultRX1Delay ¶
func DeviceDefaultRX2DataRateIndex ¶
func DeviceDefaultRX2DataRateIndex(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) ttnpb.DataRateIndex
func DeviceDesiredADRAckDelayExponent ¶
func DeviceDesiredADRAckDelayExponent(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) *ttnpb.ADRAckDelayExponentValue
func DeviceDesiredADRAckLimitExponent ¶
func DeviceDesiredADRAckLimitExponent(dev *ttnpb.EndDevice, phy *band.Band, defaults ttnpb.MACSettings) *ttnpb.ADRAckLimitExponentValue
func DeviceDesiredBeaconFrequency ¶
func DeviceDesiredBeaconFrequency(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint64
func DeviceDesiredChannels ¶
func DeviceDesiredChannels(phy *band.Band, fp *frequencyplans.FrequencyPlan, defaults ttnpb.MACSettings) []*ttnpb.MACParameters_Channel
func DeviceDesiredDownlinkDwellTime ¶
func DeviceDesiredDownlinkDwellTime(fp *frequencyplans.FrequencyPlan) *pbtypes.BoolValue
func DeviceDesiredMaxDutyCycle ¶
func DeviceDesiredMaxDutyCycle(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) ttnpb.AggregatedDutyCycle
func DeviceDesiredMaxEIRP ¶
func DeviceDesiredMaxEIRP(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, defaults ttnpb.MACSettings) float32
func DeviceDesiredPingSlotDataRateIndexValue ¶
func DeviceDesiredPingSlotDataRateIndexValue(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, defaults ttnpb.MACSettings) *ttnpb.DataRateIndexValue
func DeviceDesiredPingSlotFrequency ¶
func DeviceDesiredPingSlotFrequency(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, defaults ttnpb.MACSettings) uint64
func DeviceDesiredRX1DataRateOffset ¶
func DeviceDesiredRX1DataRateOffset(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) uint32
func DeviceDesiredRX1Delay ¶
func DeviceDesiredRX2DataRateIndex ¶
func DeviceDesiredRX2DataRateIndex(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, defaults ttnpb.MACSettings) ttnpb.DataRateIndex
func DeviceDesiredRX2Frequency ¶
func DeviceDesiredRX2Frequency(dev *ttnpb.EndDevice, phy *band.Band, fp *frequencyplans.FrequencyPlan, defaults ttnpb.MACSettings) uint64
func DeviceDesiredUplinkDwellTime ¶
func DeviceDesiredUplinkDwellTime(fp *frequencyplans.FrequencyPlan) *pbtypes.BoolValue
func DeviceNeedsDLChannelReq ¶
func DeviceNeedsDevStatusReq ¶
func DeviceNeedsDutyCycleReq ¶
func DeviceNeedsLinkADRReq ¶
func DeviceResetsFCnt ¶
func DeviceResetsFCnt(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) bool
func DeviceSupports32BitFCnt ¶
func DeviceSupports32BitFCnt(dev *ttnpb.EndDevice, defaults ttnpb.MACSettings) bool
func DeviceUseADR ¶
func HandleADRParamSetupAns ¶
func HandleBeaconFreqAns ¶
func HandleBeaconTimingReq ¶
func HandleDLChannelAns ¶
func HandleDevStatusAns ¶
func HandleDeviceModeInd ¶
func HandleDeviceTimeReq ¶
func HandleDutyCycleAns ¶
func HandleLinkADRAns ¶
func HandleLinkCheckReq ¶
func HandleNewChannelAns ¶
func HandlePingSlotInfoReq ¶
func HandleRekeyInd ¶
func HandleResetInd ¶
func HandleResetInd(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MACCommand_ResetInd, fps *frequencyplans.Store, defaults ttnpb.MACSettings) (events.Builders, error)
func HandleRxParamSetupAns ¶
func HandleRxTimingSetupAns ¶
func HandleTxParamSetupAns ¶
func NewState ¶
func NewState(dev *ttnpb.EndDevice, fps *frequencyplans.Store, defaults ttnpb.MACSettings) (*ttnpb.MACState, error)
func NextPingSlotAt ¶
func NextPingSlotAt(ctx context.Context, dev *ttnpb.EndDevice, earliestAt time.Time) (time.Time, bool)
NextPingSlotAt returns the exact time instant before or at earliestAt when next ping slot can be open given the data known by Network Server and true, if such time instant exists, otherwise it returns time.Time{} and false.
Types ¶
type EnqueueState ¶
func EnqueueADRParamSetupReq ¶
func EnqueueBeaconFreqReq ¶
func EnqueueDLChannelReq ¶
func EnqueueDevStatusReq ¶
func EnqueueDevStatusReq(ctx context.Context, dev *ttnpb.EndDevice, maxDownLen, maxUpLen uint16, defaults ttnpb.MACSettings, transmitAt time.Time) EnqueueState
func EnqueueDutyCycleReq ¶
func EnqueueForceRejoinReq ¶
func EnqueueLinkADRReq ¶
func EnqueueNewChannelReq ¶
func EnqueueRxParamSetupReq ¶
func EnqueueRxTimingSetupReq ¶
func EnqueueTxParamSetupReq ¶
Source Files ¶
- adr.go
- adr_param_setup.go
- beacon_freq.go
- beacon_timing.go
- dev_status.go
- device_mode.go
- device_time.go
- dl_channel.go
- duty_cycle.go
- errors.go
- force_rejoin.go
- link_adr.go
- link_check.go
- mac.go
- new_channel.go
- observability.go
- ping_slot_channel.go
- ping_slot_info.go
- rejoin_param_setup.go
- rekey.go
- reset.go
- rx_param_setup.go
- rx_timing_setup.go
- tx_param_setup.go
- utils.go
Click to show internal directories.
Click to hide internal directories.