diff --git a/src/main/drivers/rx/rx_cc2500.c b/src/main/drivers/rx/rx_cc2500.c
index 33df3e90b4..39d576d67f 100644
--- a/src/main/drivers/rx/rx_cc2500.c
+++ b/src/main/drivers/rx/rx_cc2500.c
@@ -32,6 +32,7 @@
#include "build/build_config.h"
#include "pg/rx.h"
+#include "pg/rx_spi.h"
#include "drivers/io.h"
#include "drivers/rx/rx_spi.h"
diff --git a/src/main/fc/fc_init.c b/src/main/fc/fc_init.c
index 25635a0001..5e1e77afe2 100644
--- a/src/main/fc/fc_init.c
+++ b/src/main/fc/fc_init.c
@@ -98,6 +98,7 @@
#include "pg/piniobox.h"
#include "pg/pg.h"
#include "pg/rx.h"
+#include "pg/rx_spi.h"
#include "pg/rx_pwm.h"
#include "pg/sdcard.h"
#include "pg/vcd.h"
@@ -465,7 +466,7 @@ void init(void)
adcConfigMutable()->current.enabled = (batteryConfig()->currentMeterSource == CURRENT_METER_ADC);
// The FrSky D SPI RX sends RSSI_ADC_PIN (if configured) as A2
- adcConfigMutable()->rssi.enabled = feature(FEATURE_RSSI_ADC) || (feature(FEATURE_RX_SPI) && rxConfig()->rx_spi_protocol == RX_SPI_FRSKY_D);
+ adcConfigMutable()->rssi.enabled = feature(FEATURE_RSSI_ADC) || (feature(FEATURE_RX_SPI) && rxSpiConfig()->rx_spi_protocol == RX_SPI_FRSKY_D);
adcInit(adcConfig());
#endif
diff --git a/src/main/interface/cli.c b/src/main/interface/cli.c
index ffb8275a21..f8cac71c44 100644
--- a/src/main/interface/cli.c
+++ b/src/main/interface/cli.c
@@ -127,6 +127,7 @@ extern uint8_t __config_end;
#include "pg/pg.h"
#include "pg/pg_ids.h"
#include "pg/rx.h"
+#include "pg/rx_spi.h"
#include "pg/rx_pwm.h"
#include "pg/timerio.h"
#include "pg/usb.h"
@@ -2400,7 +2401,7 @@ static void cliBeeper(char *cmdline)
void cliFrSkyBind(char *cmdline){
UNUSED(cmdline);
- switch (rxConfig()->rx_spi_protocol) {
+ switch (rxSpiConfig()->rx_spi_protocol) {
#ifdef USE_RX_FRSKY_SPI
case RX_SPI_FRSKY_D:
case RX_SPI_FRSKY_X:
diff --git a/src/main/interface/msp.c b/src/main/interface/msp.c
index 463cbc35e2..bc0e39c541 100644
--- a/src/main/interface/msp.c
+++ b/src/main/interface/msp.c
@@ -45,6 +45,7 @@
#include "pg/pg_ids.h"
#include "pg/beeper.h"
#include "pg/rx.h"
+#include "pg/rx_spi.h"
#include "drivers/accgyro/accgyro.h"
#include "drivers/bus_i2c.h"
@@ -1054,9 +1055,15 @@ static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
sbufWriteU8(dst, rxConfig()->rcInterpolation);
sbufWriteU8(dst, rxConfig()->rcInterpolationInterval);
sbufWriteU16(dst, rxConfig()->airModeActivateThreshold * 10 + 1000);
- sbufWriteU8(dst, rxConfig()->rx_spi_protocol);
- sbufWriteU32(dst, rxConfig()->rx_spi_id);
- sbufWriteU8(dst, rxConfig()->rx_spi_rf_channel_count);
+#ifdef USE_RX_SPI
+ sbufWriteU8(dst, rxSpiConfig()->rx_spi_protocol);
+ sbufWriteU32(dst, rxSpiConfig()->rx_spi_id);
+ sbufWriteU8(dst, rxSpiConfig()->rx_spi_rf_channel_count);
+#else
+ sbufWriteU8(dst, 0);
+ sbufWriteU32(dst, 0);
+ sbufWriteU8(dst, 0);
+#endif
sbufWriteU8(dst, rxConfig()->fpvCamAngleDegrees);
break;
@@ -1894,9 +1901,15 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
rxConfigMutable()->airModeActivateThreshold = (sbufReadU16(src) - 1000) / 10;
}
if (sbufBytesRemaining(src) >= 6) {
- rxConfigMutable()->rx_spi_protocol = sbufReadU8(src);
- rxConfigMutable()->rx_spi_id = sbufReadU32(src);
- rxConfigMutable()->rx_spi_rf_channel_count = sbufReadU8(src);
+#ifdef USE_RX_SPI
+ rxSpiConfigMutable()->rx_spi_protocol = sbufReadU8(src);
+ rxSpiConfigMutable()->rx_spi_id = sbufReadU32(src);
+ rxSpiConfigMutable()->rx_spi_rf_channel_count = sbufReadU8(src);
+#else
+ sbufReadU8(src);
+ sbufReadU32(src);
+ sbufReadU8(src);
+#endif
}
if (sbufBytesRemaining(src) >= 1) {
rxConfigMutable()->fpvCamAngleDegrees = sbufReadU8(src);
diff --git a/src/main/interface/settings.c b/src/main/interface/settings.c
index 6dd0078a27..e35dc55ccc 100644
--- a/src/main/interface/settings.c
+++ b/src/main/interface/settings.c
@@ -76,6 +76,7 @@
#include "pg/pinio.h"
#include "pg/piniobox.h"
#include "pg/rx.h"
+#include "pg/rx_spi.h"
#include "pg/rx_pwm.h"
#include "pg/sdcard.h"
#include "pg/vcd.h"
@@ -531,7 +532,7 @@ const clivalue_t valueTable[] = {
{ "rx_max_usec", VAR_UINT16 | MASTER_VALUE, .config.minmax = { PWM_PULSE_MIN, PWM_PULSE_MAX }, PG_RX_CONFIG, offsetof(rxConfig_t, rx_max_usec) },
{ "serialrx_halfduplex", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RX_CONFIG, offsetof(rxConfig_t, halfDuplex) },
#ifdef USE_RX_SPI
- { "rx_spi_protocol", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_RX_SPI }, PG_RX_CONFIG, offsetof(rxConfig_t, rx_spi_protocol) },
+ { "rx_spi_protocol", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_RX_SPI }, PG_RX_SPI_CONFIG, offsetof(rxSpiConfig_t, rx_spi_protocol) },
#endif
// PG_ADC_CONFIG
diff --git a/src/main/pg/pg_ids.h b/src/main/pg/pg_ids.h
index 055d322679..b2dd07403d 100644
--- a/src/main/pg/pg_ids.h
+++ b/src/main/pg/pg_ids.h
@@ -131,7 +131,8 @@
#define PG_TIMER_IO_CONFIG 534 // used to store the index for timer use in timerHardware array in target.c
#define PG_SPI_PREINIT_IPU_CONFIG 535
#define PG_SPI_PREINIT_OPU_CONFIG 536
-#define PG_BETAFLIGHT_END 536
+#define PG_RX_SPI_CONFIG 537
+#define PG_BETAFLIGHT_END 537
// OSD configuration (subject to change)
diff --git a/src/main/pg/rx.c b/src/main/pg/rx.c
index 317c234b12..9ef4228e6c 100644
--- a/src/main/pg/rx.c
+++ b/src/main/pg/rx.c
@@ -39,7 +39,6 @@ void pgResetFn_rxConfig(rxConfig_t *rxConfig)
RESET_CONFIG_2(rxConfig_t, rxConfig,
.halfDuplex = 0,
.serialrx_provider = SERIALRX_PROVIDER,
- .rx_spi_protocol = RX_SPI_DEFAULT_PROTOCOL,
.serialrx_inverted = 0,
.spektrum_bind_pin_override_ioTag = IO_TAG(SPEKTRUM_BIND_PIN),
.spektrum_bind_plug_ioTag = IO_TAG(BINDPLUG_PIN),
diff --git a/src/main/pg/rx.h b/src/main/pg/rx.h
index 9a76a4fb98..47bc81fad3 100644
--- a/src/main/pg/rx.h
+++ b/src/main/pg/rx.h
@@ -29,10 +29,6 @@ typedef struct rxConfig_s {
uint8_t serialrx_provider; // type of UART-based receiver (0 = spek 10, 1 = spek 11, 2 = sbus). Must be enabled by FEATURE_RX_SERIAL first.
uint8_t serialrx_inverted; // invert the serial RX protocol compared to it's default setting
uint8_t halfDuplex; // allow rx to operate in half duplex mode on F4, ignored for F1 and F3.
- uint8_t rx_spi_protocol; // type of SPI RX protocol
- // nrf24: 0 = v202 250kbps. (Must be enabled by FEATURE_RX_NRF24 first.)
- uint32_t rx_spi_id;
- uint8_t rx_spi_rf_channel_count;
ioTag_t spektrum_bind_pin_override_ioTag;
ioTag_t spektrum_bind_plug_ioTag;
uint8_t spektrum_sat_bind; // number of bind pulses for Spektrum satellite receivers
diff --git a/src/main/pg/rx_spi.c b/src/main/pg/rx_spi.c
new file mode 100644
index 0000000000..3a5ee5ec00
--- /dev/null
+++ b/src/main/pg/rx_spi.c
@@ -0,0 +1,36 @@
+/*
+ * This file is part of Cleanflight and Betaflight.
+ *
+ * Cleanflight and Betaflight are free software. You can redistribute
+ * this software and/or modify this software under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * Cleanflight and Betaflight are distributed in the hope that they
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software.
+ *
+ * If not, see .
+ */
+
+#include "platform.h"
+
+#ifdef USE_RX_SPI
+
+#include "pg/pg.h"
+#include "pg/pg_ids.h"
+#include "pg/rx_spi.h"
+
+#include "rx/rx_spi.h"
+
+PG_REGISTER_WITH_RESET_TEMPLATE(rxSpiConfig_t, rxSpiConfig, PG_RX_SPI_CONFIG, 0);
+
+PG_RESET_TEMPLATE(rxSpiConfig_t, rxSpiConfig,
+ .rx_spi_protocol = RX_SPI_DEFAULT_PROTOCOL,
+);
+#endif
diff --git a/src/main/pg/rx_spi.h b/src/main/pg/rx_spi.h
new file mode 100644
index 0000000000..2c80def0ba
--- /dev/null
+++ b/src/main/pg/rx_spi.h
@@ -0,0 +1,34 @@
+/*
+ * This file is part of Cleanflight and Betaflight.
+ *
+ * Cleanflight and Betaflight are free software. You can redistribute
+ * this software and/or modify this software under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * Cleanflight and Betaflight are distributed in the hope that they
+ * will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software.
+ *
+ * If not, see .
+ */
+
+#pragma once
+
+#include "drivers/io_types.h"
+
+#include "pg/pg.h"
+
+typedef struct rxSpiConfig_s {
+ uint8_t rx_spi_protocol; // type of SPI RX protocol
+ // nrf24: 0 = v202 250kbps. (Must be enabled by FEATURE_RX_NRF24 first.)
+ uint32_t rx_spi_id;
+ uint8_t rx_spi_rf_channel_count;
+} rxSpiConfig_t;
+
+PG_DECLARE(rxSpiConfig_t, rxSpiConfig);
diff --git a/src/main/rx/cc2500_frsky_common.h b/src/main/rx/cc2500_frsky_common.h
index e920982cac..26d9b98df8 100644
--- a/src/main/rx/cc2500_frsky_common.h
+++ b/src/main/rx/cc2500_frsky_common.h
@@ -35,7 +35,7 @@ typedef struct rxFrSkySpiConfig_s {
PG_DECLARE(rxFrSkySpiConfig_t, rxFrSkySpiConfig);
-bool frSkySpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);
+bool frSkySpiInit(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig);
rx_spi_received_e frSkySpiDataReceived(uint8_t *packet);
void frSkySpiSetRcData(uint16_t *rcData, const uint8_t *payload);
diff --git a/src/main/rx/cc2500_frsky_d.c b/src/main/rx/cc2500_frsky_d.c
index cde9120788..e99482979e 100644
--- a/src/main/rx/cc2500_frsky_d.c
+++ b/src/main/rx/cc2500_frsky_d.c
@@ -31,6 +31,7 @@
#include "build/debug.h"
#include "pg/rx.h"
+#include "pg/rx_spi.h"
#include "common/maths.h"
#include "common/utils.h"
diff --git a/src/main/rx/cc2500_frsky_shared.c b/src/main/rx/cc2500_frsky_shared.c
index bc4783ca18..ddeaaf1bb9 100644
--- a/src/main/rx/cc2500_frsky_shared.c
+++ b/src/main/rx/cc2500_frsky_shared.c
@@ -26,16 +26,17 @@
#include "common/maths.h"
+#include "pg/pg.h"
+#include "pg/pg_ids.h"
+#include "pg/rx.h"
+#include "pg/rx_spi.h"
+
#include "drivers/rx/rx_cc2500.h"
#include "drivers/io.h"
#include "drivers/time.h"
#include "fc/config.h"
-#include "pg/pg.h"
-#include "pg/pg_ids.h"
-#include "pg/rx.h"
-
#include "rx/rx.h"
#include "rx/rx_spi.h"
@@ -513,7 +514,7 @@ static bool frSkySpiDetect(void)
return false;
}
-bool frSkySpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
+bool frSkySpiInit(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
#if !defined(RX_FRSKY_SPI_DISABLE_CHIP_DETECTION)
if (!frSkySpiDetect()) {
@@ -523,7 +524,7 @@ bool frSkySpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig
UNUSED(frSkySpiDetect);
#endif
- spiProtocol = rxConfig->rx_spi_protocol;
+ spiProtocol = rxSpiConfig->rx_spi_protocol;
switch (spiProtocol) {
case RX_SPI_FRSKY_D:
diff --git a/src/main/rx/cc2500_frsky_x.c b/src/main/rx/cc2500_frsky_x.c
index e50d219db3..14de75f689 100644
--- a/src/main/rx/cc2500_frsky_x.c
+++ b/src/main/rx/cc2500_frsky_x.c
@@ -29,6 +29,7 @@
#include "build/debug.h"
#include "pg/rx.h"
+#include "pg/rx_spi.h"
#include "common/maths.h"
#include "common/utils.h"
diff --git a/src/main/rx/nrf24_cx10.c b/src/main/rx/nrf24_cx10.c
index 3f1c6cfc20..6341c87b1d 100644
--- a/src/main/rx/nrf24_cx10.c
+++ b/src/main/rx/nrf24_cx10.c
@@ -299,10 +299,10 @@ static void cx10Nrf24Setup(rx_spi_protocol_e protocol)
NRF24L01_SetRxMode(); // enter receive mode to start listening for packets
}
-bool cx10Nrf24Init(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
+bool cx10Nrf24Init(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
rxRuntimeConfig->channelCount = RC_CHANNEL_COUNT;
- cx10Nrf24Setup((rx_spi_protocol_e)rxConfig->rx_spi_protocol);
+ cx10Nrf24Setup((rx_spi_protocol_e)rxSpiConfig->rx_spi_protocol);
return true;
}
diff --git a/src/main/rx/nrf24_cx10.h b/src/main/rx/nrf24_cx10.h
index 1f9a4973b6..2523360caa 100644
--- a/src/main/rx/nrf24_cx10.h
+++ b/src/main/rx/nrf24_cx10.h
@@ -23,8 +23,8 @@
#include
#include
-struct rxConfig_s;
+struct rxSpiConfig_s;
struct rxRuntimeConfig_s;
-bool cx10Nrf24Init(const struct rxConfig_s *rxConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
+bool cx10Nrf24Init(const struct rxSpiConfig_s *rxSpiConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
void cx10Nrf24SetRcDataFromPayload(uint16_t *rcData, const uint8_t *payload);
rx_spi_received_e cx10Nrf24DataReceived(uint8_t *payload);
diff --git a/src/main/rx/nrf24_h8_3d.c b/src/main/rx/nrf24_h8_3d.c
index c6c1418b21..74b73c81db 100644
--- a/src/main/rx/nrf24_h8_3d.c
+++ b/src/main/rx/nrf24_h8_3d.c
@@ -283,10 +283,10 @@ static void h8_3dNrf24Setup(rx_spi_protocol_e protocol, const uint32_t *rxSpiId)
NRF24L01_SetRxMode(); // enter receive mode to start listening for packets
}
-bool h8_3dNrf24Init(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
+bool h8_3dNrf24Init(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
rxRuntimeConfig->channelCount = RC_CHANNEL_COUNT;
- h8_3dNrf24Setup((rx_spi_protocol_e)rxConfig->rx_spi_protocol, &rxConfig->rx_spi_id);
+ h8_3dNrf24Setup((rx_spi_protocol_e)rxSpiConfig->rx_spi_protocol, &rxSpiConfig->rx_spi_id);
return true;
}
diff --git a/src/main/rx/nrf24_h8_3d.h b/src/main/rx/nrf24_h8_3d.h
index 65da7f58ce..5dc3a18a82 100644
--- a/src/main/rx/nrf24_h8_3d.h
+++ b/src/main/rx/nrf24_h8_3d.h
@@ -23,8 +23,8 @@
#include
#include
-struct rxConfig_s;
+struct rxSpiConfig_s;
struct rxRuntimeConfig_s;
-bool h8_3dNrf24Init(const struct rxConfig_s *rxConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
+bool h8_3dNrf24Init(const struct rxSpiConfig_s *rxSpiConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
void h8_3dNrf24SetRcDataFromPayload(uint16_t *rcData, const uint8_t *payload);
rx_spi_received_e h8_3dNrf24DataReceived(uint8_t *payload);
diff --git a/src/main/rx/nrf24_inav.c b/src/main/rx/nrf24_inav.c
index e084e5eb1e..5082d64683 100644
--- a/src/main/rx/nrf24_inav.c
+++ b/src/main/rx/nrf24_inav.c
@@ -424,10 +424,10 @@ static void inavNrf24Setup(rx_spi_protocol_e protocol, const uint32_t *rxSpiId,
writeAckPayload(ackPayload, payloadSize);
}
-bool inavNrf24Init(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
+bool inavNrf24Init(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
rxRuntimeConfig->channelCount = RC_CHANNEL_COUNT_MAX;
- inavNrf24Setup((rx_spi_protocol_e)rxConfig->rx_spi_protocol, &rxConfig->rx_spi_id, rxConfig->rx_spi_rf_channel_count);
+ inavNrf24Setup((rx_spi_protocol_e)rxSpiConfig->rx_spi_protocol, &rxSpiConfig->rx_spi_id, rxSpiConfig->rx_spi_rf_channel_count);
return true;
}
diff --git a/src/main/rx/nrf24_inav.h b/src/main/rx/nrf24_inav.h
index 2ef3fba0e9..da9e8ee90a 100644
--- a/src/main/rx/nrf24_inav.h
+++ b/src/main/rx/nrf24_inav.h
@@ -23,9 +23,9 @@
#include
#include
-struct rxConfig_s;
+struct rxSpiConfig_s;
struct rxRuntimeConfig_s;
-bool inavNrf24Init(const struct rxConfig_s *rxConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
+bool inavNrf24Init(const struct rxSpiConfig_s *rxSpiConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
void inavNrf24SetRcDataFromPayload(uint16_t *rcData, const uint8_t *payload);
rx_spi_received_e inavNrf24DataReceived(uint8_t *payload);
diff --git a/src/main/rx/nrf24_syma.c b/src/main/rx/nrf24_syma.c
index d9a2a7558d..d5c9e3cee3 100644
--- a/src/main/rx/nrf24_syma.c
+++ b/src/main/rx/nrf24_syma.c
@@ -299,10 +299,10 @@ static void symaNrf24Setup(rx_spi_protocol_e protocol)
NRF24L01_SetRxMode(); // enter receive mode to start listening for packets
}
-bool symaNrf24Init(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
+bool symaNrf24Init(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
rxRuntimeConfig->channelCount = RC_CHANNEL_COUNT;
- symaNrf24Setup((rx_spi_protocol_e)rxConfig->rx_spi_protocol);
+ symaNrf24Setup((rx_spi_protocol_e)rxSpiConfig->rx_spi_protocol);
return true;
}
diff --git a/src/main/rx/nrf24_syma.h b/src/main/rx/nrf24_syma.h
index b9ee75338f..b1e8d743c5 100644
--- a/src/main/rx/nrf24_syma.h
+++ b/src/main/rx/nrf24_syma.h
@@ -23,9 +23,9 @@
#include
#include
-struct rxConfig_s;
+struct rxSpiConfig_s;
struct rxRuntimeConfig_s;
-bool symaNrf24Init(const struct rxConfig_s *rxConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
+bool symaNrf24Init(const struct rxSpiConfig_s *rxSpiConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
void symaNrf24SetRcDataFromPayload(uint16_t *rcData, const uint8_t *payload);
rx_spi_received_e symaNrf24DataReceived(uint8_t *payload);
diff --git a/src/main/rx/nrf24_v202.c b/src/main/rx/nrf24_v202.c
index b047817138..568918a6ec 100644
--- a/src/main/rx/nrf24_v202.c
+++ b/src/main/rx/nrf24_v202.c
@@ -259,10 +259,10 @@ static void v202Nrf24Setup(rx_spi_protocol_e protocol)
NRF24L01_SetRxMode(); // enter receive mode to start listening for packets
}
-bool v202Nrf24Init(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
+bool v202Nrf24Init(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
rxRuntimeConfig->channelCount = V2X2_RC_CHANNEL_COUNT;
- v202Nrf24Setup((rx_spi_protocol_e)rxConfig->rx_spi_protocol);
+ v202Nrf24Setup((rx_spi_protocol_e)rxSpiConfig->rx_spi_protocol);
return true;
}
diff --git a/src/main/rx/nrf24_v202.h b/src/main/rx/nrf24_v202.h
index 37b053d4d5..bedb08eab0 100644
--- a/src/main/rx/nrf24_v202.h
+++ b/src/main/rx/nrf24_v202.h
@@ -23,8 +23,8 @@
#include
#include
-struct rxConfig_s;
+struct rxSpiConfig_s;
struct rxRuntimeConfig_s;
-bool v202Nrf24Init(const struct rxConfig_s *rxConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
+bool v202Nrf24Init(const struct rxSpiConfig_s *rxSpiConfig, struct rxRuntimeConfig_s *rxRuntimeConfig);
void v202Nrf24SetRcDataFromPayload(uint16_t *rcData, const uint8_t *payload);
rx_spi_received_e v202Nrf24DataReceived(uint8_t *payload);
diff --git a/src/main/rx/rx.c b/src/main/rx/rx.c
index 9c8f6909f1..d813355dff 100644
--- a/src/main/rx/rx.c
+++ b/src/main/rx/rx.c
@@ -285,7 +285,7 @@ void rxInit(void)
#ifdef USE_RX_SPI
if (feature(FEATURE_RX_SPI)) {
- const bool enabled = rxSpiInit(rxConfig(), &rxRuntimeConfig);
+ const bool enabled = rxSpiInit(rxSpiConfig(), &rxRuntimeConfig);
if (!enabled) {
featureClear(FEATURE_RX_SPI);
rxRuntimeConfig.rcReadRawFn = nullReadRawRC;
diff --git a/src/main/rx/rx.h b/src/main/rx/rx.h
index 3bc27662d9..f041888d48 100644
--- a/src/main/rx/rx.h
+++ b/src/main/rx/rx.h
@@ -23,6 +23,7 @@
#include "common/time.h"
#include "pg/pg.h"
+#include "pg/rx.h"
#include "drivers/io_types.h"
diff --git a/src/main/rx/rx_spi.c b/src/main/rx/rx_spi.c
index f2d421ebbe..5ee75be2e9 100644
--- a/src/main/rx/rx_spi.c
+++ b/src/main/rx/rx_spi.c
@@ -30,14 +30,14 @@
#include "common/utils.h"
#include "config/feature.h"
-#include "pg/rx.h"
#include "drivers/rx/rx_spi.h"
#include "drivers/rx/rx_nrf24l01.h"
#include "fc/config.h"
-#include "rx/rx.h"
+#include "pg/rx_spi.h"
+
#include "rx/rx_spi.h"
#include "rx/cc2500_frsky_common.h"
#include "rx/nrf24_cx10.h"
@@ -53,7 +53,7 @@ uint16_t rxSpiRcData[MAX_SUPPORTED_RC_CHANNEL_COUNT];
STATIC_UNIT_TESTED uint8_t rxSpiPayload[RX_SPI_MAX_PAYLOAD_SIZE];
STATIC_UNIT_TESTED uint8_t rxSpiNewPacketAvailable; // set true when a new packet is received
-typedef bool (*protocolInitFnPtr)(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);
+typedef bool (*protocolInitFnPtr)(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig);
typedef rx_spi_received_e (*protocolDataReceivedFnPtr)(uint8_t *payload);
typedef void (*protocolSetRcDataFromPayloadFnPtr)(uint16_t *rcData, const uint8_t *payload);
@@ -168,13 +168,13 @@ static uint8_t rxSpiFrameStatus(rxRuntimeConfig_t *rxRuntimeConfig)
/*
* Set and initialize the RX protocol
*/
-bool rxSpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
+bool rxSpiInit(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
bool ret = false;
rxSpiDeviceInit();
- if (rxSpiSetProtocol(rxConfig->rx_spi_protocol)) {
- ret = protocolInit(rxConfig, rxRuntimeConfig);
+ if (rxSpiSetProtocol(rxSpiConfig->rx_spi_protocol)) {
+ ret = protocolInit(rxSpiConfig, rxRuntimeConfig);
}
rxSpiNewPacketAvailable = false;
rxRuntimeConfig->rxRefreshRate = 20000;
diff --git a/src/main/rx/rx_spi.h b/src/main/rx/rx_spi.h
index c5d2cf9d5f..8f095a7844 100644
--- a/src/main/rx/rx_spi.h
+++ b/src/main/rx/rx_spi.h
@@ -22,6 +22,7 @@
#include "pg/rx.h"
#include "rx/rx.h"
+#include "pg/rx_spi.h"
// Used in MSP. Append at end.
typedef enum {
@@ -77,4 +78,4 @@ typedef enum {
#define RC_CHANNEL_HEADLESS RC_SPI_AUX5
#define RC_CHANNEL_RTH RC_SPI_AUX6 // return to home
-bool rxSpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);
+bool rxSpiInit(const rxSpiConfig_t *rxSpiConfig, rxRuntimeConfig_t *rxRuntimeConfig);