From 1cc2c8d6a51f4eb2b3d871b8edc5f001ca16ff93 Mon Sep 17 00:00:00 2001 From: Randy Mackay Date: Mon, 23 Sep 2013 23:30:19 +0900 Subject: [PATCH] Copter: reduce compassmot flash by 500 bytes --- ArduCopter/setup.pde | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/ArduCopter/setup.pde b/ArduCopter/setup.pde index 0484911063..994194854e 100644 --- a/ArduCopter/setup.pde +++ b/ArduCopter/setup.pde @@ -158,32 +158,16 @@ setup_compassmot(uint8_t argc, const Menu::arg *argv) comp_type = AP_COMPASS_MOT_COMP_THROTTLE; } - // check if user wants throttle compensation - if( !strcmp_P(argv[1].str, PSTR("t")) || !strcmp_P(argv[1].str, PSTR("T")) ) { - comp_type = AP_COMPASS_MOT_COMP_THROTTLE; - } - - // check if user wants current compensation - if( !strcmp_P(argv[1].str, PSTR("c")) || !strcmp_P(argv[1].str, PSTR("C")) ) { - comp_type = AP_COMPASS_MOT_COMP_CURRENT; - } - // check if radio is calibration pre_arm_rc_checks(); if(!ap.pre_arm_rc_check) { - cliSerial->print_P(PSTR("radio not calibrated, exiting")); + cliSerial->print_P(PSTR("radio not calibrated\n")); return 0; } // check compass is enabled if( !g.compass_enabled ) { - cliSerial->print_P(PSTR("compass disabled, exiting")); - return 0; - } - - // check if we have a current monitor - if( comp_type == AP_COMPASS_MOT_COMP_CURRENT && g.battery_monitoring != BATT_MONITOR_VOLTAGE_AND_CURRENT ) { - cliSerial->print_P(PSTR("current monitor disabled, exiting")); + cliSerial->print_P(PSTR("compass disabled\n")); return 0; } @@ -197,7 +181,7 @@ setup_compassmot(uint8_t argc, const Menu::arg *argv) // print warning that motors will spin // ask user to raise throttle // inform how to stop test - cliSerial->print_P(PSTR("This records the impact on the compass of running the motors. The motors will spin!\nHold throttle low, then raise to mid for 5 sec, then quickly back to low.\nAt any time you may press any key to exit.\n\nmeasuring compass vs ")); + cliSerial->print_P(PSTR("This records the impact on the compass of running the motors. Motors will spin!\nHold throttle low, then raise to mid for 5 sec, then quickly back to low.\nPress any key to exit.\n\nmeasuring compass vs ")); // inform what type of compensation we are attempting if( comp_type == AP_COMPASS_MOT_COMP_CURRENT ) { @@ -220,7 +204,7 @@ setup_compassmot(uint8_t argc, const Menu::arg *argv) // exit immediately if throttle is not zero if( g.rc_3.control_in != 0 ) { - cliSerial->print_P(PSTR("throttle not zero, exiting\n")); + cliSerial->print_P(PSTR("throttle not zero\n")); return 0; } @@ -233,7 +217,7 @@ setup_compassmot(uint8_t argc, const Menu::arg *argv) // exit immediately if the compass is not healthy if( !compass.healthy ) { - cliSerial->print_P(PSTR("compass not healthy, exiting\n")); + cliSerial->print_P(PSTR("check compass\n")); return 0; } @@ -323,7 +307,7 @@ setup_compassmot(uint8_t argc, const Menu::arg *argv) print_counter++; if(print_counter >= 50) { print_counter = 0; - cliSerial->printf_P(PSTR("thr:%d cur:%4.2f mot x:%4.1f y:%4.1f z:%4.1f comp x:%4.2f y:%4.2f z:%4.2f\n"),(int)g.rc_3.control_in, (float)current_amps1, (float)motor_impact.x, (float)motor_impact.y, (float)motor_impact.z, (float)motor_compensation.x, (float)motor_compensation.y, (float)motor_compensation.z); + display_compassmot_info(motor_impact, motor_compensation); } } }else{ @@ -342,7 +326,7 @@ setup_compassmot(uint8_t argc, const Menu::arg *argv) } // print one more time so the last thing printed matches what appears in the report_compass - cliSerial->printf_P(PSTR("thr:%d cur:%4.2f mot x:%4.1f y:%4.1f z:%4.1f comp x:%4.2f y:%4.2f z:%4.2f\n"),(int)g.rc_3.control_in, (float)current_amps1, (float)motor_impact.x, (float)motor_impact.y, (float)motor_impact.z, (float)motor_compensation.x, (float)motor_compensation.y, (float)motor_compensation.z); + display_compassmot_info(motor_impact, motor_compensation); // set and save motor compensation if( updated ) { @@ -371,6 +355,13 @@ setup_compassmot(uint8_t argc, const Menu::arg *argv) return 0; } +// display_compassmot_info - displays a status line for compassmot process +static void display_compassmot_info(Vector3f& motor_impact, Vector3f& motor_compensation) +{ + // print one more time so the last thing printed matches what appears in the report_compass + cliSerial->printf_P(PSTR("thr:%d cur:%4.2f mot x:%4.1f y:%4.1f z:%4.1f comp x:%4.2f y:%4.2f z:%4.2f\n"),(int)g.rc_3.control_in, (float)current_amps1, (float)motor_impact.x, (float)motor_impact.y, (float)motor_impact.z, (float)motor_compensation.x, (float)motor_compensation.y, (float)motor_compensation.z); +} + static int8_t setup_declination(uint8_t argc, const Menu::arg *argv) {