1*150812a8SEvalZero /*
2*150812a8SEvalZero * Copyright (c) 2018, Nordic Semiconductor ASA
3*150812a8SEvalZero * All rights reserved.
4*150812a8SEvalZero *
5*150812a8SEvalZero * Redistribution and use in source and binary forms, with or without
6*150812a8SEvalZero * modification, are permitted provided that the following conditions are met:
7*150812a8SEvalZero *
8*150812a8SEvalZero * 1. Redistributions of source code must retain the above copyright notice, this
9*150812a8SEvalZero * list of conditions and the following disclaimer.
10*150812a8SEvalZero *
11*150812a8SEvalZero * 2. Redistributions in binary form must reproduce the above copyright
12*150812a8SEvalZero * notice, this list of conditions and the following disclaimer in the
13*150812a8SEvalZero * documentation and/or other materials provided with the distribution.
14*150812a8SEvalZero *
15*150812a8SEvalZero * 3. Neither the name of the copyright holder nor the names of its
16*150812a8SEvalZero * contributors may be used to endorse or promote products derived from this
17*150812a8SEvalZero * software without specific prior written permission.
18*150812a8SEvalZero *
19*150812a8SEvalZero * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20*150812a8SEvalZero * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*150812a8SEvalZero * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*150812a8SEvalZero * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23*150812a8SEvalZero * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24*150812a8SEvalZero * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25*150812a8SEvalZero * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26*150812a8SEvalZero * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27*150812a8SEvalZero * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28*150812a8SEvalZero * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29*150812a8SEvalZero * POSSIBILITY OF SUCH DAMAGE.
30*150812a8SEvalZero */
31*150812a8SEvalZero
32*150812a8SEvalZero #ifndef NRF_RADIO_H__
33*150812a8SEvalZero #define NRF_RADIO_H__
34*150812a8SEvalZero
35*150812a8SEvalZero #include <nrfx.h>
36*150812a8SEvalZero
37*150812a8SEvalZero #ifdef __cplusplus
38*150812a8SEvalZero extern "C" {
39*150812a8SEvalZero #endif
40*150812a8SEvalZero
41*150812a8SEvalZero /**
42*150812a8SEvalZero * @defgroup nrf_radio_hal RADIO HAL
43*150812a8SEvalZero * @{
44*150812a8SEvalZero * @ingroup nrf_radio
45*150812a8SEvalZero * @brief Hardware access layer for managing the RADIO peripheral.
46*150812a8SEvalZero */
47*150812a8SEvalZero
48*150812a8SEvalZero /**
49*150812a8SEvalZero * @brief RADIO tasks.
50*150812a8SEvalZero */
51*150812a8SEvalZero typedef enum
52*150812a8SEvalZero {
53*150812a8SEvalZero /*lint -save -e30*/
54*150812a8SEvalZero NRF_RADIO_TASK_TXEN = offsetof(NRF_RADIO_Type, TASKS_TXEN), /**< Enable RADIO in TX mode. */
55*150812a8SEvalZero NRF_RADIO_TASK_RXEN = offsetof(NRF_RADIO_Type, TASKS_RXEN), /**< Enable RADIO in RX mode. */
56*150812a8SEvalZero NRF_RADIO_TASK_START = offsetof(NRF_RADIO_Type, TASKS_START), /**< Start RADIO. */
57*150812a8SEvalZero NRF_RADIO_TASK_STOP = offsetof(NRF_RADIO_Type, TASKS_STOP), /**< Stop RADIO. */
58*150812a8SEvalZero NRF_RADIO_TASK_DISABLE = offsetof(NRF_RADIO_Type, TASKS_DISABLE), /**< Disable RADIO. */
59*150812a8SEvalZero NRF_RADIO_TASK_RSSISTART = offsetof(NRF_RADIO_Type, TASKS_RSSISTART), /**< Start the RSSI and take one single sample of the receive signal strength. */
60*150812a8SEvalZero NRF_RADIO_TASK_RSSISTOP = offsetof(NRF_RADIO_Type, TASKS_RSSISTOP), /**< Stop the RSSI measurement. */
61*150812a8SEvalZero NRF_RADIO_TASK_BCSTART = offsetof(NRF_RADIO_Type, TASKS_BCSTART), /**< Start the bit counter. */
62*150812a8SEvalZero NRF_RADIO_TASK_BCSTOP = offsetof(NRF_RADIO_Type, TASKS_BCSTOP), /**< Stop the bit counter. */
63*150812a8SEvalZero #if defined(RADIO_TASKS_EDSTART_TASKS_EDSTART_Msk) || defined(__NRFX_DOXYGEN__)
64*150812a8SEvalZero NRF_RADIO_TASK_EDSTART = offsetof(NRF_RADIO_Type, TASKS_EDSTART), /**< Start the Energy Detect measurement used in IEEE 802.15.4 mode. */
65*150812a8SEvalZero #endif
66*150812a8SEvalZero #if defined(RADIO_TASKS_EDSTOP_TASKS_EDSTOP_Msk) || defined(__NRFX_DOXYGEN__)
67*150812a8SEvalZero NRF_RADIO_TASK_EDSTOP = offsetof(NRF_RADIO_Type, TASKS_EDSTOP), /**< Stop the Energy Detect measurement. */
68*150812a8SEvalZero #endif
69*150812a8SEvalZero #if defined(RADIO_TASKS_CCASTART_TASKS_CCASTART_Msk) || defined(__NRFX_DOXYGEN__)
70*150812a8SEvalZero NRF_RADIO_TASK_CCASTART = offsetof(NRF_RADIO_Type, TASKS_CCASTART), /**< Start the Clear Channel Assessment used in IEEE 802.15.4 mode. */
71*150812a8SEvalZero #endif
72*150812a8SEvalZero #if defined(RADIO_TASKS_CCASTOP_TASKS_CCASTOP_Msk) || defined(__NRFX_DOXYGEN__)
73*150812a8SEvalZero NRF_RADIO_TASK_CCASTOP = offsetof(NRF_RADIO_Type, TASKS_CCASTOP), /**< Stop the Clear Channel Assessment. */
74*150812a8SEvalZero #endif
75*150812a8SEvalZero /*lint -restore*/
76*150812a8SEvalZero } nrf_radio_task_t;
77*150812a8SEvalZero
78*150812a8SEvalZero /**
79*150812a8SEvalZero * @brief RADIO events.
80*150812a8SEvalZero */
81*150812a8SEvalZero typedef enum
82*150812a8SEvalZero {
83*150812a8SEvalZero /*lint -save -e30*/
84*150812a8SEvalZero NRF_RADIO_EVENT_READY = offsetof(NRF_RADIO_Type, EVENTS_READY), /**< Radio has ramped up and is ready to be started. */
85*150812a8SEvalZero NRF_RADIO_EVENT_ADDRESS = offsetof(NRF_RADIO_Type, EVENTS_ADDRESS), /**< Address sent or received. */
86*150812a8SEvalZero NRF_RADIO_EVENT_PAYLOAD = offsetof(NRF_RADIO_Type, EVENTS_PAYLOAD), /**< Packet payload sent or received. */
87*150812a8SEvalZero NRF_RADIO_EVENT_END = offsetof(NRF_RADIO_Type, EVENTS_END), /**< Packet transmitted or received. */
88*150812a8SEvalZero NRF_RADIO_EVENT_DISABLED = offsetof(NRF_RADIO_Type, EVENTS_DISABLED), /**< RADIO has been disabled. */
89*150812a8SEvalZero NRF_RADIO_EVENT_DEVMATCH = offsetof(NRF_RADIO_Type, EVENTS_DEVMATCH), /**< A device address match occurred on the last received packet. */
90*150812a8SEvalZero NRF_RADIO_EVENT_DEVMISS = offsetof(NRF_RADIO_Type, EVENTS_DEVMISS), /**< No device address match occurred on the last received packet. */
91*150812a8SEvalZero NRF_RADIO_EVENT_RSSIEND = offsetof(NRF_RADIO_Type, EVENTS_RSSIEND), /**< Sampling of receive signal strength complete. */
92*150812a8SEvalZero NRF_RADIO_EVENT_BCMATCH = offsetof(NRF_RADIO_Type, EVENTS_BCMATCH), /**< Bit counter reached bit count value. */
93*150812a8SEvalZero #if defined(RADIO_INTENSET_CRCOK_Msk) || defined(__NRFX_DOXYGEN__)
94*150812a8SEvalZero NRF_RADIO_EVENT_CRCOK = offsetof(NRF_RADIO_Type, EVENTS_CRCOK), /**< Packet received with correct CRC. */
95*150812a8SEvalZero #endif
96*150812a8SEvalZero #if defined(RADIO_INTENSET_CRCERROR_Msk) || defined(__NRFX_DOXYGEN__)
97*150812a8SEvalZero NRF_RADIO_EVENT_CRCERROR = offsetof(NRF_RADIO_Type, EVENTS_CRCERROR), /**< Packet received with incorrect CRC. */
98*150812a8SEvalZero #endif
99*150812a8SEvalZero #if defined(RADIO_INTENSET_FRAMESTART_Msk) || defined(__NRFX_DOXYGEN__)
100*150812a8SEvalZero NRF_RADIO_EVENT_FRAMESTART = offsetof(NRF_RADIO_Type, EVENTS_FRAMESTART), /**< IEEE 802.15.4 length field received. */
101*150812a8SEvalZero #endif
102*150812a8SEvalZero #if defined(RADIO_INTENSET_EDEND_Msk) || defined(__NRFX_DOXYGEN__)
103*150812a8SEvalZero NRF_RADIO_EVENT_EDEND = offsetof(NRF_RADIO_Type, EVENTS_EDEND), /**< Energy Detection procedure ended. */
104*150812a8SEvalZero #endif
105*150812a8SEvalZero #if defined(RADIO_INTENSET_EDSTOPPED_Msk) || defined(__NRFX_DOXYGEN__)
106*150812a8SEvalZero NRF_RADIO_EVENT_EDSTOPPED = offsetof(NRF_RADIO_Type, EVENTS_EDSTOPPED), /**< The sampling of Energy Detection has stopped. */
107*150812a8SEvalZero #endif
108*150812a8SEvalZero #if defined(RADIO_INTENSET_CCAIDLE_Msk) || defined(__NRFX_DOXYGEN__)
109*150812a8SEvalZero NRF_RADIO_EVENT_CCAIDLE = offsetof(NRF_RADIO_Type, EVENTS_CCAIDLE), /**< Wireless medium in idle - clear to send. */
110*150812a8SEvalZero #endif
111*150812a8SEvalZero #if defined(RADIO_INTENSET_CCABUSY_Msk) || defined(__NRFX_DOXYGEN__)
112*150812a8SEvalZero NRF_RADIO_EVENT_CCABUSY = offsetof(NRF_RADIO_Type, EVENTS_CCABUSY), /**< Wireless medium busy - do not send. */
113*150812a8SEvalZero #endif
114*150812a8SEvalZero #if defined(RADIO_INTENSET_CCASTOPPED_Msk) || defined(__NRFX_DOXYGEN__)
115*150812a8SEvalZero NRF_RADIO_EVENT_CCASTOPPED = offsetof(NRF_RADIO_Type, EVENTS_CCASTOPPED), /**< The CCA has stopped. */
116*150812a8SEvalZero #endif
117*150812a8SEvalZero #if defined(RADIO_INTENSET_RATEBOOST_Msk) || defined(__NRFX_DOXYGEN__)
118*150812a8SEvalZero NRF_RADIO_EVENT_RATEBOOST = offsetof(NRF_RADIO_Type, EVENTS_RATEBOOST), /**< Ble_LR CI field received, receive mode is changed from Ble_LR125Kbit to Ble_LR500Kbit. */
119*150812a8SEvalZero #endif
120*150812a8SEvalZero #if defined(RADIO_INTENSET_TXREADY_Msk) || defined(__NRFX_DOXYGEN__)
121*150812a8SEvalZero NRF_RADIO_EVENT_TXREADY = offsetof(NRF_RADIO_Type, EVENTS_TXREADY), /**< RADIO has ramped up and is ready to be started TX path. */
122*150812a8SEvalZero #endif
123*150812a8SEvalZero #if defined(RADIO_INTENSET_RXREADY_Msk) || defined(__NRFX_DOXYGEN__)
124*150812a8SEvalZero NRF_RADIO_EVENT_RXREADY = offsetof(NRF_RADIO_Type, EVENTS_RXREADY), /**< RADIO has ramped up and is ready to be started RX path. */
125*150812a8SEvalZero #endif
126*150812a8SEvalZero #if defined(RADIO_INTENSET_MHRMATCH_Msk) || defined(__NRFX_DOXYGEN__)
127*150812a8SEvalZero NRF_RADIO_EVENT_MHRMATCH = offsetof(NRF_RADIO_Type, EVENTS_MHRMATCH), /**< MAC Header match found. */
128*150812a8SEvalZero #endif
129*150812a8SEvalZero #if defined(RADIO_INTENSET_PHYEND_Msk) || defined(__NRFX_DOXYGEN__)
130*150812a8SEvalZero NRF_RADIO_EVENT_PHYEND = offsetof(NRF_RADIO_Type, EVENTS_PHYEND), /**< Generated in Ble_LR125Kbit, Ble_LR500Kbit
131*150812a8SEvalZero and BleIeee802154_250Kbit modes when last
132*150812a8SEvalZero bit is sent on the air. */
133*150812a8SEvalZero #endif
134*150812a8SEvalZero /*lint -restore*/
135*150812a8SEvalZero } nrf_radio_event_t;
136*150812a8SEvalZero
137*150812a8SEvalZero /**
138*150812a8SEvalZero * @brief RADIO interrupts.
139*150812a8SEvalZero */
140*150812a8SEvalZero typedef enum
141*150812a8SEvalZero {
142*150812a8SEvalZero NRF_RADIO_INT_READY_MASK = RADIO_INTENSET_READY_Msk, /**< Interrupt on READY event. */
143*150812a8SEvalZero NRF_RADIO_INT_ADDRESS_MASK = RADIO_INTENSET_ADDRESS_Msk, /**< Interrupt on ADDRESS event. */
144*150812a8SEvalZero NRF_RADIO_INT_PAYLOAD_MASK = RADIO_INTENSET_PAYLOAD_Msk, /**< Interrupt on PAYLOAD event. */
145*150812a8SEvalZero NRF_RADIO_INT_END_MASK = RADIO_INTENSET_END_Msk, /**< Interrupt on END event. */
146*150812a8SEvalZero NRF_RADIO_INT_DISABLED_MASK = RADIO_INTENSET_DISABLED_Msk, /**< Interrupt on DISABLED event. */
147*150812a8SEvalZero NRF_RADIO_INT_DEVMATCH_MASK = RADIO_INTENSET_DEVMATCH_Msk, /**< Interrupt on DEVMATCH event. */
148*150812a8SEvalZero NRF_RADIO_INT_DEVMISS_MASK = RADIO_INTENSET_DEVMISS_Msk, /**< Interrupt on DEVMISS event. */
149*150812a8SEvalZero NRF_RADIO_INT_RSSIEND_MASK = RADIO_INTENSET_RSSIEND_Msk, /**< Interrupt on RSSIEND event. */
150*150812a8SEvalZero NRF_RADIO_INT_BCMATCH_MASK = RADIO_INTENSET_BCMATCH_Msk, /**< Interrupt on BCMATCH event. */
151*150812a8SEvalZero #if defined(RADIO_INTENSET_CRCOK_Msk) || defined(__NRFX_DOXYGEN__)
152*150812a8SEvalZero NRF_RADIO_INT_CRCOK_MASK = RADIO_INTENSET_CRCOK_Msk, /**< Interrupt on CRCOK event. */
153*150812a8SEvalZero #endif
154*150812a8SEvalZero #if defined(RADIO_INTENSET_CRCERROR_Msk) || defined(__NRFX_DOXYGEN__)
155*150812a8SEvalZero NRF_RADIO_INT_CRCERROR_MASK = RADIO_INTENSET_CRCERROR_Msk, /**< Interrupt on CRCERROR event. */
156*150812a8SEvalZero #endif
157*150812a8SEvalZero #if defined(RADIO_INTENSET_FRAMESTART_Msk) || defined(__NRFX_DOXYGEN__)
158*150812a8SEvalZero NRF_RADIO_INT_FRAMESTART_MASK = RADIO_INTENSET_FRAMESTART_Msk, /**< Interrupt on FRAMESTART event. */
159*150812a8SEvalZero #endif
160*150812a8SEvalZero #if defined(RADIO_INTENSET_EDEND_Msk) || defined(__NRFX_DOXYGEN__)
161*150812a8SEvalZero NRF_RADIO_INT_EDEND_MASK = RADIO_INTENSET_EDEND_Msk, /**< Interrupt on EDEND event. */
162*150812a8SEvalZero #endif
163*150812a8SEvalZero #if defined(RADIO_INTENSET_EDSTOPPED_Msk) || defined(__NRFX_DOXYGEN__)
164*150812a8SEvalZero NRF_RADIO_INT_EDSTOPPED_MASK = RADIO_INTENSET_EDSTOPPED_Msk, /**< Interrupt on EDSTOPPED event. */
165*150812a8SEvalZero #endif
166*150812a8SEvalZero #if defined(RADIO_INTENSET_CCAIDLE_Msk) || defined(__NRFX_DOXYGEN__)
167*150812a8SEvalZero NRF_RADIO_INT_CCAIDLE_MASK = RADIO_INTENSET_CCAIDLE_Msk, /**< Interrupt on CCAIDLE event. */
168*150812a8SEvalZero #endif
169*150812a8SEvalZero #if defined(RADIO_INTENSET_CCABUSY_Msk) || defined(__NRFX_DOXYGEN__)
170*150812a8SEvalZero NRF_RADIO_INT_CCABUSY_MASK = RADIO_INTENSET_CCABUSY_Msk, /**< Interrupt on CCABUSY event. */
171*150812a8SEvalZero #endif
172*150812a8SEvalZero #if defined(RADIO_INTENSET_CCASTOPPED_Msk) || defined(__NRFX_DOXYGEN__)
173*150812a8SEvalZero NRF_RADIO_INT_CCASTOPPED_MASK = RADIO_INTENSET_CCASTOPPED_Msk, /**< Interrupt on CCASTOPPED event. */
174*150812a8SEvalZero #endif
175*150812a8SEvalZero #if defined(RADIO_INTENSET_RATEBOOST_Msk) || defined(__NRFX_DOXYGEN__)
176*150812a8SEvalZero NRF_RADIO_INT_RATEBOOST_MASK = RADIO_INTENSET_RATEBOOST_Msk, /**< Interrupt on RATEBOOST event. */
177*150812a8SEvalZero #endif
178*150812a8SEvalZero #if defined(RADIO_INTENSET_TXREADY_Msk) || defined(__NRFX_DOXYGEN__)
179*150812a8SEvalZero NRF_RADIO_INT_TXREADY_MASK = RADIO_INTENSET_TXREADY_Msk, /**< Interrupt on TXREADY event. */
180*150812a8SEvalZero #endif
181*150812a8SEvalZero #if defined(RADIO_INTENSET_RXREADY_Msk) || defined(__NRFX_DOXYGEN__)
182*150812a8SEvalZero NRF_RADIO_INT_RXREADY_MASK = RADIO_INTENSET_RXREADY_Msk, /**< Interrupt on RXREADY event. */
183*150812a8SEvalZero #endif
184*150812a8SEvalZero #if defined(RADIO_INTENSET_MHRMATCH_Msk) || defined(__NRFX_DOXYGEN__)
185*150812a8SEvalZero NRF_RADIO_INT_MHRMATCH_MASK = RADIO_INTENSET_MHRMATCH_Msk, /**< Interrupt on MHRMATCH event. */
186*150812a8SEvalZero #endif
187*150812a8SEvalZero #if defined(RADIO_INTENSET_PHYEND_Msk) || defined(__NRFX_DOXYGEN__)
188*150812a8SEvalZero NRF_RADIO_INT_PHYEND_MASK = RADIO_INTENSET_PHYEND_Msk, /**< Interrupt on PHYEND event. */
189*150812a8SEvalZero #endif
190*150812a8SEvalZero } nrf_radio_int_mask_t;
191*150812a8SEvalZero
192*150812a8SEvalZero /**
193*150812a8SEvalZero * @brief RADIO shortcuts.
194*150812a8SEvalZero */
195*150812a8SEvalZero typedef enum
196*150812a8SEvalZero {
197*150812a8SEvalZero NRF_RADIO_SHORT_READY_START_MASK = RADIO_SHORTS_READY_START_Msk, /**< Shortcut between READY event and START task. */
198*150812a8SEvalZero NRF_RADIO_SHORT_END_DISABLE_MASK = RADIO_SHORTS_END_DISABLE_Msk, /**< Shortcut between END event and DISABLE task. */
199*150812a8SEvalZero NRF_RADIO_SHORT_DISABLED_TXEN_MASK = RADIO_SHORTS_DISABLED_TXEN_Msk, /**< Shortcut between DISABLED event and TXEN task. */
200*150812a8SEvalZero NRF_RADIO_SHORT_DISABLED_RXEN_MASK = RADIO_SHORTS_DISABLED_RXEN_Msk, /**< Shortcut between DISABLED event and RXEN task. */
201*150812a8SEvalZero NRF_RADIO_SHORT_ADDRESS_RSSISTART_MASK = RADIO_SHORTS_ADDRESS_RSSISTART_Msk, /**< Shortcut between ADDRESS event and RSSISTART task. */
202*150812a8SEvalZero NRF_RADIO_SHORT_END_START_MASK = RADIO_SHORTS_END_START_Msk, /**< Shortcut between END event and START task. */
203*150812a8SEvalZero NRF_RADIO_SHORT_ADDRESS_BCSTART_MASK = RADIO_SHORTS_ADDRESS_BCSTART_Msk, /**< Shortcut between ADDRESS event and BCSTART task. */
204*150812a8SEvalZero NRF_RADIO_SHORT_DISABLED_RSSISTOP_MASK = RADIO_SHORTS_DISABLED_RSSISTOP_Msk, /**< Shortcut between DISABLED event and RSSISTOP task. */
205*150812a8SEvalZero #if defined(RADIO_SHORTS_RXREADY_CCASTART_Msk) || defined(__NRFX_DOXYGEN__)
206*150812a8SEvalZero NRF_RADIO_SHORT_RXREADY_CCASTART_MASK = RADIO_SHORTS_RXREADY_CCASTART_Msk, /**< Shortcut between RXREADY event and CCASTART task. */
207*150812a8SEvalZero #endif
208*150812a8SEvalZero #if defined(RADIO_SHORTS_CCAIDLE_TXEN_Msk) || defined(__NRFX_DOXYGEN__)
209*150812a8SEvalZero NRF_RADIO_SHORT_CCAIDLE_TXEN_MASK = RADIO_SHORTS_CCAIDLE_TXEN_Msk, /**< Shortcut between CCAIDLE event and TXEN task. */
210*150812a8SEvalZero #endif
211*150812a8SEvalZero #if defined(RADIO_SHORTS_CCABUSY_DISABLE_Msk) || defined(__NRFX_DOXYGEN__)
212*150812a8SEvalZero NRF_RADIO_SHORT_CCABUSY_DISABLE_MASK = RADIO_SHORTS_CCABUSY_DISABLE_Msk, /**< Shortcut between CCABUSY event and DISABLE task. */
213*150812a8SEvalZero #endif
214*150812a8SEvalZero #if defined(RADIO_SHORTS_FRAMESTART_BCSTART_Msk) || defined(__NRFX_DOXYGEN__)
215*150812a8SEvalZero NRF_RADIO_SHORT_FRAMESTART_BCSTART_MASK = RADIO_SHORTS_FRAMESTART_BCSTART_Msk, /**< Shortcut between FRAMESTART event and BCSTART task. */
216*150812a8SEvalZero #endif
217*150812a8SEvalZero #if defined(RADIO_SHORTS_READY_EDSTART_Msk) || defined(__NRFX_DOXYGEN__)
218*150812a8SEvalZero NRF_RADIO_SHORT_READY_EDSTART_MASK = RADIO_SHORTS_READY_EDSTART_Msk, /**< Shortcut between READY event and EDSTART task. */
219*150812a8SEvalZero #endif
220*150812a8SEvalZero #if defined(RADIO_SHORTS_EDEND_DISABLE_Msk) || defined(__NRFX_DOXYGEN__)
221*150812a8SEvalZero NRF_RADIO_SHORT_EDEND_DISABLE_MASK = RADIO_SHORTS_EDEND_DISABLE_Msk, /**< Shortcut between EDEND event and DISABLE task. */
222*150812a8SEvalZero #endif
223*150812a8SEvalZero #if defined(RADIO_SHORTS_CCAIDLE_STOP_Msk) || defined(__NRFX_DOXYGEN__)
224*150812a8SEvalZero NRF_RADIO_SHORT_CCAIDLE_STOP_MASK = RADIO_SHORTS_CCAIDLE_STOP_Msk, /**< Shortcut between CCAIDLE event and STOP task. */
225*150812a8SEvalZero #endif
226*150812a8SEvalZero #if defined(RADIO_SHORTS_TXREADY_START_Msk) || defined(__NRFX_DOXYGEN__)
227*150812a8SEvalZero NRF_RADIO_SHORT_TXREADY_START_MASK = RADIO_SHORTS_TXREADY_START_Msk, /**< Shortcut between TXREADY event and START task. */
228*150812a8SEvalZero #endif
229*150812a8SEvalZero #if defined(RADIO_SHORTS_RXREADY_START_Msk) || defined(__NRFX_DOXYGEN__)
230*150812a8SEvalZero NRF_RADIO_SHORT_RXREADY_START_MASK = RADIO_SHORTS_RXREADY_START_Msk, /**< Shortcut between RXREADY event and START task. */
231*150812a8SEvalZero #endif
232*150812a8SEvalZero #if defined(RADIO_SHORTS_PHYEND_DISABLE_Msk) || defined(__NRFX_DOXYGEN__)
233*150812a8SEvalZero NRF_RADIO_SHORT_PHYEND_DISABLE_MASK = RADIO_SHORTS_PHYEND_DISABLE_Msk, /**< Shortcut between PHYEND event and DISABLE task. */
234*150812a8SEvalZero #endif
235*150812a8SEvalZero #if defined(RADIO_SHORTS_PHYEND_START_Msk) || defined(__NRFX_DOXYGEN__)
236*150812a8SEvalZero NRF_RADIO_SHORT_PHYEND_START_MASK = RADIO_SHORTS_PHYEND_START_Msk, /**< Shortcut between PHYEND event and START task. */
237*150812a8SEvalZero #endif
238*150812a8SEvalZero } nrf_radio_short_mask_t;
239*150812a8SEvalZero
240*150812a8SEvalZero #if defined(RADIO_CCACTRL_CCAMODE_Msk) || defined(__NRFX_DOXYGEN__)
241*150812a8SEvalZero /**
242*150812a8SEvalZero * @brief RADIO Clear Channel Assessment modes.
243*150812a8SEvalZero */
244*150812a8SEvalZero typedef enum
245*150812a8SEvalZero {
246*150812a8SEvalZero NRF_RADIO_CCA_MODE_ED = RADIO_CCACTRL_CCAMODE_EdMode, /**< Energy Above Threshold. Will report busy whenever energy is detected above set threshold. */
247*150812a8SEvalZero NRF_RADIO_CCA_MODE_CARRIER = RADIO_CCACTRL_CCAMODE_CarrierMode, /**< Carrier Seen. Will report busy whenever compliant IEEE 802.15.4 signal is seen. */
248*150812a8SEvalZero NRF_RADIO_CCA_MODE_CARRIER_AND_ED = RADIO_CCACTRL_CCAMODE_CarrierAndEdMode, /**< Energy Above Threshold AND Carrier Seen. */
249*150812a8SEvalZero NRF_RADIO_CCA_MODE_CARRIER_OR_ED = RADIO_CCACTRL_CCAMODE_CarrierOrEdMode, /**< Energy Above Threshold OR Carrier Seen. */
250*150812a8SEvalZero NRF_RADIO_CCA_MODE_ED_TEST1 = RADIO_CCACTRL_CCAMODE_EdModeTest1, /**< Energy Above Threshold test mode that will abort when first ED measurement over threshold is seen. No averaging. */
251*150812a8SEvalZero } nrf_radio_cca_mode_t;
252*150812a8SEvalZero #endif // defined(RADIO_CCACTRL_CCAMODE_Msk) || defined(__NRFX_DOXYGEN__)
253*150812a8SEvalZero
254*150812a8SEvalZero /**
255*150812a8SEvalZero * @brief Types of RADIO States.
256*150812a8SEvalZero */
257*150812a8SEvalZero typedef enum
258*150812a8SEvalZero {
259*150812a8SEvalZero NRF_RADIO_STATE_DISABLED = RADIO_STATE_STATE_Disabled, /**< No operations are going on inside the radio and the power consumption is at a minimum. */
260*150812a8SEvalZero NRF_RADIO_STATE_RXRU = RADIO_STATE_STATE_RxRu, /**< The radio is ramping up and preparing for reception. */
261*150812a8SEvalZero NRF_RADIO_STATE_RXIDLE = RADIO_STATE_STATE_RxIdle, /**< The radio is ready for reception to start. */
262*150812a8SEvalZero NRF_RADIO_STATE_RX = RADIO_STATE_STATE_Rx, /**< Reception has been started. */
263*150812a8SEvalZero NRF_RADIO_STATE_RXDISABLE = RADIO_STATE_STATE_RxDisable, /**< The radio is disabling the receiver. */
264*150812a8SEvalZero NRF_RADIO_STATE_TXRU = RADIO_STATE_STATE_TxRu, /**< The radio is ramping up and preparing for transmission. */
265*150812a8SEvalZero NRF_RADIO_STATE_TXIDLE = RADIO_STATE_STATE_TxIdle, /**< The radio is ready for transmission to start. */
266*150812a8SEvalZero NRF_RADIO_STATE_TX = RADIO_STATE_STATE_Tx, /**< The radio is transmitting a packet. */
267*150812a8SEvalZero NRF_RADIO_STATE_TXDISABLE = RADIO_STATE_STATE_TxDisable, /**< The radio is disabling the transmitter. */
268*150812a8SEvalZero } nrf_radio_state_t;
269*150812a8SEvalZero
270*150812a8SEvalZero /**
271*150812a8SEvalZero * @brief Types of RADIO TX power.
272*150812a8SEvalZero */
273*150812a8SEvalZero typedef enum
274*150812a8SEvalZero {
275*150812a8SEvalZero #if defined(RADIO_TXPOWER_TXPOWER_Pos8dBm) || defined(__NRFX_DOXYGEN__)
276*150812a8SEvalZero NRF_RADIO_TXPOWER_POS8DBM = RADIO_TXPOWER_TXPOWER_Pos8dBm, /**< 8 dBm. */
277*150812a8SEvalZero #endif
278*150812a8SEvalZero #if defined(RADIO_TXPOWER_TXPOWER_Pos7dBm) || defined(__NRFX_DOXYGEN__)
279*150812a8SEvalZero NRF_RADIO_TXPOWER_POS7DBM = RADIO_TXPOWER_TXPOWER_Pos7dBm, /**< 7 dBm. */
280*150812a8SEvalZero #endif
281*150812a8SEvalZero #if defined(RADIO_TXPOWER_TXPOWER_Pos6dBm) || defined(__NRFX_DOXYGEN__)
282*150812a8SEvalZero NRF_RADIO_TXPOWER_POS6DBM = RADIO_TXPOWER_TXPOWER_Pos6dBm, /**< 6 dBm. */
283*150812a8SEvalZero #endif
284*150812a8SEvalZero #if defined(RADIO_TXPOWER_TXPOWER_Pos5dBm) || defined(__NRFX_DOXYGEN__)
285*150812a8SEvalZero NRF_RADIO_TXPOWER_POS5DBM = RADIO_TXPOWER_TXPOWER_Pos5dBm, /**< 5 dBm. */
286*150812a8SEvalZero #endif
287*150812a8SEvalZero NRF_RADIO_TXPOWER_POS4DBM = RADIO_TXPOWER_TXPOWER_Pos4dBm, /**< 4 dBm. */
288*150812a8SEvalZero #if defined(RADIO_TXPOWER_TXPOWER_Pos3dBm) || defined(__NRFX_DOXYGEN__)
289*150812a8SEvalZero NRF_RADIO_TXPOWER_POS3DBM = RADIO_TXPOWER_TXPOWER_Pos3dBm, /**< 3 dBm. */
290*150812a8SEvalZero #endif
291*150812a8SEvalZero #if defined(RADIO_TXPOWER_TXPOWER_Pos2dBm) || defined(__NRFX_DOXYGEN__)
292*150812a8SEvalZero NRF_RADIO_TXPOWER_POS2DBM = RADIO_TXPOWER_TXPOWER_Pos2dBm, /**< 2 dBm. */
293*150812a8SEvalZero #endif
294*150812a8SEvalZero NRF_RADIO_TXPOWER_0DBM = RADIO_TXPOWER_TXPOWER_0dBm, /**< 0 dBm. */
295*150812a8SEvalZero NRF_RADIO_TXPOWER_NEG4DBM = RADIO_TXPOWER_TXPOWER_Neg4dBm, /**< -4 dBm. */
296*150812a8SEvalZero NRF_RADIO_TXPOWER_NEG8DBM = RADIO_TXPOWER_TXPOWER_Neg8dBm, /**< -8 dBm. */
297*150812a8SEvalZero NRF_RADIO_TXPOWER_NEG12DBM = RADIO_TXPOWER_TXPOWER_Neg12dBm, /**< -12 dBm. */
298*150812a8SEvalZero NRF_RADIO_TXPOWER_NEG16DBM = RADIO_TXPOWER_TXPOWER_Neg16dBm, /**< -16 dBm. */
299*150812a8SEvalZero NRF_RADIO_TXPOWER_NEG20DBM = RADIO_TXPOWER_TXPOWER_Neg20dBm, /**< -20 dBm. */
300*150812a8SEvalZero NRF_RADIO_TXPOWER_NEG30DBM = RADIO_TXPOWER_TXPOWER_Neg30dBm, /**< -30 dBm. */
301*150812a8SEvalZero #if defined(RADIO_TXPOWER_TXPOWER_Neg40dBm) || defined(__NRFX_DOXYGEN__)
302*150812a8SEvalZero NRF_RADIO_TXPOWER_NEG40DBM = RADIO_TXPOWER_TXPOWER_Neg40dBm, /**< -40 dBm. */
303*150812a8SEvalZero #endif
304*150812a8SEvalZero } nrf_radio_txpower_t;
305*150812a8SEvalZero
306*150812a8SEvalZero /**
307*150812a8SEvalZero * @brief Types of RADIO modes (data rate and modulation).
308*150812a8SEvalZero */
309*150812a8SEvalZero typedef enum
310*150812a8SEvalZero {
311*150812a8SEvalZero NRF_RADIO_MODE_NRF_1MBIT = RADIO_MODE_MODE_Nrf_1Mbit, /**< 1Mbit/s Nordic proprietary radio mode. */
312*150812a8SEvalZero NRF_RADIO_MODE_NRF_2MBIT = RADIO_MODE_MODE_Nrf_2Mbit, /**< 2Mbit/s Nordic proprietary radio mode. */
313*150812a8SEvalZero #if defined(RADIO_MODE_MODE_Nrf_250Kbit) || defined(__NRFX_DOXYGEN__)
314*150812a8SEvalZero NRF_RADIO_MODE_NRF_250KBIT = RADIO_MODE_MODE_Nrf_250Kbit, /**< 250Kbit/s Nordic proprietary radio mode. */
315*150812a8SEvalZero #endif
316*150812a8SEvalZero NRF_RADIO_MODE_BLE_1MBIT = RADIO_MODE_MODE_Ble_1Mbit, /**< 1 Mbit/s Bluetooth Low Energy. */
317*150812a8SEvalZero #if defined(RADIO_MODE_MODE_Ble_2Mbit) || defined(__NRFX_DOXYGEN__)
318*150812a8SEvalZero NRF_RADIO_MODE_BLE_2MBIT = RADIO_MODE_MODE_Ble_2Mbit, /**< 2 Mbit/s Bluetooth Low Energy. */
319*150812a8SEvalZero #endif
320*150812a8SEvalZero #if defined(RADIO_MODE_MODE_Ble_LR125Kbit) || defined(__NRFX_DOXYGEN__)
321*150812a8SEvalZero NRF_RADIO_MODE_BLE_LR125KBIT = RADIO_MODE_MODE_Ble_LR125Kbit, /*!< Bluetooth Low Energy Long range 125 kbit/s TX, 125 kbit/s and 500 kbit/s RX */
322*150812a8SEvalZero #endif
323*150812a8SEvalZero #if defined(RADIO_MODE_MODE_Ble_LR500Kbit) || defined(__NRFX_DOXYGEN__)
324*150812a8SEvalZero NRF_RADIO_MODE_BLE_LR500KBIT = RADIO_MODE_MODE_Ble_LR500Kbit, /*!< Bluetooth Low Energy Long range 500 kbit/s TX, 125 kbit/s and 500 kbit/s RX */
325*150812a8SEvalZero #endif
326*150812a8SEvalZero #if defined(RADIO_MODE_MODE_Ieee802154_250Kbit) || defined(__NRFX_DOXYGEN__)
327*150812a8SEvalZero NRF_RADIO_MODE_IEEE802154_250KBIT = RADIO_MODE_MODE_Ieee802154_250Kbit, /**< IEEE 802.15.4-2006 250 kbit/s. */
328*150812a8SEvalZero #endif
329*150812a8SEvalZero } nrf_radio_mode_t;
330*150812a8SEvalZero
331*150812a8SEvalZero #if defined(RADIO_PCNF0_PLEN_Msk) || defined(__NRFX_DOXYGEN__)
332*150812a8SEvalZero /**
333*150812a8SEvalZero * @brief Types of preamble length.
334*150812a8SEvalZero */
335*150812a8SEvalZero typedef enum
336*150812a8SEvalZero {
337*150812a8SEvalZero NRF_RADIO_PREAMBLE_LENGTH_8BIT = RADIO_PCNF0_PLEN_8bit, /**< 8-bit preamble. */
338*150812a8SEvalZero NRF_RADIO_PREAMBLE_LENGTH_16BIT = RADIO_PCNF0_PLEN_16bit, /**< 16-bit preamble. */
339*150812a8SEvalZero #if defined(RADIO_PCNF0_PLEN_32bitZero) || defined(__NRFX_DOXYGEN__)
340*150812a8SEvalZero NRF_RADIO_PREAMBLE_LENGTH_32BIT_ZERO = RADIO_PCNF0_PLEN_32bitZero, /**< 32-bit zero preamble used for IEEE 802.15.4. */
341*150812a8SEvalZero #endif
342*150812a8SEvalZero #if defined(RADIO_PCNF0_PLEN_LongRange) || defined(__NRFX_DOXYGEN__)
343*150812a8SEvalZero NRF_RADIO_PREAMBLE_LENGTH_LONG_RANGE = RADIO_PCNF0_PLEN_LongRange, /**< Preamble - used for BTLE Long Range. */
344*150812a8SEvalZero #endif
345*150812a8SEvalZero } nrf_radio_preamble_length_t;
346*150812a8SEvalZero #endif // defined(RADIO_PCNF0_PLEN_Msk) || defined(__NRFX_DOXYGEN__)
347*150812a8SEvalZero
348*150812a8SEvalZero /**
349*150812a8SEvalZero * @brief Types of CRC calculatons regarding address.
350*150812a8SEvalZero */
351*150812a8SEvalZero typedef enum
352*150812a8SEvalZero {
353*150812a8SEvalZero NRF_RADIO_CRC_ADDR_INCLUDE = RADIO_CRCCNF_SKIPADDR_Include, /**< CRC calculation includes address field. */
354*150812a8SEvalZero NRF_RADIO_CRC_ADDR_SKIP = RADIO_CRCCNF_SKIPADDR_Skip, /**< CRC calculation does not include address field. */
355*150812a8SEvalZero #if defined(RADIO_CRCCNF_SKIPADDR_Ieee802154) || defined(__NRFX_DOXYGEN__)
356*150812a8SEvalZero NRF_RADIO_CRC_ADDR_IEEE802154 = RADIO_CRCCNF_SKIPADDR_Ieee802154, /**< CRC calculation as per 802.15.4 standard. */
357*150812a8SEvalZero #endif
358*150812a8SEvalZero } nrf_radio_crc_addr_t;
359*150812a8SEvalZero
360*150812a8SEvalZero /**
361*150812a8SEvalZero * @brief Packet configuration.
362*150812a8SEvalZero */
363*150812a8SEvalZero typedef struct
364*150812a8SEvalZero {
365*150812a8SEvalZero uint8_t lflen; /**< Length on air of LENGTH field in number of bits. */
366*150812a8SEvalZero uint8_t s0len; /**< Length on air of S0 field in number of bytes. */
367*150812a8SEvalZero uint8_t s1len; /**< Length on air of S1 field in number of bits. */
368*150812a8SEvalZero #if defined(RADIO_PCNF0_S1INCL_Msk) || defined(__NRFX_DOXYGEN__)
369*150812a8SEvalZero bool s1incl; /**< Include or exclude S1 field in RAM. */
370*150812a8SEvalZero #endif
371*150812a8SEvalZero #if defined(RADIO_PCNF0_CILEN_Msk) || defined(__NRFX_DOXYGEN__)
372*150812a8SEvalZero uint8_t cilen; /**< Length of code indicator - long range. */
373*150812a8SEvalZero #endif
374*150812a8SEvalZero #if defined(RADIO_PCNF0_PLEN_Msk) || defined(__NRFX_DOXYGEN__)
375*150812a8SEvalZero nrf_radio_preamble_length_t plen; /**< Length of preamble on air. Decision point: TASKS_START task. */
376*150812a8SEvalZero #endif
377*150812a8SEvalZero #if defined(RADIO_PCNF0_CRCINC_Msk) || defined(__NRFX_DOXYGEN__)
378*150812a8SEvalZero bool crcinc; /**< Indicates if LENGTH field contains CRC or not. */
379*150812a8SEvalZero #endif
380*150812a8SEvalZero #if defined(RADIO_PCNF0_TERMLEN_Msk) || defined(__NRFX_DOXYGEN__)
381*150812a8SEvalZero uint8_t termlen; /**< Length of TERM field in Long Range operation. */
382*150812a8SEvalZero #endif
383*150812a8SEvalZero uint8_t maxlen; /**< Maximum length of packet payload. */
384*150812a8SEvalZero uint8_t statlen; /**< Static length in number of bytes. */
385*150812a8SEvalZero uint8_t balen; /**< Base address length in number of bytes. */
386*150812a8SEvalZero bool big_endian; /**< On air endianness of packet. */
387*150812a8SEvalZero bool whiteen; /**< Enable or disable packet whitening. */
388*150812a8SEvalZero } nrf_radio_packet_conf_t;
389*150812a8SEvalZero
390*150812a8SEvalZero /**
391*150812a8SEvalZero * @brief Function for activating a specific RADIO task.
392*150812a8SEvalZero *
393*150812a8SEvalZero * @param[in] radio_task Task to activate.
394*150812a8SEvalZero */
395*150812a8SEvalZero __STATIC_INLINE void nrf_radio_task_trigger(nrf_radio_task_t radio_task);
396*150812a8SEvalZero
397*150812a8SEvalZero /**
398*150812a8SEvalZero * @brief Function for getting the address of a specific RADIO task register.
399*150812a8SEvalZero *
400*150812a8SEvalZero * This function can be used by the PPI module.
401*150812a8SEvalZero *
402*150812a8SEvalZero * @param[in] radio_task Requested task.
403*150812a8SEvalZero *
404*150812a8SEvalZero * @return Address of the specified task register.
405*150812a8SEvalZero */
406*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_task_address_get(nrf_radio_task_t radio_task);
407*150812a8SEvalZero
408*150812a8SEvalZero /**
409*150812a8SEvalZero * @brief Function for clearing a specific RADIO event.
410*150812a8SEvalZero *
411*150812a8SEvalZero * @param[in] radio_event Event to clean.
412*150812a8SEvalZero */
413*150812a8SEvalZero __STATIC_INLINE void nrf_radio_event_clear(nrf_radio_event_t radio_event);
414*150812a8SEvalZero
415*150812a8SEvalZero /**
416*150812a8SEvalZero * @brief Function for checking the state of a specific RADIO event.
417*150812a8SEvalZero *
418*150812a8SEvalZero * @param[in] radio_event Event to check.
419*150812a8SEvalZero *
420*150812a8SEvalZero * @retval true If the event is set.
421*150812a8SEvalZero * @retval false If the event is not set.
422*150812a8SEvalZero */
423*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_event_check(nrf_radio_event_t radio_event);
424*150812a8SEvalZero
425*150812a8SEvalZero /**
426*150812a8SEvalZero * @brief Function for getting the address of a specific RADIO event register.
427*150812a8SEvalZero *
428*150812a8SEvalZero * This function can be used by the PPI module.
429*150812a8SEvalZero *
430*150812a8SEvalZero * @param[in] radio_event Requested Event.
431*150812a8SEvalZero *
432*150812a8SEvalZero * @return Address of the specified event register.
433*150812a8SEvalZero */
434*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_event_address_get(nrf_radio_event_t radio_event);
435*150812a8SEvalZero
436*150812a8SEvalZero /**
437*150812a8SEvalZero * @brief Function for enabling specified RADIO shortcuts.
438*150812a8SEvalZero *
439*150812a8SEvalZero * @param[in] radio_shorts_mask Mask of shortcuts.
440*150812a8SEvalZero *
441*150812a8SEvalZero */
442*150812a8SEvalZero __STATIC_INLINE void nrf_radio_shorts_enable(uint32_t radio_shorts_mask);
443*150812a8SEvalZero
444*150812a8SEvalZero /**
445*150812a8SEvalZero * @brief Function for disabling specified RADIO shortcuts.
446*150812a8SEvalZero *
447*150812a8SEvalZero * @param[in] radio_shorts_mask Mask of shortcuts.
448*150812a8SEvalZero */
449*150812a8SEvalZero __STATIC_INLINE void nrf_radio_shorts_disable(uint32_t radio_shorts_mask);
450*150812a8SEvalZero
451*150812a8SEvalZero /**
452*150812a8SEvalZero * @brief Function for setting the configuration of RADIO shortcuts.
453*150812a8SEvalZero *
454*150812a8SEvalZero * @param[in] radio_shorts_mask Shortcuts configuration to set.
455*150812a8SEvalZero */
456*150812a8SEvalZero __STATIC_INLINE void nrf_radio_shorts_set(uint32_t radio_shorts_mask);
457*150812a8SEvalZero
458*150812a8SEvalZero /**
459*150812a8SEvalZero * @brief Function for getting the configuration of RADIO shortcuts.
460*150812a8SEvalZero *
461*150812a8SEvalZero * @return Mask of currently enabled shortcuts.
462*150812a8SEvalZero */
463*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_shorts_get(void);
464*150812a8SEvalZero
465*150812a8SEvalZero /**
466*150812a8SEvalZero * @brief Function for enabling specified RADIO interrupts.
467*150812a8SEvalZero *
468*150812a8SEvalZero * @param[in] radio_int_mask Mask of interrupts.
469*150812a8SEvalZero */
470*150812a8SEvalZero __STATIC_INLINE void nrf_radio_int_enable(uint32_t radio_int_mask);
471*150812a8SEvalZero
472*150812a8SEvalZero /**
473*150812a8SEvalZero * @brief Function for disabling specified RADIO interrupts.
474*150812a8SEvalZero *
475*150812a8SEvalZero * @param[in] radio_int_mask Mask of interrupts.
476*150812a8SEvalZero */
477*150812a8SEvalZero __STATIC_INLINE void nrf_radio_int_disable(uint32_t radio_int_mask);
478*150812a8SEvalZero
479*150812a8SEvalZero /**
480*150812a8SEvalZero * @brief Function for getting the state of a specific interrupt.
481*150812a8SEvalZero *
482*150812a8SEvalZero * @param[in] radio_int_mask Interrupt to check.
483*150812a8SEvalZero *
484*150812a8SEvalZero * @retval true If the interrupt is enabled.
485*150812a8SEvalZero * @retval false If the interrupt is not enabled.
486*150812a8SEvalZero */
487*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_int_enable_check(nrf_radio_int_mask_t radio_int_mask);
488*150812a8SEvalZero
489*150812a8SEvalZero /**
490*150812a8SEvalZero * @brief Function for getting CRC status of last received packet.
491*150812a8SEvalZero *
492*150812a8SEvalZero * @retval true If the packet was received without CRC error .
493*150812a8SEvalZero * @retval false If the packet was received with CRC error.
494*150812a8SEvalZero */
495*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_crc_status_check(void);
496*150812a8SEvalZero
497*150812a8SEvalZero /**
498*150812a8SEvalZero * @brief Function for getting the received address.
499*150812a8SEvalZero *
500*150812a8SEvalZero * @return Received address.
501*150812a8SEvalZero */
502*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_rxmatch_get(void);
503*150812a8SEvalZero
504*150812a8SEvalZero /**
505*150812a8SEvalZero * @brief Function for getting CRC field of the last received packet.
506*150812a8SEvalZero *
507*150812a8SEvalZero * @return CRC field of previously received packet.
508*150812a8SEvalZero */
509*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_rxcrc_get(void);
510*150812a8SEvalZero
511*150812a8SEvalZero /**
512*150812a8SEvalZero * @brief Function for getting the device address match index.
513*150812a8SEvalZero *
514*150812a8SEvalZero * @return Device adress match index.
515*150812a8SEvalZero */
516*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_dai_get(void);
517*150812a8SEvalZero
518*150812a8SEvalZero #if defined(RADIO_PDUSTAT_PDUSTAT_Msk) || defined(__NRFX_DOXYGEN__)
519*150812a8SEvalZero /**
520*150812a8SEvalZero * @brief Function for getting status on payload length.
521*150812a8SEvalZero *
522*150812a8SEvalZero * @retval 0 If the payload is lesser than PCNF1.MAXLEN.
523*150812a8SEvalZero * @retval 1 If the payload is greater than PCNF1.MAXLEN.
524*150812a8SEvalZero */
525*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_pdustat_get(void);
526*150812a8SEvalZero
527*150812a8SEvalZero /**
528*150812a8SEvalZero * @brief Function for getting status on what rate packet is received with in Long Range.
529*150812a8SEvalZero *
530*150812a8SEvalZero * @retval 0 If the frame is received at 125kbps.
531*150812a8SEvalZero * @retval 1 If the frame is received at 500kbps.
532*150812a8SEvalZero */
533*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_cistat_get(void);
534*150812a8SEvalZero #endif // defined(RADIO_PDUSTAT_PDUSTAT_Msk) || defined(__NRFX_DOXYGEN__)
535*150812a8SEvalZero
536*150812a8SEvalZero /**
537*150812a8SEvalZero * @brief Function for setting packet pointer to given location in memory.
538*150812a8SEvalZero *
539*150812a8SEvalZero * @param[in] p_packet Packet pointer.
540*150812a8SEvalZero */
541*150812a8SEvalZero __STATIC_INLINE void nrf_radio_packetptr_set(const void * p_packet);
542*150812a8SEvalZero
543*150812a8SEvalZero /**
544*150812a8SEvalZero * @brief Function for getting packet pointer.
545*150812a8SEvalZero *
546*150812a8SEvalZero * @return Pointer to tx or rx packet buffer.
547*150812a8SEvalZero */
548*150812a8SEvalZero __STATIC_INLINE void * nrf_radio_packetptr_get(void);
549*150812a8SEvalZero
550*150812a8SEvalZero /**
551*150812a8SEvalZero * @brief Function for setting the radio frequency.
552*150812a8SEvalZero *
553*150812a8SEvalZero * @param[in] radio_frequency Frequency in MHz.
554*150812a8SEvalZero */
555*150812a8SEvalZero __STATIC_INLINE void nrf_radio_frequency_set(uint16_t radio_frequency);
556*150812a8SEvalZero
557*150812a8SEvalZero /**
558*150812a8SEvalZero * @brief Function for getting the radio frequency.
559*150812a8SEvalZero *
560*150812a8SEvalZero * @return Frequency in MHz.
561*150812a8SEvalZero */
562*150812a8SEvalZero __STATIC_INLINE uint16_t nrf_radio_frequency_get(void);
563*150812a8SEvalZero
564*150812a8SEvalZero /**
565*150812a8SEvalZero * @brief Function for setting the radio transmit power.
566*150812a8SEvalZero *
567*150812a8SEvalZero * @param[in] tx_power Transmit power of the radio [dBm].
568*150812a8SEvalZero */
569*150812a8SEvalZero __STATIC_INLINE void nrf_radio_txpower_set(nrf_radio_txpower_t tx_power);
570*150812a8SEvalZero
571*150812a8SEvalZero /**
572*150812a8SEvalZero * @brief Function for getting the radio transmit power.
573*150812a8SEvalZero *
574*150812a8SEvalZero * @return Transmit power of the radio.
575*150812a8SEvalZero */
576*150812a8SEvalZero __STATIC_INLINE nrf_radio_txpower_t nrf_radio_txpower_get(void);
577*150812a8SEvalZero
578*150812a8SEvalZero /**
579*150812a8SEvalZero * @brief Function for setting the radio data rate and modulation settings.
580*150812a8SEvalZero *
581*150812a8SEvalZero * @param[in] radio_mode Radio data rate and modulation.
582*150812a8SEvalZero */
583*150812a8SEvalZero __STATIC_INLINE void nrf_radio_mode_set(nrf_radio_mode_t radio_mode);
584*150812a8SEvalZero
585*150812a8SEvalZero /**
586*150812a8SEvalZero * @brief Function for getting Radio data rate and modulation settings.
587*150812a8SEvalZero *
588*150812a8SEvalZero * @return Radio data rate and modulation.
589*150812a8SEvalZero */
590*150812a8SEvalZero __STATIC_INLINE nrf_radio_mode_t nrf_radio_mode_get(void);
591*150812a8SEvalZero
592*150812a8SEvalZero /**
593*150812a8SEvalZero * @brief Function for setting the packet configuration.
594*150812a8SEvalZero *
595*150812a8SEvalZero * @param[in] p_config Pointer to the structure with packet configuration.
596*150812a8SEvalZero */
597*150812a8SEvalZero __STATIC_INLINE void nrf_radio_packet_configure(const nrf_radio_packet_conf_t * p_config);
598*150812a8SEvalZero
599*150812a8SEvalZero /**
600*150812a8SEvalZero * @brief Function for setting the base address 0.
601*150812a8SEvalZero *
602*150812a8SEvalZero * @param address Base address 0 value.
603*150812a8SEvalZero */
604*150812a8SEvalZero __STATIC_INLINE void nrf_radio_base0_set(uint32_t address);
605*150812a8SEvalZero
606*150812a8SEvalZero /**
607*150812a8SEvalZero * @brief Function for getting the base address 0.
608*150812a8SEvalZero *
609*150812a8SEvalZero * @return Base address 0.
610*150812a8SEvalZero */
611*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_base0_get(void);
612*150812a8SEvalZero
613*150812a8SEvalZero /**
614*150812a8SEvalZero * @brief Function for setting Base address 1.
615*150812a8SEvalZero *
616*150812a8SEvalZero * @param address Base address 1 value.
617*150812a8SEvalZero */
618*150812a8SEvalZero __STATIC_INLINE void nrf_radio_base1_set(uint32_t address);
619*150812a8SEvalZero
620*150812a8SEvalZero /**
621*150812a8SEvalZero * @brief Function for getting base address 1.
622*150812a8SEvalZero *
623*150812a8SEvalZero * @return Base address 1.
624*150812a8SEvalZero */
625*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_base1_get(void);
626*150812a8SEvalZero
627*150812a8SEvalZero /**
628*150812a8SEvalZero * @brief Function for setting prefixes bytes for logical addresses 0-3.
629*150812a8SEvalZero *
630*150812a8SEvalZero * @param prefixes Prefixes bytes for logical addresses 0-3.
631*150812a8SEvalZero */
632*150812a8SEvalZero __STATIC_INLINE void nrf_radio_prefix0_set(uint32_t prefixes);
633*150812a8SEvalZero
634*150812a8SEvalZero /**
635*150812a8SEvalZero * @brief Function for getting prefixes bytes for logical addresses 0-3
636*150812a8SEvalZero *
637*150812a8SEvalZero * @return Prefixes bytes for logical addresses 0-3
638*150812a8SEvalZero */
639*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_prefix0_get(void);
640*150812a8SEvalZero
641*150812a8SEvalZero /**
642*150812a8SEvalZero * @brief Function for setting prefixes bytes for logical addresses 4-7.
643*150812a8SEvalZero *
644*150812a8SEvalZero * @param prefixes Prefixes bytes for logical addresses 4-7.
645*150812a8SEvalZero */
646*150812a8SEvalZero __STATIC_INLINE void nrf_radio_prefix1_set(uint32_t prefixes);
647*150812a8SEvalZero
648*150812a8SEvalZero /**
649*150812a8SEvalZero * @brief Function for getting prefixes bytes for logical addresses 4-7
650*150812a8SEvalZero *
651*150812a8SEvalZero * @return Prefixes bytes for logical addresses 4-7
652*150812a8SEvalZero */
653*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_prefix1_get(void);
654*150812a8SEvalZero
655*150812a8SEvalZero /**
656*150812a8SEvalZero * @brief Function for setting the transmit address.
657*150812a8SEvalZero *
658*150812a8SEvalZero * @param txaddress Logical address to be used when transmitting a packet.
659*150812a8SEvalZero */
660*150812a8SEvalZero __STATIC_INLINE void nrf_radio_txaddress_set(uint8_t txaddress);
661*150812a8SEvalZero
662*150812a8SEvalZero /**
663*150812a8SEvalZero * @brief Function for getting the transmit address select.
664*150812a8SEvalZero *
665*150812a8SEvalZero * @return Logical address to be used when transmitting a packet.
666*150812a8SEvalZero */
667*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_txaddress_get(void);
668*150812a8SEvalZero
669*150812a8SEvalZero /**
670*150812a8SEvalZero * @brief Function for for selecting the receive addresses.
671*150812a8SEvalZero *
672*150812a8SEvalZero * @param rxaddresses Enable or disable reception on logical address i.
673*150812a8SEvalZero * Read more in the Product Specification.
674*150812a8SEvalZero */
675*150812a8SEvalZero __STATIC_INLINE void nrf_radio_rxaddresses_set(uint8_t rxaddresses);
676*150812a8SEvalZero
677*150812a8SEvalZero /**
678*150812a8SEvalZero * @brief Function for getting receive address select.
679*150812a8SEvalZero *
680*150812a8SEvalZero * @return Receive address select.
681*150812a8SEvalZero */
682*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_rxaddresses_get(void);
683*150812a8SEvalZero
684*150812a8SEvalZero /**
685*150812a8SEvalZero * @brief Function for configure CRC.
686*150812a8SEvalZero *
687*150812a8SEvalZero * @param[in] crc_length CRC length in number of bytes [0-3].
688*150812a8SEvalZero * @param[in] crc_address Include or exclude packet address field out of CRC.
689*150812a8SEvalZero * @param[in] crc_polynominal CRC polynominal to set.
690*150812a8SEvalZero */
691*150812a8SEvalZero __STATIC_INLINE void nrf_radio_crc_configure(uint8_t crc_length,
692*150812a8SEvalZero nrf_radio_crc_addr_t crc_address,
693*150812a8SEvalZero uint32_t crc_polynominal);
694*150812a8SEvalZero
695*150812a8SEvalZero /**
696*150812a8SEvalZero * @brief Function for setting CRC initial value.
697*150812a8SEvalZero *
698*150812a8SEvalZero * @param crc_init_value CRC initial value
699*150812a8SEvalZero */
700*150812a8SEvalZero __STATIC_INLINE void nrf_radio_crcinit_set(uint32_t crc_init_value);
701*150812a8SEvalZero
702*150812a8SEvalZero /**
703*150812a8SEvalZero * @brief Function for getting CRC initial value.
704*150812a8SEvalZero *
705*150812a8SEvalZero * @return CRC initial value.
706*150812a8SEvalZero */
707*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_crcinit_get(void);
708*150812a8SEvalZero
709*150812a8SEvalZero /**
710*150812a8SEvalZero * @brief Function for setting Inter Frame Spacing interval.
711*150812a8SEvalZero *
712*150812a8SEvalZero * @param[in] radio_ifs Inter frame spacing interval [us].
713*150812a8SEvalZero */
714*150812a8SEvalZero __STATIC_INLINE void nrf_radio_ifs_set(uint32_t radio_ifs);
715*150812a8SEvalZero
716*150812a8SEvalZero /**
717*150812a8SEvalZero * @brief Function for getting Inter Frame Spacing interval.
718*150812a8SEvalZero *
719*150812a8SEvalZero * @return Inter frame spacing interval [us].
720*150812a8SEvalZero */
721*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_ifs_get(void);
722*150812a8SEvalZero
723*150812a8SEvalZero /**
724*150812a8SEvalZero * @brief Function for getting RSSI sample result.
725*150812a8SEvalZero *
726*150812a8SEvalZero * @note The read value is a positive value while the actual received signal
727*150812a8SEvalZero * is a negative value. Actual received signal strength is therefore as follows:
728*150812a8SEvalZero * received signal strength = - read_value dBm .
729*150812a8SEvalZero *
730*150812a8SEvalZero * @return RSSI sample result.
731*150812a8SEvalZero */
732*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_rssi_sample_get(void);
733*150812a8SEvalZero
734*150812a8SEvalZero /**
735*150812a8SEvalZero * @brief Function for getting the current state of the radio module.
736*150812a8SEvalZero *
737*150812a8SEvalZero * @return Current radio state.
738*150812a8SEvalZero */
739*150812a8SEvalZero __STATIC_INLINE nrf_radio_state_t nrf_radio_state_get(void);
740*150812a8SEvalZero
741*150812a8SEvalZero /**
742*150812a8SEvalZero * @brief Function for setting the data whitening initial value.
743*150812a8SEvalZero *
744*150812a8SEvalZero * @param datawhiteiv Data whitening initial value.
745*150812a8SEvalZero */
746*150812a8SEvalZero __STATIC_INLINE void nrf_radio_datawhiteiv_set(uint8_t datawhiteiv);
747*150812a8SEvalZero
748*150812a8SEvalZero /**
749*150812a8SEvalZero * @brief Function for getting the data whitening initial value.
750*150812a8SEvalZero *
751*150812a8SEvalZero * @return Data whitening initial value.
752*150812a8SEvalZero */
753*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_datawhiteiv_get(void);
754*150812a8SEvalZero
755*150812a8SEvalZero /**
756*150812a8SEvalZero * @brief Function for setting Bit counter compare.
757*150812a8SEvalZero *
758*150812a8SEvalZero * @param[in] radio_bcc Bit counter compare [bits].
759*150812a8SEvalZero */
760*150812a8SEvalZero __STATIC_INLINE void nrf_radio_bcc_set(uint32_t radio_bcc);
761*150812a8SEvalZero
762*150812a8SEvalZero /**
763*150812a8SEvalZero * @brief Function for getting Bit counter compare.
764*150812a8SEvalZero *
765*150812a8SEvalZero * @return Bit counter compare.
766*150812a8SEvalZero */
767*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_bcc_get(void);
768*150812a8SEvalZero
769*150812a8SEvalZero /**
770*150812a8SEvalZero * @brief Function for setting Device address base segment.
771*150812a8SEvalZero *
772*150812a8SEvalZero * @param dab_value Particular base segment value.
773*150812a8SEvalZero * @param segment Index of the particular Device address base segment register.
774*150812a8SEvalZero */
775*150812a8SEvalZero __STATIC_INLINE void nrf_radio_dab_set(uint32_t dab_value, uint8_t segment);
776*150812a8SEvalZero
777*150812a8SEvalZero /**
778*150812a8SEvalZero * @brief Function for getting Device address base segment.
779*150812a8SEvalZero *
780*150812a8SEvalZero * @param segment Number of the Device address base segment.
781*150812a8SEvalZero *
782*150812a8SEvalZero * @return Particular segment of the Device address base.
783*150812a8SEvalZero */
784*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_dab_get(uint8_t segment);
785*150812a8SEvalZero
786*150812a8SEvalZero /**
787*150812a8SEvalZero * @brief Function for setting device address prefix.
788*150812a8SEvalZero *
789*150812a8SEvalZero * @param dap_value Particular device address prefix value.
790*150812a8SEvalZero * @param prefix_index Index of the particular device address prefix register.
791*150812a8SEvalZero */
792*150812a8SEvalZero __STATIC_INLINE void nrf_radio_dap_set(uint16_t dap_value, uint8_t prefix_index);
793*150812a8SEvalZero
794*150812a8SEvalZero /**
795*150812a8SEvalZero * @brief Function for getting Device address prefix.
796*150812a8SEvalZero *
797*150812a8SEvalZero * @param prefix_index Number of the Device address prefix segment.
798*150812a8SEvalZero *
799*150812a8SEvalZero * @return Particular segment of the Device address prefix.
800*150812a8SEvalZero */
801*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_dap_get(uint8_t prefix_index);
802*150812a8SEvalZero
803*150812a8SEvalZero /**
804*150812a8SEvalZero * @brief Function for setting device address match configuration.
805*150812a8SEvalZero *
806*150812a8SEvalZero * @note Read more about configuring device address match in the Product Specification.
807*150812a8SEvalZero *
808*150812a8SEvalZero * @param ena Device address matching bitmask.
809*150812a8SEvalZero * @param txadd TxAdd bitmask.
810*150812a8SEvalZero */
811*150812a8SEvalZero __STATIC_INLINE void nrf_radio_dacnf_set(uint8_t ena, uint8_t txadd);
812*150812a8SEvalZero
813*150812a8SEvalZero /**
814*150812a8SEvalZero * @brief Function for getting ENA field of the Device address match configuration register.
815*150812a8SEvalZero *
816*150812a8SEvalZero * @return ENA field of the Device address match configuration register.
817*150812a8SEvalZero */
818*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_dacnf_ena_get(void);
819*150812a8SEvalZero
820*150812a8SEvalZero /**
821*150812a8SEvalZero * @brief Function for getting TXADD field of the Device address match configuration register.
822*150812a8SEvalZero *
823*150812a8SEvalZero * @return TXADD field of the Device address match configuration register.
824*150812a8SEvalZero */
825*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_dacnf_txadd_get(void);
826*150812a8SEvalZero
827*150812a8SEvalZero #if defined(RADIO_INTENSET_MHRMATCH_Msk) || defined(__NRFX_DOXYGEN__)
828*150812a8SEvalZero /**
829*150812a8SEvalZero * @brief Function for setting MAC Header Match Unit search pattern configuration.
830*150812a8SEvalZero *
831*150812a8SEvalZero * @param[in] radio_mhmu_search_pattern Search Pattern Configuration.
832*150812a8SEvalZero */
833*150812a8SEvalZero __STATIC_INLINE void nrf_radio_mhmu_search_pattern_set(uint32_t radio_mhmu_search_pattern);
834*150812a8SEvalZero
835*150812a8SEvalZero /**
836*150812a8SEvalZero * @brief Function for getting MAC Header Match Unit search pattern configuration.
837*150812a8SEvalZero *
838*150812a8SEvalZero * @return Search Pattern Configuration.
839*150812a8SEvalZero */
840*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_mhmu_search_pattern_get(void);
841*150812a8SEvalZero
842*150812a8SEvalZero /**
843*150812a8SEvalZero * @brief Function for setting MAC Header Match Unit pattern mask configuration.
844*150812a8SEvalZero *
845*150812a8SEvalZero * @param[in] radio_mhmu_pattern_mask Pattern mask.
846*150812a8SEvalZero */
847*150812a8SEvalZero __STATIC_INLINE void nrf_radio_mhmu_pattern_mask_set(uint32_t radio_mhmu_pattern_mask);
848*150812a8SEvalZero
849*150812a8SEvalZero /**
850*150812a8SEvalZero * @brief Function for getting MAC Header Match Unit pattern mask configuration.
851*150812a8SEvalZero *
852*150812a8SEvalZero * @return Pattern mask.
853*150812a8SEvalZero */
854*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_mhmu_pattern_mask_get(void);
855*150812a8SEvalZero #endif // defined(RADIO_INTENSET_MHRMATCH_Msk) || defined(__NRFX_DOXYGEN__)
856*150812a8SEvalZero
857*150812a8SEvalZero #if defined(RADIO_MODECNF0_RU_Msk) || defined(__NRFX_DOXYGEN__)
858*150812a8SEvalZero /**
859*150812a8SEvalZero * @brief Function for setting Radio mode configuration register 0.
860*150812a8SEvalZero *
861*150812a8SEvalZero * @param fast_ramp_up Use fast radio ramp-up time
862*150812a8SEvalZero * @param default_tx Default TX value during inactivity.
863*150812a8SEvalZero */
864*150812a8SEvalZero __STATIC_INLINE void nrf_radio_modecnf0_set(bool fast_ramp_up, uint8_t default_tx);
865*150812a8SEvalZero
866*150812a8SEvalZero /**
867*150812a8SEvalZero * @brief Function for getting ramp-up time configuration of the Radio mode configuration register 0.
868*150812a8SEvalZero *
869*150812a8SEvalZero * @retval true If the ramp-up time is set to fast.
870*150812a8SEvalZero * @retval false If the ramp-up time is set to default.
871*150812a8SEvalZero */
872*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_modecnf0_ru_get(void);
873*150812a8SEvalZero
874*150812a8SEvalZero /**
875*150812a8SEvalZero * @brief Function for getting default TX value of the Radio mode configuration register 0.
876*150812a8SEvalZero *
877*150812a8SEvalZero * @return Default TX value.
878*150812a8SEvalZero */
879*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_modecnf0_dtx_get(void);
880*150812a8SEvalZero #endif // defined(RADIO_MODECNF0_RU_Msk) || defined(__NRFX_DOXYGEN__)
881*150812a8SEvalZero
882*150812a8SEvalZero #if defined(RADIO_SFD_SFD_Msk) || defined(__NRFX_DOXYGEN__)
883*150812a8SEvalZero /**
884*150812a8SEvalZero * @brief Function for setting IEEE 802.15.4 start of frame delimiter.
885*150812a8SEvalZero *
886*150812a8SEvalZero * @param sfd IEEE 802.15.4 start of frame delimiter.
887*150812a8SEvalZero */
888*150812a8SEvalZero __STATIC_INLINE void nrf_radio_sfd_set(uint8_t sfd);
889*150812a8SEvalZero
890*150812a8SEvalZero /**
891*150812a8SEvalZero * @brief Function for getting IEEE 802.15.4 start of frame delimiter.
892*150812a8SEvalZero *
893*150812a8SEvalZero * @return IEEE 802.15.4 start of frame delimiter.
894*150812a8SEvalZero */
895*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_sfd_get(void);
896*150812a8SEvalZero #endif // defined(RADIO_SFD_SFD_Msk) || defined(__NRFX_DOXYGEN__)
897*150812a8SEvalZero
898*150812a8SEvalZero #if defined(RADIO_EDCNT_EDCNT_Msk) || defined(__NRFX_DOXYGEN__)
899*150812a8SEvalZero /**
900*150812a8SEvalZero * @brief Function for setting number of iterations to perform ED scan.
901*150812a8SEvalZero *
902*150812a8SEvalZero * @param[in] ed_loop_count Number of iterations during ED procedure.
903*150812a8SEvalZero */
904*150812a8SEvalZero __STATIC_INLINE void nrf_radio_ed_loop_count_set(uint32_t ed_loop_count);
905*150812a8SEvalZero #endif // defined(RADIO_EDCNT_EDCNT_Msk) || defined(__NRFX_DOXYGEN__)
906*150812a8SEvalZero
907*150812a8SEvalZero #if defined(RADIO_EDSAMPLE_EDLVL_Msk) || defined(__NRFX_DOXYGEN__)
908*150812a8SEvalZero /**
909*150812a8SEvalZero * @brief Function for getting Energy Detection level.
910*150812a8SEvalZero *
911*150812a8SEvalZero * @return IEEE 802.15.4 energy detect level.
912*150812a8SEvalZero */
913*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_ed_sample_get(void);
914*150812a8SEvalZero #endif // defined(RADIO_EDSAMPLE_EDLVL_Msk) || defined(__NRFX_DOXYGEN__)
915*150812a8SEvalZero
916*150812a8SEvalZero #if defined(RADIO_CCACTRL_CCAMODE_Msk) || defined(__NRFX_DOXYGEN__)
917*150812a8SEvalZero /**
918*150812a8SEvalZero * @brief Function for configuring the IEEE 802.15.4 clear channel assessment.
919*150812a8SEvalZero *
920*150812a8SEvalZero * @param cca_mode Mode of CCA.
921*150812a8SEvalZero * @param cca_ed_threshold Energy Detection threshold value.
922*150812a8SEvalZero * @param cca_corr_threshold Correlator Busy Threshold.
923*150812a8SEvalZero * @param cca_corr_cnt Limit of occurances above Correlator Threshold.
924*150812a8SEvalZero * When not equal to zero the correlator based
925*150812a8SEvalZero * signal detect is enabled.
926*150812a8SEvalZero */
927*150812a8SEvalZero __STATIC_INLINE void nrf_radio_cca_configure(nrf_radio_cca_mode_t cca_mode,
928*150812a8SEvalZero uint8_t cca_ed_threshold,
929*150812a8SEvalZero uint8_t cca_corr_threshold,
930*150812a8SEvalZero uint8_t cca_corr_cnt);
931*150812a8SEvalZero #endif // defined(RADIO_CCACTRL_CCAMODE_Msk) || defined(__NRFX_DOXYGEN__)
932*150812a8SEvalZero
933*150812a8SEvalZero /**
934*150812a8SEvalZero * @brief Function for setting power mode of the radio peripheral.
935*150812a8SEvalZero *
936*150812a8SEvalZero * @param[in] radio_power If radio should be powered on.
937*150812a8SEvalZero */
938*150812a8SEvalZero __STATIC_INLINE void nrf_radio_power_set(bool radio_power);
939*150812a8SEvalZero
940*150812a8SEvalZero
941*150812a8SEvalZero #ifndef SUPPRESS_INLINE_IMPLEMENTATION
942*150812a8SEvalZero
nrf_radio_task_trigger(nrf_radio_task_t radio_task)943*150812a8SEvalZero __STATIC_INLINE void nrf_radio_task_trigger(nrf_radio_task_t radio_task)
944*150812a8SEvalZero {
945*150812a8SEvalZero *((volatile uint32_t *)((uint8_t *)NRF_RADIO + radio_task)) = 0x1UL;
946*150812a8SEvalZero }
947*150812a8SEvalZero
nrf_radio_task_address_get(nrf_radio_task_t radio_task)948*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_task_address_get(nrf_radio_task_t radio_task)
949*150812a8SEvalZero {
950*150812a8SEvalZero return ((uint32_t)NRF_RADIO + (uint32_t)radio_task);
951*150812a8SEvalZero }
952*150812a8SEvalZero
nrf_radio_event_clear(nrf_radio_event_t radio_event)953*150812a8SEvalZero __STATIC_INLINE void nrf_radio_event_clear(nrf_radio_event_t radio_event)
954*150812a8SEvalZero {
955*150812a8SEvalZero *((volatile uint32_t *)((uint8_t *)NRF_RADIO + radio_event)) = 0x0UL;
956*150812a8SEvalZero #if __CORTEX_M == 0x04
957*150812a8SEvalZero volatile uint32_t dummy = *((volatile uint32_t *)((uint8_t *)NRF_RADIO + radio_event));
958*150812a8SEvalZero (void)dummy;
959*150812a8SEvalZero #endif
960*150812a8SEvalZero }
961*150812a8SEvalZero
nrf_radio_event_check(nrf_radio_event_t radio_event)962*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_event_check(nrf_radio_event_t radio_event)
963*150812a8SEvalZero {
964*150812a8SEvalZero return (bool) *((volatile uint32_t *)((uint8_t *)NRF_RADIO + radio_event));
965*150812a8SEvalZero }
966*150812a8SEvalZero
nrf_radio_event_address_get(nrf_radio_event_t radio_event)967*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_event_address_get(nrf_radio_event_t radio_event)
968*150812a8SEvalZero {
969*150812a8SEvalZero return ((uint32_t)NRF_RADIO + (uint32_t)radio_event);
970*150812a8SEvalZero }
971*150812a8SEvalZero
nrf_radio_shorts_enable(uint32_t radio_shorts_mask)972*150812a8SEvalZero __STATIC_INLINE void nrf_radio_shorts_enable(uint32_t radio_shorts_mask)
973*150812a8SEvalZero {
974*150812a8SEvalZero NRF_RADIO->SHORTS |= radio_shorts_mask;
975*150812a8SEvalZero }
976*150812a8SEvalZero
nrf_radio_shorts_disable(uint32_t radio_shorts_mask)977*150812a8SEvalZero __STATIC_INLINE void nrf_radio_shorts_disable(uint32_t radio_shorts_mask)
978*150812a8SEvalZero {
979*150812a8SEvalZero NRF_RADIO->SHORTS &= ~radio_shorts_mask;
980*150812a8SEvalZero }
981*150812a8SEvalZero
nrf_radio_shorts_set(uint32_t radio_shorts_mask)982*150812a8SEvalZero __STATIC_INLINE void nrf_radio_shorts_set(uint32_t radio_shorts_mask)
983*150812a8SEvalZero {
984*150812a8SEvalZero NRF_RADIO->SHORTS = radio_shorts_mask;
985*150812a8SEvalZero }
986*150812a8SEvalZero
nrf_radio_shorts_get(void)987*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_shorts_get(void)
988*150812a8SEvalZero {
989*150812a8SEvalZero return NRF_RADIO->SHORTS;
990*150812a8SEvalZero }
991*150812a8SEvalZero
nrf_radio_int_enable(uint32_t radio_int_mask)992*150812a8SEvalZero __STATIC_INLINE void nrf_radio_int_enable(uint32_t radio_int_mask)
993*150812a8SEvalZero {
994*150812a8SEvalZero NRF_RADIO->INTENSET = radio_int_mask;
995*150812a8SEvalZero }
996*150812a8SEvalZero
nrf_radio_int_disable(uint32_t radio_int_mask)997*150812a8SEvalZero __STATIC_INLINE void nrf_radio_int_disable(uint32_t radio_int_mask)
998*150812a8SEvalZero {
999*150812a8SEvalZero NRF_RADIO->INTENCLR = radio_int_mask;
1000*150812a8SEvalZero }
1001*150812a8SEvalZero
nrf_radio_int_enable_check(nrf_radio_int_mask_t radio_int_mask)1002*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_int_enable_check(nrf_radio_int_mask_t radio_int_mask)
1003*150812a8SEvalZero {
1004*150812a8SEvalZero return (bool)(NRF_RADIO->INTENSET & radio_int_mask);
1005*150812a8SEvalZero }
1006*150812a8SEvalZero
nrf_radio_crc_status_check(void)1007*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_crc_status_check(void)
1008*150812a8SEvalZero {
1009*150812a8SEvalZero return ((NRF_RADIO->CRCSTATUS & RADIO_CRCSTATUS_CRCSTATUS_Msk) >> RADIO_CRCSTATUS_CRCSTATUS_Pos)
1010*150812a8SEvalZero == RADIO_CRCSTATUS_CRCSTATUS_CRCOk ;
1011*150812a8SEvalZero }
1012*150812a8SEvalZero
nrf_radio_rxmatch_get(void)1013*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_rxmatch_get(void)
1014*150812a8SEvalZero {
1015*150812a8SEvalZero return (uint8_t)NRF_RADIO->RXMATCH;
1016*150812a8SEvalZero }
1017*150812a8SEvalZero
nrf_radio_rxcrc_get(void)1018*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_rxcrc_get(void)
1019*150812a8SEvalZero {
1020*150812a8SEvalZero return NRF_RADIO->RXCRC;
1021*150812a8SEvalZero }
1022*150812a8SEvalZero
nrf_radio_dai_get(void)1023*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_dai_get(void)
1024*150812a8SEvalZero {
1025*150812a8SEvalZero return (uint8_t)NRF_RADIO->DAI;
1026*150812a8SEvalZero }
1027*150812a8SEvalZero
1028*150812a8SEvalZero #if defined(RADIO_PDUSTAT_PDUSTAT_Msk)
nrf_radio_pdustat_get(void)1029*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_pdustat_get(void)
1030*150812a8SEvalZero {
1031*150812a8SEvalZero return (uint8_t)(NRF_RADIO->PDUSTAT & RADIO_PDUSTAT_PDUSTAT_Msk);
1032*150812a8SEvalZero }
1033*150812a8SEvalZero
nrf_radio_cistat_get(void)1034*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_cistat_get(void)
1035*150812a8SEvalZero {
1036*150812a8SEvalZero return (uint8_t)((NRF_RADIO->PDUSTAT & RADIO_PDUSTAT_CISTAT_Msk) >> RADIO_PDUSTAT_CISTAT_Pos);
1037*150812a8SEvalZero }
1038*150812a8SEvalZero #endif // defined(RADIO_PDUSTAT_PDUSTAT_Msk)
1039*150812a8SEvalZero
nrf_radio_packetptr_set(const void * p_packet)1040*150812a8SEvalZero __STATIC_INLINE void nrf_radio_packetptr_set(const void * p_packet)
1041*150812a8SEvalZero {
1042*150812a8SEvalZero NRF_RADIO->PACKETPTR = (uint32_t)p_packet;
1043*150812a8SEvalZero }
1044*150812a8SEvalZero
nrf_radio_packetptr_get(void)1045*150812a8SEvalZero __STATIC_INLINE void * nrf_radio_packetptr_get(void)
1046*150812a8SEvalZero {
1047*150812a8SEvalZero return (void *)NRF_RADIO->PACKETPTR;
1048*150812a8SEvalZero }
1049*150812a8SEvalZero
nrf_radio_frequency_set(uint16_t radio_frequency)1050*150812a8SEvalZero __STATIC_INLINE void nrf_radio_frequency_set(uint16_t radio_frequency)
1051*150812a8SEvalZero {
1052*150812a8SEvalZero NRFX_ASSERT(radio_frequency <= 2500);
1053*150812a8SEvalZero
1054*150812a8SEvalZero #if defined(RADIO_FREQUENCY_MAP_Msk)
1055*150812a8SEvalZero NRFX_ASSERT(radio_frequency >= 2360);
1056*150812a8SEvalZero
1057*150812a8SEvalZero uint32_t delta;
1058*150812a8SEvalZero if (radio_frequency < 2400)
1059*150812a8SEvalZero {
1060*150812a8SEvalZero delta = ((uint32_t)(radio_frequency - 2360)) |
1061*150812a8SEvalZero (RADIO_FREQUENCY_MAP_Low << RADIO_FREQUENCY_MAP_Pos);
1062*150812a8SEvalZero }
1063*150812a8SEvalZero else
1064*150812a8SEvalZero {
1065*150812a8SEvalZero delta = ((uint32_t)(radio_frequency - 2400)) |
1066*150812a8SEvalZero (RADIO_FREQUENCY_MAP_Default << RADIO_FREQUENCY_MAP_Pos);
1067*150812a8SEvalZero }
1068*150812a8SEvalZero
1069*150812a8SEvalZero NRF_RADIO->FREQUENCY = delta;
1070*150812a8SEvalZero #else
1071*150812a8SEvalZero NRFX_ASSERT(radio_frequency >= 2400);
1072*150812a8SEvalZero NRF_RADIO->FREQUENCY = (uint32_t)(2400 - radio_frequency);
1073*150812a8SEvalZero #endif //defined(RADIO_FREQUENCY_MAP_Msk)
1074*150812a8SEvalZero }
1075*150812a8SEvalZero
nrf_radio_frequency_get(void)1076*150812a8SEvalZero __STATIC_INLINE uint16_t nrf_radio_frequency_get(void)
1077*150812a8SEvalZero {
1078*150812a8SEvalZero uint32_t freq;
1079*150812a8SEvalZero
1080*150812a8SEvalZero #if defined(RADIO_FREQUENCY_MAP_Msk)
1081*150812a8SEvalZero if (((NRF_RADIO->FREQUENCY & RADIO_FREQUENCY_MAP_Msk) >> RADIO_FREQUENCY_MAP_Pos) ==
1082*150812a8SEvalZero RADIO_FREQUENCY_MAP_Low)
1083*150812a8SEvalZero {
1084*150812a8SEvalZero freq = 2360;
1085*150812a8SEvalZero }
1086*150812a8SEvalZero else
1087*150812a8SEvalZero #endif
1088*150812a8SEvalZero {
1089*150812a8SEvalZero freq = 2400;
1090*150812a8SEvalZero }
1091*150812a8SEvalZero freq += NRF_RADIO->FREQUENCY & RADIO_FREQUENCY_FREQUENCY_Msk;
1092*150812a8SEvalZero
1093*150812a8SEvalZero return freq;
1094*150812a8SEvalZero }
1095*150812a8SEvalZero
nrf_radio_txpower_set(nrf_radio_txpower_t tx_power)1096*150812a8SEvalZero __STATIC_INLINE void nrf_radio_txpower_set(nrf_radio_txpower_t tx_power)
1097*150812a8SEvalZero {
1098*150812a8SEvalZero NRF_RADIO->TXPOWER = (((uint32_t)tx_power) << RADIO_TXPOWER_TXPOWER_Pos);
1099*150812a8SEvalZero }
1100*150812a8SEvalZero
nrf_radio_txpower_get(void)1101*150812a8SEvalZero __STATIC_INLINE nrf_radio_txpower_t nrf_radio_txpower_get(void)
1102*150812a8SEvalZero {
1103*150812a8SEvalZero return (nrf_radio_txpower_t)(NRF_RADIO->TXPOWER >> RADIO_TXPOWER_TXPOWER_Pos);
1104*150812a8SEvalZero }
1105*150812a8SEvalZero
nrf_radio_mode_set(nrf_radio_mode_t radio_mode)1106*150812a8SEvalZero __STATIC_INLINE void nrf_radio_mode_set(nrf_radio_mode_t radio_mode)
1107*150812a8SEvalZero {
1108*150812a8SEvalZero NRF_RADIO->MODE = ((uint32_t) radio_mode << RADIO_MODE_MODE_Pos);
1109*150812a8SEvalZero }
1110*150812a8SEvalZero
nrf_radio_mode_get(void)1111*150812a8SEvalZero __STATIC_INLINE nrf_radio_mode_t nrf_radio_mode_get(void)
1112*150812a8SEvalZero {
1113*150812a8SEvalZero return (nrf_radio_mode_t)((NRF_RADIO->MODE & RADIO_MODE_MODE_Msk) >> RADIO_MODE_MODE_Pos);
1114*150812a8SEvalZero }
1115*150812a8SEvalZero
nrf_radio_packet_configure(const nrf_radio_packet_conf_t * p_config)1116*150812a8SEvalZero __STATIC_INLINE void nrf_radio_packet_configure(const nrf_radio_packet_conf_t * p_config)
1117*150812a8SEvalZero {
1118*150812a8SEvalZero NRF_RADIO->PCNF0 = (((uint32_t)p_config->lflen << RADIO_PCNF0_LFLEN_Pos) |
1119*150812a8SEvalZero ((uint32_t)p_config->s0len << RADIO_PCNF0_S0LEN_Pos) |
1120*150812a8SEvalZero ((uint32_t)p_config->s1len << RADIO_PCNF0_S1LEN_Pos) |
1121*150812a8SEvalZero #if defined(RADIO_PCNF0_S1INCL_Msk)
1122*150812a8SEvalZero (p_config->s1incl ?
1123*150812a8SEvalZero (RADIO_PCNF0_S1INCL_Include << RADIO_PCNF0_S1INCL_Pos) :
1124*150812a8SEvalZero (RADIO_PCNF0_S1INCL_Automatic << RADIO_PCNF0_S1INCL_Pos) ) |
1125*150812a8SEvalZero #endif
1126*150812a8SEvalZero #if defined(RADIO_PCNF0_CILEN_Msk)
1127*150812a8SEvalZero ((uint32_t)p_config->cilen << RADIO_PCNF0_CILEN_Pos) |
1128*150812a8SEvalZero #endif
1129*150812a8SEvalZero #if defined(RADIO_PCNF0_PLEN_Msk)
1130*150812a8SEvalZero ((uint32_t)p_config->plen << RADIO_PCNF0_PLEN_Pos) |
1131*150812a8SEvalZero #endif
1132*150812a8SEvalZero #if defined(RADIO_PCNF0_CRCINC_Msk)
1133*150812a8SEvalZero (p_config->crcinc ?
1134*150812a8SEvalZero (RADIO_PCNF0_CRCINC_Include << RADIO_PCNF0_CRCINC_Pos) :
1135*150812a8SEvalZero (RADIO_PCNF0_CRCINC_Exclude << RADIO_PCNF0_CRCINC_Pos) ) |
1136*150812a8SEvalZero #endif
1137*150812a8SEvalZero #if defined(RADIO_PCNF0_TERMLEN_Msk)
1138*150812a8SEvalZero ((uint32_t)p_config->termlen << RADIO_PCNF0_TERMLEN_Pos) |
1139*150812a8SEvalZero #endif
1140*150812a8SEvalZero 0);
1141*150812a8SEvalZero
1142*150812a8SEvalZero NRF_RADIO->PCNF1 = (((uint32_t)p_config->maxlen << RADIO_PCNF1_MAXLEN_Pos) |
1143*150812a8SEvalZero ((uint32_t)p_config->statlen << RADIO_PCNF1_STATLEN_Pos) |
1144*150812a8SEvalZero ((uint32_t)p_config->balen << RADIO_PCNF1_BALEN_Pos) |
1145*150812a8SEvalZero (p_config->big_endian ?
1146*150812a8SEvalZero (RADIO_PCNF1_ENDIAN_Big << RADIO_PCNF1_ENDIAN_Pos) :
1147*150812a8SEvalZero (RADIO_PCNF1_ENDIAN_Little << RADIO_PCNF1_ENDIAN_Pos) ) |
1148*150812a8SEvalZero (p_config->whiteen ?
1149*150812a8SEvalZero (RADIO_PCNF1_WHITEEN_Enabled << RADIO_PCNF1_WHITEEN_Pos) :
1150*150812a8SEvalZero (RADIO_PCNF1_WHITEEN_Disabled << RADIO_PCNF1_WHITEEN_Pos) ));
1151*150812a8SEvalZero }
1152*150812a8SEvalZero
nrf_radio_base0_set(uint32_t address)1153*150812a8SEvalZero __STATIC_INLINE void nrf_radio_base0_set(uint32_t address)
1154*150812a8SEvalZero {
1155*150812a8SEvalZero NRF_RADIO->BASE0 = address;
1156*150812a8SEvalZero }
1157*150812a8SEvalZero
nrf_radio_base0_get(void)1158*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_base0_get(void)
1159*150812a8SEvalZero {
1160*150812a8SEvalZero return NRF_RADIO->BASE0;
1161*150812a8SEvalZero }
1162*150812a8SEvalZero
nrf_radio_base1_set(uint32_t address)1163*150812a8SEvalZero __STATIC_INLINE void nrf_radio_base1_set(uint32_t address)
1164*150812a8SEvalZero {
1165*150812a8SEvalZero NRF_RADIO->BASE1 = address;
1166*150812a8SEvalZero }
1167*150812a8SEvalZero
nrf_radio_base1_get(void)1168*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_base1_get(void)
1169*150812a8SEvalZero {
1170*150812a8SEvalZero return NRF_RADIO->BASE1;
1171*150812a8SEvalZero }
1172*150812a8SEvalZero
nrf_radio_prefix0_set(uint32_t prefix0_value)1173*150812a8SEvalZero __STATIC_INLINE void nrf_radio_prefix0_set(uint32_t prefix0_value)
1174*150812a8SEvalZero {
1175*150812a8SEvalZero NRF_RADIO->PREFIX0 = prefix0_value;
1176*150812a8SEvalZero }
1177*150812a8SEvalZero
nrf_radio_prefix0_get(void)1178*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_prefix0_get(void)
1179*150812a8SEvalZero {
1180*150812a8SEvalZero return NRF_RADIO->PREFIX0;
1181*150812a8SEvalZero }
1182*150812a8SEvalZero
nrf_radio_prefix1_set(uint32_t prefix1_value)1183*150812a8SEvalZero __STATIC_INLINE void nrf_radio_prefix1_set(uint32_t prefix1_value)
1184*150812a8SEvalZero {
1185*150812a8SEvalZero NRF_RADIO->PREFIX1 = prefix1_value;
1186*150812a8SEvalZero }
1187*150812a8SEvalZero
nrf_radio_prefix1_get(void)1188*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_prefix1_get(void)
1189*150812a8SEvalZero {
1190*150812a8SEvalZero return NRF_RADIO->PREFIX1;
1191*150812a8SEvalZero }
1192*150812a8SEvalZero
nrf_radio_txaddress_set(uint8_t txaddress)1193*150812a8SEvalZero __STATIC_INLINE void nrf_radio_txaddress_set(uint8_t txaddress)
1194*150812a8SEvalZero {
1195*150812a8SEvalZero NRF_RADIO->TXADDRESS = ((uint32_t)txaddress) << RADIO_TXADDRESS_TXADDRESS_Pos;
1196*150812a8SEvalZero }
1197*150812a8SEvalZero
nrf_radio_txaddress_get(void)1198*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_txaddress_get(void)
1199*150812a8SEvalZero {
1200*150812a8SEvalZero return (uint8_t)((NRF_RADIO->TXADDRESS & RADIO_TXADDRESS_TXADDRESS_Msk) >>
1201*150812a8SEvalZero RADIO_TXADDRESS_TXADDRESS_Pos);
1202*150812a8SEvalZero }
1203*150812a8SEvalZero
nrf_radio_rxaddresses_set(uint8_t rxaddresses)1204*150812a8SEvalZero __STATIC_INLINE void nrf_radio_rxaddresses_set(uint8_t rxaddresses)
1205*150812a8SEvalZero {
1206*150812a8SEvalZero NRF_RADIO->RXADDRESSES = (uint32_t)(rxaddresses);
1207*150812a8SEvalZero }
1208*150812a8SEvalZero
nrf_radio_rxaddresses_get(void)1209*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_rxaddresses_get(void)
1210*150812a8SEvalZero {
1211*150812a8SEvalZero return (uint8_t)(NRF_RADIO->RXADDRESSES);
1212*150812a8SEvalZero }
1213*150812a8SEvalZero
nrf_radio_crc_configure(uint8_t crc_length,nrf_radio_crc_addr_t crc_address,uint32_t crc_polynominal)1214*150812a8SEvalZero __STATIC_INLINE void nrf_radio_crc_configure(uint8_t crc_length,
1215*150812a8SEvalZero nrf_radio_crc_addr_t crc_address,
1216*150812a8SEvalZero uint32_t crc_polynominal)
1217*150812a8SEvalZero {
1218*150812a8SEvalZero NRF_RADIO->CRCCNF = ((uint32_t)crc_length << RADIO_CRCCNF_LEN_Pos) |
1219*150812a8SEvalZero ((uint32_t)crc_address << RADIO_CRCCNF_SKIPADDR_Pos);
1220*150812a8SEvalZero NRF_RADIO->CRCPOLY = (crc_polynominal << RADIO_CRCPOLY_CRCPOLY_Pos);
1221*150812a8SEvalZero }
1222*150812a8SEvalZero
nrf_radio_crcinit_set(uint32_t crc_init_value)1223*150812a8SEvalZero __STATIC_INLINE void nrf_radio_crcinit_set(uint32_t crc_init_value)
1224*150812a8SEvalZero {
1225*150812a8SEvalZero NRF_RADIO->CRCINIT = crc_init_value;
1226*150812a8SEvalZero }
1227*150812a8SEvalZero
nrf_radio_crcinit_get(void)1228*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_crcinit_get(void)
1229*150812a8SEvalZero {
1230*150812a8SEvalZero return NRF_RADIO->CRCINIT;
1231*150812a8SEvalZero }
1232*150812a8SEvalZero
nrf_radio_ifs_set(uint32_t radio_ifs)1233*150812a8SEvalZero __STATIC_INLINE void nrf_radio_ifs_set(uint32_t radio_ifs)
1234*150812a8SEvalZero {
1235*150812a8SEvalZero NRF_RADIO->TIFS = radio_ifs;
1236*150812a8SEvalZero }
1237*150812a8SEvalZero
nrf_radio_ifs_get(void)1238*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_ifs_get(void)
1239*150812a8SEvalZero {
1240*150812a8SEvalZero return NRF_RADIO->TIFS;
1241*150812a8SEvalZero }
1242*150812a8SEvalZero
nrf_radio_rssi_sample_get(void)1243*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_rssi_sample_get(void)
1244*150812a8SEvalZero {
1245*150812a8SEvalZero return (uint8_t)((NRF_RADIO->RSSISAMPLE & RADIO_RSSISAMPLE_RSSISAMPLE_Msk) >>
1246*150812a8SEvalZero RADIO_RSSISAMPLE_RSSISAMPLE_Pos);
1247*150812a8SEvalZero }
1248*150812a8SEvalZero
nrf_radio_state_get(void)1249*150812a8SEvalZero __STATIC_INLINE nrf_radio_state_t nrf_radio_state_get(void)
1250*150812a8SEvalZero {
1251*150812a8SEvalZero return (nrf_radio_state_t) NRF_RADIO->STATE;
1252*150812a8SEvalZero }
1253*150812a8SEvalZero
nrf_radio_datawhiteiv_set(uint8_t datawhiteiv)1254*150812a8SEvalZero __STATIC_INLINE void nrf_radio_datawhiteiv_set(uint8_t datawhiteiv)
1255*150812a8SEvalZero {
1256*150812a8SEvalZero NRF_RADIO->DATAWHITEIV = (((uint32_t)datawhiteiv) & RADIO_DATAWHITEIV_DATAWHITEIV_Msk);
1257*150812a8SEvalZero }
1258*150812a8SEvalZero
nrf_radio_datawhiteiv_get(void)1259*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_datawhiteiv_get(void)
1260*150812a8SEvalZero {
1261*150812a8SEvalZero return (uint8_t)(NRF_RADIO->DATAWHITEIV & RADIO_DATAWHITEIV_DATAWHITEIV_Msk);
1262*150812a8SEvalZero }
1263*150812a8SEvalZero
nrf_radio_bcc_set(uint32_t radio_bcc)1264*150812a8SEvalZero __STATIC_INLINE void nrf_radio_bcc_set(uint32_t radio_bcc)
1265*150812a8SEvalZero {
1266*150812a8SEvalZero NRF_RADIO->BCC = radio_bcc;
1267*150812a8SEvalZero }
1268*150812a8SEvalZero
nrf_radio_bcc_get(void)1269*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_bcc_get(void)
1270*150812a8SEvalZero {
1271*150812a8SEvalZero return NRF_RADIO->BCC;
1272*150812a8SEvalZero }
1273*150812a8SEvalZero
nrf_radio_dab_set(uint32_t dab_value,uint8_t segment)1274*150812a8SEvalZero __STATIC_INLINE void nrf_radio_dab_set(uint32_t dab_value, uint8_t segment)
1275*150812a8SEvalZero {
1276*150812a8SEvalZero NRFX_ASSERT(segment < 8);
1277*150812a8SEvalZero NRF_RADIO->DAB[segment] = dab_value;
1278*150812a8SEvalZero }
1279*150812a8SEvalZero
nrf_radio_dab_get(uint8_t segment)1280*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_dab_get(uint8_t segment)
1281*150812a8SEvalZero {
1282*150812a8SEvalZero NRFX_ASSERT(segment < 8);
1283*150812a8SEvalZero return NRF_RADIO->DAB[segment];
1284*150812a8SEvalZero }
1285*150812a8SEvalZero
nrf_radio_dap_set(uint16_t dap_value,uint8_t prefix_index)1286*150812a8SEvalZero __STATIC_INLINE void nrf_radio_dap_set(uint16_t dap_value, uint8_t prefix_index)
1287*150812a8SEvalZero {
1288*150812a8SEvalZero NRFX_ASSERT(prefix_index < 8);
1289*150812a8SEvalZero NRF_RADIO->DAP[prefix_index] = (uint32_t)dap_value;
1290*150812a8SEvalZero }
1291*150812a8SEvalZero
nrf_radio_dap_get(uint8_t prefix_index)1292*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_dap_get(uint8_t prefix_index)
1293*150812a8SEvalZero {
1294*150812a8SEvalZero NRFX_ASSERT(prefix_index < 8);
1295*150812a8SEvalZero return NRF_RADIO->DAP[prefix_index];
1296*150812a8SEvalZero }
1297*150812a8SEvalZero
nrf_radio_dacnf_set(uint8_t ena,uint8_t txadd)1298*150812a8SEvalZero __STATIC_INLINE void nrf_radio_dacnf_set(uint8_t ena, uint8_t txadd)
1299*150812a8SEvalZero {
1300*150812a8SEvalZero NRF_RADIO->DACNF = (((uint32_t)ena << RADIO_DACNF_ENA0_Pos) |
1301*150812a8SEvalZero ((uint32_t)txadd << RADIO_DACNF_TXADD0_Pos));
1302*150812a8SEvalZero }
1303*150812a8SEvalZero
nrf_radio_dacnf_ena_get(void)1304*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_dacnf_ena_get(void)
1305*150812a8SEvalZero {
1306*150812a8SEvalZero return (NRF_RADIO->DACNF & (RADIO_DACNF_ENA0_Msk |
1307*150812a8SEvalZero RADIO_DACNF_ENA1_Msk |
1308*150812a8SEvalZero RADIO_DACNF_ENA2_Msk |
1309*150812a8SEvalZero RADIO_DACNF_ENA3_Msk |
1310*150812a8SEvalZero RADIO_DACNF_ENA4_Msk |
1311*150812a8SEvalZero RADIO_DACNF_ENA5_Msk |
1312*150812a8SEvalZero RADIO_DACNF_ENA6_Msk |
1313*150812a8SEvalZero RADIO_DACNF_ENA7_Msk)) >> RADIO_DACNF_ENA0_Pos;
1314*150812a8SEvalZero }
1315*150812a8SEvalZero
nrf_radio_dacnf_txadd_get(void)1316*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_dacnf_txadd_get(void)
1317*150812a8SEvalZero {
1318*150812a8SEvalZero return (NRF_RADIO->DACNF & (RADIO_DACNF_TXADD0_Msk |
1319*150812a8SEvalZero RADIO_DACNF_TXADD1_Msk |
1320*150812a8SEvalZero RADIO_DACNF_TXADD2_Msk |
1321*150812a8SEvalZero RADIO_DACNF_TXADD3_Msk |
1322*150812a8SEvalZero RADIO_DACNF_TXADD4_Msk |
1323*150812a8SEvalZero RADIO_DACNF_TXADD5_Msk |
1324*150812a8SEvalZero RADIO_DACNF_TXADD6_Msk |
1325*150812a8SEvalZero RADIO_DACNF_TXADD7_Msk)) >> RADIO_DACNF_TXADD0_Pos;
1326*150812a8SEvalZero }
1327*150812a8SEvalZero
1328*150812a8SEvalZero #if defined(RADIO_INTENSET_MHRMATCH_Msk)
nrf_radio_mhmu_search_pattern_set(uint32_t radio_mhmu_search_pattern)1329*150812a8SEvalZero __STATIC_INLINE void nrf_radio_mhmu_search_pattern_set(uint32_t radio_mhmu_search_pattern)
1330*150812a8SEvalZero {
1331*150812a8SEvalZero NRF_RADIO->MHRMATCHCONF = radio_mhmu_search_pattern;
1332*150812a8SEvalZero }
1333*150812a8SEvalZero
nrf_radio_mhmu_search_pattern_get(void)1334*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_mhmu_search_pattern_get(void)
1335*150812a8SEvalZero {
1336*150812a8SEvalZero return NRF_RADIO->MHRMATCHCONF;
1337*150812a8SEvalZero }
1338*150812a8SEvalZero
nrf_radio_mhmu_pattern_mask_set(uint32_t radio_mhmu_pattern_mask)1339*150812a8SEvalZero __STATIC_INLINE void nrf_radio_mhmu_pattern_mask_set(uint32_t radio_mhmu_pattern_mask)
1340*150812a8SEvalZero {
1341*150812a8SEvalZero NRF_RADIO->MHRMATCHMAS = radio_mhmu_pattern_mask;
1342*150812a8SEvalZero }
1343*150812a8SEvalZero
nrf_radio_mhmu_pattern_mask_get(void)1344*150812a8SEvalZero __STATIC_INLINE uint32_t nrf_radio_mhmu_pattern_mask_get(void)
1345*150812a8SEvalZero {
1346*150812a8SEvalZero return NRF_RADIO->MHRMATCHMAS;
1347*150812a8SEvalZero }
1348*150812a8SEvalZero #endif // defined(RADIO_INTENSET_MHRMATCH_Msk)
1349*150812a8SEvalZero
1350*150812a8SEvalZero #if defined(RADIO_MODECNF0_RU_Msk)
nrf_radio_modecnf0_set(bool fast_ramp_up,uint8_t default_tx)1351*150812a8SEvalZero __STATIC_INLINE void nrf_radio_modecnf0_set(bool fast_ramp_up, uint8_t default_tx)
1352*150812a8SEvalZero {
1353*150812a8SEvalZero NRF_RADIO->MODECNF0 = (fast_ramp_up ? (RADIO_MODECNF0_RU_Fast << RADIO_MODECNF0_RU_Pos) :
1354*150812a8SEvalZero (RADIO_MODECNF0_RU_Default << RADIO_MODECNF0_RU_Pos) ) |
1355*150812a8SEvalZero (((uint32_t)default_tx) << RADIO_MODECNF0_DTX_Pos);
1356*150812a8SEvalZero }
1357*150812a8SEvalZero
nrf_radio_modecnf0_ru_get(void)1358*150812a8SEvalZero __STATIC_INLINE bool nrf_radio_modecnf0_ru_get(void)
1359*150812a8SEvalZero {
1360*150812a8SEvalZero return ((NRF_RADIO->MODECNF0 & RADIO_MODECNF0_RU_Msk) >> RADIO_MODECNF0_RU_Pos) ==
1361*150812a8SEvalZero RADIO_MODECNF0_RU_Fast;
1362*150812a8SEvalZero }
1363*150812a8SEvalZero
nrf_radio_modecnf0_dtx_get(void)1364*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_modecnf0_dtx_get(void)
1365*150812a8SEvalZero {
1366*150812a8SEvalZero return (uint8_t)((NRF_RADIO->MODECNF0 & RADIO_MODECNF0_DTX_Msk) >> RADIO_MODECNF0_DTX_Pos);
1367*150812a8SEvalZero }
1368*150812a8SEvalZero #endif // defined(RADIO_MODECNF0_RU_Msk)
1369*150812a8SEvalZero
1370*150812a8SEvalZero #if defined(RADIO_SFD_SFD_Msk)
nrf_radio_sfd_set(uint8_t sfd)1371*150812a8SEvalZero __STATIC_INLINE void nrf_radio_sfd_set(uint8_t sfd)
1372*150812a8SEvalZero {
1373*150812a8SEvalZero NRF_RADIO->SFD = ((uint32_t)sfd) << RADIO_SFD_SFD_Pos;
1374*150812a8SEvalZero }
1375*150812a8SEvalZero
nrf_radio_sfd_get(void)1376*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_sfd_get(void)
1377*150812a8SEvalZero {
1378*150812a8SEvalZero return (uint8_t)((NRF_RADIO->SFD & RADIO_SFD_SFD_Msk) >> RADIO_SFD_SFD_Pos);
1379*150812a8SEvalZero }
1380*150812a8SEvalZero #endif // defined(RADIO_SFD_SFD_Msk)
1381*150812a8SEvalZero
1382*150812a8SEvalZero #if defined(RADIO_EDCNT_EDCNT_Msk)
nrf_radio_ed_loop_count_set(uint32_t ed_loop_count)1383*150812a8SEvalZero __STATIC_INLINE void nrf_radio_ed_loop_count_set(uint32_t ed_loop_count)
1384*150812a8SEvalZero {
1385*150812a8SEvalZero NRF_RADIO->EDCNT = (ed_loop_count & RADIO_EDCNT_EDCNT_Msk);
1386*150812a8SEvalZero }
1387*150812a8SEvalZero #endif
1388*150812a8SEvalZero
1389*150812a8SEvalZero #if defined(RADIO_EDSAMPLE_EDLVL_Msk)
nrf_radio_ed_sample_get(void)1390*150812a8SEvalZero __STATIC_INLINE uint8_t nrf_radio_ed_sample_get(void)
1391*150812a8SEvalZero {
1392*150812a8SEvalZero return (uint8_t) NRF_RADIO->EDSAMPLE;
1393*150812a8SEvalZero }
1394*150812a8SEvalZero #endif
1395*150812a8SEvalZero
1396*150812a8SEvalZero #if defined(RADIO_CCACTRL_CCAMODE_Msk)
1397*150812a8SEvalZero
nrf_radio_cca_configure(nrf_radio_cca_mode_t cca_mode,uint8_t cca_ed_threshold,uint8_t cca_corr_threshold,uint8_t cca_corr_cnt)1398*150812a8SEvalZero __STATIC_INLINE void nrf_radio_cca_configure(nrf_radio_cca_mode_t cca_mode,
1399*150812a8SEvalZero uint8_t cca_ed_threshold,
1400*150812a8SEvalZero uint8_t cca_corr_threshold,
1401*150812a8SEvalZero uint8_t cca_corr_cnt)
1402*150812a8SEvalZero {
1403*150812a8SEvalZero NRF_RADIO->CCACTRL = (((uint32_t)cca_mode << RADIO_CCACTRL_CCAMODE_Pos) |
1404*150812a8SEvalZero ((uint32_t)cca_ed_threshold << RADIO_CCACTRL_CCAEDTHRES_Pos) |
1405*150812a8SEvalZero ((uint32_t)cca_corr_threshold << RADIO_CCACTRL_CCACORRTHRES_Pos) |
1406*150812a8SEvalZero ((uint32_t)cca_corr_cnt << RADIO_CCACTRL_CCACORRCNT_Pos));
1407*150812a8SEvalZero }
1408*150812a8SEvalZero #endif
1409*150812a8SEvalZero
nrf_radio_power_set(bool radio_power)1410*150812a8SEvalZero __STATIC_INLINE void nrf_radio_power_set(bool radio_power)
1411*150812a8SEvalZero {
1412*150812a8SEvalZero NRF_RADIO->POWER = (uint32_t) radio_power;
1413*150812a8SEvalZero }
1414*150812a8SEvalZero #endif
1415*150812a8SEvalZero
1416*150812a8SEvalZero /** @} */
1417*150812a8SEvalZero
1418*150812a8SEvalZero #ifdef __cplusplus
1419*150812a8SEvalZero }
1420*150812a8SEvalZero #endif
1421*150812a8SEvalZero
1422*150812a8SEvalZero #endif // NRF_RADIO_H__
1423