SX126x-Arduino  2.0.1
Macros | Functions | Variables
Region AS923

Implementation according to LoRaWAN Specification v1.0.2. More...

Macros

#define AS923_MAX_NB_CHANNELS   16
 
#define AS923_NUMB_DEFAULT_CHANNELS   8
 
#define AS923_NUMB_CHANNELS_CF_LIST   5
 
#define AS923_TX_MIN_DATARATE   DR_0
 
#define AS923_TX_MAX_DATARATE   DR_7
 
#define AS923_RX_MIN_DATARATE   DR_0
 
#define AS923_RX_MAX_DATARATE   DR_7
 
#define AS923_DEFAULT_DATARATE   DR_2
 
#define AS923_DWELL_LIMIT_DATARATE   DR_2
 
#define AS923_MIN_RX1_DR_OFFSET   0
 
#define AS923_MAX_RX1_DR_OFFSET   7
 
#define AS923_DEFAULT_RX1_DR_OFFSET   0
 
#define AS923_MIN_TX_POWER   TX_POWER_7
 
#define AS923_MAX_TX_POWER   TX_POWER_0
 
#define AS923_DEFAULT_TX_POWER   TX_POWER_0
 
#define AS923_DEFAULT_UPLINK_DWELL_TIME   1
 
#define AS923_DEFAULT_DOWNLINK_DWELL_TIME   1
 
#define AS923_DEFAULT_MAX_EIRP   16.0f
 
#define AS923_DEFAULT_ANTENNA_GAIN   2.15f
 
#define AS923_ADR_ACK_LIMIT   64
 
#define AS923_ADR_ACK_DELAY   32
 
#define AS923_DUTY_CYCLE_ENABLED   0
 
#define AS923_MAX_RX_WINDOW   3000
 
#define AS923_RECEIVE_DELAY1   1000
 
#define AS923_RECEIVE_DELAY2   2000
 
#define AS923_JOIN_ACCEPT_DELAY1   5000
 
#define AS923_JOIN_ACCEPT_DELAY2   6000
 
#define AS923_MAX_FCNT_GAP   16384
 
#define AS923_ACKTIMEOUT   2000
 
#define AS923_ACK_TIMEOUT_RND   1000
 
#define AS923_RX_WND_2_DR   DR_2
 
#define AS923_MAX_NB_BANDS   1
 
#define AS923_BAND0
 
#define AS923_LC1
 
#define AS923_LC2
 
#define AS923_LC3
 
#define AS923_LC4
 
#define AS923_LC5
 
#define AS923_LC6
 
#define AS923_LC7
 
#define AS923_LC8
 
#define AS923_JOIN_CHANNELS   (uint16_t)(LC(1) | LC(2))
 
#define AS923_RSSI_FREE_TH   -85
 
#define AS923_CARRIER_SENSE_TIME   6
 

Functions

PhyParam_t RegionAS923GetPhyParam (GetPhyParams_t *getPhy)
 The function gets a value of a specific phy attribute. More...
 
void RegionAS923SetBandTxDone (SetBandTxDoneParams_t *txDone)
 Updates the last TX done parameters of the current channel. More...
 
void RegionAS923InitDefaults (InitType_t type)
 Initializes the channels masks and the channels. More...
 
bool RegionAS923Verify (VerifyParams_t *verify, PhyAttribute_t phyAttribute)
 Verifies a parameter. More...
 
void RegionAS923ApplyCFList (ApplyCFListParams_t *applyCFList)
 The function parses the input buffer and sets up the channels of the CF list. More...
 
bool RegionAS923ChanMaskSet (ChanMaskSetParams_t *chanMaskSet)
 Sets a channels mask. More...
 
bool RegionAS923AdrNext (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 RegionAS923ComputeRxWindowParameters (int8_t datarate, uint8_t minRxSymbols, uint32_t rxError, RxConfigParams_t *rxConfigParams)
 
bool RegionAS923RxConfig (RxConfigParams_t *rxConfig, int8_t *datarate)
 Configuration of the RX windows. More...
 
bool RegionAS923TxConfig (TxConfigParams_t *txConfig, int8_t *txPower, TimerTime_t *txTimeOnAir)
 TX configuration. More...
 
uint8_t RegionAS923LinkAdrReq (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 RegionAS923RxParamSetupReq (RxParamSetupReqParams_t *rxParamSetupReq)
 The function processes a RX Parameter Setup Request. More...
 
uint8_t RegionAS923NewChannelReq (NewChannelReqParams_t *newChannelReq)
 The function processes a Channel Request. More...
 
int8_t RegionAS923TxParamSetupReq (TxParamSetupReqParams_t *txParamSetupReq)
 The function processes a TX ParamSetup Request. More...
 
uint8_t RegionAS923DlChannelReq (DlChannelReqParams_t *dlChannelReq)
 The function processes a DlChannel Request. More...
 
int8_t RegionAS923AlternateDr (AlternateDrParams_t *alternateDr)
 Alternates the datarate of the channel for the join request. More...
 
void RegionAS923CalcBackOff (CalcBackOffParams_t *calcBackOff)
 Calculates the back-off time. More...
 
bool RegionAS923NextChannel (NextChanParams_t *nextChanParams, uint8_t *channel, TimerTime_t *time, TimerTime_t *aggregatedTimeOff)
 Searches and set the next random available channel. More...
 
LoRaMacStatus_t RegionAS923ChannelAdd (ChannelAddParams_t *channelAdd)
 Adds a channel. More...
 
bool RegionAS923ChannelsRemove (ChannelRemoveParams_t *channelRemove)
 Removes a channel. More...
 
void RegionAS923SetContinuousWave (ContinuousWaveParams_t *continuousWave)
 Sets the radio into continuous wave mode. More...
 
uint8_t RegionAS923ApplyDrOffset (uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset)
 Computes new datarate according to the given offset. More...
 
bool RegionAS923SetVersion (uint8_t version)
 Adjust frequency band to AS923-1, AS923-2, AS923-3. More...
 

Variables

static const uint8_t DataratesAS923 [] = {12, 11, 10, 9, 8, 7, 7, 50}
 
static const uint32_t BandwidthsAS923 [] = {125000, 125000, 125000, 125000, 125000, 125000, 250000, 0}
 
static const uint8_t MaxPayloadOfDatarateDwell0AS923 [] = {59, 59, 59, 123, 230, 230, 230, 230}
 
static const uint8_t MaxPayloadOfDatarateRepeaterDwell0AS923 [] = {59, 59, 59, 123, 250, 250, 250, 250}
 
static const uint8_t MaxPayloadOfDatarateDwell1UpAS923 [] = {0, 0, 19, 61, 133, 250, 250, 250}
 
static const uint8_t MaxPayloadOfDatarateDwell1DownAS923 [] = {0, 0, 19, 61, 133, 250, 250, 250}
 
static const int8_t EffectiveRx1DrOffsetAS923 [] = {0, 1, 2, 3, 4, 5, -1, -2}
 

Detailed Description

Implementation according to LoRaWAN Specification v1.0.2.

Macro Definition Documentation

◆ AS923_MAX_NB_CHANNELS

#define AS923_MAX_NB_CHANNELS   16

LoRaMac maximum number of channels

◆ AS923_NUMB_DEFAULT_CHANNELS

#define AS923_NUMB_DEFAULT_CHANNELS   8

Number of default channels

◆ AS923_NUMB_CHANNELS_CF_LIST

#define AS923_NUMB_CHANNELS_CF_LIST   5

Number of channels to apply for the CF list

Todo:
should be 6

◆ AS923_TX_MIN_DATARATE

#define AS923_TX_MIN_DATARATE   DR_0

Minimal datarate that can be used by the node

◆ AS923_TX_MAX_DATARATE

#define AS923_TX_MAX_DATARATE   DR_7

Maximal datarate that can be used by the node

◆ AS923_RX_MIN_DATARATE

#define AS923_RX_MIN_DATARATE   DR_0

Minimal datarate that can be used by the node

◆ AS923_RX_MAX_DATARATE

#define AS923_RX_MAX_DATARATE   DR_7

Maximal datarate that can be used by the node

◆ AS923_DEFAULT_DATARATE

#define AS923_DEFAULT_DATARATE   DR_2

Default datarate used by the node

◆ AS923_DWELL_LIMIT_DATARATE

#define AS923_DWELL_LIMIT_DATARATE   DR_2

The minimum datarate which is used when the dwell time is limited.

◆ AS923_MIN_RX1_DR_OFFSET

#define AS923_MIN_RX1_DR_OFFSET   0

Minimal Rx1 receive datarate offset

◆ AS923_MAX_RX1_DR_OFFSET

#define AS923_MAX_RX1_DR_OFFSET   7

Maximal Rx1 receive datarate offset

◆ AS923_DEFAULT_RX1_DR_OFFSET

#define AS923_DEFAULT_RX1_DR_OFFSET   0

Default Rx1 receive datarate offset

◆ AS923_MIN_TX_POWER

#define AS923_MIN_TX_POWER   TX_POWER_7

Minimal Tx output power that can be used by the node

◆ AS923_MAX_TX_POWER

#define AS923_MAX_TX_POWER   TX_POWER_0

Maximal Tx output power that can be used by the node

◆ AS923_DEFAULT_TX_POWER

#define AS923_DEFAULT_TX_POWER   TX_POWER_0

Default Tx output power used by the node

◆ AS923_DEFAULT_UPLINK_DWELL_TIME

#define AS923_DEFAULT_UPLINK_DWELL_TIME   1

Default uplink dwell time configuration

◆ AS923_DEFAULT_DOWNLINK_DWELL_TIME

#define AS923_DEFAULT_DOWNLINK_DWELL_TIME   1

Default downlink dwell time configuration

◆ AS923_DEFAULT_MAX_EIRP

#define AS923_DEFAULT_MAX_EIRP   16.0f

Default Max EIRP

◆ AS923_DEFAULT_ANTENNA_GAIN

#define AS923_DEFAULT_ANTENNA_GAIN   2.15f

Default antenna gain

◆ AS923_ADR_ACK_LIMIT

#define AS923_ADR_ACK_LIMIT   64

ADR Ack limit

◆ AS923_ADR_ACK_DELAY

#define AS923_ADR_ACK_DELAY   32

ADR Ack delay

◆ AS923_DUTY_CYCLE_ENABLED

#define AS923_DUTY_CYCLE_ENABLED   0

Enabled or disabled the duty cycle

◆ AS923_MAX_RX_WINDOW

#define AS923_MAX_RX_WINDOW   3000

Maximum RX window duration

◆ AS923_RECEIVE_DELAY1

#define AS923_RECEIVE_DELAY1   1000

Receive delay 1

◆ AS923_RECEIVE_DELAY2

#define AS923_RECEIVE_DELAY2   2000

Receive delay 2

◆ AS923_JOIN_ACCEPT_DELAY1

#define AS923_JOIN_ACCEPT_DELAY1   5000

Join accept delay 1

◆ AS923_JOIN_ACCEPT_DELAY2

#define AS923_JOIN_ACCEPT_DELAY2   6000

Join accept delay 2

◆ AS923_MAX_FCNT_GAP

#define AS923_MAX_FCNT_GAP   16384

Maximum frame counter gap

◆ AS923_ACKTIMEOUT

#define AS923_ACKTIMEOUT   2000

Ack timeout

◆ AS923_ACK_TIMEOUT_RND

#define AS923_ACK_TIMEOUT_RND   1000

Random ack timeout limits

◆ AS923_RX_WND_2_DR

#define AS923_RX_WND_2_DR   DR_2

Second reception window channel datarate definition.

◆ AS923_MAX_NB_BANDS

#define AS923_MAX_NB_BANDS   1

Maximum number of bands

◆ AS923_BAND0

#define AS923_BAND0
Value:
{ \
100, AS923_MAX_TX_POWER, 0, 0, 0 \
}

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

◆ AS923_LC1

#define AS923_LC1
Value:
{ \
923200000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

LoRaMac default channel 1 Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band }

◆ AS923_LC2

#define AS923_LC2
Value:
{ \
923400000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

LoRaMac default channel 2 Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band }

◆ AS923_LC3

#define AS923_LC3
Value:
{ \
923600000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

◆ AS923_LC4

#define AS923_LC4
Value:
{ \
923800000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

◆ AS923_LC5

#define AS923_LC5
Value:
{ \
924000000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

◆ AS923_LC6

#define AS923_LC6
Value:
{ \
924200000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

◆ AS923_LC7

#define AS923_LC7
Value:
{ \
924400000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

◆ AS923_LC8

#define AS923_LC8
Value:
{ \
924600000, 0, {((DR_5 << 4) | DR_2)}, 0 \
}

◆ AS923_JOIN_CHANNELS

#define AS923_JOIN_CHANNELS   (uint16_t)(LC(1) | LC(2))

LoRaMac channels which are allowed for the join procedure

◆ AS923_RSSI_FREE_TH

#define AS923_RSSI_FREE_TH   -85

RSSI threshold for a free channel [dBm]

◆ AS923_CARRIER_SENSE_TIME

#define AS923_CARRIER_SENSE_TIME   6

Specifies the time the node performs a carrier sense

Function Documentation

◆ RegionAS923GetPhyParam()

PhyParam_t RegionAS923GetPhyParam ( 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.

◆ RegionAS923SetBandTxDone()

void RegionAS923SetBandTxDone ( SetBandTxDoneParams_t txDone)

Updates the last TX done parameters of the current channel.

Parameters
txDonePointer to the function parameters.

◆ RegionAS923InitDefaults()

void RegionAS923InitDefaults ( InitType_t  type)

Initializes the channels masks and the channels.

Parameters
typeSets the initialization type.

◆ RegionAS923Verify()

bool RegionAS923Verify ( 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.

◆ RegionAS923ApplyCFList()

void RegionAS923ApplyCFList ( ApplyCFListParams_t applyCFList)

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

Parameters
applyCFListPointer to the function parameters.

◆ RegionAS923ChanMaskSet()

bool RegionAS923ChanMaskSet ( ChanMaskSetParams_t chanMaskSet)

Sets a channels mask.

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

◆ RegionAS923AdrNext()

bool RegionAS923AdrNext ( 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.

◆ RegionAS923ComputeRxWindowParameters()

void RegionAS923ComputeRxWindowParameters ( 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.

◆ RegionAS923RxConfig()

bool RegionAS923RxConfig ( 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.

◆ RegionAS923TxConfig()

bool RegionAS923TxConfig ( 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.

◆ RegionAS923LinkAdrReq()

uint8_t RegionAS923LinkAdrReq ( 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.

◆ RegionAS923RxParamSetupReq()

uint8_t RegionAS923RxParamSetupReq ( 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.

◆ RegionAS923NewChannelReq()

uint8_t RegionAS923NewChannelReq ( 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.

◆ RegionAS923TxParamSetupReq()

int8_t RegionAS923TxParamSetupReq ( 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.

◆ RegionAS923DlChannelReq()

uint8_t RegionAS923DlChannelReq ( 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.

◆ RegionAS923AlternateDr()

int8_t RegionAS923AlternateDr ( AlternateDrParams_t alternateDr)

Alternates the datarate of the channel for the join request.

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

◆ RegionAS923CalcBackOff()

void RegionAS923CalcBackOff ( CalcBackOffParams_t calcBackOff)

Calculates the back-off time.

Parameters
calcBackOffPointer to the function parameters.

◆ RegionAS923NextChannel()

bool RegionAS923NextChannel ( 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]

◆ RegionAS923ChannelAdd()

LoRaMacStatus_t RegionAS923ChannelAdd ( ChannelAddParams_t channelAdd)

Adds a channel.

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

◆ RegionAS923ChannelsRemove()

bool RegionAS923ChannelsRemove ( ChannelRemoveParams_t channelRemove)

Removes a channel.

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

◆ RegionAS923SetContinuousWave()

void RegionAS923SetContinuousWave ( ContinuousWaveParams_t continuousWave)

Sets the radio into continuous wave mode.

Parameters
continuousWavePointer to the function parameters.

◆ RegionAS923ApplyDrOffset()

uint8_t RegionAS923ApplyDrOffset ( 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.

◆ RegionAS923SetVersion()

bool RegionAS923SetVersion ( uint8_t  version)

Adjust frequency band to AS923-1, AS923-2, AS923-3.

Parameters
version1 => use default frequencies (AS923-1) 2 => adjust frequencies by substracting 1.8MHz (AS923-2) 3 => adjust frequencies by substracting 6.6MHz (AS923-3) 4 => adjust frequencies by substracting 5.9MHz (AS923-4), only lower 8 channels supported

Variable Documentation

◆ DataratesAS923

const uint8_t DataratesAS923[] = {12, 11, 10, 9, 8, 7, 7, 50}
static

Data rates table definition

◆ BandwidthsAS923

const uint32_t BandwidthsAS923[] = {125000, 125000, 125000, 125000, 125000, 125000, 250000, 0}
static

Bandwidths table definition in Hz

◆ MaxPayloadOfDatarateDwell0AS923

const uint8_t MaxPayloadOfDatarateDwell0AS923[] = {59, 59, 59, 123, 230, 230, 230, 230}
static

Maximum payload with respect to the datarate index. Cannot operate with repeater. The table is valid for the dwell time configuration of 0 for uplinks and downlinks.

◆ MaxPayloadOfDatarateRepeaterDwell0AS923

const uint8_t MaxPayloadOfDatarateRepeaterDwell0AS923[] = {59, 59, 59, 123, 250, 250, 250, 250}
static

Maximum payload with respect to the datarate index. Can operate with repeater. The table is valid for the dwell time configuration of 0 for uplinks and downlinks. The table provides repeater support.

◆ MaxPayloadOfDatarateDwell1UpAS923

const uint8_t MaxPayloadOfDatarateDwell1UpAS923[] = {0, 0, 19, 61, 133, 250, 250, 250}
static

Maximum payload with respect to the datarate index. Can operate with and without repeater. The table proides repeater support. The table is only valid for uplinks.

◆ MaxPayloadOfDatarateDwell1DownAS923

const uint8_t MaxPayloadOfDatarateDwell1DownAS923[] = {0, 0, 19, 61, 133, 250, 250, 250}
static

Maximum payload with respect to the datarate index. Can operate with and without repeater. The table proides repeater support. The table is only valid for downlinks.

◆ EffectiveRx1DrOffsetAS923

const int8_t EffectiveRx1DrOffsetAS923[] = {0, 1, 2, 3, 4, 5, -1, -2}
static

Effective datarate offsets for receive window 1.

AS923_MAX_TX_POWER
#define AS923_MAX_TX_POWER
Definition: RegionAS923.h:111
DR_5
#define DR_5
Definition: Region.h:179
DR_2
#define DR_2
Definition: Region.h:122