static void readRxChannelsApplyRanges(void) { for (int channel = 0; channel < rxRuntimeConfig.channelCount; channel++) { const uint8_t rawChannel = calculateChannelRemapping(rxConfig->rcmap, REMAPPABLE_CHANNEL_COUNT, channel); // sample the channel uint16_t sample = (*rxRuntimeConfig.rcReadRawFn)(&rxRuntimeConfig, rawChannel); // apply the rx calibration if (channel < NON_AUX_CHANNEL_COUNT) { sample = applyRxChannelRangeConfiguraton(sample, rxConfig->channelRanges[channel]); } rcRaw[channel] = sample; } }
static void processRxChannels(void) { uint8_t chan; if (feature(FEATURE_RX_MSP)) { return; // rcData will have already been updated by MSP_SET_RAW_RC } rxPwmFlightChannelsAreGood = false; for (chan = 0; chan < rxRuntimeConfig.channelCount; chan++) { if (!rcReadRawFunc) { rcData[chan] = getRxfailValue(chan); continue; } uint8_t rawChannel = calculateChannelRemapping(rxConfig->rcmap, REMAPPABLE_CHANNEL_COUNT, chan); // sample the channel uint16_t sample = rcReadRawFunc(&rxRuntimeConfig, rawChannel); if (shouldCheckPulse) { rxCheckPulse(chan, sample); } // validate the range and check if rx signal is received if (sample < rxConfig->rx_min_usec || sample > rxConfig->rx_max_usec || !rxSignalReceived) { sample = getRxfailValue(chan); } if (isRxDataDriven()) { rcData[chan] = sample; } else { rcData[chan] = calculateNonDataDrivenChannel(chan, sample); } } // Using PARALLEL PWM and one of the 4 control channels is out of range: // Probably one of the cables came loose, all channels are set to rxfail values if ((rxPwmFlightChannelsAreGood == false) && feature(FEATURE_RX_PARALLEL_PWM)) { for (chan = 0; chan < rxRuntimeConfig.channelCount; chan++) { rcData[chan] = getRxfailValue(chan); } } }
static void readRxChannelsApplyRanges(void) { uint8_t channel; for (channel = 0; channel < rxRuntimeConfig.channelCount; channel++) { uint8_t rawChannel = calculateChannelRemapping(rxConfig()->rcmap, ARRAYLEN(rxConfig()->rcmap), channel); // sample the channel uint16_t sample = rcReadRawFunc(&rxRuntimeConfig, rawChannel); // apply the rx calibration if (channel < NON_AUX_CHANNEL_COUNT) { sample = applyRxChannelRangeConfiguraton(sample, channelRanges(channel)); } rcRaw[channel] = sample; } }