|
|
@@ -8,53 +8,53 @@
|
|
|
extern "C" {
|
|
|
#endif
|
|
|
|
|
|
-#define R_REGISTER 0x00
|
|
|
-#define W_REGISTER 0x20
|
|
|
-#define REGISTER_MASK 0x1F
|
|
|
-#define ACTIVATE 0x50
|
|
|
-#define R_RX_PL_WID 0x60
|
|
|
-#define R_RX_PAYLOAD 0x61
|
|
|
-#define W_TX_PAYLOAD 0xA0
|
|
|
+#define R_REGISTER 0x00
|
|
|
+#define W_REGISTER 0x20
|
|
|
+#define REGISTER_MASK 0x1F
|
|
|
+#define ACTIVATE 0x50
|
|
|
+#define R_RX_PL_WID 0x60
|
|
|
+#define R_RX_PAYLOAD 0x61
|
|
|
+#define W_TX_PAYLOAD 0xA0
|
|
|
#define W_TX_PAYLOAD_NOACK 0xB0
|
|
|
-#define W_ACK_PAYLOAD 0xA8
|
|
|
-#define FLUSH_TX 0xE1
|
|
|
-#define FLUSH_RX 0xE2
|
|
|
-#define REUSE_TX_PL 0xE3
|
|
|
-#define RF24_NOP 0xFF
|
|
|
-
|
|
|
-#define REG_CONFIG 0x00
|
|
|
-#define REG_EN_AA 0x01
|
|
|
-#define REG_EN_RXADDR 0x02
|
|
|
-#define REG_SETUP_AW 0x03
|
|
|
-#define REG_SETUP_RETR 0x04
|
|
|
-#define REG_DYNPD 0x1C
|
|
|
-#define REG_FEATURE 0x1D
|
|
|
-#define REG_RF_SETUP 0x06
|
|
|
-#define REG_STATUS 0x07
|
|
|
-#define REG_RX_ADDR_P0 0x0A
|
|
|
-#define REG_RX_ADDR_P1 0x0B
|
|
|
-#define REG_RX_ADDR_P2 0x0C
|
|
|
-#define REG_RX_ADDR_P3 0x0D
|
|
|
-#define REG_RX_ADDR_P4 0x0E
|
|
|
-#define REG_RX_ADDR_P5 0x0F
|
|
|
-#define REG_RF_CH 0x05
|
|
|
-#define REG_TX_ADDR 0x10
|
|
|
+#define W_ACK_PAYLOAD 0xA8
|
|
|
+#define FLUSH_TX 0xE1
|
|
|
+#define FLUSH_RX 0xE2
|
|
|
+#define REUSE_TX_PL 0xE3
|
|
|
+#define RF24_NOP 0xFF
|
|
|
+
|
|
|
+#define REG_CONFIG 0x00
|
|
|
+#define REG_EN_AA 0x01
|
|
|
+#define REG_EN_RXADDR 0x02
|
|
|
+#define REG_SETUP_AW 0x03
|
|
|
+#define REG_SETUP_RETR 0x04
|
|
|
+#define REG_DYNPD 0x1C
|
|
|
+#define REG_FEATURE 0x1D
|
|
|
+#define REG_RF_SETUP 0x06
|
|
|
+#define REG_STATUS 0x07
|
|
|
+#define REG_RX_ADDR_P0 0x0A
|
|
|
+#define REG_RX_ADDR_P1 0x0B
|
|
|
+#define REG_RX_ADDR_P2 0x0C
|
|
|
+#define REG_RX_ADDR_P3 0x0D
|
|
|
+#define REG_RX_ADDR_P4 0x0E
|
|
|
+#define REG_RX_ADDR_P5 0x0F
|
|
|
+#define REG_RF_CH 0x05
|
|
|
+#define REG_TX_ADDR 0x10
|
|
|
#define REG_FIFO_STATUS 0x17
|
|
|
-#define REG_OBSERVE_TX 0x08
|
|
|
-
|
|
|
-#define RX_PW_P0 0x11
|
|
|
-#define RX_PW_P1 0x12
|
|
|
-#define RX_PW_P2 0x13
|
|
|
-#define RX_PW_P3 0x14
|
|
|
-#define RX_PW_P4 0x15
|
|
|
-#define RX_PW_P5 0x16
|
|
|
-#define RX_DR 0x40
|
|
|
-#define TX_DS 0x20
|
|
|
-#define MAX_RT 0x10
|
|
|
+#define REG_OBSERVE_TX 0x08
|
|
|
+
|
|
|
+#define RX_PW_P0 0x11
|
|
|
+#define RX_PW_P1 0x12
|
|
|
+#define RX_PW_P2 0x13
|
|
|
+#define RX_PW_P3 0x14
|
|
|
+#define RX_PW_P4 0x15
|
|
|
+#define RX_PW_P5 0x16
|
|
|
+#define RX_DR 0x40
|
|
|
+#define TX_DS 0x20
|
|
|
+#define MAX_RT 0x10
|
|
|
#define NRF24_EN_DYN_ACK 0x01
|
|
|
|
|
|
#define nrf24_TIMEOUT 500
|
|
|
-#define nrf24_CE_PIN &gpio_ext_pb2
|
|
|
+#define nrf24_CE_PIN &gpio_ext_pb2
|
|
|
#define nrf24_HANDLE \
|
|
|
(momentum_settings.spi_nrf24_handle == SpiDefault ? &furi_hal_spi_bus_handle_external : \
|
|
|
&furi_hal_spi_bus_handle_external_extra)
|
|
|
@@ -69,7 +69,7 @@ extern "C" {
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_write_reg(FuriHalSpiBusHandle* handle, uint8_t reg, uint8_t data);
|
|
|
+uint8_t nrf24_write_reg(const FuriHalSpiBusHandle* handle, uint8_t reg, uint8_t data);
|
|
|
|
|
|
/** Write buffer to device register
|
|
|
*
|
|
|
@@ -80,7 +80,11 @@ uint8_t nrf24_write_reg(FuriHalSpiBusHandle* handle, uint8_t reg, uint8_t data);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_write_buf_reg(FuriHalSpiBusHandle* handle, uint8_t reg, uint8_t* data, uint8_t size);
|
|
|
+uint8_t nrf24_write_buf_reg(
|
|
|
+ const FuriHalSpiBusHandle* handle,
|
|
|
+ uint8_t reg,
|
|
|
+ uint8_t* data,
|
|
|
+ uint8_t size);
|
|
|
|
|
|
/** Read device register
|
|
|
*
|
|
|
@@ -90,10 +94,11 @@ uint8_t nrf24_write_buf_reg(FuriHalSpiBusHandle* handle, uint8_t reg, uint8_t* d
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_read_reg(FuriHalSpiBusHandle* handle, uint8_t reg, uint8_t* data, uint8_t size);
|
|
|
+uint8_t
|
|
|
+ nrf24_read_reg(const FuriHalSpiBusHandle* handle, uint8_t reg, uint8_t* data, uint8_t size);
|
|
|
|
|
|
// Read single register (1 byte)
|
|
|
-uint8_t nrf24_read_register(FuriHalSpiBusHandle* handle, uint8_t reg);
|
|
|
+uint8_t nrf24_read_register(const FuriHalSpiBusHandle* handle, uint8_t reg);
|
|
|
|
|
|
/** Power up the radio for operation
|
|
|
*
|
|
|
@@ -101,7 +106,7 @@ uint8_t nrf24_read_register(FuriHalSpiBusHandle* handle, uint8_t reg);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_power_up(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_power_up(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Power down the radio
|
|
|
*
|
|
|
@@ -109,7 +114,7 @@ uint8_t nrf24_power_up(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_idle(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_set_idle(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Sets the radio to RX mode
|
|
|
*
|
|
|
@@ -117,7 +122,7 @@ uint8_t nrf24_set_idle(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_rx_mode(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_set_rx_mode(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Sets the radio to TX mode
|
|
|
*
|
|
|
@@ -125,7 +130,7 @@ uint8_t nrf24_set_rx_mode(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_tx_mode(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_set_tx_mode(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/*=============================================================================================================*/
|
|
|
|
|
|
@@ -147,7 +152,7 @@ void nrf24_deinit();
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_flush_rx(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_flush_rx(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Send flush tx command
|
|
|
*
|
|
|
@@ -155,7 +160,7 @@ uint8_t nrf24_flush_rx(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_flush_tx(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_flush_tx(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Gets the RX packet length in data pipe 0
|
|
|
*
|
|
|
@@ -163,7 +168,7 @@ uint8_t nrf24_flush_tx(FuriHalSpiBusHandle* handle);
|
|
|
* pipe - pipe index (0..5)
|
|
|
* @return packet length in data pipe 0
|
|
|
*/
|
|
|
-uint8_t nrf24_get_packetlen(FuriHalSpiBusHandle* handle, uint8_t pipe);
|
|
|
+uint8_t nrf24_get_packetlen(const FuriHalSpiBusHandle* handle, uint8_t pipe);
|
|
|
|
|
|
/** Sets the RX packet length in data pipe 0
|
|
|
*
|
|
|
@@ -172,7 +177,7 @@ uint8_t nrf24_get_packetlen(FuriHalSpiBusHandle* handle, uint8_t pipe);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_packetlen(FuriHalSpiBusHandle* handle, uint8_t len);
|
|
|
+uint8_t nrf24_set_packetlen(const FuriHalSpiBusHandle* handle, uint8_t len);
|
|
|
|
|
|
/** Gets configured length of MAC address
|
|
|
*
|
|
|
@@ -180,7 +185,7 @@ uint8_t nrf24_set_packetlen(FuriHalSpiBusHandle* handle, uint8_t len);
|
|
|
*
|
|
|
* @return MAC address length
|
|
|
*/
|
|
|
-uint8_t nrf24_get_maclen(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_get_maclen(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Sets configured length of MAC address
|
|
|
*
|
|
|
@@ -189,7 +194,7 @@ uint8_t nrf24_get_maclen(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return MAC address length
|
|
|
*/
|
|
|
-uint8_t nrf24_set_maclen(FuriHalSpiBusHandle* handle, uint8_t maclen);
|
|
|
+uint8_t nrf24_set_maclen(const FuriHalSpiBusHandle* handle, uint8_t maclen);
|
|
|
|
|
|
/** Gets the current status flags from the STATUS register
|
|
|
*
|
|
|
@@ -197,7 +202,7 @@ uint8_t nrf24_set_maclen(FuriHalSpiBusHandle* handle, uint8_t maclen);
|
|
|
*
|
|
|
* @return status flags
|
|
|
*/
|
|
|
-uint8_t nrf24_status(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_status(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Gets the current transfer rate
|
|
|
*
|
|
|
@@ -205,7 +210,7 @@ uint8_t nrf24_status(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return transfer rate in bps
|
|
|
*/
|
|
|
-uint32_t nrf24_get_rate(FuriHalSpiBusHandle* handle);
|
|
|
+uint32_t nrf24_get_rate(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Sets the transfer rate
|
|
|
*
|
|
|
@@ -214,7 +219,7 @@ uint32_t nrf24_get_rate(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_rate(FuriHalSpiBusHandle* handle, uint32_t rate);
|
|
|
+uint8_t nrf24_set_rate(const FuriHalSpiBusHandle* handle, uint32_t rate);
|
|
|
|
|
|
/** Gets the current channel
|
|
|
* In nrf24, the channel number is multiplied times 1MHz and added to 2400MHz to get the frequency
|
|
|
@@ -223,7 +228,7 @@ uint8_t nrf24_set_rate(FuriHalSpiBusHandle* handle, uint32_t rate);
|
|
|
*
|
|
|
* @return channel
|
|
|
*/
|
|
|
-uint8_t nrf24_get_chan(FuriHalSpiBusHandle* handle);
|
|
|
+uint8_t nrf24_get_chan(const FuriHalSpiBusHandle* handle);
|
|
|
|
|
|
/** Sets the channel
|
|
|
*
|
|
|
@@ -232,7 +237,7 @@ uint8_t nrf24_get_chan(FuriHalSpiBusHandle* handle);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_chan(FuriHalSpiBusHandle* handle, uint8_t chan);
|
|
|
+uint8_t nrf24_set_chan(const FuriHalSpiBusHandle* handle, uint8_t chan);
|
|
|
|
|
|
/** Gets the source mac address
|
|
|
*
|
|
|
@@ -241,7 +246,7 @@ uint8_t nrf24_set_chan(FuriHalSpiBusHandle* handle, uint8_t chan);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_get_src_mac(FuriHalSpiBusHandle* handle, uint8_t* mac);
|
|
|
+uint8_t nrf24_get_src_mac(const FuriHalSpiBusHandle* handle, uint8_t* mac);
|
|
|
|
|
|
/** Sets the source mac address
|
|
|
*
|
|
|
@@ -251,7 +256,7 @@ uint8_t nrf24_get_src_mac(FuriHalSpiBusHandle* handle, uint8_t* mac);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_src_mac(FuriHalSpiBusHandle* handle, uint8_t* mac, uint8_t size);
|
|
|
+uint8_t nrf24_set_src_mac(const FuriHalSpiBusHandle* handle, uint8_t* mac, uint8_t size);
|
|
|
|
|
|
/** Gets the dest mac address
|
|
|
*
|
|
|
@@ -260,7 +265,7 @@ uint8_t nrf24_set_src_mac(FuriHalSpiBusHandle* handle, uint8_t* mac, uint8_t siz
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_get_dst_mac(FuriHalSpiBusHandle* handle, uint8_t* mac);
|
|
|
+uint8_t nrf24_get_dst_mac(const FuriHalSpiBusHandle* handle, uint8_t* mac);
|
|
|
|
|
|
/** Sets the dest mac address
|
|
|
*
|
|
|
@@ -270,7 +275,7 @@ uint8_t nrf24_get_dst_mac(FuriHalSpiBusHandle* handle, uint8_t* mac);
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_set_dst_mac(FuriHalSpiBusHandle* handle, uint8_t* mac, uint8_t size);
|
|
|
+uint8_t nrf24_set_dst_mac(const FuriHalSpiBusHandle* handle, uint8_t* mac, uint8_t size);
|
|
|
|
|
|
/** Reads RX packet
|
|
|
*
|
|
|
@@ -282,7 +287,7 @@ uint8_t nrf24_set_dst_mac(FuriHalSpiBusHandle* handle, uint8_t* mac, uint8_t siz
|
|
|
* @return device status
|
|
|
*/
|
|
|
uint8_t nrf24_rxpacket(
|
|
|
- FuriHalSpiBusHandle* handle,
|
|
|
+ const FuriHalSpiBusHandle* handle,
|
|
|
uint8_t* packet,
|
|
|
uint8_t* ret_packetsize,
|
|
|
uint8_t packet_size_flag);
|
|
|
@@ -296,7 +301,8 @@ uint8_t nrf24_rxpacket(
|
|
|
*
|
|
|
* @return device status
|
|
|
*/
|
|
|
-uint8_t nrf24_txpacket(FuriHalSpiBusHandle* handle, uint8_t* payload, uint8_t size, bool ack);
|
|
|
+uint8_t
|
|
|
+ nrf24_txpacket(const FuriHalSpiBusHandle* handle, uint8_t* payload, uint8_t size, bool ack);
|
|
|
|
|
|
/** Configure the radio
|
|
|
* This is not comprehensive, but covers a lot of the common configuration options that may be changed
|
|
|
@@ -311,7 +317,7 @@ uint8_t nrf24_txpacket(FuriHalSpiBusHandle* handle, uint8_t* payload, uint8_t si
|
|
|
*
|
|
|
*/
|
|
|
void nrf24_configure(
|
|
|
- FuriHalSpiBusHandle* handle,
|
|
|
+ const FuriHalSpiBusHandle* handle,
|
|
|
uint8_t rate,
|
|
|
uint8_t* srcmac,
|
|
|
uint8_t* dstmac,
|
|
|
@@ -330,7 +336,7 @@ uint8_t nrf24_set_mac(uint8_t mac_addr, uint8_t* mac, uint8_t mlen);
|
|
|
* @param channel - channel to tune to
|
|
|
* @param rate - transfer rate in Mbps (1 or 2)
|
|
|
*/
|
|
|
-void nrf24_init_promisc_mode(FuriHalSpiBusHandle* handle, uint8_t channel, uint8_t rate);
|
|
|
+void nrf24_init_promisc_mode(const FuriHalSpiBusHandle* handle, uint8_t channel, uint8_t rate);
|
|
|
|
|
|
/** Listens for a packet and returns first possible address sniffed
|
|
|
* Call this only after calling nrf24_init_promisc_mode
|
|
|
@@ -340,7 +346,7 @@ void nrf24_init_promisc_mode(FuriHalSpiBusHandle* handle, uint8_t channel, uint8
|
|
|
*
|
|
|
* @return success
|
|
|
*/
|
|
|
-bool nrf24_sniff_address(FuriHalSpiBusHandle* handle, uint8_t maclen, uint8_t* address);
|
|
|
+bool nrf24_sniff_address(const FuriHalSpiBusHandle* handle, uint8_t maclen, uint8_t* address);
|
|
|
|
|
|
/** Sends ping packet on each channel for designated tx mac looking for ack
|
|
|
*
|
|
|
@@ -356,7 +362,7 @@ bool nrf24_sniff_address(FuriHalSpiBusHandle* handle, uint8_t maclen, uint8_t* a
|
|
|
* @return channel that the address is listening on, if this value is above the max_channel param, it failed
|
|
|
*/
|
|
|
uint8_t nrf24_find_channel(
|
|
|
- FuriHalSpiBusHandle* handle,
|
|
|
+ const FuriHalSpiBusHandle* handle,
|
|
|
uint8_t* srcmac,
|
|
|
uint8_t* dstmac,
|
|
|
uint8_t maclen,
|
|
|
@@ -389,4 +395,4 @@ uint32_t bytes_to_int32(uint8_t* bytes, bool bigendian);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
}
|
|
|
-#endif
|
|
|
+#endif
|