19#ifndef AT86RF215_INTERNAL_H
20#define AT86RF215_INTERNAL_H
34#ifndef CONFIG_AT86RF215_RESET_PULSE_WIDTH_US
35#define CONFIG_AT86RF215_RESET_PULSE_WIDTH_US (16U)
41#define AT86RF215_RESET_DELAY_US (16U)
44#define AT86RF215_EDT_DEFAULT (-84)
50#define AT86RF215_RETRIES_MAX_DEFAULT (3)
51#define AT86RF215_CSMA_RETRIES_MAX_DEFAULT (4)
52#define AT86RF215_CSMA_MIN_BE_DEFAULT (3)
53#define AT86RF215_CSMA_MAX_BE_DEFAULT (5)
57#define AT86RF215_ACK_PSDU_BYTES (5)
59#define AT86RF215_OQPSK_MODE_LEGACY (0x1)
60#define AT86RF215_OQPSK_MODE_LEGACY_HDR (0x3)
61#define AT86RF215_MR_OQPSK_MODE(n) ((n) << OQPSKPHRTX_MOD_SHIFT)
652 | PC_FCST_MASK | PC_TXAFCS_MASK
Interface definition for AT86RF215 based drivers.
static uint16_t at86rf215_reg_read16(const at86rf215_t *dev, uint16_t reg)
Read a 16-bit word from a register at address addr from device dev.
void at86rf215_disable_rpc(at86rf215_t *dev)
Internal convenience function to disable reduced power consumption (RPC) for energy detection.
void at86rf215_filter_ack(at86rf215_t *dev, bool on)
Enable / Disable the ACK filter.
static void at86rf215_disable_baseband(const at86rf215_t *dev)
Disable the baseband processor of the device.
static bool is_subGHz(const at86rf215_t *dev)
Checks whether the device operates in the sub-GHz band.
const char * at86rf215_hw_state2a(uint8_t state)
Converts radio state into human readable string.
int at86rf215_hardware_reset(at86rf215_t *dev)
Perform a reset of the entire chip.
static void at86rf215_reg_and(const at86rf215_t *dev, uint16_t reg, uint8_t val)
Reads the contents of reg, apply val with a bitwise AND and then writes the result back to reg.
static void at86rf215_enable_radio(at86rf215_t *dev, uint8_t modulation)
Enable the radio hardware with a given modulation.
void at86rf215_get_random(at86rf215_t *dev, void *data, size_t len)
Read random data from the RNG.
void at86rf215_reg_read_bytes(const at86rf215_t *dev, uint16_t reg, void *data, size_t len)
Read a chunk of data from the memory of the given device.
uint16_t at86rf215_chan_valid(at86rf215_t *dev, uint16_t chan)
Check if a channel number is valid.
uint8_t at86rf215_get_phy_mode(at86rf215_t *dev)
Get the current PHY modulation.
void at86rf215_reg_write(const at86rf215_t *dev, uint16_t reg, uint8_t val)
Write to a register at address addr from device dev.
const char * at86rf215_sw_state2a(at86rf215_state_t state)
Converts state machine state into human readable string.
static void at86rf215_await_state_end(const at86rf215_t *dev, uint8_t state)
Blocks until the device has reached the given state.
bool at86rf215_set_idle_from_rx(at86rf215_t *dev, uint8_t state)
Switch device to non-RX idle state from RX.
void at86rf215_reg_write_bytes(const at86rf215_t *dev, uint16_t reg, const void *data, size_t len)
Write a chunk of data into the memory of the given device.
static void at86rf215_enable_baseband(const at86rf215_t *dev)
Enable the baseband processor of the device.
static uint8_t at86rf215_get_rf_state(const at86rf215_t *dev)
Get the radio state of the device.
#define AT86RF215_OQPSK_MODE_LEGACY
legacy mode, 250 kbit/s
uint8_t at86rf215_reg_read(const at86rf215_t *dev, uint16_t reg)
Read from a register at address addr from device dev.
static void at86rf215_rf_cmd(const at86rf215_t *dev, uint8_t rf_cmd)
Issue a radio command to the device.
static void at86rf215_reg_or(const at86rf215_t *dev, uint16_t reg, uint8_t val)
Reads the contents of reg, apply val with a bitwise OR and then writes the result back to reg.
bool at86rf215_set_rx_from_idle(at86rf215_t *dev, uint8_t *old_state)
Switch device back to IDLE-RX from non-RX idle.
void at86rf215_enable_rpc(at86rf215_t *dev)
Internal convenience function to re-enable reduced power consumption (RPC) after energy detection.
static void at86rf215_reg_write16(const at86rf215_t *dev, uint16_t reg, uint16_t val)
Write a 16-bit word to a register at address addr from device dev.
static void at86rf215_await_state(const at86rf215_t *dev, uint8_t state)
Blocks until the device has reached the given state.
Register Definitions for the AT86RF215 chip.
int at86rf215_FSK_set_channel_spacing(at86rf215_t *dev, uint8_t ch_space)
Configure the channel spacing for the FSK modulation.
uint8_t at86rf215_FSK_get_mod_order(at86rf215_t *dev)
Get the current FSK modulation order.
const uint8_t _at86rf215_fsk_channel_spacing_25kHz[]
Channel Spacing for register values, in 25kHz.
const uint8_t _at86rf215_fsk_srate_10kHz[]
Symbol Rates for register values, in 10kHz.
uint16_t at86rf215_get_channel_spacing(at86rf215_t *dev)
Get the configured channel spacing.
void at86rf215_FSK_prepare_tx(at86rf215_t *dev)
The FSK premable length needs to be switched between RX and TX This function takes care of putting FS...
void at86rf215_FSK_prepare_rx(at86rf215_t *dev)
The FSK premable length needs to be switched between RX and TX This function takes care of putting FS...
uint8_t at86rf215_FSK_get_srate(at86rf215_t *dev)
Get the symbol rate of the FSK modulation.
int at86rf215_FSK_set_mod_idx(at86rf215_t *dev, uint8_t mod_idx)
Configure the modulation index of the FSK modulation The modulation index is a fractional value,...
uint8_t at86rf215_FSK_get_fec(at86rf215_t *dev)
Get the Forward Error Correction (coding) scheme for FSK modulation.
uint8_t at86rf215_FSK_get_mod_idx(at86rf215_t *dev)
Get the current modulation index of the FSK modulation The modulation index is a fractional value,...
int at86rf215_FSK_set_fec(at86rf215_t *dev, uint8_t mode)
Configure the Forward Error Correction (coding) scheme for FSK modulation.
int at86rf215_FSK_set_mod_order(at86rf215_t *dev, uint8_t mod_order)
Configure the FSK modulation order.
int at86rf215_configure_FSK(at86rf215_t *dev, uint8_t srate, uint8_t mod_idx, uint8_t mod_order, uint8_t fec)
Configure the radio to make use of FSK modulation.
int at86rf215_FSK_set_srate(at86rf215_t *dev, uint8_t srate)
Configure the symbol rate of the FSK modulation.
uint8_t at86rf215_OFDM_get_option(at86rf215_t *dev)
Get the current OFDM option.
uint8_t at86rf215_OFDM_get_scheme(at86rf215_t *dev)
Get the current modulation and coding scheme (MCS)
int at86rf215_OFDM_set_option(at86rf215_t *dev, uint8_t option)
Set the current OFDM option.
int at86rf215_OFDM_set_scheme(at86rf215_t *dev, uint8_t mcs)
Set the current modulation and coding scheme (MCS)
int at86rf215_configure_OFDM(at86rf215_t *dev, uint8_t option, uint8_t mcs)
Configure the radio to make use of OFDM modulation.
uint8_t at86rf215_OQPSK_get_mode_legacy(at86rf215_t *dev)
Get the current legacy O-QPSK mode.
uint8_t at86rf215_OQPSK_get_chips(at86rf215_t *dev)
Get the current O-QPSK chip rate.
int at86rf215_OQPSK_set_mode(at86rf215_t *dev, uint8_t mode)
Set the current O-QPSK rate mode.
int at86rf215_configure_OQPSK(at86rf215_t *dev, uint8_t chips, uint8_t rate)
Configure the radio to make use of O-QPSK modulation.
uint8_t at86rf215_OQPSK_get_mode(at86rf215_t *dev)
Get the current O-QPSK rate mode.
static bool at86rf215_OQPSK_is_legacy(at86rf215_t *dev)
Test if O-QPSK PHY operates in legacy mode.
int at86rf215_OQPSK_set_mode_legacy(at86rf215_t *dev, bool high_rate)
Set the current legacy O-QPSK rate mode.
int at86rf215_configure_legacy_OQPSK(at86rf215_t *dev, bool high_rate)
Configure the radio to make use of O-QPSK modulation.
int at86rf215_OQPSK_set_chips(at86rf215_t *dev, uint8_t chips)
Set the current O-QPSK chip rate.
uint16_t RG_PC
see datasheet
uint16_t RG_OQPSKPHRTX
see datasheet
uint16_t RG_STATE
see datasheet
uint16_t RG_IRQS
see datasheet
uint16_t RG_CMD
see datasheet
Device descriptor for AT86RF215 radio devices.
const at86rf215_RF_regs_t * RF
Radio Frontend Registers.
const at86rf215_BBC_regs_t * BBC
Baseband Registers.