Conform to RX framework changes
This commit is contained in:
parent
1273ce8923
commit
c2a823eb7c
|
@ -107,7 +107,7 @@ static uint8_t nullFrameStatus(void)
|
||||||
return RX_FRAME_PENDING;
|
return RX_FRAME_PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
void serialRxInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);
|
bool serialRxInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);
|
||||||
|
|
||||||
void useRxConfig(const rxConfig_t *rxConfigToUse)
|
void useRxConfig(const rxConfig_t *rxConfigToUse)
|
||||||
{
|
{
|
||||||
|
@ -153,16 +153,13 @@ void resetAllRxChannelRangeConfigurations(rxChannelRangeConfiguration_t *rxChann
|
||||||
|
|
||||||
void rxInit(const rxConfig_t *rxConfig, const modeActivationCondition_t *modeActivationConditions)
|
void rxInit(const rxConfig_t *rxConfig, const modeActivationCondition_t *modeActivationConditions)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
|
||||||
uint16_t value;
|
|
||||||
|
|
||||||
useRxConfig(rxConfig);
|
useRxConfig(rxConfig);
|
||||||
rxRuntimeConfig.rcReadRawFunc = nullReadRawRC;
|
rxRuntimeConfig.rcReadRawFunc = nullReadRawRC;
|
||||||
rxRuntimeConfig.rcFrameStatusFunc = nullFrameStatus;
|
rxRuntimeConfig.rcFrameStatusFunc = nullFrameStatus;
|
||||||
rcSampleIndex = 0;
|
rcSampleIndex = 0;
|
||||||
needRxSignalMaxDelayUs = DELAY_10_HZ;
|
needRxSignalMaxDelayUs = DELAY_10_HZ;
|
||||||
|
|
||||||
for (i = 0; i < MAX_SUPPORTED_RC_CHANNEL_COUNT; i++) {
|
for (int i = 0; i < MAX_SUPPORTED_RC_CHANNEL_COUNT; i++) {
|
||||||
rcData[i] = rxConfig->midrc;
|
rcData[i] = rxConfig->midrc;
|
||||||
rcInvalidPulsPeriod[i] = millis() + MAX_INVALID_PULS_TIME;
|
rcInvalidPulsPeriod[i] = millis() + MAX_INVALID_PULS_TIME;
|
||||||
}
|
}
|
||||||
|
@ -170,10 +167,11 @@ void rxInit(const rxConfig_t *rxConfig, const modeActivationCondition_t *modeAct
|
||||||
rcData[THROTTLE] = (feature(FEATURE_3D)) ? rxConfig->midrc : rxConfig->rx_min_usec;
|
rcData[THROTTLE] = (feature(FEATURE_3D)) ? rxConfig->midrc : rxConfig->rx_min_usec;
|
||||||
|
|
||||||
// Initialize ARM switch to OFF position when arming via switch is defined
|
// Initialize ARM switch to OFF position when arming via switch is defined
|
||||||
for (i = 0; i < MAX_MODE_ACTIVATION_CONDITION_COUNT; i++) {
|
for (int i = 0; i < MAX_MODE_ACTIVATION_CONDITION_COUNT; i++) {
|
||||||
const modeActivationCondition_t *modeActivationCondition = &modeActivationConditions[i];
|
const modeActivationCondition_t *modeActivationCondition = &modeActivationConditions[i];
|
||||||
if (modeActivationCondition->modeId == BOXARM && IS_RANGE_USABLE(&modeActivationCondition->range)) {
|
if (modeActivationCondition->modeId == BOXARM && IS_RANGE_USABLE(&modeActivationCondition->range)) {
|
||||||
// ARM switch is defined, determine an OFF value
|
// ARM switch is defined, determine an OFF value
|
||||||
|
uint16_t value;
|
||||||
if (modeActivationCondition->range.startStep > 0) {
|
if (modeActivationCondition->range.startStep > 0) {
|
||||||
value = MODE_STEP_TO_CHANNEL_VALUE((modeActivationCondition->range.startStep - 1));
|
value = MODE_STEP_TO_CHANNEL_VALUE((modeActivationCondition->range.startStep - 1));
|
||||||
} else {
|
} else {
|
||||||
|
@ -186,7 +184,11 @@ void rxInit(const rxConfig_t *rxConfig, const modeActivationCondition_t *modeAct
|
||||||
|
|
||||||
#ifdef SERIAL_RX
|
#ifdef SERIAL_RX
|
||||||
if (feature(FEATURE_RX_SERIAL)) {
|
if (feature(FEATURE_RX_SERIAL)) {
|
||||||
serialRxInit(rxConfig, &rxRuntimeConfig);
|
const bool enabled = serialRxInit(rxConfig, &rxRuntimeConfig);
|
||||||
|
if (!enabled) {
|
||||||
|
featureClear(FEATURE_RX_SERIAL);
|
||||||
|
rxRuntimeConfig.rcReadRawFunc = nullReadRawRC;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -199,11 +201,10 @@ void rxInit(const rxConfig_t *rxConfig, const modeActivationCondition_t *modeAct
|
||||||
|
|
||||||
#ifdef USE_RX_SPI
|
#ifdef USE_RX_SPI
|
||||||
if (feature(FEATURE_RX_SPI)) {
|
if (feature(FEATURE_RX_SPI)) {
|
||||||
rxRefreshRate = 10000;
|
const bool enabled = rxSpiInit(rxConfig, &rxRuntimeConfig);
|
||||||
const bool enabled = rxSpiInit(rxConfig, &rxRuntimeConfig, &rcReadRawFunc);
|
|
||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
featureClear(FEATURE_RX_SPI);
|
featureClear(FEATURE_RX_SPI);
|
||||||
rcReadRawFunc = nullReadRawRC;
|
rxRuntimeConfig.rcReadRawFunc = nullReadRawRC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -216,7 +217,7 @@ void rxInit(const rxConfig_t *rxConfig, const modeActivationCondition_t *modeAct
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SERIAL_RX
|
#ifdef SERIAL_RX
|
||||||
void serialRxInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
|
bool serialRxInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
|
||||||
{
|
{
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
switch (rxConfig->serialrx_provider) {
|
switch (rxConfig->serialrx_provider) {
|
||||||
|
@ -244,10 +245,7 @@ void serialRxInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig
|
||||||
enabled = jetiExBusInit(rxConfig, rxRuntimeConfig);
|
enabled = jetiExBusInit(rxConfig, rxRuntimeConfig);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!enabled) {
|
return enabled;
|
||||||
featureClear(FEATURE_RX_SERIAL);
|
|
||||||
rxRuntimeConfig->rcReadRawFunc = nullReadRawRC;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t serialRxFrameStatus(const rxConfig_t *rxConfig)
|
static uint8_t serialRxFrameStatus(const rxConfig_t *rxConfig)
|
||||||
|
@ -353,12 +351,12 @@ bool rxUpdate(uint32_t currentTime)
|
||||||
|
|
||||||
#ifdef USE_RX_SPI
|
#ifdef USE_RX_SPI
|
||||||
if (feature(FEATURE_RX_SPI)) {
|
if (feature(FEATURE_RX_SPI)) {
|
||||||
const uint8_t frameStatus = rxSpiFrameStatus();
|
const uint8_t frameStatus = rxRuntimeConfig.rcFrameStatusFunc();
|
||||||
if (frameStatus & RX_FRAME_COMPLETE) {
|
if (frameStatus & RX_FRAME_COMPLETE) {
|
||||||
rxDataReceived = true;
|
rxDataReceived = true;
|
||||||
rxIsInFailsafeMode = false;
|
rxIsInFailsafeMode = false;
|
||||||
rxSignalReceived = true;
|
rxSignalReceived = true;
|
||||||
needRxSignalBefore = currentTime + DELAY_5_HZ;
|
needRxSignalBefore = currentTime + needRxSignalMaxDelayUs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -598,7 +596,7 @@ void parseRcChannels(const char *input, rxConfig_t *rxConfig)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateRSSIPWM(void)
|
static void updateRSSIPWM(void)
|
||||||
{
|
{
|
||||||
int16_t pwmRssi = 0;
|
int16_t pwmRssi = 0;
|
||||||
// Read value of AUX channel as rssi
|
// Read value of AUX channel as rssi
|
||||||
|
@ -616,7 +614,7 @@ void updateRSSIPWM(void)
|
||||||
#define RSSI_ADC_SAMPLE_COUNT 16
|
#define RSSI_ADC_SAMPLE_COUNT 16
|
||||||
//#define RSSI_SCALE (0xFFF / 100.0f)
|
//#define RSSI_SCALE (0xFFF / 100.0f)
|
||||||
|
|
||||||
void updateRSSIADC(uint32_t currentTime)
|
static void updateRSSIADC(uint32_t currentTime)
|
||||||
{
|
{
|
||||||
#ifndef USE_ADC
|
#ifndef USE_ADC
|
||||||
UNUSED(currentTime);
|
UNUSED(currentTime);
|
||||||
|
|
|
@ -144,7 +144,8 @@ typedef uint16_t (*rcReadRawDataPtr)(const struct rxRuntimeConfig_s *rxRuntimeCo
|
||||||
typedef uint8_t (*rcFrameStatusPtr)(void);
|
typedef uint8_t (*rcFrameStatusPtr)(void);
|
||||||
|
|
||||||
typedef struct rxRuntimeConfig_s {
|
typedef struct rxRuntimeConfig_s {
|
||||||
uint8_t channelCount; // number of rc channels as reported by current input driver
|
uint8_t channelCount; // number of RC channels as reported by current input driver
|
||||||
|
uint16_t rxRefreshRate;
|
||||||
rcReadRawDataPtr rcReadRawFunc;
|
rcReadRawDataPtr rcReadRawFunc;
|
||||||
rcFrameStatusPtr rcFrameStatusFunc;
|
rcFrameStatusPtr rcFrameStatusFunc;
|
||||||
} rxRuntimeConfig_t;
|
} rxRuntimeConfig_t;
|
||||||
|
|
|
@ -114,7 +114,7 @@ STATIC_UNIT_TESTED bool rxSpiSetProtocol(rx_spi_protocol_e protocol)
|
||||||
* Called from updateRx in rx.c, updateRx called from taskUpdateRxCheck.
|
* Called from updateRx in rx.c, updateRx called from taskUpdateRxCheck.
|
||||||
* If taskUpdateRxCheck returns true, then taskUpdateRxMain will shortly be called.
|
* If taskUpdateRxCheck returns true, then taskUpdateRxMain will shortly be called.
|
||||||
*/
|
*/
|
||||||
uint8_t rxSpiFrameStatus(void)
|
static uint8_t rxSpiFrameStatus(void)
|
||||||
{
|
{
|
||||||
if (protocolDataReceived(rxSpiPayload) == RX_SPI_RECEIVED_DATA) {
|
if (protocolDataReceived(rxSpiPayload) == RX_SPI_RECEIVED_DATA) {
|
||||||
rxSpiNewPacketAvailable = true;
|
rxSpiNewPacketAvailable = true;
|
||||||
|
@ -126,7 +126,7 @@ uint8_t rxSpiFrameStatus(void)
|
||||||
/*
|
/*
|
||||||
* Set and initialize the RX protocol
|
* Set and initialize the RX protocol
|
||||||
*/
|
*/
|
||||||
bool rxSpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, rcReadRawDataPtr *callback)
|
bool rxSpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
|
@ -137,9 +137,11 @@ bool rxSpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, r
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
rxSpiNewPacketAvailable = false;
|
rxSpiNewPacketAvailable = false;
|
||||||
if (callback) {
|
rxRuntimeConfig->rxRefreshRate = 20000;
|
||||||
*callback = rxSpiReadRawRC;
|
|
||||||
}
|
rxRuntimeConfig->rcReadRawFunc = rxSpiReadRawRC;
|
||||||
|
rxRuntimeConfig->rcFrameStatusFunc = rxSpiFrameStatus;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -68,5 +68,4 @@ typedef enum {
|
||||||
#define RC_CHANNEL_HEADLESS RC_SPI_AUX5
|
#define RC_CHANNEL_HEADLESS RC_SPI_AUX5
|
||||||
#define RC_CHANNEL_RTH RC_SPI_AUX6 // return to home
|
#define RC_CHANNEL_RTH RC_SPI_AUX6 // return to home
|
||||||
|
|
||||||
uint8_t rxSpiFrameStatus(void);
|
bool rxSpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig);
|
||||||
bool rxSpiInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, rcReadRawDataPtr *callback);
|
|
||||||
|
|
|
@ -81,9 +81,9 @@
|
||||||
#define USE_RX_SYMA
|
#define USE_RX_SYMA
|
||||||
#define USE_RX_V202
|
#define USE_RX_V202
|
||||||
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_SYMA_X5
|
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_SYMA_X5
|
||||||
#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_SYMA_X5C
|
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_SYMA_X5C
|
||||||
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_INAV
|
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_INAV
|
||||||
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_H8_3D
|
#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_H8_3D
|
||||||
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_CX10A
|
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_CX10A
|
||||||
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_V202_1M
|
//#define RX_SPI_DEFAULT_PROTOCOL NRF24RX_V202_1M
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue