Interface definition for MRF24J40 based drivers . More...

Detailed Description

Interface definition for MRF24J40 based drivers .

Neo Nenaco
Koen Zandberg

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 "net/ieee802154/radio.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...


#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 MRF24J40_MAX_MINBE   (3U)
 Maximum value of minimum exponential backoff.
#define MRF24J40_MIN_TXPOWER   (-36)
 Minimum transmission power (dBm)
#define MRF24J40_MAX_TXPOWER   (0)
 Maximum transmission power (dBm)
 Enable external PA/LNA control. More...
 Enable basic self-test on init. More...


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


int mrf24j40_reset (mrf24j40_t *dev)
 Trigger a hardware reset and configure radio with default values. More...
void mrf24j40_set_addr_short (mrf24j40_t *dev, uint16_t addr)
 Set the short 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...
void mrf24j40_set_txpower (mrf24j40_t *dev, int16_t txpower)
 Set the transmission power of the given device [in dBm]. 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...
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...
void mrf24j40_sleep (mrf24j40_t *dev)
 Put in sleep mode. More...
void mrf24j40_wake_up (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...
void mrf24j40_radio_irq_handler (void *dev)
 IRQ Handler for the MRF24J40 device. More...
int mrf24j40_init (mrf24j40_t *dev, const mrf24j40_params_t *params, ieee802154_dev_t *hal, gpio_cb_t cb, void *ctx)
 Initialize the given MRF24J40 device. 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