1 /*
2  * Copyright (c) 2016 Nordic Semiconductor ASA
3  * Copyright (c) 2016 Vinayak Kariappa Chettimada
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
8 #define RADIO_TXP_DEFAULT 0
9 
10 
11 typedef void (*radio_isr_cb_t) (void *param);
12 
13 void isr_radio(void *arg);
14 void radio_isr_set(radio_isr_cb_t cb, void *param);
15 
16 void radio_setup(void);
17 void radio_reset(void);
18 void radio_phy_set(uint8_t phy, uint8_t flags);
19 void radio_tx_power_set(uint32_t power);
20 void radio_tx_power_max_set(void);
21 void radio_freq_chan_set(uint32_t chan);
22 void radio_whiten_iv_set(uint32_t iv);
23 void radio_aa_set(const uint8_t *aa);
24 void radio_pkt_configure(uint8_t bits_len, uint8_t max_len, uint8_t flags);
25 void radio_pkt_rx_set(void *rx_packet);
26 void radio_pkt_tx_set(void *tx_packet);
27 uint32_t radio_tx_ready_delay_get(uint8_t phy, uint8_t flags);
28 uint32_t radio_tx_chain_delay_get(uint8_t phy, uint8_t flags);
29 uint32_t radio_rx_ready_delay_get(uint8_t phy, uint8_t flags);
30 uint32_t radio_rx_chain_delay_get(uint8_t phy, uint8_t flags);
31 void radio_rx_enable(void);
32 void radio_tx_enable(void);
33 void radio_disable(void);
34 
35 void radio_status_reset(void);
36 uint32_t radio_is_ready(void);
37 uint32_t radio_is_done(void);
38 uint32_t radio_has_disabled(void);
39 uint32_t radio_is_idle(void);
40 
41 void radio_crc_configure(uint32_t polynomial, uint32_t iv);
42 uint32_t radio_crc_is_valid(void);
43 
44 void *radio_pkt_empty_get(void);
45 void *radio_pkt_scratch_get(void);
46 
47 void radio_switch_complete_and_rx(uint8_t phy_rx);
48 void radio_switch_complete_and_tx(uint8_t phy_rx, uint8_t flags_rx, uint8_t phy_tx,
49 				  uint8_t flags_tx);
50 void radio_switch_complete_and_disable(void);
51 
52 void radio_rssi_measure(void);
53 uint32_t radio_rssi_get(void);
54 void radio_rssi_status_reset(void);
55 uint32_t radio_rssi_is_ready(void);
56 
57 void radio_filter_configure(uint8_t bitmask_enable, uint8_t bitmask_addr_type,
58 			    uint8_t *bdaddr);
59 void radio_filter_disable(void);
60 void radio_filter_status_reset(void);
61 uint32_t radio_filter_has_match(void);
62 uint32_t radio_filter_match_get(void);
63 
64 void radio_bc_configure(uint32_t n);
65 void radio_bc_status_reset(void);
66 uint32_t radio_bc_has_match(void);
67 
68 void radio_tmr_status_reset(void);
69 void radio_tmr_tifs_set(uint32_t tifs);
70 uint32_t radio_tmr_start(uint8_t trx, uint32_t ticks_start, uint32_t remainder);
71 uint32_t radio_tmr_start_tick(uint8_t trx, uint32_t tick);
72 void radio_tmr_start_us(uint8_t trx, uint32_t us);
73 uint32_t radio_tmr_start_now(uint8_t trx);
74 uint32_t radio_tmr_start_get(void);
75 void radio_tmr_stop(void);
76 void radio_tmr_hcto_configure(uint32_t hcto);
77 void radio_tmr_aa_capture(void);
78 uint32_t radio_tmr_aa_get(void);
79 void radio_tmr_aa_save(uint32_t aa);
80 uint32_t radio_tmr_aa_restore(void);
81 uint32_t radio_tmr_ready_get(void);
82 void radio_tmr_end_capture(void);
83 uint32_t radio_tmr_end_get(void);
84 uint32_t radio_tmr_tifs_base_get(void);
85 void radio_tmr_sample(void);
86 uint32_t radio_tmr_sample_get(void);
87 
88 void radio_gpio_pa_setup(void);
89 void radio_gpio_lna_setup(void);
90 void radio_gpio_lna_on(void);
91 void radio_gpio_lna_off(void);
92 void radio_gpio_pa_lna_enable(uint32_t trx_us);
93 void radio_gpio_pa_lna_disable(void);
94 
95 void *radio_ccm_rx_pkt_set(struct ccm *ccm, uint8_t phy, void *pkt);
96 void *radio_ccm_tx_pkt_set(struct ccm *ccm, void *pkt);
97 uint32_t radio_ccm_is_done(void);
98 uint32_t radio_ccm_mic_is_valid(void);
99 uint32_t radio_ccm_is_available(void);
100 
101 void radio_ar_configure(uint32_t nirk, void *irk);
102 uint32_t radio_ar_match_get(void);
103 void radio_ar_status_reset(void);
104 uint32_t radio_ar_has_match(void);
105 
106 uint32_t radio_sleep(void);
107 uint32_t radio_wake(void);
108 uint32_t radio_is_off(void);
109