From 9cf90fa23073a9102d2b93747b09063398b5924c Mon Sep 17 00:00:00 2001 From: treymarc Date: Wed, 2 Jul 2014 12:08:37 +0000 Subject: [PATCH] smallAngle configurable, user can arm/disarm with swith in any orientation Conflicts: src/cli.c src/config.c src/imu.c src/mw.c src/mw.h --- src/main/config/config.c | 4 +++- src/main/flight/imu.c | 2 +- src/main/flight/imu.h | 1 + src/main/io/rc_controls.c | 10 +++++++--- src/main/io/serial_cli.c | 1 + 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/config/config.c b/src/main/config/config.c index e1ba6588cb..b7f58c957b 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -79,7 +79,7 @@ static uint32_t flashWriteAddress = (0x08000000 + (uint32_t)((FLASH_PAGE_SIZE * master_t masterConfig; // master config struct with data independent from profiles profile_t currentProfile; // profile config struct -static const uint8_t EEPROM_CONF_VERSION = 72; +static const uint8_t EEPROM_CONF_VERSION = 73; static void resetAccelerometerTrims(flightDynamicsTrims_t *accelerometerTrims) { @@ -250,6 +250,8 @@ static void resetConf(void) masterConfig.inputFilteringMode = INPUT_FILTERING_DISABLED; masterConfig.retarded_arm = 0; // disable arm/disarm on roll left/right + masterConfig.small_angle = 25; + masterConfig.airplaneConfig.flaps_speed = 0; masterConfig.fixedwing_althold_dir = 1; diff --git a/src/main/flight/imu.c b/src/main/flight/imu.c index 28a6849cc5..95b540e283 100755 --- a/src/main/flight/imu.c +++ b/src/main/flight/imu.c @@ -80,7 +80,7 @@ static void getEstimatedAttitude(void); void imuInit() { - smallAngle = lrintf(acc_1G * cosf(RAD * 25.0f)); + smallAngle = lrintf(acc_1G * cosf(RAD * imuRuntimeConfig->small_angle)); accVelScale = 9.80665f / acc_1G / 10000.0f; gyroScaleRad = gyro.scale * (M_PI / 180.0f) * 0.000001f; } diff --git a/src/main/flight/imu.h b/src/main/flight/imu.h index d7c6707bcf..9b02a52149 100644 --- a/src/main/flight/imu.h +++ b/src/main/flight/imu.h @@ -26,6 +26,7 @@ typedef struct imuRuntimeConfig_s { uint8_t acc_unarmedcal; float gyro_cmpf_factor; float gyro_cmpfm_factor; + int16_t small_angle; } imuRuntimeConfig_t; void configureImu(imuRuntimeConfig_t *initialImuRuntimeConfig, pidProfile_t *initialPidProfile, barometerConfig_t *intialBarometerConfig, accDeadband_t *initialAccDeadband); diff --git a/src/main/io/rc_controls.c b/src/main/io/rc_controls.c index 804ce2faea..514107ef4f 100644 --- a/src/main/io/rc_controls.c +++ b/src/main/io/rc_controls.c @@ -84,11 +84,15 @@ void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStat // perform actions if (throttleStatus == THROTTLE_LOW) { - if (activate[BOXARM] > 0) { // Arming/Disarming via ARM BOX + if (activate[BOXARM] > 0) { // Arming via ARM BOX if (rcOptions[BOXARM] && f.OK_TO_ARM) mwArm(); - else if (f.ARMED) - mwDisarm(); + } + } + + if (activate[BOXARM] > 0) { // Disarming via ARM BOX + if (!rcOptions[BOXARM] && f.ARMED) { + mwDisarm(); } } diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index c20ed4906e..5a9236fa10 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -187,6 +187,7 @@ const clivalue_t valueTable[] = { { "servo_pwm_rate", VAR_UINT16, &masterConfig.servo_pwm_rate, 50, 498 }, { "retarded_arm", VAR_UINT8, &masterConfig.retarded_arm, 0, 1 }, + { "small_angle", VAR_UINT8, &masterConfig.small_angle, 0, 90 }, { "flaps_speed", VAR_UINT8, &masterConfig.airplaneConfig.flaps_speed, 0, 100 },