Browse Source

Copter: simplify auxsw duplicates check

master
Peter Barker 8 years ago committed by Randy Mackay
parent
commit
b81074d83a
  1. 1
      ArduCopter/defines.h
  2. 32
      ArduCopter/switches.cpp

1
ArduCopter/defines.h

@ -69,6 +69,7 @@ enum aux_sw_func {
AUXSW_RELAY4 = 36, // Relay4 pin on/off (in Mission planner set CH10_OPT = 36) AUXSW_RELAY4 = 36, // Relay4 pin on/off (in Mission planner set CH10_OPT = 36)
AUXSW_THROW = 37, // change to THROW flight mode AUXSW_THROW = 37, // change to THROW flight mode
AUXSW_AVOID_ADSB = 38, // enable AP_Avoidance library AUXSW_AVOID_ADSB = 38, // enable AP_Avoidance library
AUXSW_SWITCH_MAX,
}; };
// Frame types // Frame types

32
ArduCopter/switches.cpp

@ -86,23 +86,23 @@ bool Copter::check_if_auxsw_mode_used(uint8_t auxsw_mode_check)
// check_duplicate_auxsw - Check to see if any Aux Switch Functions are duplicated // check_duplicate_auxsw - Check to see if any Aux Switch Functions are duplicated
bool Copter::check_duplicate_auxsw(void) bool Copter::check_duplicate_auxsw(void)
{ {
bool ret = ((g.ch7_option != AUXSW_DO_NOTHING) && (g.ch7_option == g.ch8_option || uint8_t auxsw_option_counts[AUXSW_SWITCH_MAX] = {};
g.ch7_option == g.ch9_option || g.ch7_option == g.ch10_option || auxsw_option_counts[g.ch7_option]++;
g.ch7_option == g.ch11_option || g.ch7_option == g.ch12_option)); auxsw_option_counts[g.ch8_option]++;
auxsw_option_counts[g.ch9_option]++;
auxsw_option_counts[g.ch10_option]++;
auxsw_option_counts[g.ch11_option]++;
auxsw_option_counts[g.ch12_option]++;
ret = ret || ((g.ch8_option != AUXSW_DO_NOTHING) && (g.ch8_option == g.ch9_option || for (uint8_t i=0; i<sizeof(auxsw_option_counts); i++) {
g.ch8_option == g.ch10_option || g.ch8_option == g.ch11_option || if (i == AUXSW_DO_NOTHING) {
g.ch8_option == g.ch12_option)); continue;
}
ret = ret || ((g.ch9_option != AUXSW_DO_NOTHING) && (g.ch9_option == g.ch10_option || if (auxsw_option_counts[i] > 1) {
g.ch9_option == g.ch11_option || g.ch9_option == g.ch12_option)); return true;
}
ret = ret || ((g.ch10_option != AUXSW_DO_NOTHING) && (g.ch10_option == g.ch11_option || }
g.ch10_option == g.ch12_option)); return false;
ret = ret || ((g.ch11_option != AUXSW_DO_NOTHING) && (g.ch11_option == g.ch12_option));
return ret;
} }
void Copter::reset_control_switch() void Copter::reset_control_switch()

Loading…
Cancel
Save