70 #define NRF_STATUS_TX_FULL (1<<0)
71 #define NRF_STATUS_RX_P_NO (1<<1 | 1<<2 | 1<<3)
72 #define NRF_STATUS_MAX_RT (1<<4)
73 #define NRF_STATUS_TX_DS (1<<5)
74 #define NRF_STATUS_RX_DR (1<<6)
75 #define NRF_STATUS_IRQ (NRF_STATUS_MAX_RT | NRF_STATUS_TX_DS | NRF_STATUS_RX_DR)
78 #define NRF_STATUS_GET_TX_FULL(s) (s & NRF_STATUS_TX_FULL)
79 #define NRF_STATUS_GET_RX_P_NO(s) ((s & NRF_STATUS_RX_P_NO) >> 1)
80 #define NRF_STATUS_GET_MAX_RT(s) ((s & NRF_STATUS_MAX_RT) >> 4)
81 #define NRF_STATUS_GET_TX_DS(s) ((s & NRF_STATUS_TX_DS) >> 5)
82 #define NRF_STATUS_GET_RX_DR(s) ((s & NRF_STATUS_RX_DR) >> 6)
85 #define NRF_FIFO_RX_EMPTY (1<<0)
86 #define NRF_FIFO_RX_FULL (1<<1)
87 #define NRF_FIFO_TX_EMPTY (1<<4)
88 #define NRF_FIFO_TX_FULL (1<<5)
91 #define NRF_CONFIG_PRIM_RX (1<<0)
92 #define NRF_CONFIG_PWR_UP (1<<1)
93 #define NRF_CONFIG_CRCO (1<<2)
94 #define NRF_CONFIG_EN_CRC (1<<3)
95 #define NRF_CONFIG_MASK_MAX_RT (1<<4)
96 #define NRF_CONFIG_MASK_TX_DS (1<<5)
97 #define NRF_CONFIG_MASK_RX_DR (1<<6)
100 #define NRF_FEATURE_DYN_ACK (1<<0)
101 #define NRF_FEATURE_ACK_PAYLOAD (1<<1)
102 #define NRF_FEATURE_DPL (1<<2)
105 #define NRF_RF_SETUP_RF_DR_LOW (1<<5)
106 #define NRF_RF_SETUP_RF_DR_HIGH (1<<3)
107 #define NRF_RF_SETUP_RF_PWR (1<<1 | 1<<2)
110 #define NRF_SETUP_RETR_ARC (1<<0 | 1<<1 | 1<<2 | 1<<3)
111 #define NRF_SETUP_RETR_ARD (1<<4 | 1<<5 | 1<<6 | 1<<7)
113 #define NRF_MASK_PIPE0 (1<<0)
114 #define NRF_MASK_PIPE1 (1<<1)
115 #define NRF_MASK_PIPE2 (1<<2)
116 #define NRF_MASK_PIPE3 (1<<3)
117 #define NRF_MASK_PIPE4 (1<<4)
118 #define NRF_MASK_PIPE5 (1<<5)
121 #define NRF_CMD_READ_REGISTER 0b00000000
122 #define NRF_CMD_WRITE_REGISTER 0b00100000
123 #define NRF_CMD_READ_RX_PAYLOAD 0b01100001 // Read RX-payload
124 #define NRF_CMD_WRITE_TX_PAYLOAD 0b10100000 // Write TX-payload
125 #define NRF_CMD_FLUSH_TX 0b11100001 // Flush TX FIFO
126 #define NRF_CMD_FLUSH_RX 0b11100010 // Flush RX FIFO
127 #define NRF_CMD_REUSE_TX 0b11100011 // Reuse last transmitted payload
128 #define NRF_CMD_ACTIVATE 0b01010000 // Activate features
129 #define NRF_CMD_READ_RX_PAYLOAD_WIDTH 0b01100000 // Read RX-payload width
130 #define NRF_CMD_WRITE_ACK_PAYLOAD 0b10101000 // Write payload for ACK packet
131 #define NRF_CMD_WRITE_TX_PAYLOAD_NO_ACK 0b10110000 // Disables AUTOACK on packet
132 #define NRF_CMD_NOP 0b11111111 // NOP
135 #define NRF_REG_CONFIG 0x00 // Configuration Register
136 #define NRF_REG_EN_AA 0x01 // Auto Acknowledgment
137 #define NRF_REG_EN_RXADDR 0x02 // Enabled RX Addresses
138 #define NRF_REG_SETUP_AW 0x03 // Setup of Address Widths
139 #define NRF_REG_SETUP_RETR 0x04 // Setup of Automatic Retransmission
140 #define NRF_REG_RF_CH 0x05 // RF Channel
141 #define NRF_REG_RF_SETUP 0x06 // RF Setup Register
142 #define NRF_REG_STATUS 0x07 // Status Register
143 #define NRF_REG_OBSERVE_TX 0x08 // Transmit observe register
144 #define NRF_REG_RPD 0x09 // Receive power detector
145 #define NRF_REG_RX_ADDR_P0 0x0A // Receive address data pipe 0
146 #define NRF_REG_RX_ADDR_P1 0x0B // Receive address data pipe 1
147 #define NRF_REG_RX_ADDR_P2 0x0C // Receive address data pipe 2
148 #define NRF_REG_RX_ADDR_P3 0x0D // Receive address data pipe 3
149 #define NRF_REG_RX_ADDR_P4 0x0E // Receive address data pipe 4
150 #define NRF_REG_RX_ADDR_P5 0x0F // Receive address data pipe 5
151 #define NRF_REG_TX_ADDR 0x10 // Transmit address
152 #define NRF_REG_RX_PW_P0 0x11 // Number of bytes in RX payload
153 #define NRF_REG_RX_PW_P1 0x12 // Number of bytes in RX payload
154 #define NRF_REG_RX_PW_P2 0x13 // Number of bytes in RX payload
155 #define NRF_REG_RX_PW_P3 0x14 // Number of bytes in RX payload
156 #define NRF_REG_RX_PW_P4 0x15 // Number of bytes in RX payload
157 #define NRF_REG_RX_PW_P5 0x16 // Number of bytes in RX payload
158 #define NRF_REG_FIFO_STATUS 0x17 // FIFO Status Register
159 #define NRF_REG_DYNPD 0x1C // Enable dynamic payload length
160 #define NRF_REG_FEATURE 0x1D // Feature Register
void rf_set_tx_addr(const char *address, int addr_len)
Definition: rf.c:157
void rf_mode_rx(void)
Definition: rf.c:244
void rf_write_tx_payload_no_ack(const char *data, int length)
Definition: rf.c:171
void rf_clear_irq(void)
Definition: rf.c:307
void rf_set_address_width(NRF_AW aw)
Definition: rf.c:98
void rf_set_retr_delay(NRF_RETR_DELAY delay)
Definition: rf.c:141
void rf_clear_maxrt_irq(void)
Definition: rf.c:319
void rf_flush_tx(void)
Definition: rf.c:288
void rf_init(void)
Definition: rf.c:23
NRF_SPEED
Definition: rf.h:25
void rf_write_reg_byte(int reg, char value)
Definition: rf.c:358
void rf_write_ack_payload(int pipe, const char *data, int length)
Definition: rf.c:181
int rf_get_address_width(void)
Definition: rf.c:212
NRF_AW
Definition: rf.h:38
void rf_set_frequency(int freq)
Definition: rf.c:201
int rf_get_payload_width(void)
Definition: rf.c:323
void rf_power_down(void)
Definition: rf.c:226
int rf_status(void)
Definition: rf.c:333
void rf_flush_rx(void)
Definition: rf.c:295
void rf_set_speed(NRF_SPEED speed)
Definition: rf.c:53
void rf_enable_pipe_dlp(int pipes)
Definition: rf.c:271
void rf_enable_features(int features)
Definition: rf.c:280
void rf_enable_pipe_autoack(int pipes)
Definition: rf.c:253
void rf_mode_tx(void)
Definition: rf.c:235
void rf_enable_pipe_address(int pipes)
Definition: rf.c:262
void rf_clear_rx_irq(void)
Definition: rf.c:311
void rf_read_rx_payload(char *data, int length)
Definition: rf.c:191
NRF_RETR_DELAY
Definition: rf.h:50
void rf_read_reg(int reg, char *data, int len)
Definition: rf.c:362
void rf_write_reg(int reg, const char *data, int len)
Definition: rf.c:349
void rf_set_rx_addr(int pipe, const char *address, int addr_len)
Definition: rf.c:153
int rf_get_frequency(void)
Definition: rf.c:207
char rf_read_reg_byte(int reg)
Definition: rf.c:371
int rf_fifo_status(void)
Definition: rf.c:341
int rf_rx_power_detect(void)
Definition: rf.c:345
void rf_set_power(NRF_POWER power)
Definition: rf.c:80
void rf_power_up(void)
Definition: rf.c:217
void rf_write_tx_payload(const char *data, int length)
Definition: rf.c:161
void rf_clear_tx_irq(void)
Definition: rf.c:315
NRF_POWER
Definition: rf.h:31
void rf_flush_all(void)
Definition: rf.c:302
NRF_CRC
Definition: rf.h:44
void rf_set_retr_retries(int retries)
Definition: rf.c:129
void rf_set_crc_type(NRF_CRC crc_type)
Definition: rf.c:102