LDL  0.5.0
Function List
Radio

Description

The application should initialise the radio with MAC in the following order:

  1. LDL_SX1272_init()/LDL_SX1276_init()/LDL_SX1261_init()/LDL_SX1262_init()
  2. LDL_MAC_init()
  3. LDL_Radio_setEventCallback()

MAC calls all non-static (i.e. functions that pass self as first argument) via ldl_radio_interface. This means it is possible to wrap Radio in a C++ if necessary.

Be careful using these interfaces for other projects. The driver expects certain functions to be called before others. For best results you should study how MAC calls the interfaces to figure out what will work.

Function List

const struct ldl_radio_interfaceLDL_Radio_getInterface (const struct ldl_radio *self)
 
void LDL_Radio_setEventCallback (struct ldl_radio *self, struct ldl_mac *ctx, ldl_radio_event_fn cb)
 
int16_t LDL_Radio_getMinSNR (enum ldl_spreading_factor sf)
 
uint32_t LDL_Radio_getAirTime (enum ldl_signal_bandwidth bw, enum ldl_spreading_factor sf, uint8_t size, bool crc)
 
uint32_t LDL_Radio_bwToNumber (enum ldl_signal_bandwidth bw)
 
void LDL_SX1261_init (struct ldl_radio *self, const struct ldl_sx126x_init_arg *arg)
 
void LDL_SX1262_init (struct ldl_radio *self, const struct ldl_sx126x_init_arg *arg)
 
const struct ldl_radio_interfaceLDL_SX1261_getInterface (void)
 
const struct ldl_radio_interfaceLDL_SX1262_getInterface (void)
 
void LDL_SX1272_init (struct ldl_radio *self, const struct ldl_sx127x_init_arg *arg)
 
void LDL_SX1276_init (struct ldl_radio *self, const struct ldl_sx127x_init_arg *arg)
 
const struct ldl_radio_interfaceLDL_SX1272_getInterface (void)
 
const struct ldl_radio_interfaceLDL_SX1276_getInterface (void)
 

Functions

◆ LDL_Radio_getInterface()

const struct ldl_radio_interface* LDL_Radio_getInterface ( const struct ldl_radio self)

Get interface for initialised radio driver

◆ LDL_Radio_setEventCallback()

void LDL_Radio_setEventCallback ( struct ldl_radio self,
struct ldl_mac ctx,
ldl_radio_event_fn  cb 
)

Set event handler callback

This is how the Radio tells the MAC about rising interrupt lines.

Parameters
[in]selfldl_radio
[in]ctxpassed back as first argument of handler
[in]cbLDL_MAC_radioEvent() or an intermediate

◆ LDL_Radio_getMinSNR()

int16_t LDL_Radio_getMinSNR ( enum ldl_spreading_factor  sf)

Get minimum SNR for a given spreading factor

Parameters
[in]sfspreading factor
Returns
dbm

◆ LDL_Radio_getAirTime()

uint32_t LDL_Radio_getAirTime ( enum ldl_signal_bandwidth  bw,
enum ldl_spreading_factor  sf,
uint8_t  size,
bool  crc 
)

Time taken to transmit a message of certain size

Parameters
[in]bw
[in]sf
[in]size
[in]crc
Return values
milliseconds

◆ LDL_Radio_bwToNumber()

uint32_t LDL_Radio_bwToNumber ( enum ldl_signal_bandwidth  bw)

Convert bandwidth enumeration to Hz

Parameters
[in]bwbandwidth
Returns
Hz

◆ LDL_SX1261_init()

void LDL_SX1261_init ( struct ldl_radio self,
const struct ldl_sx126x_init_arg arg 
)

Initialise SX1261 radio driver

Parameters
[in]self
[in]argldl_sx126x_init_arg

◆ LDL_SX1262_init()

void LDL_SX1262_init ( struct ldl_radio self,
const struct ldl_sx126x_init_arg arg 
)

Initialise SX1262 radio driver

Parameters
[in]self
[in]argldl_sx126x_init_arg

◆ LDL_SX1261_getInterface()

const struct ldl_radio_interface* LDL_SX1261_getInterface ( void  )

Get radio interface

Returns
ldl_radio_interface

◆ LDL_SX1262_getInterface()

const struct ldl_radio_interface* LDL_SX1262_getInterface ( void  )

Get radio interface

Returns
ldl_radio_interface

◆ LDL_SX1272_init()

void LDL_SX1272_init ( struct ldl_radio self,
const struct ldl_sx127x_init_arg arg 
)

Initialise SX1272 radio driver

Parameters
[in]self
[in]argldl_sx127x_init_arg

◆ LDL_SX1276_init()

void LDL_SX1276_init ( struct ldl_radio self,
const struct ldl_sx127x_init_arg arg 
)

Initialise SX1276 radio driver

Parameters
[in]self
[in]argldl_sx127x_init_arg

◆ LDL_SX1272_getInterface()

const struct ldl_radio_interface* LDL_SX1272_getInterface ( void  )

Get radio interface

Returns
ldl_radio_interface

◆ LDL_SX1276_getInterface()

const struct ldl_radio_interface* LDL_SX1276_getInterface ( void  )

Get radio interface

Returns
ldl_radio_interface

Data Structure Documentation

◆ ldl_radio

struct ldl_radio

Radio state

◆ ldl_sx126x_init_arg

struct ldl_sx126x_init_arg

init arguments for SX1261 and SX1262 radio

Data Fields
enum ldl_radio_xtal xtal

type of XTAL

int16_t tx_gain

Apply TX gain compensation in units of (dB x 10-2)

(e.g. -2.4dB == -240)

void * chip

a pointer that will be passed as self when calling ldl_chip_* functions

ldl_chip_write_fn chip_write

ldl_chip_write_fn

ldl_chip_read_fn chip_read

ldl_chip_read_fn

ldl_chip_set_mode_fn chip_set_mode

ldl_chip_set_mode_fn

enum ldl_sx126x_regulator regulator

choose regulator hardware is configured for

enum ldl_sx126x_voltage voltage

choose tcxo voltage setting

enum ldl_sx126x_txen txen

choose txen switch mode

bool trim_xtal

set true to trim xtal with xta and xtb parameters

uint8_t xta

XTA trim value

uint8_t xtb

XTB trim value

◆ ldl_sx127x_init_arg

struct ldl_sx127x_init_arg

init arguments for SX1272 and SX1276 radio

Data Fields
enum ldl_radio_xtal xtal

type of XTAL

int16_t tx_gain

Apply TX gain compensation in units of (dB x 10-2)

(e.g. -2.4dB == -240)

void * chip

a pointer that will be passed as self when calling ldl_chip_* functions

ldl_chip_write_fn chip_write

ldl_chip_write_fn

ldl_chip_read_fn chip_read

ldl_chip_read_fn

ldl_chip_set_mode_fn chip_set_mode

ldl_chip_set_mode_fn

enum ldl_sx127x_pa pa

SX1272/6 transceivers have PAs on different physical pins

The driver needs to know if one or both are connected.

Enumeration Type Documentation

◆ ldl_radio_type

Radio driver type

Drivers are included in the build by defining:

Enumerator
LDL_RADIO_NONE 

no radio

LDL_RADIO_SX1272 

SX1272

LDL_RADIO_SX1276 

SX1276

LDL_RADIO_SX1261 

SX1261

LDL_RADIO_SX1262 

SX1262

◆ ldl_radio_mode

This controls the radio

Enumerator
LDL_RADIO_MODE_RESET 

assert reset line

LDL_RADIO_MODE_BOOT 

de-assert reset line

LDL_RADIO_MODE_SLEEP 

cold sleep

LDL_RADIO_MODE_RX 

ready for rx

LDL_RADIO_MODE_TX 

ready for tx

LDL_RADIO_MODE_HOLD 

between tx and rx

◆ ldl_radio_xtal

oscillator type

Enumerator
LDL_RADIO_XTAL_CRYSTAL 

built-in crystal oscillator

LDL_RADIO_XTAL_TCXO 

external temperature compensated

◆ ldl_sx127x_pa

SX127X power amplifier setting

Enumerator
LDL_SX127X_PA_AUTO 

driver decides which PA to use

LDL_SX127X_PA_RFO 

use RFO

LDL_SX127X_PA_BOOST 

use BOOST

◆ ldl_sx126x_regulator

SX126X regulator setting

◆ ldl_spreading_factor

Spreading Factor

Enumerator
LDL_SF_7 

128 chips/symbol

LDL_SF_8 

256 chips/symbol

LDL_SF_9 

512 chips/symbol

LDL_SF_10 

1024 chips/symbol

LDL_SF_11 

2048 chips/symbol

LDL_SF_12 

4096 chips/symbol

◆ ldl_signal_bandwidth

signal bandwidth

Enumerator
LDL_BW_125 

125 KHz

LDL_BW_250 

250 KHz

LDL_BW_500 

500 KHz