46 #if RADIO_TYPE == RADIO_AT86RF230 || defined(DOXYGEN)
47 # include "at86rf230a.h"
48 #elif RADIO_TYPE == RADIO_AT86RF230B
49 # include "at86rf230b.h"
50 #elif RADIO_TYPE == RADIO_AT86RF231
51 # include "at86rf231.h"
52 #elif RADIO_TYPE == RADIO_AT86RF212
53 # include "at86rf212.h"
54 #elif RADIO_TYPE == RADIO_AT86RF232
55 # include "at86rf232.h"
56 #elif RADIO_TYPE == RADIO_AT86RF233
57 # include "at86rf233.h"
58 #elif RADIO_TYPE == RADIO_ATMEGA128RFA1_A ||\
59 RADIO_TYPE == RADIO_ATMEGA128RFA1_B ||\
60 RADIO_TYPE == RADIO_ATMEGA128RFA1_C ||\
61 RADIO_TYPE == RADIO_ATMEGA128RFA1_D
62 # include "atmega_rfa1.h"
63 #elif RADIO_TYPE == RADIO_ATMEGA256RFR2 || RADIO_TYPE == RADIO_ATMEGA2564RFR2
64 # include "atmega_rfr2.h"
66 # error "RADIO_TYPE is not defined or wrong"
109 #define TRX_INIT_FAIL (1)
111 #define TRX_PLL_FAIL (2)
113 #define INVALID_PART_NUM (2)
114 #define INVALID_REV_NUM (1)
117 #define BPSK20 (0x52)
118 #define BPSK20_STR "BPSK20"
119 #define BPSK40 (0x92)
120 #define BPSK40_STR "BPSK40"
121 #define OQPSK100 (0x90)
122 #define OQPSK100_STR "OQPSK100"
123 #define OQPSK200 (0x93)
124 #define OQPSK200_STR "OQPSK200"
125 #define OQPSK250 (0x33)
126 #define OQPSK250_STR "OQPSK250"
127 #define OQPSK400 (0x95)
128 #define OQPSK400_STR "OQPSK400"
129 #define OQPSK500 (0x94)
130 #define OQPSK500_STR "OQPSK500"
131 #define OQPSK1000 (0x34)
132 #define OQPSK1000_STR "OQPSK1000"
133 #define OQPSK2000 (0x54)
134 #define OQPSK2000_STR "OQPSK2000"
136 #define RATE_NONE (0xFF)
139 #ifndef MAX_FRAME_SIZE
140 # define MAX_FRAME_SIZE (127)
144 #define TRX_NEXT_CHANNEL(x) ((channel_t)(x+1) > TRX_MAX_CHANNEL ? TRX_MAX_CHANNEL : x+1)
145 #define TRX_PREV_CHANNEL(x) ((channel_t)(x-1) < TRX_MIN_CHANNEL ? TRX_MIN_CHANNEL : x-1)
146 #define TRX_NEXT_CHANNEL_WRAP(x) ((channel_t)(x+1) > TRX_MAX_CHANNEL ? TRX_MIN_CHANNEL : x+1 )
147 #define TRX_PREV_CHANNEL_WRAP(x) ((channel_t)(x-1) < TRX_MIN_CHANNEL ? TRX_MAX_CHANNEL : x-1 )
150 #if defined (SR_MASK_AMI) || defined(DOXYGEN)
152 # define TRX_IRQ_AMI_EI() trx_bit_write(SR_MASK_AMI, 1);
154 # define TRX_IRQ_AMI_DI() trx_bit_write(SR_MASK_AMI, 0);
157 #if defined (SR_MASK_BAT_LOW) || defined(DOXYGEN)
159 # define TRX_IRQ_BAT_LOW_EI() trx_bit_write(SR_MASK_BAT_LOW, 1);
161 # define TRX_IRQ_BAT_LOW_DI() trx_bit_write(SR_MASK_BAT_LOW, 0);
164 #if defined (SR_MASK_CCA_ED_READY) || defined(DOXYGEN)
166 # define TRX_IRQ_CCA_ED_READY_EI() trx_bit_write(SR_MASK_CCA_ED_READY, 1);
168 # define TRX_IRQ_CCA_ED_READY_DI() trx_bit_write(SR_MASK_CCA_ED_READY, 0);
171 #if defined (SR_MASK_PLL_UNLOCK) || defined(DOXYGEN)
173 # define TRX_IRQ_PLL_UNLOCK_EI() trx_bit_write(SR_MASK_PLL_UNLOCK, 1);
175 # define TRX_IRQ_PLL_UNLOCK_DI() trx_bit_write(SR_MASK_PLL_UNLOCK, 0);
178 #if defined (SR_MASK_RX_START) || defined(DOXYGEN)
180 # define TRX_IRQ_RX_START_EI() trx_bit_write(SR_MASK_RX_START, 1);
182 # define TRX_IRQ_RX_START_DI() trx_bit_write(SR_MASK_RX_START, 0);
185 #if defined (SR_MASK_TRX_IRQ_END) || defined(DOXYGEN)
187 # define TRX_IRQ_TRX_IRQ_END_EI() trx_bit_write(SR_MASK_TRX_IRQ_END, 1);
189 # define TRX_IRQ_TRX_IRQ_END_DI() trx_bit_write(SR_MASK_TRX_IRQ_END, 0);
192 #if defined (SR_MASK_TRX_IRQ_START) || defined(DOXYGEN)
194 # define TRX_IRQ_TRX_IRQ_START_EI() trx_bit_write(SR_MASK_TRX_IRQ_START, 1);
196 # define TRX_IRQ_TRX_IRQ_START_DI() trx_bit_write(SR_MASK_TRX_IRQ_START, 0);
199 #if defined (SR_MASK_UR) || defined(DOXYGEN)
201 # define TRX_IRQ_UR_EI() trx_bit_write(SR_MASK_UR, 1);
203 # define TRX_IRQ_UR_DI() trx_bit_write(SR_MASK_UR, 0);
306 uint8_t
trx_frame_read(uint8_t *data, uint8_t datasz, uint8_t *lqi);
497 static inline uint8_t trx_check_pll_lock(
void)
499 uint8_t val, cnt = 255;
509 if (val & TRX_IRQ_PLL_LOCK)
void trx_sram_write(trx_ramaddr_t addr, uint8_t length, uint8_t *data)
Write SRAM.
uint8_t trx_get_datarate_str(uint8_t idx, char *rstr, uint8_t nlen)
return a copy of a data rate in a buffer.
void trx_set_irq_handler(trx_irq_handler_t irqhandler)
void trx_parms_get(trx_param_t *p)
Get static transceiver parameters.
void trx_sram_read(trx_ramaddr_t addr, uint8_t length, uint8_t *data)
Read SRAM.
#define DELAY_US(x)
Macro for delays with us resolution.
static int trx_identify(void)
Verify that correct radio type is used.
uint8_t trx_set_datarate(uint8_t rate_type)
set data rate
uint8_t trx_frame_read_crc(uint8_t *data, uint8_t datasz, bool *crc_ok)
Frame Read with CRC check (and crc value kept)
void trx_frame_write(uint8_t length, uint8_t *data)
Frame Write.
void * trx_decode_datarate_p(uint8_t rhash)
Decodes a hash value and returns a datarate string pointer in program memory.
void trx_bit_write(trx_regaddr_t addr, trx_regval_t mask, uint8_t pos, trx_regval_t value)
subregister write
static uint8_t trx_init(void)
Basic radio initialization function,.
static void trx_set_panid(uint16_t panid)
Write the PANID to the address filter registers.
uint8_t trx_get_number_datarates(void)
return the number of supported data rates.
uint8_t trx_parms_set(trx_param_t *p)
Set static transceiver parameters.
void * trx_get_datarate_str_p(uint8_t idx)
return a pointer to a datarate string in the programm memory.
void trx_io_init(uint8_t spirate)
Transceiver IO initialization (SPI, RF Frontend if applicable)
uint8_t trx_decode_datarate(uint8_t rhash, char *rstr, uint8_t nlen)
Decodes a hash value and returns a datarate string pointer.
uint8_t trx_reg_read(trx_regaddr_t addr)
Read Register.
uint8_t trx_get_datarate(void)
get current adjusted data rate.
static void trx_set_longaddr(uint64_t longaddr)
Write the 64 bit long address (MAC address) to the address filter registers.
trx_regval_t trx_bit_read(trx_regaddr_t addr, trx_regval_t mask, uint8_t pos)
subregister read
uint8_t trx_frame_read_data_crc(uint8_t *data, uint8_t datasz, uint8_t *lqi, bool *crc_ok)
Frame Read with CRC check (and crc value suppressed)
void trx_reg_write(trx_regaddr_t addr, trx_regval_t val)
Write Register.
static void trx_set_shortaddr(uint16_t shortaddr)
Write the 16 bit short address to the address filter registers.
void(* trx_irq_handler_t)(uint8_t cause)
uint8_t trx_frame_get_length(void)
Get length of a received frame.
uint8_t trx_frame_read(uint8_t *data, uint8_t datasz, uint8_t *lqi)
Frame Read.