Conform to RX framework changes

This commit is contained in:
Martin Budden 2016-09-17 15:35:49 +01:00
parent 1273ce8923
commit c2a823eb7c
5 changed files with 29 additions and 29 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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);

View File

@ -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