Interface definition for MRF24J40 based drivers. More...

Detailed Description

Interface definition for MRF24J40 based drivers.

Author
Neo Nenaco neo@n.nosp@m.enac.nosp@m.o.de
Koen Zandberg koen@.nosp@m.berg.nosp@m.zand..nosp@m.net

Definition in file mrf24j40.h.

#include <stdint.h>
#include "board.h"
#include "periph/spi.h"
#include "periph/gpio.h"
#include "net/netdev.h"
#include "net/netdev/ieee802154.h"
#include "net/gnrc/nettype.h"
+ Include dependency graph for mrf24j40.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  mrf24j40_params
 struct holding all params needed for device initialization More...
 
struct  mrf24j40_t
 Device descriptor for MRF24J40 radio devices. More...
 

Macros

#define MRF24J40_TASK_TX_DONE   (0x01)
 TX operation is done.
 
#define MRF24J40_TASK_TX_READY   (0x02)
 TX operation results ready for processing.
 
#define MRF24J40_TASK_RX_READY   (0x04)
 RX processing needed.
 
#define MRF24J40_MAX_FRAME_RETRIES   (3U)
 Number of frame retries (fixed)
 
#define CONFIG_MRF24J40_USE_EXT_PA_LNA
 Enable external PA/LNA control. More...
 
#define CONFIG_MRF24J40_TEST_SPI_CONNECTION
 Enable basic self-test on init. More...
 

Typedefs

typedef struct mrf24j40_params mrf24j40_params_t
 struct holding all params needed for device initialization
 

Functions

void mrf24j40_setup (mrf24j40_t *dev, const mrf24j40_params_t *params, uint8_t index)
 Setup an MRF24J40 based device state. More...
 
int mrf24j40_reset (mrf24j40_t *dev)
 Trigger a hardware reset and configure radio with default values. More...
 
bool mrf24j40_cca (mrf24j40_t *dev, int8_t *rssi)
 Trigger a clear channel assessment & retrieve RSSI. More...
 
uint16_t mrf24j40_get_addr_short (mrf24j40_t *dev)
 Get the short address of the given device. More...
 
void mrf24j40_set_addr_short (mrf24j40_t *dev, uint16_t addr)
 Set the short address of the given device. More...
 
void mrf24j40_get_addr_long (mrf24j40_t *dev, uint8_t *addr)
 Get the configured long address of the given device. More...
 
void mrf24j40_set_addr_long (mrf24j40_t *dev, const uint8_t *addr)
 Set the long address of the given device. More...
 
uint8_t mrf24j40_get_chan (mrf24j40_t *dev)
 Get the configured channel number of the given device. More...
 
void mrf24j40_set_chan (mrf24j40_t *dev, uint8_t chan)
 Set the channel number of the given device. More...
 
uint16_t mrf24j40_get_pan (mrf24j40_t *dev)
 Get the configured PAN ID of the given device. More...
 
void mrf24j40_set_pan (mrf24j40_t *dev, uint16_t pan)
 Set the PAN ID of the given device. More...
 
int16_t mrf24j40_get_txpower (mrf24j40_t *dev)
 Get the configured transmission power of the given device [in dBm]. More...
 
void mrf24j40_set_txpower (mrf24j40_t *dev, int16_t txpower)
 Set the transmission power of the given device [in dBm]. More...
 
uint8_t mrf24j40_get_csma_max_retries (mrf24j40_t *dev)
 Get the maximum number of channel access attempts per frame (CSMA) More...
 
void mrf24j40_set_csma_max_retries (mrf24j40_t *dev, int8_t retries)
 Set the maximum number of channel access attempts per frame (CSMA) More...
 
void mrf24j40_set_csma_backoff_exp (mrf24j40_t *dev, uint8_t min, uint8_t max)
 Set the min and max backoff exponent for CSMA/CA. More...
 
int8_t mrf24j40_get_cca_threshold (mrf24j40_t *dev)
 Get the CCA threshold value. More...
 
void mrf24j40_set_cca_threshold (mrf24j40_t *dev, int8_t value)
 Set the CCA threshold value. More...
 
void mrf24j40_set_option (mrf24j40_t *dev, uint16_t option, bool state)
 Enable or disable driver specific options. More...
 
void mrf24j40_set_state (mrf24j40_t *dev, uint8_t state)
 Set the state of the given device (trigger a state change) More...
 
void mrf24j40_set_turbo (mrf24j40_t *dev, bool enable)
 Enable or disable proprietary Turbo Mode. More...
 
bool mrf24j40_get_turbo (mrf24j40_t *dev)
 Query the state of the turbo mode. More...
 
void mrf24j40_sleep (mrf24j40_t *dev)
 Put in sleep mode. More...
 
void mrf24j40_assert_sleep (mrf24j40_t *dev)
 Put in sleep mode if idle_state is sleep. More...
 
void mrf24j40_assert_awake (mrf24j40_t *dev)
 Wake up from sleep mode. More...
 
void mrf24j40_reset_state_machine (mrf24j40_t *dev)
 Reset the internal state machine to TRX_OFF mode. More...
 
void mrf24j40_software_reset (mrf24j40_t *dev)
 Software Reset. More...
 
int8_t mrf24j40_dbm_from_reg (uint8_t value)
 Convert scalar from mrf24j40 RSSI to dBm. More...
 
void mrf24j40_tx_prepare (mrf24j40_t *dev)
 Prepare for sending of data. More...
 
size_t mrf24j40_tx_load (mrf24j40_t *dev, uint8_t *data, size_t len, size_t offset)
 Load chunks of data into the transmit buffer of the given device. More...
 
void mrf24j40_tx_exec (mrf24j40_t *dev)
 Trigger sending of data previously loaded into transmit buffer. More...
 

Flags for pseudo device internal states

#define MRF24J40_PSEUDO_STATE_IDLE   (0x01)
 Idle, ready to transmit or receive.
 
#define MRF24J40_PSEUDO_STATE_SLEEP   (0x02)
 sleep mode, registers functional, but no RF
 
#define MRF24J40_PSEUDO_STATE_RESET   (0x04)
 Reset device, next state is idle.
 

Internal device option flags

0x00ff is reserved for general IEEE 802.15.4 flags (see netdev_ieee802154_t)

#define MRF24J40_OPT_CSMA   (0x0100)
 CSMA active.
 
#define MRF24J40_OPT_PROMISCUOUS   (0x0200)
 promiscuous mode active
 
#define MRF24J40_OPT_PRELOADING   (0x0400)
 preloading enabled
 
#define MRF24J40_OPT_TELL_TX_START   (0x0800)
 notify MAC layer on TX start
 
#define MRF24J40_OPT_TELL_TX_END   (0x1000)
 notify MAC layer on TX finished
 
#define MRF24J40_OPT_TELL_RX_START   (0x2000)
 notify MAC layer on RX start
 
#define MRF24J40_OPT_TELL_RX_END   (0x4000)
 notify MAC layer on RX finished
 
#define MRF24J40_OPT_REQ_AUTO_ACK   (0x8000)
 notify MAC layer on RX finished