diff --git a/src/main/config/config.c b/src/main/config/config.c index 30b3e5f00b..0db945cc05 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -223,6 +223,7 @@ void resetNavConfig(navConfig_t * navConfig) #if defined(INAV_ENABLE_AUTO_MAG_DECLINATION) navConfig->inav.automatic_mag_declination = 1; #endif + navConfig->inav.gps_min_sats = 5; navConfig->inav.gps_delay_ms = 200; navConfig->inav.accz_unarmed_cal = 1; @@ -491,7 +492,6 @@ static void resetConf(void) masterConfig.inputFilteringMode = INPUT_FILTERING_DISABLED; - masterConfig.retarded_arm = 0; // FIXME: cleanup retarded arm masterConfig.disarm_kill_switch = 1; masterConfig.auto_disarm_delay = 5; masterConfig.small_angle = 25; diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index 698ac64107..4876ba080b 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -71,7 +71,6 @@ typedef struct master_t { failsafeConfig_t failsafeConfig; - uint8_t retarded_arm; // allow disarm/arm on throttle down + roll left/right uint8_t disarm_kill_switch; // allow disarm via AUX switch regardless of throttle value uint8_t auto_disarm_delay; // allow automatically disarming multicopters after auto_disarm_delay seconds of zero throttle. Disabled when 0 uint8_t small_angle; diff --git a/src/main/flight/navigation_rewrite.c b/src/main/flight/navigation_rewrite.c index 1293656ce1..b6de616b05 100755 --- a/src/main/flight/navigation_rewrite.c +++ b/src/main/flight/navigation_rewrite.c @@ -1850,7 +1850,7 @@ void applyWaypointNavigationAndAltitudeHold(void) if (posControl.flags.hasValidAltitudeSensor) navFlags |= (1 << 0); if (posControl.flags.hasValidSurfaceSensor) navFlags |= (1 << 1); if (posControl.flags.hasValidPositionSensor) navFlags |= (1 << 2); - if ((STATE(GPS_FIX) && GPS_numSat >= 5)) navFlags |= (1 << 3); + if ((STATE(GPS_FIX) && GPS_numSat >= posControl.navConfig->inav.gps_min_sats)) navFlags |= (1 << 3); #endif // No navigation when disarmed diff --git a/src/main/flight/navigation_rewrite.h b/src/main/flight/navigation_rewrite.h index d347f54db6..75f039a30a 100755 --- a/src/main/flight/navigation_rewrite.h +++ b/src/main/flight/navigation_rewrite.h @@ -70,6 +70,7 @@ typedef struct navConfig_s { #if defined(INAV_ENABLE_AUTO_MAG_DECLINATION) uint8_t automatic_mag_declination; #endif + uint8_t gps_min_sats; uint8_t accz_unarmed_cal; uint16_t gps_delay_ms; diff --git a/src/main/flight/navigation_rewrite_pos_estimator.c b/src/main/flight/navigation_rewrite_pos_estimator.c index c5b2059efb..b9bfde34ff 100755 --- a/src/main/flight/navigation_rewrite_pos_estimator.c +++ b/src/main/flight/navigation_rewrite_pos_estimator.c @@ -58,8 +58,6 @@ #define INAV_GPS_GLITCH_RADIUS 250.0f // 2.5m GPS glitch radius #define INAV_GPS_GLITCH_ACCEL 1000.0f // 10m/s/s max possible acceleration for GPS glitch detection -#define INAV_MIN_GPS_SAT_COUNT 5 // Minimum satellite count - #define INAV_POSITION_PUBLISH_RATE_HZ 50 // Publish position updates at this rate #define INAV_BARO_UPDATE_RATE 20 #define INAV_SONAR_UPDATE_RATE 15 // Sonar is limited to 1/60ms update rate, go lower that that @@ -244,7 +242,7 @@ void onNewGPSData(int32_t newLat, int32_t newLon, int32_t newAlt, int16_t velN, velDValid = false; if (sensors(SENSOR_GPS)) { - if (!(STATE(GPS_FIX) && GPS_numSat >= INAV_MIN_GPS_SAT_COUNT)) { + if (!(STATE(GPS_FIX) && GPS_numSat >= posControl.navConfig->inav.gps_min_sats)) { isFirstGPSUpdate = true; return; } @@ -264,7 +262,7 @@ void onNewGPSData(int32_t newLat, int32_t newLon, int32_t newAlt, int16_t velN, /* Process position update if GPS origin is already set, or precision is good enough */ // FIXME: use HDOP here - if ((posControl.gpsOrigin.valid) || (GPS_numSat >= INAV_MIN_GPS_SAT_COUNT)) { + if ((posControl.gpsOrigin.valid) || (GPS_numSat >= posControl.navConfig->inav.gps_min_sats)) { /* Convert LLH position to local coordinates */ t_fp_vector newLocalPos; geoConvertGeodeticToLocal(&posControl.gpsOrigin, &newLLH, &newLocalPos); diff --git a/src/main/io/rc_controls.c b/src/main/io/rc_controls.c index b8a4c95934..5994213402 100644 --- a/src/main/io/rc_controls.c +++ b/src/main/io/rc_controls.c @@ -122,7 +122,7 @@ throttleStatus_e calculateThrottleStatus(rxConfig_t *rxConfig, uint16_t deadband return THROTTLE_HIGH; } -void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, bool retarded_arm, bool disarm_kill_switch) +void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, bool disarm_kill_switch) { static uint8_t rcDelayCommand; // this indicates the number of time (multiple of RC measurement at 50Hz) the sticks must be maintained to run or switch off motors static uint8_t rcSticks; // this hold sticks position for command combos @@ -221,12 +221,6 @@ void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStat mwArm(); return; } - - if (retarded_arm && (rcSticks == THR_LO + YAW_CE + PIT_CE + ROL_HI)) { - // Arm via ROLL - mwArm(); - return; - } } if (rcSticks == THR_HI + YAW_LO + PIT_LO + ROL_CE) { diff --git a/src/main/io/rc_controls.h b/src/main/io/rc_controls.h index e17f5bee37..600505b3c7 100644 --- a/src/main/io/rc_controls.h +++ b/src/main/io/rc_controls.h @@ -150,7 +150,7 @@ bool areUsingSticksToArm(void); bool areSticksInApModePosition(uint16_t ap_mode); throttleStatus_e calculateThrottleStatus(rxConfig_t *rxConfig, uint16_t deadband3d_throttle); -void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, bool retarded_arm, bool disarm_kill_switch); +void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, bool disarm_kill_switch); void updateActivatedModes(modeActivationCondition_t *modeActivationConditions); diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index efae91f6f4..d910862519 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -543,6 +543,7 @@ const clivalue_t valueTable[] = { { "inav_accz_unarmedcal", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.navConfig.inav.accz_unarmed_cal, .config.lookup = { TABLE_OFF_ON }, 0 }, { "inav_gps_delay", VAR_UINT16 | MASTER_VALUE, &masterConfig.navConfig.inav.gps_delay_ms, .config.minmax = { 0, 500 }, 0 }, + { "inav_gps_min_sats", VAR_UINT8 | MASTER_VALUE, &masterConfig.navConfig.inav.gps_min_sats, .config.minmax = { 5, 10}, 0 }, { "inav_w_z_baro_p", VAR_FLOAT | MASTER_VALUE, &masterConfig.navConfig.inav.w_z_baro_p, .config.minmax = { 0, 10 }, 0 }, { "inav_w_z_gps_p", VAR_FLOAT | MASTER_VALUE, &masterConfig.navConfig.inav.w_z_gps_p, .config.minmax = { 0, 10 }, 0 }, diff --git a/src/main/mw.c b/src/main/mw.c index e1b4166280..c36976aa29 100755 --- a/src/main/mw.c +++ b/src/main/mw.c @@ -533,7 +533,7 @@ void processRx(void) } } - processRcStickPositions(&masterConfig.rxConfig, throttleStatus, masterConfig.retarded_arm, masterConfig.disarm_kill_switch); + processRcStickPositions(&masterConfig.rxConfig, throttleStatus, masterConfig.disarm_kill_switch); updateActivatedModes(currentProfile->modeActivationConditions);