Starts an empty plan.
The plan begins with no data rates, channels, or sub-bands, a two-decibel power ladder, and no dwell-time limit.
Appends the next entry of the adaptive back-off chain.
Pass no data rate at the slowest, which has nothing below it. A chain left empty steps down one data rate at a time.
Optionallower: number | nullSets the Class B beacon and whether the plan limits dwell time.
OptionalhasDwellTimeLimit: boolean | nullFinishes the plan.
Throws if the plan would answer a question wrongly, for example because an RX1 row is narrower than the plan's offsets allow, or because the second receive window listens at a data rate the plan does not define.
Adds a run of evenly spaced channels.
Appends the next data rate in a direction.
A plan that never appends a downlink rate uses its uplink table in both directions, which is what every region but the 900 MHz plans does.
Appends the next entry of one payload table.
Pass no payload for a data rate that carries nothing. A downlink table left empty mirrors the matching uplink one.
Optionalpayload: lora.LoraMaxPayload | nullSets the transmit-power ladder.
Sets the receive windows.
maxRx1Offset fixes how wide every RX1 row must be.
Appends the RX1 downlink data rates for the next uplink data rate.
Every row must be as wide as the plan's highest RX1 offset allows.
OptionaldwellLimited: boolean | nullAdds a sub-band and the transmit limits inside it.
A deployment on licensed spectrum gives its sub-band a duty cycle of
1000, which reports as unrestricted.
A channel plan under construction.
Tables are indexed by position, so entries are pushed in data-rate order and a number the plan does not use is pushed as a
Reserveddata rate. What a region would share between directions is filled in bybuild.