Skip to content

Commit

Permalink
Merge pull request iNavFlight#3314 from iNavFlight/de_remove_midrc
Browse files Browse the repository at this point in the history
Remove mid_rc setting
  • Loading branch information
digitalentity authored Jun 6, 2018
2 parents f7c2824 + d452344 commit 4b95c2e
Show file tree
Hide file tree
Showing 14 changed files with 49 additions and 55 deletions.
2 changes: 1 addition & 1 deletion src/main/fc/fc_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ int16_t getAxisRcCommand(int16_t rawData, int16_t rate, int16_t deadband)
{
int16_t stickDeflection;

stickDeflection = constrain(rawData - rxConfig()->midrc, -500, 500);
stickDeflection = constrain(rawData - PWM_RANGE_MIDDLE, -500, 500);
stickDeflection = applyDeadband(stickDeflection, deadband);

return rcLookup(stickDeflection, rate);
Expand Down
12 changes: 6 additions & 6 deletions src/main/fc/fc_msp.c
Original file line number Diff line number Diff line change
Expand Up @@ -647,7 +647,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
break;

case MSP_MISC:
sbufWriteU16(dst, rxConfig()->midrc);
sbufWriteU16(dst, PWM_RANGE_MIDDLE);

sbufWriteU16(dst, motorConfig()->minthrottle);
sbufWriteU16(dst, motorConfig()->maxthrottle);
Expand Down Expand Up @@ -677,7 +677,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
break;

case MSP2_INAV_MISC:
sbufWriteU16(dst, rxConfig()->midrc);
sbufWriteU16(dst, PWM_RANGE_MIDDLE);

sbufWriteU16(dst, motorConfig()->minthrottle);
sbufWriteU16(dst, motorConfig()->maxthrottle);
Expand Down Expand Up @@ -829,7 +829,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
case MSP_RX_CONFIG:
sbufWriteU8(dst, rxConfig()->serialrx_provider);
sbufWriteU16(dst, rxConfig()->maxcheck);
sbufWriteU16(dst, rxConfig()->midrc);
sbufWriteU16(dst, PWM_RANGE_MIDDLE);
sbufWriteU16(dst, rxConfig()->mincheck);
sbufWriteU8(dst, rxConfig()->spektrum_sat_bind);
sbufWriteU16(dst, rxConfig()->rx_min_usec);
Expand Down Expand Up @@ -1595,7 +1595,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)

case MSP_SET_MISC:
if (dataSize >= 22) {
rxConfigMutable()->midrc = constrain(sbufReadU16(src), MIDRC_MIN, MIDRC_MAX);
sbufReadU16(src); // midrc

motorConfigMutable()->minthrottle = constrain(sbufReadU16(src), PWM_RANGE_MIN, PWM_RANGE_MAX);
motorConfigMutable()->maxthrottle = constrain(sbufReadU16(src), PWM_RANGE_MIN, PWM_RANGE_MAX);
Expand Down Expand Up @@ -1635,7 +1635,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)

case MSP2_INAV_SET_MISC:
if (dataSize == 39) {
rxConfigMutable()->midrc = constrain(sbufReadU16(src), MIDRC_MIN, MIDRC_MAX);
sbufReadU16(src); // midrc

motorConfigMutable()->minthrottle = constrain(sbufReadU16(src), PWM_RANGE_MIN, PWM_RANGE_MAX);
motorConfigMutable()->maxthrottle = constrain(sbufReadU16(src), PWM_RANGE_MIN, PWM_RANGE_MAX);
Expand Down Expand Up @@ -2264,7 +2264,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
if (dataSize >= 24) {
rxConfigMutable()->serialrx_provider = sbufReadU8(src);
rxConfigMutable()->maxcheck = sbufReadU16(src);
rxConfigMutable()->midrc = sbufReadU16(src);
sbufReadU16(src); // midrc
rxConfigMutable()->mincheck = sbufReadU16(src);
rxConfigMutable()->spektrum_sat_bind = sbufReadU8(src);
rxConfigMutable()->rx_min_usec = sbufReadU16(src);
Expand Down
4 changes: 2 additions & 2 deletions src/main/fc/rc_adjustments.c
Original file line number Diff line number Diff line change
Expand Up @@ -475,9 +475,9 @@ void processRcAdjustments(controlRateConfig_t *controlRateConfig)

if (adjustmentState->config->mode == ADJUSTMENT_MODE_STEP) {
int delta;
if (rcData[channelIndex] > rxConfig()->midrc + 200) {
if (rcData[channelIndex] > PWM_RANGE_MIDDLE + 200) {
delta = adjustmentState->config->data.stepConfig.step;
} else if (rcData[channelIndex] < rxConfig()->midrc - 200) {
} else if (rcData[channelIndex] < PWM_RANGE_MIDDLE - 200) {
delta = 0 - adjustmentState->config->data.stepConfig.step;
} else {
// returning the switch to the middle immediately resets the ready state
Expand Down
10 changes: 5 additions & 5 deletions src/main/fc/rc_controls.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ bool areSticksDeflectedMoreThanPosHoldDeadband(void)
throttleStatus_e calculateThrottleStatus(void)
{
const uint16_t deadband3d_throttle = rcControlsConfig()->deadband3d_throttle;
if (feature(FEATURE_3D) && (rcData[THROTTLE] > (rxConfig()->midrc - deadband3d_throttle) && rcData[THROTTLE] < (rxConfig()->midrc + deadband3d_throttle)))
if (feature(FEATURE_3D) && (rcData[THROTTLE] > (PWM_RANGE_MIDDLE - deadband3d_throttle) && rcData[THROTTLE] < (PWM_RANGE_MIDDLE + deadband3d_throttle)))
return THROTTLE_LOW;
else if (!feature(FEATURE_3D) && (rcData[THROTTLE] < rxConfig()->mincheck))
return THROTTLE_LOW;
Expand All @@ -111,8 +111,8 @@ throttleStatus_e calculateThrottleStatus(void)

rollPitchStatus_e calculateRollPitchCenterStatus(void)
{
if (((rcData[PITCH] < (rxConfig()->midrc + AIRMODE_DEADBAND)) && (rcData[PITCH] > (rxConfig()->midrc -AIRMODE_DEADBAND)))
&& ((rcData[ROLL] < (rxConfig()->midrc + AIRMODE_DEADBAND)) && (rcData[ROLL] > (rxConfig()->midrc -AIRMODE_DEADBAND))))
if (((rcData[PITCH] < (PWM_RANGE_MIDDLE + AIRMODE_DEADBAND)) && (rcData[PITCH] > (PWM_RANGE_MIDDLE -AIRMODE_DEADBAND)))
&& ((rcData[ROLL] < (PWM_RANGE_MIDDLE + AIRMODE_DEADBAND)) && (rcData[ROLL] > (PWM_RANGE_MIDDLE -AIRMODE_DEADBAND))))
return CENTERED;

return NOT_CENTERED;
Expand Down Expand Up @@ -328,7 +328,7 @@ void processRcStickPositions(throttleStatus_e throttleStatus)
}
}

int32_t getRcStickDeflection(int32_t axis, uint16_t midrc) {
return MIN(ABS(rcData[axis] - midrc), 500);
int32_t getRcStickDeflection(int32_t axis) {
return MIN(ABS(rcData[axis] - PWM_RANGE_MIDDLE), 500);
}

2 changes: 1 addition & 1 deletion src/main/fc/rc_controls.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,4 @@ throttleStatus_e calculateThrottleStatus(void);
rollPitchStatus_e calculateRollPitchCenterStatus(void);
void processRcStickPositions(throttleStatus_e throttleStatus);

int32_t getRcStickDeflection(int32_t axis, uint16_t midrc);
int32_t getRcStickDeflection(int32_t axis);
4 changes: 0 additions & 4 deletions src/main/fc/settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -321,10 +321,6 @@ groups:
- name: receiver_type
field: receiverType
table: receiver_type
- name: mid_rc
field: midrc
min: MIDRC_MIN
max: MIDRC_MAX
- name: min_check
field: mincheck
min: PWM_RANGE_MIN
Expand Down
8 changes: 4 additions & 4 deletions src/main/flight/failsafe.c
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ void failsafeApplyControlInput(void)
break;

case THROTTLE:
rcCommand[idx] = feature(FEATURE_3D) ? rxConfig()->midrc : motorConfig()->minthrottle;
rcCommand[idx] = feature(FEATURE_3D) ? PWM_RANGE_MIDDLE : motorConfig()->minthrottle;
break;
}
break;
Expand Down Expand Up @@ -330,9 +330,9 @@ static bool failsafeCheckStickMotion(void)
if (failsafeConfig()->failsafe_stick_motion_threshold > 0) {
uint32_t totalRcDelta = 0;

totalRcDelta += ABS(rcData[ROLL] - rxConfig()->midrc);
totalRcDelta += ABS(rcData[PITCH] - rxConfig()->midrc);
totalRcDelta += ABS(rcData[YAW] - rxConfig()->midrc);
totalRcDelta += ABS(rcData[ROLL] - PWM_RANGE_MIDDLE);
totalRcDelta += ABS(rcData[PITCH] - PWM_RANGE_MIDDLE);
totalRcDelta += ABS(rcData[YAW] - PWM_RANGE_MIDDLE);

return totalRcDelta >= failsafeConfig()->failsafe_stick_motion_threshold;
}
Expand Down
12 changes: 6 additions & 6 deletions src/main/flight/mixer.c
Original file line number Diff line number Diff line change
Expand Up @@ -284,17 +284,17 @@ void mixTable(const float dT)

// Find min and max throttle based on condition.
if (feature(FEATURE_3D)) {
if (!ARMING_FLAG(ARMED)) throttlePrevious = rxConfig()->midrc; // When disarmed set to mid_rc. It always results in positive direction after arming.
if (!ARMING_FLAG(ARMED)) throttlePrevious = PWM_RANGE_MIDDLE; // When disarmed set to mid_rc. It always results in positive direction after arming.

if ((rcCommand[THROTTLE] <= (rxConfig()->midrc - rcControlsConfig()->deadband3d_throttle))) { // Out of band handling
if ((rcCommand[THROTTLE] <= (PWM_RANGE_MIDDLE - rcControlsConfig()->deadband3d_throttle))) { // Out of band handling
throttleMax = flight3DConfig()->deadband3d_low;
throttleMin = motorConfig()->minthrottle;
throttlePrevious = throttleCommand = rcCommand[THROTTLE];
} else if (rcCommand[THROTTLE] >= (rxConfig()->midrc + rcControlsConfig()->deadband3d_throttle)) { // Positive handling
} else if (rcCommand[THROTTLE] >= (PWM_RANGE_MIDDLE + rcControlsConfig()->deadband3d_throttle)) { // Positive handling
throttleMax = motorConfig()->maxthrottle;
throttleMin = flight3DConfig()->deadband3d_high;
throttlePrevious = throttleCommand = rcCommand[THROTTLE];
} else if ((throttlePrevious <= (rxConfig()->midrc - rcControlsConfig()->deadband3d_throttle))) { // Deadband handling from negative to positive
} else if ((throttlePrevious <= (PWM_RANGE_MIDDLE - rcControlsConfig()->deadband3d_throttle))) { // Deadband handling from negative to positive
throttleCommand = throttleMax = flight3DConfig()->deadband3d_low;
throttleMin = motorConfig()->minthrottle;
} else { // Deadband handling from positive to negative
Expand Down Expand Up @@ -333,7 +333,7 @@ void mixTable(const float dT)
if (failsafeIsActive()) {
motor[i] = constrain(motor[i], motorConfig()->mincommand, motorConfig()->maxthrottle);
} else if (feature(FEATURE_3D)) {
if (throttlePrevious <= (rxConfig()->midrc - rcControlsConfig()->deadband3d_throttle)) {
if (throttlePrevious <= (PWM_RANGE_MIDDLE - rcControlsConfig()->deadband3d_throttle)) {
motor[i] = constrain(motor[i], motorConfig()->minthrottle, flight3DConfig()->deadband3d_low);
} else {
motor[i] = constrain(motor[i], flight3DConfig()->deadband3d_high, motorConfig()->maxthrottle);
Expand All @@ -349,7 +349,7 @@ void mixTable(const float dT)
bool userMotorStop = !navigationIsFlyingAutonomousMode() && !failsafeIsActive() && (rcData[THROTTLE] < rxConfig()->mincheck);
if (failsafeMotorStop || navMotorStop || userMotorStop) {
if (feature(FEATURE_3D)) {
motor[i] = rxConfig()->midrc;
motor[i] = PWM_RANGE_MIDDLE;
}
else {
motor[i] = motorConfig()->mincommand;
Expand Down
4 changes: 2 additions & 2 deletions src/main/flight/pid.c
Original file line number Diff line number Diff line change
Expand Up @@ -392,8 +392,8 @@ void updatePIDCoefficients(void)
static float calcHorizonRateMagnitude(void)
{
// Figure out the raw stick positions
const int32_t stickPosAil = ABS(getRcStickDeflection(FD_ROLL, rxConfig()->midrc));
const int32_t stickPosEle = ABS(getRcStickDeflection(FD_PITCH, rxConfig()->midrc));
const int32_t stickPosAil = ABS(getRcStickDeflection(FD_ROLL));
const int32_t stickPosEle = ABS(getRcStickDeflection(FD_PITCH));
const float mostDeflectedStickPos = constrain(MAX(stickPosAil, stickPosEle), 0, 500) / 500.0f;
const float modeTransitionStickPos = constrain(pidBank()->pid[PID_LEVEL].D, 0, 100) / 100.0f;

Expand Down
34 changes: 17 additions & 17 deletions src/main/flight/servos.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ void servoMixer(float dT)
input[INPUT_STABILIZED_YAW] = axisPID[YAW];

// Reverse yaw servo when inverted in 3D mode only for multirotor and tricopter
if (feature(FEATURE_3D) && (rcData[THROTTLE] < rxConfig()->midrc) &&
if (feature(FEATURE_3D) && (rcData[THROTTLE] < PWM_RANGE_MIDDLE) &&
(mixerConfig()->platformType == PLATFORM_MULTIROTOR || mixerConfig()->platformType == PLATFORM_TRICOPTER)) {
input[INPUT_STABILIZED_YAW] *= -1;
}
Expand All @@ -254,22 +254,22 @@ void servoMixer(float dT)
// 2000 - 1500 = +500
// 1500 - 1500 = 0
// 1000 - 1500 = -500
input[INPUT_RC_ROLL] = rcData[ROLL] - rxConfig()->midrc;
input[INPUT_RC_PITCH] = rcData[PITCH] - rxConfig()->midrc;
input[INPUT_RC_YAW] = rcData[YAW] - rxConfig()->midrc;
input[INPUT_RC_THROTTLE] = rcData[THROTTLE] - rxConfig()->midrc;
input[INPUT_RC_CH5] = rcData[AUX1] - rxConfig()->midrc;
input[INPUT_RC_CH6] = rcData[AUX2] - rxConfig()->midrc;
input[INPUT_RC_CH7] = rcData[AUX3] - rxConfig()->midrc;
input[INPUT_RC_CH8] = rcData[AUX4] - rxConfig()->midrc;
input[INPUT_RC_CH9] = rcData[AUX5] - rxConfig()->midrc;
input[INPUT_RC_CH10] = rcData[AUX6] - rxConfig()->midrc;
input[INPUT_RC_CH11] = rcData[AUX7] - rxConfig()->midrc;
input[INPUT_RC_CH12] = rcData[AUX8] - rxConfig()->midrc;
input[INPUT_RC_CH13] = rcData[AUX9] - rxConfig()->midrc;
input[INPUT_RC_CH14] = rcData[AUX10] - rxConfig()->midrc;
input[INPUT_RC_CH15] = rcData[AUX11] - rxConfig()->midrc;
input[INPUT_RC_CH16] = rcData[AUX12] - rxConfig()->midrc;
input[INPUT_RC_ROLL] = rcData[ROLL] - PWM_RANGE_MIDDLE;
input[INPUT_RC_PITCH] = rcData[PITCH] - PWM_RANGE_MIDDLE;
input[INPUT_RC_YAW] = rcData[YAW] - PWM_RANGE_MIDDLE;
input[INPUT_RC_THROTTLE] = rcData[THROTTLE] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH5] = rcData[AUX1] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH6] = rcData[AUX2] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH7] = rcData[AUX3] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH8] = rcData[AUX4] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH9] = rcData[AUX5] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH10] = rcData[AUX6] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH11] = rcData[AUX7] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH12] = rcData[AUX8] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH13] = rcData[AUX9] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH14] = rcData[AUX10] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH15] = rcData[AUX11] - PWM_RANGE_MIDDLE;
input[INPUT_RC_CH16] = rcData[AUX12] - PWM_RANGE_MIDDLE;

for (int i = 0; i < MAX_SUPPORTED_SERVOS; i++) {
servo[i] = 0;
Expand Down
2 changes: 1 addition & 1 deletion src/main/rx/crsf.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ void crsfRxSendTelemetryData(void)
bool crsfRxInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig)
{
for (int ii = 0; ii < CRSF_MAX_CHANNEL; ++ii) {
crsfChannelData[ii] = (16 * rxConfig->midrc) / 10 - 1408;
crsfChannelData[ii] = (16 * PWM_RANGE_MIDDLE) / 10 - 1408;
}

rxRuntimeConfig->channelCount = CRSF_MAX_CHANNEL;
Expand Down
6 changes: 2 additions & 4 deletions src/main/rx/rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ PG_REGISTER_WITH_RESET_TEMPLATE(rxConfig_t, rxConfig, PG_RX_CONFIG, 4);
#define DEFAULT_RX_TYPE RX_TYPE_NONE
#endif

#define RX_MIDRC 1500
#define RX_MIN_USEX 885
PG_RESET_TEMPLATE(rxConfig_t, rxConfig,
.receiverType = DEFAULT_RX_TYPE,
Expand All @@ -123,7 +122,6 @@ PG_RESET_TEMPLATE(rxConfig_t, rxConfig,
.rx_spi_protocol = RX_SPI_DEFAULT_PROTOCOL,
.spektrum_sat_bind = 0,
.serialrx_inverted = 0,
.midrc = RX_MIDRC,
.mincheck = 1100,
.maxcheck = 1900,
.rx_min_usec = RX_MIN_USEX, // any of first 4 channels below this value will trigger rx loss detection
Expand Down Expand Up @@ -244,11 +242,11 @@ void rxInit(void)
rcSampleIndex = 0;

for (int i = 0; i < MAX_SUPPORTED_RC_CHANNEL_COUNT; i++) {
rcData[i] = rxConfig()->midrc;
rcData[i] = PWM_RANGE_MIDDLE;
rcInvalidPulsPeriod[i] = millis() + MAX_INVALID_PULS_TIME;
}

rcData[THROTTLE] = (feature(FEATURE_3D)) ? rxConfig()->midrc : rxConfig()->rx_min_usec;
rcData[THROTTLE] = (feature(FEATURE_3D)) ? PWM_RANGE_MIDDLE : rxConfig()->rx_min_usec;

// Initialize ARM switch to OFF position when arming via switch is defined
for (int i = 0; i < MAX_MODE_ACTIVATION_CONDITION_COUNT; i++) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/rx/rx.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ typedef struct rxConfig_s {
uint8_t rssi_channel;
uint8_t rssi_scale;
uint8_t rssiInvert;
uint16_t midrc; // Some radios have not a neutral point centered on 1500. can be changed here
uint16_t __reserved; // was micrd
uint16_t mincheck; // minimum rc end
uint16_t maxcheck; // maximum rc end
uint16_t rx_min_usec;
Expand Down
2 changes: 1 addition & 1 deletion src/main/rx/sbus_channels.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ void sbusChannelsInit(const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeCo
{
rxRuntimeConfig->rcReadRawFn = sbusChannelsReadRawRC;
for (int b = 0; b < SBUS_MAX_CHANNEL; b++) {
rxRuntimeConfig->channelData[b] = (16 * rxConfig->midrc) / 10 - 1408;
rxRuntimeConfig->channelData[b] = (16 * PWM_RANGE_MIDDLE) / 10 - 1408;
}
}
#endif

0 comments on commit 4b95c2e

Please sign in to comment.