int8_t Plane::test_failsafe(uint8_t argc, const Menu::arg *argv) { uint8_t fail_test; print_hit_enter(); for(int16_t i = 0; i < 50; i++) { hal.scheduler->delay(20); read_radio(); } // read the radio to set trims // --------------------------- trim_radio(); oldSwitchPosition = readSwitch(); cliSerial->printf_P(PSTR("Unplug battery, throttle in neutral, turn off radio.\n")); while(channel_throttle->control_in > 0) { hal.scheduler->delay(20); read_radio(); } while(1) { hal.scheduler->delay(20); read_radio(); if(channel_throttle->control_in > 0) { cliSerial->printf_P(PSTR("THROTTLE CHANGED %d \n"), (int)channel_throttle->control_in); fail_test++; } if(oldSwitchPosition != readSwitch()) { cliSerial->printf_P(PSTR("CONTROL MODE CHANGED: ")); print_flight_mode(cliSerial, readSwitch()); cliSerial->println(); fail_test++; } if(rc_failsafe_active()) { cliSerial->printf_P(PSTR("THROTTLE FAILSAFE ACTIVATED: %d, "), (int)channel_throttle->radio_in); print_flight_mode(cliSerial, readSwitch()); cliSerial->println(); fail_test++; } if(fail_test > 0) { return (0); } if(cliSerial->available() > 0) { cliSerial->printf_P(PSTR("LOS caused no change in APM.\n")); return (0); } } }
void Copter::print_switch(uint8_t p, uint8_t m, bool b) { cliSerial->printf("Pos %d:\t",p); print_flight_mode(cliSerial, m); cliSerial->printf(",\t\tSimple: "); if(b) cliSerial->printf("ON\n"); else cliSerial->printf("OFF\n"); }