From 282668edde26ca3cd3dbd40b80083757452bcbd7 Mon Sep 17 00:00:00 2001 From: mikeller Date: Sat, 8 Jul 2017 12:32:23 +1200 Subject: [PATCH] Added BOXDSHOTREVERSE as a separate mode to BOX3DDISABLE. --- src/main/fc/fc_core.c | 5 ++--- src/main/fc/fc_msp.c | 14 ++++++++++---- src/main/fc/fc_rc.c | 2 +- src/main/fc/rc_controls.c | 2 +- src/main/fc/rc_modes.h | 3 ++- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/fc/fc_core.c b/src/main/fc/fc_core.c index 754abfca14..7123697b1f 100644 --- a/src/main/fc/fc_core.c +++ b/src/main/fc/fc_core.c @@ -220,9 +220,8 @@ void tryArm(void) return; } #ifdef USE_DSHOT - if (!feature(FEATURE_3D)) { - //TODO: Use BOXDSHOTREVERSE here - if (!IS_RC_MODE_ACTIVE(BOX3DDISABLESWITCH)) { + if (isMotorProtocolDshot()) { + if (!IS_RC_MODE_ACTIVE(BOXDSHOTREVERSE)) { reverseMotors = false; for (unsigned index = 0; index < getMotorCount(); index++) { pwmWriteDshotCommand(index, DSHOT_CMD_SPIN_DIRECTION_NORMAL); diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index ff3e813f93..757f99e1f6 100644 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -150,12 +150,13 @@ static const box_t boxes[CHECKBOX_ITEM_COUNT] = { { BOXBLACKBOX, "BLACKBOX", 26 }, { BOXFAILSAFE, "FAILSAFE", 27 }, { BOXAIRMODE, "AIR MODE", 28 }, - { BOX3DDISABLESWITCH, "DISABLE 3D SWITCH", 29}, + { BOX3DDISABLE, "DISABLE 3D", 29}, { BOXFPVANGLEMIX, "FPV ANGLE MIX", 30}, { BOXBLACKBOXERASE, "BLACKBOX ERASE (>30s)", 31 }, { BOXCAMERA1, "CAMERA CONTROL 1", 32}, { BOXCAMERA2, "CAMERA CONTROL 2", 33}, { BOXCAMERA3, "CAMERA CONTROL 3", 34 }, + { BOXDSHOTREVERSE, "DSHOT REVERSE MOTORS", 35 }, }; // mask of enabled IDs, calculated on startup based on enabled features. boxId_e is used as bit index @@ -396,8 +397,13 @@ void initActiveBoxIds(void) BME(BOXFPVANGLEMIX); - //TODO: Split this into BOX3DDISABLESWITCH and BOXDSHOTREVERSE - BME(BOX3DDISABLESWITCH); + if (feature(FEATURE_3D)) { + BME(BOX3DDISABLE); + } + + if (isMotorProtocolDshot()) { + BME(BOXDSHOTREVERSE); + } if (feature(FEATURE_SERVO_TILT)) { BME(BOXCAMSTAB); @@ -469,7 +475,7 @@ static int packFlightModeFlags(boxBitmask_t *mspFlightModeFlags) const uint64_t rcModeCopyMask = BM(BOXHEADADJ) | BM(BOXCAMSTAB) | BM(BOXCAMTRIG) | BM(BOXBEEPERON) | BM(BOXLEDMAX) | BM(BOXLEDLOW) | BM(BOXLLIGHTS) | BM(BOXCALIB) | BM(BOXGOV) | BM(BOXOSD) | BM(BOXTELEMETRY) | BM(BOXGTUNE) | BM(BOXBLACKBOX) | BM(BOXBLACKBOXERASE) | BM(BOXAIRMODE) - | BM(BOXANTIGRAVITY) | BM(BOXFPVANGLEMIX); + | BM(BOXANTIGRAVITY) | BM(BOXFPVANGLEMIX) | BM(BOXDSHOTREVERSE) | BM(BOX3DDISABLE); STATIC_ASSERT(sizeof(rcModeCopyMask) * 8 >= CHECKBOX_ITEM_COUNT, copy_mask_too_small_for_boxes); for (unsigned i = 0; i < CHECKBOX_ITEM_COUNT; i++) { if ((rcModeCopyMask & BM(i)) // mode copy is enabled diff --git a/src/main/fc/fc_rc.c b/src/main/fc/fc_rc.c index ee4da972d7..1957d3a542 100755 --- a/src/main/fc/fc_rc.c +++ b/src/main/fc/fc_rc.c @@ -306,7 +306,7 @@ void updateRcCommands(void) rcCommand[THROTTLE] = rcLookupThrottle(tmp); - if (feature(FEATURE_3D) && IS_RC_MODE_ACTIVE(BOX3DDISABLESWITCH) && !failsafeIsActive()) { + if (feature(FEATURE_3D) && IS_RC_MODE_ACTIVE(BOX3DDISABLE) && !failsafeIsActive()) { fix12_t throttleScaler = qConstruct(rcCommand[THROTTLE] - 1000, 1000); rcCommand[THROTTLE] = rxConfig()->midrc + qMultiply(throttleScaler, PWM_RANGE_MAX - rxConfig()->midrc); } diff --git a/src/main/fc/rc_controls.c b/src/main/fc/rc_controls.c index 4cc6650340..8344326caa 100644 --- a/src/main/fc/rc_controls.c +++ b/src/main/fc/rc_controls.c @@ -103,7 +103,7 @@ bool areSticksInApModePosition(uint16_t ap_mode) throttleStatus_e calculateThrottleStatus(void) { - if (feature(FEATURE_3D) && !IS_RC_MODE_ACTIVE(BOX3DDISABLESWITCH)) { + if (feature(FEATURE_3D) && !IS_RC_MODE_ACTIVE(BOX3DDISABLE)) { if ((rcData[THROTTLE] > (rxConfig()->midrc - flight3DConfig()->deadband3d_throttle) && rcData[THROTTLE] < (rxConfig()->midrc + flight3DConfig()->deadband3d_throttle))) return THROTTLE_LOW; } else { diff --git a/src/main/fc/rc_modes.h b/src/main/fc/rc_modes.h index 17c35f7e22..400f370a54 100644 --- a/src/main/fc/rc_modes.h +++ b/src/main/fc/rc_modes.h @@ -51,12 +51,13 @@ typedef enum { BOXBLACKBOX, BOXFAILSAFE, BOXAIRMODE, - BOX3DDISABLESWITCH, + BOX3DDISABLE, BOXFPVANGLEMIX, BOXBLACKBOXERASE, BOXCAMERA1, BOXCAMERA2, BOXCAMERA3, + BOXDSHOTREVERSE, CHECKBOX_ITEM_COUNT } boxId_e;