SX126x-Arduino  1.3.0
Macros | Functions | Variables
Region US915 in hybrid mode

This is a hybrid implementation for US915, supporting 16 uplink channels only. More...

Macros

#define US915_HYBRID_MAX_NB_CHANNELS   72
 
#define US915_HYBRID_TX_MIN_DATARATE   DR_0
 
#define US915_HYBRID_TX_MAX_DATARATE   DR_4
 
#define US915_HYBRID_RX_MIN_DATARATE   DR_8
 
#define US915_HYBRID_RX_MAX_DATARATE   DR_13
 
#define US915_HYBRID_DEFAULT_DATARATE   DR_0
 
#define US915_HYBRID_MIN_RX1_DR_OFFSET   0
 
#define US915_HYBRID_MAX_RX1_DR_OFFSET   3
 
#define US915_HYBRID_DEFAULT_RX1_DR_OFFSET   0
 
#define US915_HYBRID_MIN_TX_POWER   TX_POWER_10
 
#define US915_HYBRID_MAX_TX_POWER   TX_POWER_0
 
#define US915_HYBRID_DEFAULT_TX_POWER   TX_POWER_0
 
#define US915_HYBRID_DEFAULT_MAX_ERP   30.0f
 
#define US915_HYBRID_ADR_ACK_LIMIT   64
 
#define US915_HYBRID_ADR_ACK_DELAY   32
 
#define US915_HYBRID_DUTY_CYCLE_ENABLED   0
 
#define US915_HYBRID_MAX_RX_WINDOW   3000
 
#define US915_HYBRID_RECEIVE_DELAY1   1000
 
#define US915_HYBRID_RECEIVE_DELAY2   2000
 
#define US915_HYBRID_JOIN_ACCEPT_DELAY1   5000
 
#define US915_HYBRID_JOIN_ACCEPT_DELAY2   6000
 
#define US915_HYBRID_MAX_FCNT_GAP   16384
 
#define US915_HYBRID_ACKTIMEOUT   2000
 
#define US915_HYBRID_ACK_TIMEOUT_RND   1000
 
#define US915_HYBRID_RX_WND_2_FREQ   923300000
 
#define US915_HYBRID_RX_WND_2_DR   DR_8
 
#define US915_HYBRID_MAX_NB_BANDS   1
 
#define US915_HYBRID_BAND0
 
#define US915_HYBRID_FIRST_RX1_CHANNEL   ((uint32_t)923300000)
 
#define US915_HYBRID_LAST_RX1_CHANNEL   ((uint32_t)927500000)
 
#define US915_HYBRID_STEPWIDTH_RX1_CHANNEL   ((uint32_t)600000)
 

Functions

PhyParam_t RegionUS915HybridGetPhyParam (GetPhyParams_t *getPhy)
 The function gets a value of a specific phy attribute. More...
 
void RegionUS915HybridSetBandTxDone (SetBandTxDoneParams_t *txDone)
 Updates the last TX done parameters of the current channel. More...
 
void RegionUS915HybridInitDefaults (InitType_t type)
 Initializes the channels masks and the channels. More...
 
bool RegionUS915HybridVerify (VerifyParams_t *verify, PhyAttribute_t phyAttribute)
 Verifies a parameter. More...
 
void RegionUS915HybridApplyCFList (ApplyCFListParams_t *applyCFList)
 The function parses the input buffer and sets up the channels of the CF list. More...
 
bool RegionUS915HybridChanMaskSet (ChanMaskSetParams_t *chanMaskSet)
 Sets a channels mask. More...
 
bool RegionUS915HybridAdrNext (AdrNextParams_t *adrNext, int8_t *drOut, int8_t *txPowOut, uint32_t *adrAckCounter)
 Calculates the next datarate to set, when ADR is on or off. More...
 
void RegionUS915HybridComputeRxWindowParameters (int8_t datarate, uint8_t minRxSymbols, uint32_t rxError, RxConfigParams_t *rxConfigParams)
 
bool RegionUS915HybridRxConfig (RxConfigParams_t *rxConfig, int8_t *datarate)
 Configuration of the RX windows. More...
 
bool RegionUS915HybridTxConfig (TxConfigParams_t *txConfig, int8_t *txPower, TimerTime_t *txTimeOnAir)
 TX configuration. More...
 
uint8_t RegionUS915HybridLinkAdrReq (LinkAdrReqParams_t *linkAdrReq, int8_t *drOut, int8_t *txPowOut, uint8_t *nbRepOut, uint8_t *nbBytesParsed)
 The function processes a Link ADR Request. More...
 
uint8_t RegionUS915HybridRxParamSetupReq (RxParamSetupReqParams_t *rxParamSetupReq)
 The function processes a RX Parameter Setup Request. More...
 
uint8_t RegionUS915HybridNewChannelReq (NewChannelReqParams_t *newChannelReq)
 The function processes a Channel Request. More...
 
int8_t RegionUS915HybridTxParamSetupReq (TxParamSetupReqParams_t *txParamSetupReq)
 The function processes a TX ParamSetup Request. More...
 
uint8_t RegionUS915HybridDlChannelReq (DlChannelReqParams_t *dlChannelReq)
 The function processes a DlChannel Request. More...
 
int8_t RegionUS915HybridAlternateDr (AlternateDrParams_t *alternateDr)
 Alternates the datarate of the channel for the join request. More...
 
void RegionUS915HybridCalcBackOff (CalcBackOffParams_t *calcBackOff)
 Calculates the back-off time. More...
 
bool RegionUS915HybridNextChannel (NextChanParams_t *nextChanParams, uint8_t *channel, TimerTime_t *time, TimerTime_t *aggregatedTimeOff)
 Searches and set the next random available channel. More...
 
LoRaMacStatus_t RegionUS915HybridChannelAdd (ChannelAddParams_t *channelAdd)
 Adds a channel. More...
 
bool RegionUS915HybridChannelsRemove (ChannelRemoveParams_t *channelRemove)
 Removes a channel. More...
 
void RegionUS915HybridSetContinuousWave (ContinuousWaveParams_t *continuousWave)
 Sets the radio into continuous wave mode. More...
 
uint8_t RegionUS915HybridApplyDrOffset (uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset)
 Computes new datarate according to the given offset. More...
 

Variables

static const uint8_t DataratesUS915_HYBRID [] = {10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0}
 
static const uint32_t BandwidthsUS915_HYBRID [] = {125000, 125000, 125000, 125000, 500000, 0, 0, 0, 500000, 500000, 500000, 500000, 500000, 500000, 0, 0}
 
static const int8_t DatarateOffsetsUS915_HYBRID [5][4]
 
static const uint8_t MaxPayloadOfDatarateUS915_HYBRID [] = {11, 53, 125, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0}
 
static const uint8_t MaxPayloadOfDatarateRepeaterUS915_HYBRID [] = {11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0}
 

Detailed Description

This is a hybrid implementation for US915, supporting 16 uplink channels only.

Macro Definition Documentation

◆ US915_HYBRID_MAX_NB_CHANNELS

#define US915_HYBRID_MAX_NB_CHANNELS   72

LoRaMac maximum number of channels

◆ US915_HYBRID_TX_MIN_DATARATE

#define US915_HYBRID_TX_MIN_DATARATE   DR_0

Minimal datarate that can be used by the node

◆ US915_HYBRID_TX_MAX_DATARATE

#define US915_HYBRID_TX_MAX_DATARATE   DR_4

Maximal datarate that can be used by the node

◆ US915_HYBRID_RX_MIN_DATARATE

#define US915_HYBRID_RX_MIN_DATARATE   DR_8

Minimal datarate that can be used by the node

◆ US915_HYBRID_RX_MAX_DATARATE

#define US915_HYBRID_RX_MAX_DATARATE   DR_13

Maximal datarate that can be used by the node

◆ US915_HYBRID_DEFAULT_DATARATE

#define US915_HYBRID_DEFAULT_DATARATE   DR_0

Default datarate used by the node

◆ US915_HYBRID_MIN_RX1_DR_OFFSET

#define US915_HYBRID_MIN_RX1_DR_OFFSET   0

Minimal Rx1 receive datarate offset

◆ US915_HYBRID_MAX_RX1_DR_OFFSET

#define US915_HYBRID_MAX_RX1_DR_OFFSET   3

Maximal Rx1 receive datarate offset

◆ US915_HYBRID_DEFAULT_RX1_DR_OFFSET

#define US915_HYBRID_DEFAULT_RX1_DR_OFFSET   0

Default Rx1 receive datarate offset

◆ US915_HYBRID_MIN_TX_POWER

#define US915_HYBRID_MIN_TX_POWER   TX_POWER_10

Minimal Tx output power that can be used by the node

◆ US915_HYBRID_MAX_TX_POWER

#define US915_HYBRID_MAX_TX_POWER   TX_POWER_0

Maximal Tx output power that can be used by the node

◆ US915_HYBRID_DEFAULT_TX_POWER

#define US915_HYBRID_DEFAULT_TX_POWER   TX_POWER_0

Default Tx output power used by the node

◆ US915_HYBRID_DEFAULT_MAX_ERP

#define US915_HYBRID_DEFAULT_MAX_ERP   30.0f

Default Max ERP

◆ US915_HYBRID_ADR_ACK_LIMIT

#define US915_HYBRID_ADR_ACK_LIMIT   64

ADR Ack limit

◆ US915_HYBRID_ADR_ACK_DELAY

#define US915_HYBRID_ADR_ACK_DELAY   32

ADR Ack delay

◆ US915_HYBRID_DUTY_CYCLE_ENABLED

#define US915_HYBRID_DUTY_CYCLE_ENABLED   0

Enabled or disabled the duty cycle

◆ US915_HYBRID_MAX_RX_WINDOW

#define US915_HYBRID_MAX_RX_WINDOW   3000

Maximum RX window duration

◆ US915_HYBRID_RECEIVE_DELAY1

#define US915_HYBRID_RECEIVE_DELAY1   1000

Receive delay 1

◆ US915_HYBRID_RECEIVE_DELAY2

#define US915_HYBRID_RECEIVE_DELAY2   2000

Receive delay 2

◆ US915_HYBRID_JOIN_ACCEPT_DELAY1

#define US915_HYBRID_JOIN_ACCEPT_DELAY1   5000

Join accept delay 1

◆ US915_HYBRID_JOIN_ACCEPT_DELAY2

#define US915_HYBRID_JOIN_ACCEPT_DELAY2   6000

Join accept delay 2

◆ US915_HYBRID_MAX_FCNT_GAP

#define US915_HYBRID_MAX_FCNT_GAP   16384

Maximum frame counter gap

◆ US915_HYBRID_ACKTIMEOUT

#define US915_HYBRID_ACKTIMEOUT   2000

Ack timeout

◆ US915_HYBRID_ACK_TIMEOUT_RND

#define US915_HYBRID_ACK_TIMEOUT_RND   1000

Random ack timeout limits

◆ US915_HYBRID_RX_WND_2_FREQ

#define US915_HYBRID_RX_WND_2_FREQ   923300000

Second reception window channel frequency definition.

◆ US915_HYBRID_RX_WND_2_DR

#define US915_HYBRID_RX_WND_2_DR   DR_8

Second reception window channel datarate definition.

◆ US915_HYBRID_MAX_NB_BANDS

#define US915_HYBRID_MAX_NB_BANDS   1

LoRaMac maximum number of bands

◆ US915_HYBRID_BAND0

#define US915_HYBRID_BAND0
Value:
{ \
}

Band 0 definition { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff }

◆ US915_HYBRID_FIRST_RX1_CHANNEL

#define US915_HYBRID_FIRST_RX1_CHANNEL   ((uint32_t)923300000)

Defines the first channel for RX window 1 for US band

◆ US915_HYBRID_LAST_RX1_CHANNEL

#define US915_HYBRID_LAST_RX1_CHANNEL   ((uint32_t)927500000)

Defines the last channel for RX window 1 for US band

◆ US915_HYBRID_STEPWIDTH_RX1_CHANNEL

#define US915_HYBRID_STEPWIDTH_RX1_CHANNEL   ((uint32_t)600000)

Defines the step width of the channels for RX window 1

Function Documentation

◆ RegionUS915HybridGetPhyParam()

PhyParam_t RegionUS915HybridGetPhyParam ( GetPhyParams_t getPhy)

The function gets a value of a specific phy attribute.

Parameters
getPhyPointer to the function parameters.
Return values
Returnsa structure containing the PHY parameter.

◆ RegionUS915HybridSetBandTxDone()

void RegionUS915HybridSetBandTxDone ( SetBandTxDoneParams_t txDone)

Updates the last TX done parameters of the current channel.

Parameters
txDonePointer to the function parameters.

◆ RegionUS915HybridInitDefaults()

void RegionUS915HybridInitDefaults ( InitType_t  type)

Initializes the channels masks and the channels.

Parameters
typeSets the initialization type.

◆ RegionUS915HybridVerify()

bool RegionUS915HybridVerify ( VerifyParams_t verify,
PhyAttribute_t  phyAttribute 
)

Verifies a parameter.

Parameters
verifyPointer to the function parameters.
phyAttributeSets the initialization type.
Return values
Returnstrue, if the parameter is valid.

◆ RegionUS915HybridApplyCFList()

void RegionUS915HybridApplyCFList ( ApplyCFListParams_t applyCFList)

The function parses the input buffer and sets up the channels of the CF list.

Parameters
applyCFListPointer to the function parameters.

◆ RegionUS915HybridChanMaskSet()

bool RegionUS915HybridChanMaskSet ( ChanMaskSetParams_t chanMaskSet)

Sets a channels mask.

Parameters
chanMaskSetPointer to the function parameters.
Return values
Returnstrue, if the channels mask could be set.

◆ RegionUS915HybridAdrNext()

bool RegionUS915HybridAdrNext ( AdrNextParams_t adrNext,
int8_t *  drOut,
int8_t *  txPowOut,
uint32_t *  adrAckCounter 
)

Calculates the next datarate to set, when ADR is on or off.

Parameters
adrNextPointer to the function parameters.
drOutThe calculated datarate for the next TX.
txPowOutThe TX power for the next TX.
adrAckCounterThe calculated ADR acknowledgement counter.
Return values
Returnstrue, if an ADR request should be performed.

◆ RegionUS915HybridComputeRxWindowParameters()

void RegionUS915HybridComputeRxWindowParameters ( int8_t  datarate,
uint8_t  minRxSymbols,
uint32_t  rxError,
RxConfigParams_t rxConfigParams 
)

Computes the Rx window timeout and offset.

Parameters
datarateRx window datarate index to be used
minRxSymbolsMinimum required number of symbols to detect an Rx frame.
rxErrorSystem maximum timing error of the receiver. In milliseconds The receiver will turn on in a [-rxError : +rxError] ms interval around RxOffset
rxConfigParamsReturns updated WindowTimeout and WindowOffset fields.

◆ RegionUS915HybridRxConfig()

bool RegionUS915HybridRxConfig ( RxConfigParams_t rxConfig,
int8_t *  datarate 
)

Configuration of the RX windows.

Parameters
rxConfigPointer to the function parameters.
datarateThe datarate index which was set.
Return values
Returnstrue, if the configuration was applied successfully.

◆ RegionUS915HybridTxConfig()

bool RegionUS915HybridTxConfig ( TxConfigParams_t txConfig,
int8_t *  txPower,
TimerTime_t txTimeOnAir 
)

TX configuration.

Parameters
txConfigPointer to the function parameters.
txPowerThe tx power index which was set.
txTimeOnAirThe time-on-air of the frame.
Return values
Returnstrue, if the configuration was applied successfully.

◆ RegionUS915HybridLinkAdrReq()

uint8_t RegionUS915HybridLinkAdrReq ( LinkAdrReqParams_t linkAdrReq,
int8_t *  drOut,
int8_t *  txPowOut,
uint8_t *  nbRepOut,
uint8_t *  nbBytesParsed 
)

The function processes a Link ADR Request.

Parameters
linkAdrReqPointer to the function parameters.
drOutData rate.
txPowOutTX power.
nbRepOutNumber of repeats.
nbBytesParsedNumber of parsed bytes.
Return values
Returnsthe status of the operation, according to the LoRaMAC specification.

◆ RegionUS915HybridRxParamSetupReq()

uint8_t RegionUS915HybridRxParamSetupReq ( RxParamSetupReqParams_t rxParamSetupReq)

The function processes a RX Parameter Setup Request.

Parameters
rxParamSetupReqPointer to the function parameters.
Return values
Returnsthe status of the operation, according to the LoRaMAC specification.

◆ RegionUS915HybridNewChannelReq()

uint8_t RegionUS915HybridNewChannelReq ( NewChannelReqParams_t newChannelReq)

The function processes a Channel Request.

Parameters
newChannelReqPointer to the function parameters.
Return values
Returnsthe status of the operation, according to the LoRaMAC specification.

◆ RegionUS915HybridTxParamSetupReq()

int8_t RegionUS915HybridTxParamSetupReq ( TxParamSetupReqParams_t txParamSetupReq)

The function processes a TX ParamSetup Request.

Parameters
txParamSetupReqPointer to the function parameters.
Return values
Returnsthe status of the operation, according to the LoRaMAC specification. Returns -1, if the functionality is not implemented. In this case, the end node shall not process the command.

◆ RegionUS915HybridDlChannelReq()

uint8_t RegionUS915HybridDlChannelReq ( DlChannelReqParams_t dlChannelReq)

The function processes a DlChannel Request.

Parameters
dlChannelReqPointer to the function parameters.
Return values
Returnsthe status of the operation, according to the LoRaMAC specification.

◆ RegionUS915HybridAlternateDr()

int8_t RegionUS915HybridAlternateDr ( AlternateDrParams_t alternateDr)

Alternates the datarate of the channel for the join request.

Parameters
alternateDrPointer to the function parameters.
Return values
Datarateto apply.

◆ RegionUS915HybridCalcBackOff()

void RegionUS915HybridCalcBackOff ( CalcBackOffParams_t calcBackOff)

Calculates the back-off time.

Parameters
calcBackOffPointer to the function parameters.

◆ RegionUS915HybridNextChannel()

bool RegionUS915HybridNextChannel ( NextChanParams_t nextChanParams,
uint8_t *  channel,
TimerTime_t time,
TimerTime_t aggregatedTimeOff 
)

Searches and set the next random available channel.

Parameters
nextChanParamsParameters of next channel to use for TX.
channelNext channel to use for TX.
timeTime to wait for the next transmission according to the duty cycle.
aggregatedTimeOffUpdates the aggregated time off.
Return values
Functionstatus [1: OK, 0: Unable to find a channel on the current datarate]

◆ RegionUS915HybridChannelAdd()

LoRaMacStatus_t RegionUS915HybridChannelAdd ( ChannelAddParams_t channelAdd)

Adds a channel.

Parameters
channelAddPointer to the function parameters.
Return values
Statusof the operation.

◆ RegionUS915HybridChannelsRemove()

bool RegionUS915HybridChannelsRemove ( ChannelRemoveParams_t channelRemove)

Removes a channel.

Parameters
channelRemovePointer to the function parameters.
Return values
Returnstrue, if the channel was removed successfully.

◆ RegionUS915HybridSetContinuousWave()

void RegionUS915HybridSetContinuousWave ( ContinuousWaveParams_t continuousWave)

Sets the radio into continuous wave mode.

Parameters
continuousWavePointer to the function parameters.

◆ RegionUS915HybridApplyDrOffset()

uint8_t RegionUS915HybridApplyDrOffset ( uint8_t  downlinkDwellTime,
int8_t  dr,
int8_t  drOffset 
)

Computes new datarate according to the given offset.

Parameters
downlinkDwellTimeDownlink dwell time configuration. 0: No limit, 1: 400ms
drCurrent datarate
drOffsetOffset to be applied
Return values
newDrComputed datarate.

Variable Documentation

◆ DataratesUS915_HYBRID

const uint8_t DataratesUS915_HYBRID[] = {10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0}
static

Data rates table definition

◆ BandwidthsUS915_HYBRID

const uint32_t BandwidthsUS915_HYBRID[] = {125000, 125000, 125000, 125000, 500000, 0, 0, 0, 500000, 500000, 500000, 500000, 500000, 500000, 0, 0}
static

Bandwidths table definition in Hz

◆ DatarateOffsetsUS915_HYBRID

const int8_t DatarateOffsetsUS915_HYBRID[5][4]
static
Initial value:

Up/Down link data rates offset definition

◆ MaxPayloadOfDatarateUS915_HYBRID

const uint8_t MaxPayloadOfDatarateUS915_HYBRID[] = {11, 53, 125, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0}
static

Maximum payload with respect to the datarate index. Cannot operate with repeater.

◆ MaxPayloadOfDatarateRepeaterUS915_HYBRID

const uint8_t MaxPayloadOfDatarateRepeaterUS915_HYBRID[] = {11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0}
static

Maximum payload with respect to the datarate index. Can operate with repeater.

DR_8
#define DR_8
Definition: Region.h:207
DR_13
#define DR_13
Definition: Region.h:287
DR_9
#define DR_9
Definition: Region.h:223
DR_10
#define DR_10
Definition: Region.h:239
DR_11
#define DR_11
Definition: Region.h:255
US915_HYBRID_MAX_TX_POWER
#define US915_HYBRID_MAX_TX_POWER
Definition: RegionUS915-Hybrid.h:94
DR_12
#define DR_12
Definition: Region.h:271