Determine with an aux range is used to arm.
This commit is contained in:
parent
738c807e1d
commit
cfcd4792bb
|
@ -426,6 +426,7 @@ void activateConfig(void)
|
||||||
|
|
||||||
generatePitchCurve(¤tProfile->controlRateConfig);
|
generatePitchCurve(¤tProfile->controlRateConfig);
|
||||||
generateThrottleCurve(¤tProfile->controlRateConfig, &masterConfig.escAndServoConfig);
|
generateThrottleCurve(¤tProfile->controlRateConfig, &masterConfig.escAndServoConfig);
|
||||||
|
useRcControlsConfig(currentProfile->modeActivationConditions);
|
||||||
|
|
||||||
useGyroConfig(&masterConfig.gyroConfig);
|
useGyroConfig(&masterConfig.gyroConfig);
|
||||||
#ifdef TELEMETRY
|
#ifdef TELEMETRY
|
||||||
|
|
|
@ -41,6 +41,8 @@
|
||||||
#include "rx/rx.h"
|
#include "rx/rx.h"
|
||||||
#include "io/rc_controls.h"
|
#include "io/rc_controls.h"
|
||||||
|
|
||||||
|
static bool isUsingSticksToArm = true;
|
||||||
|
|
||||||
int16_t rcCommand[4]; // interval [1000;2000] for THROTTLE and [-500;+500] for ROLL/PITCH/YAW
|
int16_t rcCommand[4]; // interval [1000;2000] for THROTTLE and [-500;+500] for ROLL/PITCH/YAW
|
||||||
|
|
||||||
uint32_t rcModeActivationMask; // one bit per mode defined in boxId_e
|
uint32_t rcModeActivationMask; // one bit per mode defined in boxId_e
|
||||||
|
@ -62,7 +64,7 @@ throttleStatus_e calculateThrottleStatus(rxConfig_t *rxConfig, uint16_t deadband
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, modeActivationCondition_t *modeActivationConditions, bool retarded_arm, bool disarm_kill_switch)
|
void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, bool retarded_arm, 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 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
|
static uint8_t rcSticks; // this hold sticks position for command combos
|
||||||
|
@ -85,8 +87,6 @@ void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStat
|
||||||
rcDelayCommand = 0;
|
rcDelayCommand = 0;
|
||||||
rcSticks = stTmp;
|
rcSticks = stTmp;
|
||||||
|
|
||||||
bool isUsingSticksToArm = true; // FIXME calculate from modeActivationConditions // FIXME this calculation only needs to be done after loading a profile
|
|
||||||
|
|
||||||
// perform actions
|
// perform actions
|
||||||
if (!isUsingSticksToArm) {
|
if (!isUsingSticksToArm) {
|
||||||
|
|
||||||
|
@ -227,8 +227,9 @@ void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStat
|
||||||
|
|
||||||
#define MAX_AUX_CHANNEL_COUNT (MAX_SUPPORTED_RC_CHANNEL_COUNT - NON_AUX_CHANNEL_COUNT)
|
#define MAX_AUX_CHANNEL_COUNT (MAX_SUPPORTED_RC_CHANNEL_COUNT - NON_AUX_CHANNEL_COUNT)
|
||||||
|
|
||||||
#include <stdio.h>
|
#define IS_MODE_RANGE_USABLE(modeActivationCondition) (modeActivationCondition->rangeStartStep < modeActivationCondition->rangeEndStep)
|
||||||
void updateRcOptions(modeActivationCondition_t *modeActivationConditions)
|
|
||||||
|
void updateActivatedModes(modeActivationCondition_t *modeActivationConditions)
|
||||||
{
|
{
|
||||||
rcModeActivationMask = 0; // FIXME implement, use rcData & modeActivationConditions
|
rcModeActivationMask = 0; // FIXME implement, use rcData & modeActivationConditions
|
||||||
|
|
||||||
|
@ -237,8 +238,7 @@ void updateRcOptions(modeActivationCondition_t *modeActivationConditions)
|
||||||
for (index = 0; index < MAX_MODE_ACTIVATION_CONDITION_COUNT; index++) {
|
for (index = 0; index < MAX_MODE_ACTIVATION_CONDITION_COUNT; index++) {
|
||||||
modeActivationCondition_t *modeActivationCondition = &modeActivationConditions[index];
|
modeActivationCondition_t *modeActivationCondition = &modeActivationConditions[index];
|
||||||
|
|
||||||
if (modeActivationCondition->rangeStartStep == modeActivationCondition->rangeEndStep) {
|
if (!IS_MODE_RANGE_USABLE(modeActivationCondition)) {
|
||||||
printf("skipping %d\n", index);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,3 +249,16 @@ void updateRcOptions(modeActivationCondition_t *modeActivationConditions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions)
|
||||||
|
{
|
||||||
|
uint8_t index;
|
||||||
|
|
||||||
|
for (index = 0; index < MAX_MODE_ACTIVATION_CONDITION_COUNT; index++) {
|
||||||
|
modeActivationCondition_t *modeActivationCondition = &modeActivationConditions[index];
|
||||||
|
if (modeActivationCondition->modeId == BOXARM && IS_MODE_RANGE_USABLE(modeActivationCondition)) {
|
||||||
|
isUsingSticksToArm = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -127,8 +127,8 @@ extern int16_t rcCommand[4];
|
||||||
|
|
||||||
bool areSticksInApModePosition(uint16_t ap_mode);
|
bool areSticksInApModePosition(uint16_t ap_mode);
|
||||||
throttleStatus_e calculateThrottleStatus(rxConfig_t *rxConfig, uint16_t deadband3d_throttle);
|
throttleStatus_e calculateThrottleStatus(rxConfig_t *rxConfig, uint16_t deadband3d_throttle);
|
||||||
void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, modeActivationCondition_t *modeActivationConditions, bool retarded_arm, bool disarm_kill_switch);
|
void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, bool retarded_arm, bool disarm_kill_switch);
|
||||||
|
|
||||||
|
|
||||||
void updateRcOptions(modeActivationCondition_t *modeActivationConditions);
|
void updateActivatedModes(modeActivationCondition_t *modeActivationConditions);
|
||||||
|
void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions);
|
||||||
|
|
|
@ -488,13 +488,13 @@ void processRx(void)
|
||||||
resetErrorGyro();
|
resetErrorGyro();
|
||||||
}
|
}
|
||||||
|
|
||||||
processRcStickPositions(&masterConfig.rxConfig, throttleStatus, currentProfile->modeActivationConditions, masterConfig.retarded_arm, masterConfig.disarm_kill_switch);
|
processRcStickPositions(&masterConfig.rxConfig, throttleStatus, masterConfig.retarded_arm, masterConfig.disarm_kill_switch);
|
||||||
|
|
||||||
if (feature(FEATURE_INFLIGHT_ACC_CAL)) {
|
if (feature(FEATURE_INFLIGHT_ACC_CAL)) {
|
||||||
updateInflightCalibrationState();
|
updateInflightCalibrationState();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateRcOptions(currentProfile->modeActivationConditions);
|
updateActivatedModes(currentProfile->modeActivationConditions);
|
||||||
|
|
||||||
bool canUseHorizonMode = true;
|
bool canUseHorizonMode = true;
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ int constrain(int amt, int low, int high)
|
||||||
return amt;
|
return amt;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RcControlsTest, updateRcOptionsWithAllInputsAtMidde)
|
TEST(RcControlsTest, updateActivatedModesWithAllInputsAtMidde)
|
||||||
{
|
{
|
||||||
// given
|
// given
|
||||||
modeActivationCondition_t modeActivationConditions[MAX_MODE_ACTIVATION_CONDITION_COUNT];
|
modeActivationCondition_t modeActivationConditions[MAX_MODE_ACTIVATION_CONDITION_COUNT];
|
||||||
|
@ -57,7 +57,7 @@ TEST(RcControlsTest, updateRcOptionsWithAllInputsAtMidde)
|
||||||
}
|
}
|
||||||
|
|
||||||
// when
|
// when
|
||||||
updateRcOptions(modeActivationConditions);
|
updateActivatedModes(modeActivationConditions);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
for (index = 0; index < CHECKBOX_ITEM_COUNT; index++) {
|
for (index = 0; index < CHECKBOX_ITEM_COUNT; index++) {
|
||||||
|
@ -66,7 +66,7 @@ TEST(RcControlsTest, updateRcOptionsWithAllInputsAtMidde)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RcControlsTest, updateRcOptionsUsingValidAuxConfigurationAndRXValues)
|
TEST(RcControlsTest, updateActivatedModesUsingValidAuxConfigurationAndRXValues)
|
||||||
{
|
{
|
||||||
// given
|
// given
|
||||||
modeActivationCondition_t modeActivationConditions[MAX_MODE_ACTIVATION_CONDITION_COUNT];
|
modeActivationCondition_t modeActivationConditions[MAX_MODE_ACTIVATION_CONDITION_COUNT];
|
||||||
|
@ -148,7 +148,7 @@ TEST(RcControlsTest, updateRcOptionsUsingValidAuxConfigurationAndRXValues)
|
||||||
expectedMask |= (0 << 6);
|
expectedMask |= (0 << 6);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
updateRcOptions(modeActivationConditions);
|
updateActivatedModes(modeActivationConditions);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
for (index = 0; index < CHECKBOX_ITEM_COUNT; index++) {
|
for (index = 0; index < CHECKBOX_ITEM_COUNT; index++) {
|
||||||
|
|
Loading…
Reference in New Issue