From 42b5d47f7bd12ee70eaea3772b10364d097bea6f Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 21 Feb 2012 21:48:07 -0800 Subject: [PATCH 001/122] commented out control mode debug print --- ArduCopter/system.pde | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ArduCopter/system.pde b/ArduCopter/system.pde index 5f1f2593e7..5652fdff64 100644 --- a/ArduCopter/system.pde +++ b/ArduCopter/system.pde @@ -405,10 +405,9 @@ static void set_mode(byte mode) mode = STABILIZE; } - old_control_mode = control_mode; - - control_mode = mode; - control_mode = constrain(control_mode, 0, NUM_MODES - 1); + old_control_mode = control_mode; + control_mode = mode; + control_mode = constrain(control_mode, 0, NUM_MODES - 1); // used to stop fly_aways motor_auto_armed = (g.rc_3.control_in > 0); @@ -429,7 +428,7 @@ static void set_mode(byte mode) land_complete = false; // debug to Serial terminal - Serial.println(flight_mode_strings[control_mode]); + //Serial.println(flight_mode_strings[control_mode]); // report the GPS and Motor arming status led_mode = NORMAL_LEDS; From 729c824809abcfad48d3bf63794f3cc4d72ce633 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 21 Feb 2012 21:49:03 -0800 Subject: [PATCH 002/122] made timer unsigned --- ArduCopter/ArduCopter.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index 4c0071aab8..bbea7ba51c 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -594,7 +594,7 @@ static byte throttle_mode; // This flag is reset when we are in a manual throttle mode with 0 throttle or disarmed static boolean takeoff_complete; // Used to record the most recent time since we enaged the throttle to take off -static int32_t takeoff_timer; +static uint32_t takeoff_timer; // Used to see if we have landed and if we should shut our engines - not fully implemented static boolean land_complete = true; // used to manually override throttle in interactive Alt hold modes From 242f54793c2e339baab966fc2ec2d78b4db00052 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Wed, 22 Feb 2012 09:00:42 -0800 Subject: [PATCH 003/122] revved a version --- ArduCopter/ArduCopter.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index bbea7ba51c..cac2ba85fd 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -1,6 +1,6 @@ /// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- -#define THISFIRMWARE "ArduCopter V2.4" +#define THISFIRMWARE "ArduCopter V2.4.1" /* ArduCopter Version 2.4 Authors: Jason Short From eaa29d5e3b48851c67028a62b4383a1ab309da15 Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Thu, 23 Feb 2012 01:06:56 +0800 Subject: [PATCH 004/122] firmware build --- Tools/ArdupilotMegaPlanner/Firmware/firmware2.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Tools/ArdupilotMegaPlanner/Firmware/firmware2.xml b/Tools/ArdupilotMegaPlanner/Firmware/firmware2.xml index 7595cd1d41..8d2dd6c786 100644 --- a/Tools/ArdupilotMegaPlanner/Firmware/firmware2.xml +++ b/Tools/ArdupilotMegaPlanner/Firmware/firmware2.xml @@ -47,7 +47,7 @@ http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Quad-1280.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Quad-2560.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Quad-2560-2.hex - ArduCopter V2.4 Quad + ArduCopter V2.4.1 Quad #define FRAME_CONFIG QUAD_FRAME @@ -58,7 +58,7 @@ http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Tri-1280.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Tri-2560.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Tri-2560-2.hex - ArduCopter V2.4 Tri + ArduCopter V2.4.1 Tri #define FRAME_CONFIG TRI_FRAME @@ -69,7 +69,7 @@ http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Hexa-1280.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Hexa-2560.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Hexa-2560-2.hex - ArduCopter V2.4 Hexa X + ArduCopter V2.4.1 Hexa X #define FRAME_CONFIG HEXA_FRAME @@ -80,7 +80,7 @@ http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Y6-1280.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Y6-2560.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Y6-2560-2.hex - ArduCopter V2.4 Y6 + ArduCopter V2.4.1 Y6 #define FRAME_CONFIG Y6_FRAME @@ -91,7 +91,7 @@ http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Octav-1280.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Octav-2560.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Octav-2560-2.hex - ArduCopter V2.4 Octa V + ArduCopter V2.4.1 Octa V #define FRAME_CONFIG OCTA_FRAME #define FRAME_ORIENTATION V_FRAME @@ -103,7 +103,7 @@ http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Octa-1280.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Octa-2560.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-Octa-2560-2.hex - ArduCopter V2.4 Octa X + ArduCopter V2.4.1 Octa X #define FRAME_CONFIG OCTA_FRAME @@ -162,7 +162,7 @@ http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-QUADHIL-1280.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-QUADHIL-2560.hex http://meee146-planner.googlecode.com/git/Tools/ArdupilotMegaPlanner/Firmware/AC2-QUADHIL-2560-2.hex - ArduCopter V2.4 Quad Hil + ArduCopter V2.4.1 Quad Hil #define FRAME_CONFIG QUAD_FRAME #define FRAME_ORIENTATION PLUS_FRAME From 4483f19f85dc6a1522188f71a5f318b12ce3a299 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Wed, 22 Feb 2012 09:55:22 -0800 Subject: [PATCH 005/122] Marco's Hexa Motors --- ArduCopter/motors_hexa.pde | 88 +++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 35 deletions(-) diff --git a/ArduCopter/motors_hexa.pde b/ArduCopter/motors_hexa.pde index 5c0e75cd8e..7ab56805ba 100644 --- a/ArduCopter/motors_hexa.pde +++ b/ArduCopter/motors_hexa.pde @@ -167,53 +167,71 @@ static void output_motor_test() motor_out[MOT_5] = g.rc_3.radio_min; motor_out[MOT_6] = g.rc_3.radio_min; - bool right = (g.rc_1.control_in > 3000); - bool left = (g.rc_1.control_in < -3000); - bool front = (g.rc_2.control_in < -3000); - bool back = (g.rc_2.control_in > 3000); - if(g.frame_orientation == X_FRAME){ - if(right && !(front || back)) - motor_out[MOT_1] += 150; // Right + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min); + delay(4000); + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min + 100); + delay(300); - if(left && !(front || back)) - motor_out[MOT_2] += 150; // Left + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min + 100); + delay(300); - if(back){ - if(left) - motor_out[MOT_6] += 150; - if(right) - motor_out[MOT_4] += 150; - } + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min + 100); + delay(300); + + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min + 100); + delay(300); + + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min + 100); + delay(300); + + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min + 100); + delay(300); - if(front){ - if(left) - motor_out[MOT_3] += 150; - if(right) - motor_out[MOT_5] += 150; } } else { /* PLUS_FRAME */ - if(front && !(left || right)) - motor_out[MOT_1] += 150; + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min); + delay(4000); + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min + 100); + delay(300); - if(back && !(left || right)) - motor_out[MOT_2] += 150; + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min + 100); + delay(300); - if(left){ - if(front) - motor_out[MOT_5] += 150; - if(back) - motor_out[MOT_3] += 150; - } + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min + 100); + delay(300); - if(right){ - if(front) - motor_out[MOT_4] += 150; - if(back) - motor_out[MOT_6] += 150; + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min + 100); + delay(300); + + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min + 100); + delay(300); + + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min + 100); + delay(300); } } From c7c16a5b0f054094514defd12d411af3de4201e2 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Wed, 22 Feb 2012 10:27:34 -0800 Subject: [PATCH 006/122] Emile's Fixes --- ArduCopter/motors_hexa.pde | 160 ++++++++++++++++++------------------- 1 file changed, 77 insertions(+), 83 deletions(-) diff --git a/ArduCopter/motors_hexa.pde b/ArduCopter/motors_hexa.pde index 7ab56805ba..64d3e52d34 100644 --- a/ArduCopter/motors_hexa.pde +++ b/ArduCopter/motors_hexa.pde @@ -5,19 +5,19 @@ static void init_motors_out() { #if INSTANT_PWM == 0 - APM_RC.SetFastOutputChannels( _BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4) - | _BV(MOT_5) | _BV(MOT_6) ); + APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4) + | _BV(MOT_5) | _BV(MOT_6)); #endif } static void motors_output_enable() { - APM_RC.enable_out(MOT_1); - APM_RC.enable_out(MOT_2); - APM_RC.enable_out(MOT_3); - APM_RC.enable_out(MOT_4); - APM_RC.enable_out(MOT_5); - APM_RC.enable_out(MOT_6); + APM_RC.enable_out(MOT_1); + APM_RC.enable_out(MOT_2); + APM_RC.enable_out(MOT_3); + APM_RC.enable_out(MOT_4); + APM_RC.enable_out(MOT_5); + APM_RC.enable_out(MOT_6); } static void output_motors_armed() @@ -44,7 +44,7 @@ static void output_motors_armed() //left side motor_out[MOT_2] = g.rc_3.radio_out + g.rc_1.pwm_out; // CCW Middle motor_out[MOT_3] = g.rc_3.radio_out + roll_out + pitch_out; // CW Front - motor_out[MOT_6] = g.rc_3.radio_out + roll_out - pitch_out; // CW Back + motor_out[MOT_6] = g.rc_3.radio_out + roll_out - pitch_out; // CW Back //right side motor_out[MOT_1] = g.rc_3.radio_out - g.rc_1.pwm_out; // CW Middle @@ -73,26 +73,26 @@ static void output_motors_armed() motor_out[MOT_3] -= g.rc_4.pwm_out; // CW motor_out[MOT_1] -= g.rc_4.pwm_out; // CW - motor_out[MOT_6] -= g.rc_4.pwm_out; // CW + motor_out[MOT_6] -= g.rc_4.pwm_out; // CW // Tridge's stability patch - for (int m = 0; m <= 6; m++) { - int c = ch_of_mot(m); - int c_opp = ch_of_mot(m^1); // m^1 is the opposite motor. c_opp is channel of opposite motor. - if (motor_out[c] > out_max) { - motor_out[c_opp] -= motor_out[c] - out_max; - motor_out[c] = out_max; - } - } + for (int m = 0; m <= 6; m++){ + int c = ch_of_mot(m); + int c_opp = ch_of_mot(m ^ 1); // m ^ 1 is the opposite motor. c_opp is channel of opposite motor. + if(motor_out[c] > out_max){ + motor_out[c_opp] -= motor_out[c] - out_max; + motor_out[c] = out_max; + } + } // limit output so motors don't stop - motor_out[MOT_1] = max(motor_out[MOT_1], out_min); - motor_out[MOT_2] = max(motor_out[MOT_2], out_min); - motor_out[MOT_3] = max(motor_out[MOT_3], out_min); - motor_out[MOT_4] = max(motor_out[MOT_4], out_min); - motor_out[MOT_5] = max(motor_out[MOT_5], out_min); - motor_out[MOT_6] = max(motor_out[MOT_6], out_min); + motor_out[MOT_1] = max(motor_out[MOT_1], out_min); + motor_out[MOT_2] = max(motor_out[MOT_2], out_min); + motor_out[MOT_3] = max(motor_out[MOT_3], out_min); + motor_out[MOT_4] = max(motor_out[MOT_4], out_min); + motor_out[MOT_5] = max(motor_out[MOT_5], out_min); + motor_out[MOT_6] = max(motor_out[MOT_6], out_min); #if CUT_MOTORS == ENABLED // if we are not sending a throttle output, we cut the motors @@ -108,8 +108,8 @@ static void output_motors_armed() // this filter slows the acceleration of motors vs the deceleration // Idea by Denny Rowland to help with his Yaw issue - for(int8_t m = 0; m <= 6; m++ ) { - int c = ch_of_mot(m); + for(int8_t m = 0; m <= 6; m++){ + int c = ch_of_mot(m); if(motor_filtered[c] < motor_out[c]){ motor_filtered[c] = (motor_out[c] + motor_filtered[c]) / 2; }else{ @@ -143,7 +143,7 @@ static void output_motors_disarmed() } // fill the motor_out[] array for HIL use - for (unsigned char i = 0; i < 8; i++) { + for (unsigned char i = 0; i < 8; i++){ motor_out[i] = g.rc_3.radio_min; } @@ -158,7 +158,7 @@ static void output_motors_disarmed() static void output_motor_test() { - motors_output_enable(); + motors_output_enable(); motor_out[MOT_1] = g.rc_3.radio_min; motor_out[MOT_2] = g.rc_3.radio_min; @@ -168,74 +168,68 @@ static void output_motor_test() motor_out[MOT_6] = g.rc_3.radio_min; if(g.frame_orientation == X_FRAME){ + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min); + delay(4000); + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_3, g.rc_3.radio_min); - delay(4000); - APM_RC.OutputCh(MOT_5, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_5, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_1, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_1, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_4, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_4, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_6, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_6, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_2, g.rc_3.radio_min + 100); - delay(300); - - APM_RC.OutputCh(MOT_2, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_3, g.rc_3.radio_min + 100); - delay(300); - - } + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min + 100); + delay(300); } else { /* PLUS_FRAME */ + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min); + delay(4000); + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_5, g.rc_3.radio_min); - delay(4000); - APM_RC.OutputCh(MOT_1, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_1, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_1, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_4, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_4, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_4, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_6, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_6, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_6, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_2, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_2, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min + 100); + delay(300); - APM_RC.OutputCh(MOT_2, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_3, g.rc_3.radio_min + 100); - delay(300); - - APM_RC.OutputCh(MOT_3, g.rc_3.radio_min); - delay(2000); - APM_RC.OutputCh(MOT_5, g.rc_3.radio_min + 100); - delay(300); + APM_RC.OutputCh(MOT_3, g.rc_3.radio_min); + delay(2000); + APM_RC.OutputCh(MOT_5, g.rc_3.radio_min + 100); + delay(300); } - } - APM_RC.OutputCh(MOT_1, motor_out[MOT_1]); APM_RC.OutputCh(MOT_2, motor_out[MOT_2]); APM_RC.OutputCh(MOT_3, motor_out[MOT_3]); @@ -244,4 +238,4 @@ static void output_motor_test() APM_RC.OutputCh(MOT_6, motor_out[MOT_6]); } -#endif +#endif \ No newline at end of file From 156d98cb9fdd04349c67e280e29740e98be5f6c5 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 17 Feb 2012 16:15:27 +1100 Subject: [PATCH 007/122] DCM: remove the taylor expansion optimisation for renormalisation The sqrt() costs about 44usec on a 2560, which is small enough for us not to worry about the speed. This also changes the range of values where we declare a blowup to much less likely, which means we can cope with larger delta_t glitches --- libraries/AP_DCM/AP_DCM.cpp | 45 +++++++++++++++++++++++++---------- libraries/AP_DCM/AP_DCM.h | 2 +- libraries/AP_DCM/AP_DCM_HIL.h | 2 +- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 765e9d106e..433e3721ab 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -260,21 +260,42 @@ AP_DCM::renorm(Vector3f const &a, int &problem) { float renorm_val; - renorm_val = a * a; + // numerical errors will slowly build up over time in DCM, + // causing inaccuracies. We can keep ahead of those errors + // using the renormalization technique from the DCM IMU paper + // (see equations 18 to 21). - if (renorm_val < 1.5625f && renorm_val > 0.64f) { // Check if we are OK to use Taylor expansion - renorm_val = 0.5 * (3 - renorm_val); // eq.21 - } else if (renorm_val < 100.0f && renorm_val > 0.01f) { - renorm_val = 1.0 / sqrt(renorm_val); - renorm_sqrt_count++; - } else { - problem = 1; - SITL_debug("ERROR: DCM renormalisation error. renorm_val=%f\n", - renorm_val); - renorm_blowup_count++; + // For APM we don't bother with the taylor expansion + // optimisation from the paper as on our 2560 CPU the cost of + // the sqrt() is 44 microseconds, and the small time saving of + // the taylor expansion is not worth the potential of + // additional error buildup. + + // Note that we can get significant renormalisation values + // when we have a larger delta_t due to a glitch eleswhere in + // APM, such as a I2c timeout or a set of EEPROM writes. While + // we would like to avoid these if possible, if it does happen + // we don't want to compound the error by making DCM less + // accurate. + + renorm_val = 1.0 / sqrt(a * a); + + if (renorm_val > 2.0 || renorm_val < 0.5) { + // this is larger than it should get - log it as a warning + renorm_range_count++; + if (renorm_val > 1.0e6 || renorm_val < 1.0e-6) { + // we are getting values which are way out of + // range, we will reset the matrix and hope we + // can recover our attitude using drift + // correction before we hit the ground! + problem = 1; + SITL_debug("ERROR: DCM renormalisation error. renorm_val=%f\n", + renorm_val); + renorm_blowup_count++; + } } - return(a * renorm_val); + return (a * renorm_val); } /**************************************************/ diff --git a/libraries/AP_DCM/AP_DCM.h b/libraries/AP_DCM/AP_DCM.h index bf1a539479..1523c80ea9 100644 --- a/libraries/AP_DCM/AP_DCM.h +++ b/libraries/AP_DCM/AP_DCM.h @@ -68,7 +68,7 @@ public: float yaw; // Radians uint8_t gyro_sat_count; - uint8_t renorm_sqrt_count; + uint8_t renorm_range_count; uint8_t renorm_blowup_count; float kp_roll_pitch() { return _kp_roll_pitch; } diff --git a/libraries/AP_DCM/AP_DCM_HIL.h b/libraries/AP_DCM/AP_DCM_HIL.h index ad59081f61..6ebdf13893 100644 --- a/libraries/AP_DCM/AP_DCM_HIL.h +++ b/libraries/AP_DCM/AP_DCM_HIL.h @@ -49,7 +49,7 @@ public: float yaw; // Radians uint8_t gyro_sat_count; - uint8_t renorm_sqrt_count; + uint8_t renorm_range_count; uint8_t renorm_blowup_count; From 95ef9206dca6240662dae09103e82ad7d1013d55 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 17 Feb 2012 16:15:51 +1100 Subject: [PATCH 008/122] DCM: renorm_sqrt_count is now called renorm_range_count --- ArduCopter/Log.pde | 2 +- ArduPlane/Log.pde | 2 +- ArduPlane/system.pde | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ArduCopter/Log.pde b/ArduCopter/Log.pde index 3833f4eb24..4866b15a9d 100644 --- a/ArduCopter/Log.pde +++ b/ArduCopter/Log.pde @@ -619,7 +619,7 @@ static void Log_Write_Performance() DataFlash.WriteByte(LOG_PERFORMANCE_MSG); DataFlash.WriteByte( dcm.gyro_sat_count); //1 DataFlash.WriteByte( imu.adc_constraints); //2 - DataFlash.WriteByte( dcm.renorm_sqrt_count); //3 + DataFlash.WriteByte( dcm.renorm_range_count); //3 DataFlash.WriteByte( dcm.renorm_blowup_count); //4 DataFlash.WriteByte( gps_fix_count); //5 DataFlash.WriteByte(END_BYTE); diff --git a/ArduPlane/Log.pde b/ArduPlane/Log.pde index da073b0873..5c7883a83e 100644 --- a/ArduPlane/Log.pde +++ b/ArduPlane/Log.pde @@ -241,7 +241,7 @@ static void Log_Write_Performance() DataFlash.WriteInt(G_Dt_max); DataFlash.WriteByte(dcm.gyro_sat_count); DataFlash.WriteByte(imu.adc_constraints); - DataFlash.WriteByte(dcm.renorm_sqrt_count); + DataFlash.WriteByte(dcm.renorm_range_count); DataFlash.WriteByte(dcm.renorm_blowup_count); DataFlash.WriteByte(gps_fix_count); DataFlash.WriteInt((int)(dcm.get_health() * 1000)); diff --git a/ArduPlane/system.pde b/ArduPlane/system.pde index 37d8fb17a2..2224508ee5 100644 --- a/ArduPlane/system.pde +++ b/ArduPlane/system.pde @@ -509,7 +509,7 @@ static void resetPerfData(void) { G_Dt_max = 0; dcm.gyro_sat_count = 0; imu.adc_constraints = 0; - dcm.renorm_sqrt_count = 0; + dcm.renorm_range_count = 0; dcm.renorm_blowup_count = 0; gps_fix_count = 0; pmTest1 = 0; From 2bb58db3f7836087ffcd79e498777bd4b7744769 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 23 Feb 2012 07:59:16 +1100 Subject: [PATCH 009/122] DCM: reset more values on renorm blowup when DCM blows up, we need to reset a lot more variables to ensure that any NaN values don't persist --- libraries/AP_DCM/AP_DCM.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 433e3721ab..4a1aae5360 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -211,6 +211,13 @@ AP_DCM::matrix_reset(void) _omega_I.x = 0.0f; _omega_I.y = 0.0f; _omega_I.z = 0.0f; + _omega_P = _omega_I; + _omega_integ_corr = _omega_I; + _omega = _omega_I; + _error_roll_pitch = _omega_I; + _error_yaw = _omega_I; + _errorCourse = 0; + if (_compass != NULL) { _compass->null_offsets_enable(); // This call is needed to restart the nulling // Otherwise the reset in the DCM matrix can mess up From 57ffd00b6905361ca102bc0fcd0977d64c401112 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 23 Feb 2012 08:00:25 +1100 Subject: [PATCH 010/122] DCM: range check the matrix before calculating pitch The asin() in the pitch calculation can only take values between -1 and 1. This change ensures that the value is in range, and if it isn't then we force a normalization. If that fails we reset the matrix --- libraries/AP_DCM/AP_DCM.cpp | 30 ++++++++++++++++++++++++++++++ libraries/AP_DCM/AP_DCM.h | 1 + 2 files changed, 31 insertions(+) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 4a1aae5360..e6b2e87f60 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -225,6 +225,33 @@ AP_DCM::matrix_reset(void) } } +/* + check the DCM matrix for pathological values + */ +void +AP_DCM::check_matrix(void) +{ + // some DCM matrix values can lead to an out of range error in + // the pitch calculation via asin(). These NaN values can + // feed back into the rest of the DCM matrix via the + // error_course value. + if (_dcm_matrix.c.x > 1.0 || + _dcm_matrix.c.x < -1.0) { + // We have an invalid matrix. Force a normalisation. + renorm_range_count++; + normalize(); + if (_dcm_matrix.c.x > 1.0 || + _dcm_matrix.c.x < -1.0) { + // normalisation didn't fix the problem! We're + // in real trouble. All we can do is reset + SITL_debug("ERROR: DCM matrix error. _dcm_matrix.c.x=%f\n", + _dcm_matrix.c.x); + renorm_blowup_count++; + matrix_reset(); + } + } +} + /************************************************* Direction Cosine Matrix IMU: Theory William Premerlani and Paul Bizard @@ -410,6 +437,8 @@ AP_DCM::drift_correction(void) void AP_DCM::euler_angles(void) { + check_matrix(); + #if (OUTPUTMODE == 2) // Only accelerometer info (debugging purposes) roll = atan2(_accel_vector.y, -_accel_vector.z); // atan2(acc_y, acc_z) pitch = asin((_accel_vector.x) / (double)9.81); // asin(acc_x) @@ -431,6 +460,7 @@ AP_DCM::euler_angles(void) void AP_DCM::euler_rp(void) { + check_matrix(); pitch = -asin(_dcm_matrix.c.x); roll = atan2(_dcm_matrix.c.y, _dcm_matrix.c.z); roll_sensor = roll * DEGX100; //degrees(roll) * 100; diff --git a/libraries/AP_DCM/AP_DCM.h b/libraries/AP_DCM/AP_DCM.h index 1523c80ea9..7ce6a5fd7b 100644 --- a/libraries/AP_DCM/AP_DCM.h +++ b/libraries/AP_DCM/AP_DCM.h @@ -101,6 +101,7 @@ private: float read_adc(int select); void matrix_update(float _G_Dt); void normalize(void); + void check_matrix(void); Vector3f renorm(Vector3f const &a, int &problem); void drift_correction(void); void euler_angles(void); From ef90f336d354952c2afb3f99fdc0c6fd18102033 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 23 Feb 2012 11:38:51 +1100 Subject: [PATCH 011/122] DCM: changed the sense of floating point range comparison This allows us to detect NaN, otherwise NaN values were considered 'in range' --- libraries/AP_DCM/AP_DCM.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index e6b2e87f60..aa1a1380a0 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -235,13 +235,13 @@ AP_DCM::check_matrix(void) // the pitch calculation via asin(). These NaN values can // feed back into the rest of the DCM matrix via the // error_course value. - if (_dcm_matrix.c.x > 1.0 || - _dcm_matrix.c.x < -1.0) { + if (!(_dcm_matrix.c.x < 1.0 && + _dcm_matrix.c.x > -1.0)) { // We have an invalid matrix. Force a normalisation. renorm_range_count++; normalize(); - if (_dcm_matrix.c.x > 1.0 || - _dcm_matrix.c.x < -1.0) { + if (!(_dcm_matrix.c.x < 1.0 && + _dcm_matrix.c.x > -1.0)) { // normalisation didn't fix the problem! We're // in real trouble. All we can do is reset SITL_debug("ERROR: DCM matrix error. _dcm_matrix.c.x=%f\n", @@ -314,10 +314,10 @@ AP_DCM::renorm(Vector3f const &a, int &problem) renorm_val = 1.0 / sqrt(a * a); - if (renorm_val > 2.0 || renorm_val < 0.5) { + if (!(renorm_val < 2.0 && renorm_val > 0.5)) { // this is larger than it should get - log it as a warning renorm_range_count++; - if (renorm_val > 1.0e6 || renorm_val < 1.0e-6) { + if (!(renorm_val < 1.0e6 && renorm_val > 1.0e-6)) { // we are getting values which are way out of // range, we will reset the matrix and hope we // can recover our attitude using drift From e3c3307c09941dae3138b572cf97fb17f8ba13ed Mon Sep 17 00:00:00 2001 From: Hazy Date: Thu, 23 Feb 2012 16:39:16 +0800 Subject: [PATCH 012/122] APM Planner a little bit translate --- .../GCSViews/Configuration.Designer.cs | 326 +- .../GCSViews/Configuration.resx | 12948 ++++++++-------- .../GCSViews/Configuration.zh-Hans.resx | 127 +- .../GCSViews/Simulation.Designer.cs | 92 +- .../GCSViews/Simulation.resx | 3902 ++--- .../GCSViews/Simulation.zh-Hans.resx | 32 +- .../MavlinkLog.zh-Hans.resx | 206 + 7 files changed, 9577 insertions(+), 8056 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/MavlinkLog.zh-Hans.resx diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs index 4c0332e32b..8e24a596ef 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs @@ -400,9 +400,9 @@ // // Params // + resources.ApplyResources(this.Params, "Params"); this.Params.AllowUserToAddRows = false; this.Params.AllowUserToDeleteRows = false; - resources.ApplyResources(this.Params, "Params"); dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle1.BackColor = System.Drawing.Color.Maroon; dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -428,6 +428,7 @@ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.Params.RowHeadersDefaultCellStyle = dataGridViewCellStyle2; this.Params.RowHeadersVisible = false; + this.toolTip1.SetToolTip(this.Params, resources.GetString("Params.ToolTip")); this.Params.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.Params_CellValueChanged); // // Command @@ -465,10 +466,12 @@ this.ConfigTabs.Controls.Add(this.TabSetup); this.ConfigTabs.Name = "ConfigTabs"; this.ConfigTabs.SelectedIndex = 0; + this.toolTip1.SetToolTip(this.ConfigTabs, resources.GetString("ConfigTabs.ToolTip")); this.ConfigTabs.SelectedIndexChanged += new System.EventHandler(this.Planner_TabIndexChanged); // // TabAP // + resources.ApplyResources(this.TabAP, "TabAP"); this.TabAP.BackColor = System.Drawing.Color.Transparent; this.TabAP.Controls.Add(this.groupBox3); this.TabAP.Controls.Add(this.groupBox1); @@ -482,11 +485,12 @@ this.TabAP.Controls.Add(this.groupBox10); this.TabAP.Controls.Add(this.groupBox9); this.TabAP.Controls.Add(this.groupBox8); - resources.ApplyResources(this.TabAP, "TabAP"); this.TabAP.Name = "TabAP"; + this.toolTip1.SetToolTip(this.TabAP, resources.GetString("TabAP.ToolTip")); // // groupBox3 // + resources.ApplyResources(this.groupBox3, "groupBox3"); this.groupBox3.Controls.Add(this.THR_FS_VALUE); this.groupBox3.Controls.Add(this.label5); this.groupBox3.Controls.Add(this.THR_MAX); @@ -495,52 +499,61 @@ this.groupBox3.Controls.Add(this.label7); this.groupBox3.Controls.Add(this.TRIM_THROTTLE); this.groupBox3.Controls.Add(this.label8); - resources.ApplyResources(this.groupBox3, "groupBox3"); this.groupBox3.Name = "groupBox3"; this.groupBox3.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox3, resources.GetString("groupBox3.ToolTip")); // // THR_FS_VALUE // resources.ApplyResources(this.THR_FS_VALUE, "THR_FS_VALUE"); this.THR_FS_VALUE.Name = "THR_FS_VALUE"; + this.toolTip1.SetToolTip(this.THR_FS_VALUE, resources.GetString("THR_FS_VALUE.ToolTip")); // // label5 // resources.ApplyResources(this.label5, "label5"); this.label5.Name = "label5"; + this.toolTip1.SetToolTip(this.label5, resources.GetString("label5.ToolTip")); // // THR_MAX // resources.ApplyResources(this.THR_MAX, "THR_MAX"); this.THR_MAX.Name = "THR_MAX"; + this.toolTip1.SetToolTip(this.THR_MAX, resources.GetString("THR_MAX.ToolTip")); // // label6 // resources.ApplyResources(this.label6, "label6"); this.label6.Name = "label6"; + this.toolTip1.SetToolTip(this.label6, resources.GetString("label6.ToolTip")); // // THR_MIN // resources.ApplyResources(this.THR_MIN, "THR_MIN"); this.THR_MIN.Name = "THR_MIN"; + this.toolTip1.SetToolTip(this.THR_MIN, resources.GetString("THR_MIN.ToolTip")); // // label7 // resources.ApplyResources(this.label7, "label7"); this.label7.Name = "label7"; + this.toolTip1.SetToolTip(this.label7, resources.GetString("label7.ToolTip")); // // TRIM_THROTTLE // resources.ApplyResources(this.TRIM_THROTTLE, "TRIM_THROTTLE"); this.TRIM_THROTTLE.Name = "TRIM_THROTTLE"; + this.toolTip1.SetToolTip(this.TRIM_THROTTLE, resources.GetString("TRIM_THROTTLE.ToolTip")); // // label8 // resources.ApplyResources(this.label8, "label8"); this.label8.Name = "label8"; + this.toolTip1.SetToolTip(this.label8, resources.GetString("label8.ToolTip")); // // groupBox1 // + resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Controls.Add(this.ARSPD_RATIO); this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.ARSPD_FBW_MAX); @@ -549,166 +562,194 @@ this.groupBox1.Controls.Add(this.label3); this.groupBox1.Controls.Add(this.TRIM_ARSPD_CM); this.groupBox1.Controls.Add(this.label4); - resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox1, resources.GetString("groupBox1.ToolTip")); // // ARSPD_RATIO // resources.ApplyResources(this.ARSPD_RATIO, "ARSPD_RATIO"); this.ARSPD_RATIO.Name = "ARSPD_RATIO"; + this.toolTip1.SetToolTip(this.ARSPD_RATIO, resources.GetString("ARSPD_RATIO.ToolTip")); // // label1 // resources.ApplyResources(this.label1, "label1"); this.label1.Name = "label1"; + this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip")); // // ARSPD_FBW_MAX // resources.ApplyResources(this.ARSPD_FBW_MAX, "ARSPD_FBW_MAX"); this.ARSPD_FBW_MAX.Name = "ARSPD_FBW_MAX"; + this.toolTip1.SetToolTip(this.ARSPD_FBW_MAX, resources.GetString("ARSPD_FBW_MAX.ToolTip")); // // label2 // resources.ApplyResources(this.label2, "label2"); this.label2.Name = "label2"; + this.toolTip1.SetToolTip(this.label2, resources.GetString("label2.ToolTip")); // // ARSPD_FBW_MIN // resources.ApplyResources(this.ARSPD_FBW_MIN, "ARSPD_FBW_MIN"); this.ARSPD_FBW_MIN.Name = "ARSPD_FBW_MIN"; + this.toolTip1.SetToolTip(this.ARSPD_FBW_MIN, resources.GetString("ARSPD_FBW_MIN.ToolTip")); // // label3 // resources.ApplyResources(this.label3, "label3"); this.label3.Name = "label3"; + this.toolTip1.SetToolTip(this.label3, resources.GetString("label3.ToolTip")); // // TRIM_ARSPD_CM // resources.ApplyResources(this.TRIM_ARSPD_CM, "TRIM_ARSPD_CM"); this.TRIM_ARSPD_CM.Name = "TRIM_ARSPD_CM"; + this.toolTip1.SetToolTip(this.TRIM_ARSPD_CM, resources.GetString("TRIM_ARSPD_CM.ToolTip")); // // label4 // resources.ApplyResources(this.label4, "label4"); this.label4.Name = "label4"; + this.toolTip1.SetToolTip(this.label4, resources.GetString("label4.ToolTip")); // // groupBox2 // + resources.ApplyResources(this.groupBox2, "groupBox2"); this.groupBox2.Controls.Add(this.LIM_PITCH_MIN); this.groupBox2.Controls.Add(this.label39); this.groupBox2.Controls.Add(this.LIM_PITCH_MAX); this.groupBox2.Controls.Add(this.label38); this.groupBox2.Controls.Add(this.LIM_ROLL_CD); this.groupBox2.Controls.Add(this.label37); - resources.ApplyResources(this.groupBox2, "groupBox2"); this.groupBox2.Name = "groupBox2"; this.groupBox2.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox2, resources.GetString("groupBox2.ToolTip")); // // LIM_PITCH_MIN // resources.ApplyResources(this.LIM_PITCH_MIN, "LIM_PITCH_MIN"); this.LIM_PITCH_MIN.Name = "LIM_PITCH_MIN"; + this.toolTip1.SetToolTip(this.LIM_PITCH_MIN, resources.GetString("LIM_PITCH_MIN.ToolTip")); // // label39 // resources.ApplyResources(this.label39, "label39"); this.label39.Name = "label39"; + this.toolTip1.SetToolTip(this.label39, resources.GetString("label39.ToolTip")); // // LIM_PITCH_MAX // resources.ApplyResources(this.LIM_PITCH_MAX, "LIM_PITCH_MAX"); this.LIM_PITCH_MAX.Name = "LIM_PITCH_MAX"; + this.toolTip1.SetToolTip(this.LIM_PITCH_MAX, resources.GetString("LIM_PITCH_MAX.ToolTip")); // // label38 // resources.ApplyResources(this.label38, "label38"); this.label38.Name = "label38"; + this.toolTip1.SetToolTip(this.label38, resources.GetString("label38.ToolTip")); // // LIM_ROLL_CD // resources.ApplyResources(this.LIM_ROLL_CD, "LIM_ROLL_CD"); this.LIM_ROLL_CD.Name = "LIM_ROLL_CD"; + this.toolTip1.SetToolTip(this.LIM_ROLL_CD, resources.GetString("LIM_ROLL_CD.ToolTip")); // // label37 // resources.ApplyResources(this.label37, "label37"); this.label37.Name = "label37"; + this.toolTip1.SetToolTip(this.label37, resources.GetString("label37.ToolTip")); // // groupBox15 // + resources.ApplyResources(this.groupBox15, "groupBox15"); this.groupBox15.Controls.Add(this.XTRK_ANGLE_CD); this.groupBox15.Controls.Add(this.label79); this.groupBox15.Controls.Add(this.XTRK_GAIN_SC); this.groupBox15.Controls.Add(this.label80); - resources.ApplyResources(this.groupBox15, "groupBox15"); this.groupBox15.Name = "groupBox15"; this.groupBox15.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox15, resources.GetString("groupBox15.ToolTip")); // // XTRK_ANGLE_CD // resources.ApplyResources(this.XTRK_ANGLE_CD, "XTRK_ANGLE_CD"); this.XTRK_ANGLE_CD.Name = "XTRK_ANGLE_CD"; + this.toolTip1.SetToolTip(this.XTRK_ANGLE_CD, resources.GetString("XTRK_ANGLE_CD.ToolTip")); // // label79 // resources.ApplyResources(this.label79, "label79"); this.label79.Name = "label79"; + this.toolTip1.SetToolTip(this.label79, resources.GetString("label79.ToolTip")); // // XTRK_GAIN_SC // resources.ApplyResources(this.XTRK_GAIN_SC, "XTRK_GAIN_SC"); this.XTRK_GAIN_SC.Name = "XTRK_GAIN_SC"; + this.toolTip1.SetToolTip(this.XTRK_GAIN_SC, resources.GetString("XTRK_GAIN_SC.ToolTip")); // // label80 // resources.ApplyResources(this.label80, "label80"); this.label80.Name = "label80"; + this.toolTip1.SetToolTip(this.label80, resources.GetString("label80.ToolTip")); // // groupBox16 // + resources.ApplyResources(this.groupBox16, "groupBox16"); this.groupBox16.Controls.Add(this.KFF_PTCH2THR); this.groupBox16.Controls.Add(this.label83); this.groupBox16.Controls.Add(this.KFF_RDDRMIX); this.groupBox16.Controls.Add(this.label78); this.groupBox16.Controls.Add(this.KFF_PTCHCOMP); this.groupBox16.Controls.Add(this.label81); - resources.ApplyResources(this.groupBox16, "groupBox16"); this.groupBox16.Name = "groupBox16"; this.groupBox16.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox16, resources.GetString("groupBox16.ToolTip")); // // KFF_PTCH2THR // resources.ApplyResources(this.KFF_PTCH2THR, "KFF_PTCH2THR"); this.KFF_PTCH2THR.Name = "KFF_PTCH2THR"; + this.toolTip1.SetToolTip(this.KFF_PTCH2THR, resources.GetString("KFF_PTCH2THR.ToolTip")); // // label83 // resources.ApplyResources(this.label83, "label83"); this.label83.Name = "label83"; + this.toolTip1.SetToolTip(this.label83, resources.GetString("label83.ToolTip")); // // KFF_RDDRMIX // resources.ApplyResources(this.KFF_RDDRMIX, "KFF_RDDRMIX"); this.KFF_RDDRMIX.Name = "KFF_RDDRMIX"; + this.toolTip1.SetToolTip(this.KFF_RDDRMIX, resources.GetString("KFF_RDDRMIX.ToolTip")); // // label78 // resources.ApplyResources(this.label78, "label78"); this.label78.Name = "label78"; + this.toolTip1.SetToolTip(this.label78, resources.GetString("label78.ToolTip")); // // KFF_PTCHCOMP // resources.ApplyResources(this.KFF_PTCHCOMP, "KFF_PTCHCOMP"); this.KFF_PTCHCOMP.Name = "KFF_PTCHCOMP"; + this.toolTip1.SetToolTip(this.KFF_PTCHCOMP, resources.GetString("KFF_PTCHCOMP.ToolTip")); // // label81 // resources.ApplyResources(this.label81, "label81"); this.label81.Name = "label81"; + this.toolTip1.SetToolTip(this.label81, resources.GetString("label81.ToolTip")); // // groupBox14 // + resources.ApplyResources(this.groupBox14, "groupBox14"); this.groupBox14.Controls.Add(this.ENRGY2THR_IMAX); this.groupBox14.Controls.Add(this.label73); this.groupBox14.Controls.Add(this.ENRGY2THR_D); @@ -717,52 +758,61 @@ this.groupBox14.Controls.Add(this.label75); this.groupBox14.Controls.Add(this.ENRGY2THR_P); this.groupBox14.Controls.Add(this.label76); - resources.ApplyResources(this.groupBox14, "groupBox14"); this.groupBox14.Name = "groupBox14"; this.groupBox14.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox14, resources.GetString("groupBox14.ToolTip")); // // ENRGY2THR_IMAX // resources.ApplyResources(this.ENRGY2THR_IMAX, "ENRGY2THR_IMAX"); this.ENRGY2THR_IMAX.Name = "ENRGY2THR_IMAX"; + this.toolTip1.SetToolTip(this.ENRGY2THR_IMAX, resources.GetString("ENRGY2THR_IMAX.ToolTip")); // // label73 // resources.ApplyResources(this.label73, "label73"); this.label73.Name = "label73"; + this.toolTip1.SetToolTip(this.label73, resources.GetString("label73.ToolTip")); // // ENRGY2THR_D // resources.ApplyResources(this.ENRGY2THR_D, "ENRGY2THR_D"); this.ENRGY2THR_D.Name = "ENRGY2THR_D"; + this.toolTip1.SetToolTip(this.ENRGY2THR_D, resources.GetString("ENRGY2THR_D.ToolTip")); // // label74 // resources.ApplyResources(this.label74, "label74"); this.label74.Name = "label74"; + this.toolTip1.SetToolTip(this.label74, resources.GetString("label74.ToolTip")); // // ENRGY2THR_I // resources.ApplyResources(this.ENRGY2THR_I, "ENRGY2THR_I"); this.ENRGY2THR_I.Name = "ENRGY2THR_I"; + this.toolTip1.SetToolTip(this.ENRGY2THR_I, resources.GetString("ENRGY2THR_I.ToolTip")); // // label75 // resources.ApplyResources(this.label75, "label75"); this.label75.Name = "label75"; + this.toolTip1.SetToolTip(this.label75, resources.GetString("label75.ToolTip")); // // ENRGY2THR_P // resources.ApplyResources(this.ENRGY2THR_P, "ENRGY2THR_P"); this.ENRGY2THR_P.Name = "ENRGY2THR_P"; + this.toolTip1.SetToolTip(this.ENRGY2THR_P, resources.GetString("ENRGY2THR_P.ToolTip")); // // label76 // resources.ApplyResources(this.label76, "label76"); this.label76.Name = "label76"; + this.toolTip1.SetToolTip(this.label76, resources.GetString("label76.ToolTip")); // // groupBox13 // + resources.ApplyResources(this.groupBox13, "groupBox13"); this.groupBox13.Controls.Add(this.ALT2PTCH_IMAX); this.groupBox13.Controls.Add(this.label69); this.groupBox13.Controls.Add(this.ALT2PTCH_D); @@ -771,52 +821,61 @@ this.groupBox13.Controls.Add(this.label71); this.groupBox13.Controls.Add(this.ALT2PTCH_P); this.groupBox13.Controls.Add(this.label72); - resources.ApplyResources(this.groupBox13, "groupBox13"); this.groupBox13.Name = "groupBox13"; this.groupBox13.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox13, resources.GetString("groupBox13.ToolTip")); // // ALT2PTCH_IMAX // resources.ApplyResources(this.ALT2PTCH_IMAX, "ALT2PTCH_IMAX"); this.ALT2PTCH_IMAX.Name = "ALT2PTCH_IMAX"; + this.toolTip1.SetToolTip(this.ALT2PTCH_IMAX, resources.GetString("ALT2PTCH_IMAX.ToolTip")); // // label69 // resources.ApplyResources(this.label69, "label69"); this.label69.Name = "label69"; + this.toolTip1.SetToolTip(this.label69, resources.GetString("label69.ToolTip")); // // ALT2PTCH_D // resources.ApplyResources(this.ALT2PTCH_D, "ALT2PTCH_D"); this.ALT2PTCH_D.Name = "ALT2PTCH_D"; + this.toolTip1.SetToolTip(this.ALT2PTCH_D, resources.GetString("ALT2PTCH_D.ToolTip")); // // label70 // resources.ApplyResources(this.label70, "label70"); this.label70.Name = "label70"; + this.toolTip1.SetToolTip(this.label70, resources.GetString("label70.ToolTip")); // // ALT2PTCH_I // resources.ApplyResources(this.ALT2PTCH_I, "ALT2PTCH_I"); this.ALT2PTCH_I.Name = "ALT2PTCH_I"; + this.toolTip1.SetToolTip(this.ALT2PTCH_I, resources.GetString("ALT2PTCH_I.ToolTip")); // // label71 // resources.ApplyResources(this.label71, "label71"); this.label71.Name = "label71"; + this.toolTip1.SetToolTip(this.label71, resources.GetString("label71.ToolTip")); // // ALT2PTCH_P // resources.ApplyResources(this.ALT2PTCH_P, "ALT2PTCH_P"); this.ALT2PTCH_P.Name = "ALT2PTCH_P"; + this.toolTip1.SetToolTip(this.ALT2PTCH_P, resources.GetString("ALT2PTCH_P.ToolTip")); // // label72 // resources.ApplyResources(this.label72, "label72"); this.label72.Name = "label72"; + this.toolTip1.SetToolTip(this.label72, resources.GetString("label72.ToolTip")); // // groupBox12 // + resources.ApplyResources(this.groupBox12, "groupBox12"); this.groupBox12.Controls.Add(this.ARSP2PTCH_IMAX); this.groupBox12.Controls.Add(this.label65); this.groupBox12.Controls.Add(this.ARSP2PTCH_D); @@ -825,52 +884,61 @@ this.groupBox12.Controls.Add(this.label67); this.groupBox12.Controls.Add(this.ARSP2PTCH_P); this.groupBox12.Controls.Add(this.label68); - resources.ApplyResources(this.groupBox12, "groupBox12"); this.groupBox12.Name = "groupBox12"; this.groupBox12.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox12, resources.GetString("groupBox12.ToolTip")); // // ARSP2PTCH_IMAX // resources.ApplyResources(this.ARSP2PTCH_IMAX, "ARSP2PTCH_IMAX"); this.ARSP2PTCH_IMAX.Name = "ARSP2PTCH_IMAX"; + this.toolTip1.SetToolTip(this.ARSP2PTCH_IMAX, resources.GetString("ARSP2PTCH_IMAX.ToolTip")); // // label65 // resources.ApplyResources(this.label65, "label65"); this.label65.Name = "label65"; + this.toolTip1.SetToolTip(this.label65, resources.GetString("label65.ToolTip")); // // ARSP2PTCH_D // resources.ApplyResources(this.ARSP2PTCH_D, "ARSP2PTCH_D"); this.ARSP2PTCH_D.Name = "ARSP2PTCH_D"; + this.toolTip1.SetToolTip(this.ARSP2PTCH_D, resources.GetString("ARSP2PTCH_D.ToolTip")); // // label66 // resources.ApplyResources(this.label66, "label66"); this.label66.Name = "label66"; + this.toolTip1.SetToolTip(this.label66, resources.GetString("label66.ToolTip")); // // ARSP2PTCH_I // resources.ApplyResources(this.ARSP2PTCH_I, "ARSP2PTCH_I"); this.ARSP2PTCH_I.Name = "ARSP2PTCH_I"; + this.toolTip1.SetToolTip(this.ARSP2PTCH_I, resources.GetString("ARSP2PTCH_I.ToolTip")); // // label67 // resources.ApplyResources(this.label67, "label67"); this.label67.Name = "label67"; + this.toolTip1.SetToolTip(this.label67, resources.GetString("label67.ToolTip")); // // ARSP2PTCH_P // resources.ApplyResources(this.ARSP2PTCH_P, "ARSP2PTCH_P"); this.ARSP2PTCH_P.Name = "ARSP2PTCH_P"; + this.toolTip1.SetToolTip(this.ARSP2PTCH_P, resources.GetString("ARSP2PTCH_P.ToolTip")); // // label68 // resources.ApplyResources(this.label68, "label68"); this.label68.Name = "label68"; + this.toolTip1.SetToolTip(this.label68, resources.GetString("label68.ToolTip")); // // groupBox11 // + resources.ApplyResources(this.groupBox11, "groupBox11"); this.groupBox11.Controls.Add(this.HDNG2RLL_IMAX); this.groupBox11.Controls.Add(this.label61); this.groupBox11.Controls.Add(this.HDNG2RLL_D); @@ -879,52 +947,61 @@ this.groupBox11.Controls.Add(this.label63); this.groupBox11.Controls.Add(this.HDNG2RLL_P); this.groupBox11.Controls.Add(this.label64); - resources.ApplyResources(this.groupBox11, "groupBox11"); this.groupBox11.Name = "groupBox11"; this.groupBox11.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox11, resources.GetString("groupBox11.ToolTip")); // // HDNG2RLL_IMAX // resources.ApplyResources(this.HDNG2RLL_IMAX, "HDNG2RLL_IMAX"); this.HDNG2RLL_IMAX.Name = "HDNG2RLL_IMAX"; + this.toolTip1.SetToolTip(this.HDNG2RLL_IMAX, resources.GetString("HDNG2RLL_IMAX.ToolTip")); // // label61 // resources.ApplyResources(this.label61, "label61"); this.label61.Name = "label61"; + this.toolTip1.SetToolTip(this.label61, resources.GetString("label61.ToolTip")); // // HDNG2RLL_D // resources.ApplyResources(this.HDNG2RLL_D, "HDNG2RLL_D"); this.HDNG2RLL_D.Name = "HDNG2RLL_D"; + this.toolTip1.SetToolTip(this.HDNG2RLL_D, resources.GetString("HDNG2RLL_D.ToolTip")); // // label62 // resources.ApplyResources(this.label62, "label62"); this.label62.Name = "label62"; + this.toolTip1.SetToolTip(this.label62, resources.GetString("label62.ToolTip")); // // HDNG2RLL_I // resources.ApplyResources(this.HDNG2RLL_I, "HDNG2RLL_I"); this.HDNG2RLL_I.Name = "HDNG2RLL_I"; + this.toolTip1.SetToolTip(this.HDNG2RLL_I, resources.GetString("HDNG2RLL_I.ToolTip")); // // label63 // resources.ApplyResources(this.label63, "label63"); this.label63.Name = "label63"; + this.toolTip1.SetToolTip(this.label63, resources.GetString("label63.ToolTip")); // // HDNG2RLL_P // resources.ApplyResources(this.HDNG2RLL_P, "HDNG2RLL_P"); this.HDNG2RLL_P.Name = "HDNG2RLL_P"; + this.toolTip1.SetToolTip(this.HDNG2RLL_P, resources.GetString("HDNG2RLL_P.ToolTip")); // // label64 // resources.ApplyResources(this.label64, "label64"); this.label64.Name = "label64"; + this.toolTip1.SetToolTip(this.label64, resources.GetString("label64.ToolTip")); // // groupBox10 // + resources.ApplyResources(this.groupBox10, "groupBox10"); this.groupBox10.Controls.Add(this.YW2SRV_IMAX); this.groupBox10.Controls.Add(this.label57); this.groupBox10.Controls.Add(this.YW2SRV_D); @@ -933,52 +1010,61 @@ this.groupBox10.Controls.Add(this.label59); this.groupBox10.Controls.Add(this.YW2SRV_P); this.groupBox10.Controls.Add(this.label60); - resources.ApplyResources(this.groupBox10, "groupBox10"); this.groupBox10.Name = "groupBox10"; this.groupBox10.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox10, resources.GetString("groupBox10.ToolTip")); // // YW2SRV_IMAX // resources.ApplyResources(this.YW2SRV_IMAX, "YW2SRV_IMAX"); this.YW2SRV_IMAX.Name = "YW2SRV_IMAX"; + this.toolTip1.SetToolTip(this.YW2SRV_IMAX, resources.GetString("YW2SRV_IMAX.ToolTip")); // // label57 // resources.ApplyResources(this.label57, "label57"); this.label57.Name = "label57"; + this.toolTip1.SetToolTip(this.label57, resources.GetString("label57.ToolTip")); // // YW2SRV_D // resources.ApplyResources(this.YW2SRV_D, "YW2SRV_D"); this.YW2SRV_D.Name = "YW2SRV_D"; + this.toolTip1.SetToolTip(this.YW2SRV_D, resources.GetString("YW2SRV_D.ToolTip")); // // label58 // resources.ApplyResources(this.label58, "label58"); this.label58.Name = "label58"; + this.toolTip1.SetToolTip(this.label58, resources.GetString("label58.ToolTip")); // // YW2SRV_I // resources.ApplyResources(this.YW2SRV_I, "YW2SRV_I"); this.YW2SRV_I.Name = "YW2SRV_I"; + this.toolTip1.SetToolTip(this.YW2SRV_I, resources.GetString("YW2SRV_I.ToolTip")); // // label59 // resources.ApplyResources(this.label59, "label59"); this.label59.Name = "label59"; + this.toolTip1.SetToolTip(this.label59, resources.GetString("label59.ToolTip")); // // YW2SRV_P // resources.ApplyResources(this.YW2SRV_P, "YW2SRV_P"); this.YW2SRV_P.Name = "YW2SRV_P"; + this.toolTip1.SetToolTip(this.YW2SRV_P, resources.GetString("YW2SRV_P.ToolTip")); // // label60 // resources.ApplyResources(this.label60, "label60"); this.label60.Name = "label60"; + this.toolTip1.SetToolTip(this.label60, resources.GetString("label60.ToolTip")); // // groupBox9 // + resources.ApplyResources(this.groupBox9, "groupBox9"); this.groupBox9.Controls.Add(this.PTCH2SRV_IMAX); this.groupBox9.Controls.Add(this.label53); this.groupBox9.Controls.Add(this.PTCH2SRV_D); @@ -987,52 +1073,61 @@ this.groupBox9.Controls.Add(this.label55); this.groupBox9.Controls.Add(this.PTCH2SRV_P); this.groupBox9.Controls.Add(this.label56); - resources.ApplyResources(this.groupBox9, "groupBox9"); this.groupBox9.Name = "groupBox9"; this.groupBox9.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox9, resources.GetString("groupBox9.ToolTip")); // // PTCH2SRV_IMAX // resources.ApplyResources(this.PTCH2SRV_IMAX, "PTCH2SRV_IMAX"); this.PTCH2SRV_IMAX.Name = "PTCH2SRV_IMAX"; + this.toolTip1.SetToolTip(this.PTCH2SRV_IMAX, resources.GetString("PTCH2SRV_IMAX.ToolTip")); // // label53 // resources.ApplyResources(this.label53, "label53"); this.label53.Name = "label53"; + this.toolTip1.SetToolTip(this.label53, resources.GetString("label53.ToolTip")); // // PTCH2SRV_D // resources.ApplyResources(this.PTCH2SRV_D, "PTCH2SRV_D"); this.PTCH2SRV_D.Name = "PTCH2SRV_D"; + this.toolTip1.SetToolTip(this.PTCH2SRV_D, resources.GetString("PTCH2SRV_D.ToolTip")); // // label54 // resources.ApplyResources(this.label54, "label54"); this.label54.Name = "label54"; + this.toolTip1.SetToolTip(this.label54, resources.GetString("label54.ToolTip")); // // PTCH2SRV_I // resources.ApplyResources(this.PTCH2SRV_I, "PTCH2SRV_I"); this.PTCH2SRV_I.Name = "PTCH2SRV_I"; + this.toolTip1.SetToolTip(this.PTCH2SRV_I, resources.GetString("PTCH2SRV_I.ToolTip")); // // label55 // resources.ApplyResources(this.label55, "label55"); this.label55.Name = "label55"; + this.toolTip1.SetToolTip(this.label55, resources.GetString("label55.ToolTip")); // // PTCH2SRV_P // resources.ApplyResources(this.PTCH2SRV_P, "PTCH2SRV_P"); this.PTCH2SRV_P.Name = "PTCH2SRV_P"; + this.toolTip1.SetToolTip(this.PTCH2SRV_P, resources.GetString("PTCH2SRV_P.ToolTip")); // // label56 // resources.ApplyResources(this.label56, "label56"); this.label56.Name = "label56"; + this.toolTip1.SetToolTip(this.label56, resources.GetString("label56.ToolTip")); // // groupBox8 // + resources.ApplyResources(this.groupBox8, "groupBox8"); this.groupBox8.Controls.Add(this.RLL2SRV_IMAX); this.groupBox8.Controls.Add(this.label49); this.groupBox8.Controls.Add(this.RLL2SRV_D); @@ -1041,52 +1136,61 @@ this.groupBox8.Controls.Add(this.label51); this.groupBox8.Controls.Add(this.RLL2SRV_P); this.groupBox8.Controls.Add(this.label52); - resources.ApplyResources(this.groupBox8, "groupBox8"); this.groupBox8.Name = "groupBox8"; this.groupBox8.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox8, resources.GetString("groupBox8.ToolTip")); // // RLL2SRV_IMAX // resources.ApplyResources(this.RLL2SRV_IMAX, "RLL2SRV_IMAX"); this.RLL2SRV_IMAX.Name = "RLL2SRV_IMAX"; + this.toolTip1.SetToolTip(this.RLL2SRV_IMAX, resources.GetString("RLL2SRV_IMAX.ToolTip")); // // label49 // resources.ApplyResources(this.label49, "label49"); this.label49.Name = "label49"; + this.toolTip1.SetToolTip(this.label49, resources.GetString("label49.ToolTip")); // // RLL2SRV_D // resources.ApplyResources(this.RLL2SRV_D, "RLL2SRV_D"); this.RLL2SRV_D.Name = "RLL2SRV_D"; + this.toolTip1.SetToolTip(this.RLL2SRV_D, resources.GetString("RLL2SRV_D.ToolTip")); // // label50 // resources.ApplyResources(this.label50, "label50"); this.label50.Name = "label50"; + this.toolTip1.SetToolTip(this.label50, resources.GetString("label50.ToolTip")); // // RLL2SRV_I // resources.ApplyResources(this.RLL2SRV_I, "RLL2SRV_I"); this.RLL2SRV_I.Name = "RLL2SRV_I"; + this.toolTip1.SetToolTip(this.RLL2SRV_I, resources.GetString("RLL2SRV_I.ToolTip")); // // label51 // resources.ApplyResources(this.label51, "label51"); this.label51.Name = "label51"; + this.toolTip1.SetToolTip(this.label51, resources.GetString("label51.ToolTip")); // // RLL2SRV_P // resources.ApplyResources(this.RLL2SRV_P, "RLL2SRV_P"); this.RLL2SRV_P.Name = "RLL2SRV_P"; + this.toolTip1.SetToolTip(this.RLL2SRV_P, resources.GetString("RLL2SRV_P.ToolTip")); // // label52 // resources.ApplyResources(this.label52, "label52"); this.label52.Name = "label52"; + this.toolTip1.SetToolTip(this.label52, resources.GetString("label52.ToolTip")); // // TabAC // + resources.ApplyResources(this.TabAC, "TabAC"); this.TabAC.Controls.Add(this.myLabel2); this.TabAC.Controls.Add(this.TUNE); this.TabAC.Controls.Add(this.myLabel1); @@ -1103,17 +1207,19 @@ this.TabAC.Controls.Add(this.groupBox23); this.TabAC.Controls.Add(this.groupBox24); this.TabAC.Controls.Add(this.groupBox25); - resources.ApplyResources(this.TabAC, "TabAC"); this.TabAC.Name = "TabAC"; + this.toolTip1.SetToolTip(this.TabAC, resources.GetString("TabAC.ToolTip")); // // myLabel2 // resources.ApplyResources(this.myLabel2, "myLabel2"); this.myLabel2.Name = "myLabel2"; this.myLabel2.resize = false; + this.toolTip1.SetToolTip(this.myLabel2, resources.GetString("myLabel2.ToolTip")); // // TUNE // + resources.ApplyResources(this.TUNE, "TUNE"); this.TUNE.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.TUNE.DropDownWidth = 150; this.TUNE.FormattingEnabled = true; @@ -1139,17 +1245,19 @@ resources.GetString("TUNE.Items18"), resources.GetString("TUNE.Items19"), resources.GetString("TUNE.Items20")}); - resources.ApplyResources(this.TUNE, "TUNE"); this.TUNE.Name = "TUNE"; + this.toolTip1.SetToolTip(this.TUNE, resources.GetString("TUNE.ToolTip")); // // myLabel1 // resources.ApplyResources(this.myLabel1, "myLabel1"); this.myLabel1.Name = "myLabel1"; this.myLabel1.resize = false; + this.toolTip1.SetToolTip(this.myLabel1, resources.GetString("myLabel1.ToolTip")); // // CH7_OPT // + resources.ApplyResources(this.CH7_OPT, "CH7_OPT"); this.CH7_OPT.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CH7_OPT.DropDownWidth = 150; this.CH7_OPT.FormattingEnabled = true; @@ -1162,11 +1270,12 @@ resources.GetString("CH7_OPT.Items5"), resources.GetString("CH7_OPT.Items6"), resources.GetString("CH7_OPT.Items7")}); - resources.ApplyResources(this.CH7_OPT, "CH7_OPT"); this.CH7_OPT.Name = "CH7_OPT"; + this.toolTip1.SetToolTip(this.CH7_OPT, resources.GetString("CH7_OPT.ToolTip")); // // groupBox5 // + resources.ApplyResources(this.groupBox5, "groupBox5"); this.groupBox5.Controls.Add(this.THR_RATE_D); this.groupBox5.Controls.Add(this.label29); this.groupBox5.Controls.Add(this.label14); @@ -1175,49 +1284,57 @@ this.groupBox5.Controls.Add(this.label20); this.groupBox5.Controls.Add(this.THR_RATE_P); this.groupBox5.Controls.Add(this.label25); - resources.ApplyResources(this.groupBox5, "groupBox5"); this.groupBox5.Name = "groupBox5"; this.groupBox5.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox5, resources.GetString("groupBox5.ToolTip")); // // THR_RATE_D // resources.ApplyResources(this.THR_RATE_D, "THR_RATE_D"); this.THR_RATE_D.Name = "THR_RATE_D"; + this.toolTip1.SetToolTip(this.THR_RATE_D, resources.GetString("THR_RATE_D.ToolTip")); // // label29 // resources.ApplyResources(this.label29, "label29"); this.label29.Name = "label29"; + this.toolTip1.SetToolTip(this.label29, resources.GetString("label29.ToolTip")); // // label14 // resources.ApplyResources(this.label14, "label14"); this.label14.Name = "label14"; + this.toolTip1.SetToolTip(this.label14, resources.GetString("label14.ToolTip")); // // THR_RATE_IMAX // resources.ApplyResources(this.THR_RATE_IMAX, "THR_RATE_IMAX"); this.THR_RATE_IMAX.Name = "THR_RATE_IMAX"; + this.toolTip1.SetToolTip(this.THR_RATE_IMAX, resources.GetString("THR_RATE_IMAX.ToolTip")); // // THR_RATE_I // resources.ApplyResources(this.THR_RATE_I, "THR_RATE_I"); this.THR_RATE_I.Name = "THR_RATE_I"; + this.toolTip1.SetToolTip(this.THR_RATE_I, resources.GetString("THR_RATE_I.ToolTip")); // // label20 // resources.ApplyResources(this.label20, "label20"); this.label20.Name = "label20"; + this.toolTip1.SetToolTip(this.label20, resources.GetString("label20.ToolTip")); // // THR_RATE_P // resources.ApplyResources(this.THR_RATE_P, "THR_RATE_P"); this.THR_RATE_P.Name = "THR_RATE_P"; + this.toolTip1.SetToolTip(this.THR_RATE_P, resources.GetString("THR_RATE_P.ToolTip")); // // label25 // resources.ApplyResources(this.label25, "label25"); this.label25.Name = "label25"; + this.toolTip1.SetToolTip(this.label25, resources.GetString("label25.ToolTip")); // // CHK_lockrollpitch // @@ -1225,11 +1342,13 @@ this.CHK_lockrollpitch.Checked = true; this.CHK_lockrollpitch.CheckState = System.Windows.Forms.CheckState.Checked; this.CHK_lockrollpitch.Name = "CHK_lockrollpitch"; + this.toolTip1.SetToolTip(this.CHK_lockrollpitch, resources.GetString("CHK_lockrollpitch.ToolTip")); this.CHK_lockrollpitch.UseVisualStyleBackColor = true; this.CHK_lockrollpitch.CheckedChanged += new System.EventHandler(this.CHK_lockrollpitch_CheckedChanged); // // groupBox4 // + resources.ApplyResources(this.groupBox4, "groupBox4"); this.groupBox4.Controls.Add(this.NAV_LAT_D); this.groupBox4.Controls.Add(this.label27); this.groupBox4.Controls.Add(this.WP_SPEED_MAX); @@ -1240,206 +1359,241 @@ this.groupBox4.Controls.Add(this.label15); this.groupBox4.Controls.Add(this.NAV_LAT_P); this.groupBox4.Controls.Add(this.label16); - resources.ApplyResources(this.groupBox4, "groupBox4"); this.groupBox4.Name = "groupBox4"; this.groupBox4.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox4, resources.GetString("groupBox4.ToolTip")); // // NAV_LAT_D // resources.ApplyResources(this.NAV_LAT_D, "NAV_LAT_D"); this.NAV_LAT_D.Name = "NAV_LAT_D"; + this.toolTip1.SetToolTip(this.NAV_LAT_D, resources.GetString("NAV_LAT_D.ToolTip")); // // label27 // resources.ApplyResources(this.label27, "label27"); this.label27.Name = "label27"; + this.toolTip1.SetToolTip(this.label27, resources.GetString("label27.ToolTip")); // // WP_SPEED_MAX // resources.ApplyResources(this.WP_SPEED_MAX, "WP_SPEED_MAX"); this.WP_SPEED_MAX.Name = "WP_SPEED_MAX"; + this.toolTip1.SetToolTip(this.WP_SPEED_MAX, resources.GetString("WP_SPEED_MAX.ToolTip")); // // label9 // resources.ApplyResources(this.label9, "label9"); this.label9.Name = "label9"; + this.toolTip1.SetToolTip(this.label9, resources.GetString("label9.ToolTip")); // // NAV_LAT_IMAX // resources.ApplyResources(this.NAV_LAT_IMAX, "NAV_LAT_IMAX"); this.NAV_LAT_IMAX.Name = "NAV_LAT_IMAX"; + this.toolTip1.SetToolTip(this.NAV_LAT_IMAX, resources.GetString("NAV_LAT_IMAX.ToolTip")); // // label13 // resources.ApplyResources(this.label13, "label13"); this.label13.Name = "label13"; + this.toolTip1.SetToolTip(this.label13, resources.GetString("label13.ToolTip")); // // NAV_LAT_I // resources.ApplyResources(this.NAV_LAT_I, "NAV_LAT_I"); this.NAV_LAT_I.Name = "NAV_LAT_I"; + this.toolTip1.SetToolTip(this.NAV_LAT_I, resources.GetString("NAV_LAT_I.ToolTip")); // // label15 // resources.ApplyResources(this.label15, "label15"); this.label15.Name = "label15"; + this.toolTip1.SetToolTip(this.label15, resources.GetString("label15.ToolTip")); // // NAV_LAT_P // resources.ApplyResources(this.NAV_LAT_P, "NAV_LAT_P"); this.NAV_LAT_P.Name = "NAV_LAT_P"; + this.toolTip1.SetToolTip(this.NAV_LAT_P, resources.GetString("NAV_LAT_P.ToolTip")); // // label16 // resources.ApplyResources(this.label16, "label16"); this.label16.Name = "label16"; + this.toolTip1.SetToolTip(this.label16, resources.GetString("label16.ToolTip")); // // groupBox6 // + resources.ApplyResources(this.groupBox6, "groupBox6"); this.groupBox6.Controls.Add(this.XTRK_GAIN_SC1); this.groupBox6.Controls.Add(this.label18); - resources.ApplyResources(this.groupBox6, "groupBox6"); this.groupBox6.Name = "groupBox6"; this.groupBox6.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox6, resources.GetString("groupBox6.ToolTip")); // // XTRK_GAIN_SC1 // resources.ApplyResources(this.XTRK_GAIN_SC1, "XTRK_GAIN_SC1"); this.XTRK_GAIN_SC1.Name = "XTRK_GAIN_SC1"; + this.toolTip1.SetToolTip(this.XTRK_GAIN_SC1, resources.GetString("XTRK_GAIN_SC1.ToolTip")); // // label18 // resources.ApplyResources(this.label18, "label18"); this.label18.Name = "label18"; + this.toolTip1.SetToolTip(this.label18, resources.GetString("label18.ToolTip")); // // groupBox7 // + resources.ApplyResources(this.groupBox7, "groupBox7"); this.groupBox7.Controls.Add(this.THR_ALT_IMAX); this.groupBox7.Controls.Add(this.label19); this.groupBox7.Controls.Add(this.THR_ALT_I); this.groupBox7.Controls.Add(this.label21); this.groupBox7.Controls.Add(this.THR_ALT_P); this.groupBox7.Controls.Add(this.label22); - resources.ApplyResources(this.groupBox7, "groupBox7"); this.groupBox7.Name = "groupBox7"; this.groupBox7.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox7, resources.GetString("groupBox7.ToolTip")); // // THR_ALT_IMAX // resources.ApplyResources(this.THR_ALT_IMAX, "THR_ALT_IMAX"); this.THR_ALT_IMAX.Name = "THR_ALT_IMAX"; + this.toolTip1.SetToolTip(this.THR_ALT_IMAX, resources.GetString("THR_ALT_IMAX.ToolTip")); // // label19 // resources.ApplyResources(this.label19, "label19"); this.label19.Name = "label19"; + this.toolTip1.SetToolTip(this.label19, resources.GetString("label19.ToolTip")); // // THR_ALT_I // resources.ApplyResources(this.THR_ALT_I, "THR_ALT_I"); this.THR_ALT_I.Name = "THR_ALT_I"; + this.toolTip1.SetToolTip(this.THR_ALT_I, resources.GetString("THR_ALT_I.ToolTip")); // // label21 // resources.ApplyResources(this.label21, "label21"); this.label21.Name = "label21"; + this.toolTip1.SetToolTip(this.label21, resources.GetString("label21.ToolTip")); // // THR_ALT_P // resources.ApplyResources(this.THR_ALT_P, "THR_ALT_P"); this.THR_ALT_P.Name = "THR_ALT_P"; + this.toolTip1.SetToolTip(this.THR_ALT_P, resources.GetString("THR_ALT_P.ToolTip")); // // label22 // resources.ApplyResources(this.label22, "label22"); this.label22.Name = "label22"; + this.toolTip1.SetToolTip(this.label22, resources.GetString("label22.ToolTip")); // // groupBox19 // + resources.ApplyResources(this.groupBox19, "groupBox19"); this.groupBox19.Controls.Add(this.HLD_LAT_IMAX); this.groupBox19.Controls.Add(this.label28); this.groupBox19.Controls.Add(this.HLD_LAT_I); this.groupBox19.Controls.Add(this.label30); this.groupBox19.Controls.Add(this.HLD_LAT_P); this.groupBox19.Controls.Add(this.label31); - resources.ApplyResources(this.groupBox19, "groupBox19"); this.groupBox19.Name = "groupBox19"; this.groupBox19.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox19, resources.GetString("groupBox19.ToolTip")); // // HLD_LAT_IMAX // resources.ApplyResources(this.HLD_LAT_IMAX, "HLD_LAT_IMAX"); this.HLD_LAT_IMAX.Name = "HLD_LAT_IMAX"; + this.toolTip1.SetToolTip(this.HLD_LAT_IMAX, resources.GetString("HLD_LAT_IMAX.ToolTip")); // // label28 // resources.ApplyResources(this.label28, "label28"); this.label28.Name = "label28"; + this.toolTip1.SetToolTip(this.label28, resources.GetString("label28.ToolTip")); // // HLD_LAT_I // resources.ApplyResources(this.HLD_LAT_I, "HLD_LAT_I"); this.HLD_LAT_I.Name = "HLD_LAT_I"; + this.toolTip1.SetToolTip(this.HLD_LAT_I, resources.GetString("HLD_LAT_I.ToolTip")); // // label30 // resources.ApplyResources(this.label30, "label30"); this.label30.Name = "label30"; + this.toolTip1.SetToolTip(this.label30, resources.GetString("label30.ToolTip")); // // HLD_LAT_P // resources.ApplyResources(this.HLD_LAT_P, "HLD_LAT_P"); this.HLD_LAT_P.Name = "HLD_LAT_P"; + this.toolTip1.SetToolTip(this.HLD_LAT_P, resources.GetString("HLD_LAT_P.ToolTip")); // // label31 // resources.ApplyResources(this.label31, "label31"); this.label31.Name = "label31"; + this.toolTip1.SetToolTip(this.label31, resources.GetString("label31.ToolTip")); // // groupBox20 // + resources.ApplyResources(this.groupBox20, "groupBox20"); this.groupBox20.Controls.Add(this.STB_YAW_IMAX); this.groupBox20.Controls.Add(this.label32); this.groupBox20.Controls.Add(this.STB_YAW_I); this.groupBox20.Controls.Add(this.label34); this.groupBox20.Controls.Add(this.STB_YAW_P); this.groupBox20.Controls.Add(this.label35); - resources.ApplyResources(this.groupBox20, "groupBox20"); this.groupBox20.Name = "groupBox20"; this.groupBox20.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox20, resources.GetString("groupBox20.ToolTip")); // // STB_YAW_IMAX // resources.ApplyResources(this.STB_YAW_IMAX, "STB_YAW_IMAX"); this.STB_YAW_IMAX.Name = "STB_YAW_IMAX"; + this.toolTip1.SetToolTip(this.STB_YAW_IMAX, resources.GetString("STB_YAW_IMAX.ToolTip")); // // label32 // resources.ApplyResources(this.label32, "label32"); this.label32.Name = "label32"; + this.toolTip1.SetToolTip(this.label32, resources.GetString("label32.ToolTip")); // // STB_YAW_I // resources.ApplyResources(this.STB_YAW_I, "STB_YAW_I"); this.STB_YAW_I.Name = "STB_YAW_I"; + this.toolTip1.SetToolTip(this.STB_YAW_I, resources.GetString("STB_YAW_I.ToolTip")); // // label34 // resources.ApplyResources(this.label34, "label34"); this.label34.Name = "label34"; + this.toolTip1.SetToolTip(this.label34, resources.GetString("label34.ToolTip")); // // STB_YAW_P // resources.ApplyResources(this.STB_YAW_P, "STB_YAW_P"); this.STB_YAW_P.Name = "STB_YAW_P"; + this.toolTip1.SetToolTip(this.STB_YAW_P, resources.GetString("STB_YAW_P.ToolTip")); // // label35 // resources.ApplyResources(this.label35, "label35"); this.label35.Name = "label35"; + this.toolTip1.SetToolTip(this.label35, resources.GetString("label35.ToolTip")); // // groupBox21 // + resources.ApplyResources(this.groupBox21, "groupBox21"); this.groupBox21.Controls.Add(this.STAB_D); this.groupBox21.Controls.Add(this.lblSTAB_D); this.groupBox21.Controls.Add(this.STB_PIT_IMAX); @@ -1448,94 +1602,110 @@ this.groupBox21.Controls.Add(this.label41); this.groupBox21.Controls.Add(this.STB_PIT_P); this.groupBox21.Controls.Add(this.label42); - resources.ApplyResources(this.groupBox21, "groupBox21"); this.groupBox21.Name = "groupBox21"; this.groupBox21.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox21, resources.GetString("groupBox21.ToolTip")); // // STAB_D // resources.ApplyResources(this.STAB_D, "STAB_D"); this.STAB_D.Name = "STAB_D"; + this.toolTip1.SetToolTip(this.STAB_D, resources.GetString("STAB_D.ToolTip")); // // lblSTAB_D // resources.ApplyResources(this.lblSTAB_D, "lblSTAB_D"); this.lblSTAB_D.Name = "lblSTAB_D"; + this.toolTip1.SetToolTip(this.lblSTAB_D, resources.GetString("lblSTAB_D.ToolTip")); // // STB_PIT_IMAX // resources.ApplyResources(this.STB_PIT_IMAX, "STB_PIT_IMAX"); this.STB_PIT_IMAX.Name = "STB_PIT_IMAX"; + this.toolTip1.SetToolTip(this.STB_PIT_IMAX, resources.GetString("STB_PIT_IMAX.ToolTip")); // // label36 // resources.ApplyResources(this.label36, "label36"); this.label36.Name = "label36"; + this.toolTip1.SetToolTip(this.label36, resources.GetString("label36.ToolTip")); // // STB_PIT_I // resources.ApplyResources(this.STB_PIT_I, "STB_PIT_I"); this.STB_PIT_I.Name = "STB_PIT_I"; + this.toolTip1.SetToolTip(this.STB_PIT_I, resources.GetString("STB_PIT_I.ToolTip")); // // label41 // resources.ApplyResources(this.label41, "label41"); this.label41.Name = "label41"; + this.toolTip1.SetToolTip(this.label41, resources.GetString("label41.ToolTip")); // // STB_PIT_P // resources.ApplyResources(this.STB_PIT_P, "STB_PIT_P"); this.STB_PIT_P.Name = "STB_PIT_P"; + this.toolTip1.SetToolTip(this.STB_PIT_P, resources.GetString("STB_PIT_P.ToolTip")); // // label42 // resources.ApplyResources(this.label42, "label42"); this.label42.Name = "label42"; + this.toolTip1.SetToolTip(this.label42, resources.GetString("label42.ToolTip")); // // groupBox22 // + resources.ApplyResources(this.groupBox22, "groupBox22"); this.groupBox22.Controls.Add(this.STB_RLL_IMAX); this.groupBox22.Controls.Add(this.label43); this.groupBox22.Controls.Add(this.STB_RLL_I); this.groupBox22.Controls.Add(this.label45); this.groupBox22.Controls.Add(this.STB_RLL_P); this.groupBox22.Controls.Add(this.label46); - resources.ApplyResources(this.groupBox22, "groupBox22"); this.groupBox22.Name = "groupBox22"; this.groupBox22.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox22, resources.GetString("groupBox22.ToolTip")); // // STB_RLL_IMAX // resources.ApplyResources(this.STB_RLL_IMAX, "STB_RLL_IMAX"); this.STB_RLL_IMAX.Name = "STB_RLL_IMAX"; + this.toolTip1.SetToolTip(this.STB_RLL_IMAX, resources.GetString("STB_RLL_IMAX.ToolTip")); // // label43 // resources.ApplyResources(this.label43, "label43"); this.label43.Name = "label43"; + this.toolTip1.SetToolTip(this.label43, resources.GetString("label43.ToolTip")); // // STB_RLL_I // resources.ApplyResources(this.STB_RLL_I, "STB_RLL_I"); this.STB_RLL_I.Name = "STB_RLL_I"; + this.toolTip1.SetToolTip(this.STB_RLL_I, resources.GetString("STB_RLL_I.ToolTip")); // // label45 // resources.ApplyResources(this.label45, "label45"); this.label45.Name = "label45"; + this.toolTip1.SetToolTip(this.label45, resources.GetString("label45.ToolTip")); // // STB_RLL_P // resources.ApplyResources(this.STB_RLL_P, "STB_RLL_P"); this.STB_RLL_P.Name = "STB_RLL_P"; + this.toolTip1.SetToolTip(this.STB_RLL_P, resources.GetString("STB_RLL_P.ToolTip")); // // label46 // resources.ApplyResources(this.label46, "label46"); this.label46.Name = "label46"; + this.toolTip1.SetToolTip(this.label46, resources.GetString("label46.ToolTip")); // // groupBox23 // + resources.ApplyResources(this.groupBox23, "groupBox23"); this.groupBox23.Controls.Add(this.RATE_YAW_D); this.groupBox23.Controls.Add(this.label10); this.groupBox23.Controls.Add(this.RATE_YAW_IMAX); @@ -1544,52 +1714,61 @@ this.groupBox23.Controls.Add(this.label77); this.groupBox23.Controls.Add(this.RATE_YAW_P); this.groupBox23.Controls.Add(this.label82); - resources.ApplyResources(this.groupBox23, "groupBox23"); this.groupBox23.Name = "groupBox23"; this.groupBox23.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox23, resources.GetString("groupBox23.ToolTip")); // // RATE_YAW_D // resources.ApplyResources(this.RATE_YAW_D, "RATE_YAW_D"); this.RATE_YAW_D.Name = "RATE_YAW_D"; + this.toolTip1.SetToolTip(this.RATE_YAW_D, resources.GetString("RATE_YAW_D.ToolTip")); // // label10 // resources.ApplyResources(this.label10, "label10"); this.label10.Name = "label10"; + this.toolTip1.SetToolTip(this.label10, resources.GetString("label10.ToolTip")); // // RATE_YAW_IMAX // resources.ApplyResources(this.RATE_YAW_IMAX, "RATE_YAW_IMAX"); this.RATE_YAW_IMAX.Name = "RATE_YAW_IMAX"; + this.toolTip1.SetToolTip(this.RATE_YAW_IMAX, resources.GetString("RATE_YAW_IMAX.ToolTip")); // // label47 // resources.ApplyResources(this.label47, "label47"); this.label47.Name = "label47"; + this.toolTip1.SetToolTip(this.label47, resources.GetString("label47.ToolTip")); // // RATE_YAW_I // resources.ApplyResources(this.RATE_YAW_I, "RATE_YAW_I"); this.RATE_YAW_I.Name = "RATE_YAW_I"; + this.toolTip1.SetToolTip(this.RATE_YAW_I, resources.GetString("RATE_YAW_I.ToolTip")); // // label77 // resources.ApplyResources(this.label77, "label77"); this.label77.Name = "label77"; + this.toolTip1.SetToolTip(this.label77, resources.GetString("label77.ToolTip")); // // RATE_YAW_P // resources.ApplyResources(this.RATE_YAW_P, "RATE_YAW_P"); this.RATE_YAW_P.Name = "RATE_YAW_P"; + this.toolTip1.SetToolTip(this.RATE_YAW_P, resources.GetString("RATE_YAW_P.ToolTip")); // // label82 // resources.ApplyResources(this.label82, "label82"); this.label82.Name = "label82"; + this.toolTip1.SetToolTip(this.label82, resources.GetString("label82.ToolTip")); // // groupBox24 // + resources.ApplyResources(this.groupBox24, "groupBox24"); this.groupBox24.Controls.Add(this.RATE_PIT_D); this.groupBox24.Controls.Add(this.label11); this.groupBox24.Controls.Add(this.RATE_PIT_IMAX); @@ -1598,52 +1777,61 @@ this.groupBox24.Controls.Add(this.label86); this.groupBox24.Controls.Add(this.RATE_PIT_P); this.groupBox24.Controls.Add(this.label87); - resources.ApplyResources(this.groupBox24, "groupBox24"); this.groupBox24.Name = "groupBox24"; this.groupBox24.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox24, resources.GetString("groupBox24.ToolTip")); // // RATE_PIT_D // resources.ApplyResources(this.RATE_PIT_D, "RATE_PIT_D"); this.RATE_PIT_D.Name = "RATE_PIT_D"; + this.toolTip1.SetToolTip(this.RATE_PIT_D, resources.GetString("RATE_PIT_D.ToolTip")); // // label11 // resources.ApplyResources(this.label11, "label11"); this.label11.Name = "label11"; + this.toolTip1.SetToolTip(this.label11, resources.GetString("label11.ToolTip")); // // RATE_PIT_IMAX // resources.ApplyResources(this.RATE_PIT_IMAX, "RATE_PIT_IMAX"); this.RATE_PIT_IMAX.Name = "RATE_PIT_IMAX"; + this.toolTip1.SetToolTip(this.RATE_PIT_IMAX, resources.GetString("RATE_PIT_IMAX.ToolTip")); // // label84 // resources.ApplyResources(this.label84, "label84"); this.label84.Name = "label84"; + this.toolTip1.SetToolTip(this.label84, resources.GetString("label84.ToolTip")); // // RATE_PIT_I // resources.ApplyResources(this.RATE_PIT_I, "RATE_PIT_I"); this.RATE_PIT_I.Name = "RATE_PIT_I"; + this.toolTip1.SetToolTip(this.RATE_PIT_I, resources.GetString("RATE_PIT_I.ToolTip")); // // label86 // resources.ApplyResources(this.label86, "label86"); this.label86.Name = "label86"; + this.toolTip1.SetToolTip(this.label86, resources.GetString("label86.ToolTip")); // // RATE_PIT_P // resources.ApplyResources(this.RATE_PIT_P, "RATE_PIT_P"); this.RATE_PIT_P.Name = "RATE_PIT_P"; + this.toolTip1.SetToolTip(this.RATE_PIT_P, resources.GetString("RATE_PIT_P.ToolTip")); // // label87 // resources.ApplyResources(this.label87, "label87"); this.label87.Name = "label87"; + this.toolTip1.SetToolTip(this.label87, resources.GetString("label87.ToolTip")); // // groupBox25 // + resources.ApplyResources(this.groupBox25, "groupBox25"); this.groupBox25.Controls.Add(this.RATE_RLL_D); this.groupBox25.Controls.Add(this.label17); this.groupBox25.Controls.Add(this.RATE_RLL_IMAX); @@ -1652,52 +1840,61 @@ this.groupBox25.Controls.Add(this.label90); this.groupBox25.Controls.Add(this.RATE_RLL_P); this.groupBox25.Controls.Add(this.label91); - resources.ApplyResources(this.groupBox25, "groupBox25"); this.groupBox25.Name = "groupBox25"; this.groupBox25.TabStop = false; + this.toolTip1.SetToolTip(this.groupBox25, resources.GetString("groupBox25.ToolTip")); // // RATE_RLL_D // resources.ApplyResources(this.RATE_RLL_D, "RATE_RLL_D"); this.RATE_RLL_D.Name = "RATE_RLL_D"; + this.toolTip1.SetToolTip(this.RATE_RLL_D, resources.GetString("RATE_RLL_D.ToolTip")); // // label17 // resources.ApplyResources(this.label17, "label17"); this.label17.Name = "label17"; + this.toolTip1.SetToolTip(this.label17, resources.GetString("label17.ToolTip")); // // RATE_RLL_IMAX // resources.ApplyResources(this.RATE_RLL_IMAX, "RATE_RLL_IMAX"); this.RATE_RLL_IMAX.Name = "RATE_RLL_IMAX"; + this.toolTip1.SetToolTip(this.RATE_RLL_IMAX, resources.GetString("RATE_RLL_IMAX.ToolTip")); // // label88 // resources.ApplyResources(this.label88, "label88"); this.label88.Name = "label88"; + this.toolTip1.SetToolTip(this.label88, resources.GetString("label88.ToolTip")); // // RATE_RLL_I // resources.ApplyResources(this.RATE_RLL_I, "RATE_RLL_I"); this.RATE_RLL_I.Name = "RATE_RLL_I"; + this.toolTip1.SetToolTip(this.RATE_RLL_I, resources.GetString("RATE_RLL_I.ToolTip")); // // label90 // resources.ApplyResources(this.label90, "label90"); this.label90.Name = "label90"; + this.toolTip1.SetToolTip(this.label90, resources.GetString("label90.ToolTip")); // // RATE_RLL_P // resources.ApplyResources(this.RATE_RLL_P, "RATE_RLL_P"); this.RATE_RLL_P.Name = "RATE_RLL_P"; + this.toolTip1.SetToolTip(this.RATE_RLL_P, resources.GetString("RATE_RLL_P.ToolTip")); // // label91 // resources.ApplyResources(this.label91, "label91"); this.label91.Name = "label91"; + this.toolTip1.SetToolTip(this.label91, resources.GetString("label91.ToolTip")); // // TabPlanner // + resources.ApplyResources(this.TabPlanner, "TabPlanner"); this.TabPlanner.Controls.Add(this.label26); this.TabPlanner.Controls.Add(this.CMB_videoresolutions); this.TabPlanner.Controls.Add(this.label12); @@ -1741,25 +1938,28 @@ this.TabPlanner.Controls.Add(this.BUT_Joystick); this.TabPlanner.Controls.Add(this.BUT_videostop); this.TabPlanner.Controls.Add(this.BUT_videostart); - resources.ApplyResources(this.TabPlanner, "TabPlanner"); this.TabPlanner.Name = "TabPlanner"; + this.toolTip1.SetToolTip(this.TabPlanner, resources.GetString("TabPlanner.ToolTip")); // // label26 // resources.ApplyResources(this.label26, "label26"); this.label26.Name = "label26"; + this.toolTip1.SetToolTip(this.label26, resources.GetString("label26.ToolTip")); // // CMB_videoresolutions // + resources.ApplyResources(this.CMB_videoresolutions, "CMB_videoresolutions"); this.CMB_videoresolutions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_videoresolutions.FormattingEnabled = true; - resources.ApplyResources(this.CMB_videoresolutions, "CMB_videoresolutions"); this.CMB_videoresolutions.Name = "CMB_videoresolutions"; + this.toolTip1.SetToolTip(this.CMB_videoresolutions, resources.GetString("CMB_videoresolutions.ToolTip")); // // label12 // resources.ApplyResources(this.label12, "label12"); this.label12.Name = "label12"; + this.toolTip1.SetToolTip(this.label12, resources.GetString("label12.ToolTip")); // // CHK_GDIPlus // @@ -1773,11 +1973,13 @@ // resources.ApplyResources(this.label24, "label24"); this.label24.Name = "label24"; + this.toolTip1.SetToolTip(this.label24, resources.GetString("label24.ToolTip")); // // CHK_loadwponconnect // resources.ApplyResources(this.CHK_loadwponconnect, "CHK_loadwponconnect"); this.CHK_loadwponconnect.Name = "CHK_loadwponconnect"; + this.toolTip1.SetToolTip(this.CHK_loadwponconnect, resources.GetString("CHK_loadwponconnect.ToolTip")); this.CHK_loadwponconnect.UseVisualStyleBackColor = true; this.CHK_loadwponconnect.CheckedChanged += new System.EventHandler(this.CHK_loadwponconnect_CheckedChanged); // @@ -1785,15 +1987,16 @@ // resources.ApplyResources(this.label23, "label23"); this.label23.Name = "label23"; + this.toolTip1.SetToolTip(this.label23, resources.GetString("label23.ToolTip")); // // NUM_tracklength // + resources.ApplyResources(this.NUM_tracklength, "NUM_tracklength"); this.NUM_tracklength.Increment = new decimal(new int[] { 100, 0, 0, 0}); - resources.ApplyResources(this.NUM_tracklength, "NUM_tracklength"); this.NUM_tracklength.Maximum = new decimal(new int[] { 2000, 0, @@ -1817,6 +2020,7 @@ // resources.ApplyResources(this.CHK_speechaltwarning, "CHK_speechaltwarning"); this.CHK_speechaltwarning.Name = "CHK_speechaltwarning"; + this.toolTip1.SetToolTip(this.CHK_speechaltwarning, resources.GetString("CHK_speechaltwarning.ToolTip")); this.CHK_speechaltwarning.UseVisualStyleBackColor = true; this.CHK_speechaltwarning.CheckedChanged += new System.EventHandler(this.CHK_speechaltwarning_CheckedChanged); // @@ -1824,13 +2028,15 @@ // resources.ApplyResources(this.label108, "label108"); this.label108.Name = "label108"; + this.toolTip1.SetToolTip(this.label108, resources.GetString("label108.ToolTip")); // // CHK_resetapmonconnect // + resources.ApplyResources(this.CHK_resetapmonconnect, "CHK_resetapmonconnect"); this.CHK_resetapmonconnect.Checked = true; this.CHK_resetapmonconnect.CheckState = System.Windows.Forms.CheckState.Checked; - resources.ApplyResources(this.CHK_resetapmonconnect, "CHK_resetapmonconnect"); this.CHK_resetapmonconnect.Name = "CHK_resetapmonconnect"; + this.toolTip1.SetToolTip(this.CHK_resetapmonconnect, resources.GetString("CHK_resetapmonconnect.ToolTip")); this.CHK_resetapmonconnect.UseVisualStyleBackColor = true; this.CHK_resetapmonconnect.CheckedChanged += new System.EventHandler(this.CHK_resetapmonconnect_CheckedChanged); // @@ -1838,6 +2044,7 @@ // resources.ApplyResources(this.CHK_mavdebug, "CHK_mavdebug"); this.CHK_mavdebug.Name = "CHK_mavdebug"; + this.toolTip1.SetToolTip(this.CHK_mavdebug, resources.GetString("CHK_mavdebug.ToolTip")); this.CHK_mavdebug.UseVisualStyleBackColor = true; this.CHK_mavdebug.CheckedChanged += new System.EventHandler(this.CHK_mavdebug_CheckedChanged); // @@ -1845,9 +2052,11 @@ // resources.ApplyResources(this.label107, "label107"); this.label107.Name = "label107"; + this.toolTip1.SetToolTip(this.label107, resources.GetString("label107.ToolTip")); // // CMB_raterc // + resources.ApplyResources(this.CMB_raterc, "CMB_raterc"); this.CMB_raterc.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_raterc.FormattingEnabled = true; this.CMB_raterc.Items.AddRange(new object[] { @@ -1855,32 +2064,37 @@ resources.GetString("CMB_raterc.Items1"), resources.GetString("CMB_raterc.Items2"), resources.GetString("CMB_raterc.Items3")}); - resources.ApplyResources(this.CMB_raterc, "CMB_raterc"); this.CMB_raterc.Name = "CMB_raterc"; + this.toolTip1.SetToolTip(this.CMB_raterc, resources.GetString("CMB_raterc.ToolTip")); this.CMB_raterc.SelectedIndexChanged += new System.EventHandler(this.CMB_raterc_SelectedIndexChanged); // // label104 // resources.ApplyResources(this.label104, "label104"); this.label104.Name = "label104"; + this.toolTip1.SetToolTip(this.label104, resources.GetString("label104.ToolTip")); // // label103 // resources.ApplyResources(this.label103, "label103"); this.label103.Name = "label103"; + this.toolTip1.SetToolTip(this.label103, resources.GetString("label103.ToolTip")); // // label102 // resources.ApplyResources(this.label102, "label102"); this.label102.Name = "label102"; + this.toolTip1.SetToolTip(this.label102, resources.GetString("label102.ToolTip")); // // label101 // resources.ApplyResources(this.label101, "label101"); this.label101.Name = "label101"; + this.toolTip1.SetToolTip(this.label101, resources.GetString("label101.ToolTip")); // // CMB_ratestatus // + resources.ApplyResources(this.CMB_ratestatus, "CMB_ratestatus"); this.CMB_ratestatus.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_ratestatus.FormattingEnabled = true; this.CMB_ratestatus.Items.AddRange(new object[] { @@ -1888,12 +2102,13 @@ resources.GetString("CMB_ratestatus.Items1"), resources.GetString("CMB_ratestatus.Items2"), resources.GetString("CMB_ratestatus.Items3")}); - resources.ApplyResources(this.CMB_ratestatus, "CMB_ratestatus"); this.CMB_ratestatus.Name = "CMB_ratestatus"; + this.toolTip1.SetToolTip(this.CMB_ratestatus, resources.GetString("CMB_ratestatus.ToolTip")); this.CMB_ratestatus.SelectedIndexChanged += new System.EventHandler(this.CMB_ratestatus_SelectedIndexChanged); // // CMB_rateposition // + resources.ApplyResources(this.CMB_rateposition, "CMB_rateposition"); this.CMB_rateposition.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_rateposition.FormattingEnabled = true; this.CMB_rateposition.Items.AddRange(new object[] { @@ -1901,12 +2116,13 @@ resources.GetString("CMB_rateposition.Items1"), resources.GetString("CMB_rateposition.Items2"), resources.GetString("CMB_rateposition.Items3")}); - resources.ApplyResources(this.CMB_rateposition, "CMB_rateposition"); this.CMB_rateposition.Name = "CMB_rateposition"; + this.toolTip1.SetToolTip(this.CMB_rateposition, resources.GetString("CMB_rateposition.ToolTip")); this.CMB_rateposition.SelectedIndexChanged += new System.EventHandler(this.CMB_rateposition_SelectedIndexChanged); // // CMB_rateattitude // + resources.ApplyResources(this.CMB_rateattitude, "CMB_rateattitude"); this.CMB_rateattitude.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_rateattitude.FormattingEnabled = true; this.CMB_rateattitude.Items.AddRange(new object[] { @@ -1914,55 +2130,63 @@ resources.GetString("CMB_rateattitude.Items1"), resources.GetString("CMB_rateattitude.Items2"), resources.GetString("CMB_rateattitude.Items3")}); - resources.ApplyResources(this.CMB_rateattitude, "CMB_rateattitude"); this.CMB_rateattitude.Name = "CMB_rateattitude"; + this.toolTip1.SetToolTip(this.CMB_rateattitude, resources.GetString("CMB_rateattitude.ToolTip")); this.CMB_rateattitude.SelectedIndexChanged += new System.EventHandler(this.CMB_rateattitude_SelectedIndexChanged); // // label99 // resources.ApplyResources(this.label99, "label99"); this.label99.Name = "label99"; + this.toolTip1.SetToolTip(this.label99, resources.GetString("label99.ToolTip")); // // label98 // resources.ApplyResources(this.label98, "label98"); this.label98.Name = "label98"; + this.toolTip1.SetToolTip(this.label98, resources.GetString("label98.ToolTip")); // // label97 // resources.ApplyResources(this.label97, "label97"); this.label97.Name = "label97"; + this.toolTip1.SetToolTip(this.label97, resources.GetString("label97.ToolTip")); // // CMB_speedunits // + resources.ApplyResources(this.CMB_speedunits, "CMB_speedunits"); this.CMB_speedunits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_speedunits.FormattingEnabled = true; - resources.ApplyResources(this.CMB_speedunits, "CMB_speedunits"); this.CMB_speedunits.Name = "CMB_speedunits"; + this.toolTip1.SetToolTip(this.CMB_speedunits, resources.GetString("CMB_speedunits.ToolTip")); this.CMB_speedunits.SelectedIndexChanged += new System.EventHandler(this.CMB_speedunits_SelectedIndexChanged); // // CMB_distunits // + resources.ApplyResources(this.CMB_distunits, "CMB_distunits"); this.CMB_distunits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_distunits.FormattingEnabled = true; - resources.ApplyResources(this.CMB_distunits, "CMB_distunits"); this.CMB_distunits.Name = "CMB_distunits"; + this.toolTip1.SetToolTip(this.CMB_distunits, resources.GetString("CMB_distunits.ToolTip")); this.CMB_distunits.SelectedIndexChanged += new System.EventHandler(this.CMB_distunits_SelectedIndexChanged); // // label96 // resources.ApplyResources(this.label96, "label96"); this.label96.Name = "label96"; + this.toolTip1.SetToolTip(this.label96, resources.GetString("label96.ToolTip")); // // label95 // resources.ApplyResources(this.label95, "label95"); this.label95.Name = "label95"; + this.toolTip1.SetToolTip(this.label95, resources.GetString("label95.ToolTip")); // // CHK_speechbattery // resources.ApplyResources(this.CHK_speechbattery, "CHK_speechbattery"); this.CHK_speechbattery.Name = "CHK_speechbattery"; + this.toolTip1.SetToolTip(this.CHK_speechbattery, resources.GetString("CHK_speechbattery.ToolTip")); this.CHK_speechbattery.UseVisualStyleBackColor = true; this.CHK_speechbattery.CheckedChanged += new System.EventHandler(this.CHK_speechbattery_CheckedChanged); // @@ -1970,6 +2194,7 @@ // resources.ApplyResources(this.CHK_speechcustom, "CHK_speechcustom"); this.CHK_speechcustom.Name = "CHK_speechcustom"; + this.toolTip1.SetToolTip(this.CHK_speechcustom, resources.GetString("CHK_speechcustom.ToolTip")); this.CHK_speechcustom.UseVisualStyleBackColor = true; this.CHK_speechcustom.CheckedChanged += new System.EventHandler(this.CHK_speechcustom_CheckedChanged); // @@ -1977,6 +2202,7 @@ // resources.ApplyResources(this.CHK_speechmode, "CHK_speechmode"); this.CHK_speechmode.Name = "CHK_speechmode"; + this.toolTip1.SetToolTip(this.CHK_speechmode, resources.GetString("CHK_speechmode.ToolTip")); this.CHK_speechmode.UseVisualStyleBackColor = true; this.CHK_speechmode.CheckedChanged += new System.EventHandler(this.CHK_speechmode_CheckedChanged); // @@ -1984,6 +2210,7 @@ // resources.ApplyResources(this.CHK_speechwaypoint, "CHK_speechwaypoint"); this.CHK_speechwaypoint.Name = "CHK_speechwaypoint"; + this.toolTip1.SetToolTip(this.CHK_speechwaypoint, resources.GetString("CHK_speechwaypoint.ToolTip")); this.CHK_speechwaypoint.UseVisualStyleBackColor = true; this.CHK_speechwaypoint.CheckedChanged += new System.EventHandler(this.CHK_speechwaypoint_CheckedChanged); // @@ -1991,42 +2218,48 @@ // resources.ApplyResources(this.label94, "label94"); this.label94.Name = "label94"; + this.toolTip1.SetToolTip(this.label94, resources.GetString("label94.ToolTip")); // // CMB_osdcolor // + resources.ApplyResources(this.CMB_osdcolor, "CMB_osdcolor"); this.CMB_osdcolor.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.CMB_osdcolor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_osdcolor.FormattingEnabled = true; - resources.ApplyResources(this.CMB_osdcolor, "CMB_osdcolor"); this.CMB_osdcolor.Name = "CMB_osdcolor"; + this.toolTip1.SetToolTip(this.CMB_osdcolor, resources.GetString("CMB_osdcolor.ToolTip")); this.CMB_osdcolor.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.CMB_osdcolor_DrawItem); this.CMB_osdcolor.SelectedIndexChanged += new System.EventHandler(this.CMB_osdcolor_SelectedIndexChanged); // // CMB_language // + resources.ApplyResources(this.CMB_language, "CMB_language"); this.CMB_language.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_language.FormattingEnabled = true; - resources.ApplyResources(this.CMB_language, "CMB_language"); this.CMB_language.Name = "CMB_language"; + this.toolTip1.SetToolTip(this.CMB_language, resources.GetString("CMB_language.ToolTip")); // // label93 // resources.ApplyResources(this.label93, "label93"); this.label93.Name = "label93"; + this.toolTip1.SetToolTip(this.label93, resources.GetString("label93.ToolTip")); // // CHK_enablespeech // resources.ApplyResources(this.CHK_enablespeech, "CHK_enablespeech"); this.CHK_enablespeech.Name = "CHK_enablespeech"; + this.toolTip1.SetToolTip(this.CHK_enablespeech, resources.GetString("CHK_enablespeech.ToolTip")); this.CHK_enablespeech.UseVisualStyleBackColor = true; this.CHK_enablespeech.CheckedChanged += new System.EventHandler(this.CHK_enablespeech_CheckedChanged); // // CHK_hudshow // + resources.ApplyResources(this.CHK_hudshow, "CHK_hudshow"); this.CHK_hudshow.Checked = true; this.CHK_hudshow.CheckState = System.Windows.Forms.CheckState.Checked; - resources.ApplyResources(this.CHK_hudshow, "CHK_hudshow"); this.CHK_hudshow.Name = "CHK_hudshow"; + this.toolTip1.SetToolTip(this.CHK_hudshow, resources.GetString("CHK_hudshow.ToolTip")); this.CHK_hudshow.UseVisualStyleBackColor = true; this.CHK_hudshow.CheckedChanged += new System.EventHandler(this.CHK_hudshow_CheckedChanged); // @@ -2034,13 +2267,15 @@ // resources.ApplyResources(this.label92, "label92"); this.label92.Name = "label92"; + this.toolTip1.SetToolTip(this.label92, resources.GetString("label92.ToolTip")); // // CMB_videosources // + resources.ApplyResources(this.CMB_videosources, "CMB_videosources"); this.CMB_videosources.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_videosources.FormattingEnabled = true; - resources.ApplyResources(this.CMB_videosources, "CMB_videosources"); this.CMB_videosources.Name = "CMB_videosources"; + this.toolTip1.SetToolTip(this.CMB_videosources, resources.GetString("CMB_videosources.ToolTip")); this.CMB_videosources.SelectedIndexChanged += new System.EventHandler(this.CMB_videosources_SelectedIndexChanged); this.CMB_videosources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.CMB_videosources_MouseClick); // @@ -2048,6 +2283,7 @@ // resources.ApplyResources(this.BUT_Joystick, "BUT_Joystick"); this.BUT_Joystick.Name = "BUT_Joystick"; + this.toolTip1.SetToolTip(this.BUT_Joystick, resources.GetString("BUT_Joystick.ToolTip")); this.BUT_Joystick.UseVisualStyleBackColor = true; this.BUT_Joystick.Click += new System.EventHandler(this.BUT_Joystick_Click); // @@ -2055,6 +2291,7 @@ // resources.ApplyResources(this.BUT_videostop, "BUT_videostop"); this.BUT_videostop.Name = "BUT_videostop"; + this.toolTip1.SetToolTip(this.BUT_videostop, resources.GetString("BUT_videostop.ToolTip")); this.BUT_videostop.UseVisualStyleBackColor = true; this.BUT_videostop.Click += new System.EventHandler(this.BUT_videostop_Click); // @@ -2062,6 +2299,7 @@ // resources.ApplyResources(this.BUT_videostart, "BUT_videostart"); this.BUT_videostart.Name = "BUT_videostart"; + this.toolTip1.SetToolTip(this.BUT_videostart, resources.GetString("BUT_videostart.ToolTip")); this.BUT_videostart.UseVisualStyleBackColor = true; this.BUT_videostart.Click += new System.EventHandler(this.BUT_videostart_Click); // @@ -2069,12 +2307,14 @@ // resources.ApplyResources(this.TabSetup, "TabSetup"); this.TabSetup.Name = "TabSetup"; + this.toolTip1.SetToolTip(this.TabSetup, resources.GetString("TabSetup.ToolTip")); this.TabSetup.UseVisualStyleBackColor = true; // // label109 // resources.ApplyResources(this.label109, "label109"); this.label109.Name = "label109"; + this.toolTip1.SetToolTip(this.label109, resources.GetString("label109.ToolTip")); // // BUT_rerequestparams // @@ -2112,6 +2352,7 @@ // resources.ApplyResources(this.BUT_compare, "BUT_compare"); this.BUT_compare.Name = "BUT_compare"; + this.toolTip1.SetToolTip(this.BUT_compare, resources.GetString("BUT_compare.ToolTip")); this.BUT_compare.UseVisualStyleBackColor = true; this.BUT_compare.Click += new System.EventHandler(this.BUT_compare_Click); // @@ -2128,6 +2369,7 @@ this.Controls.Add(this.BUT_load); this.Controls.Add(this.Params); this.Name = "Configuration"; + this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip")); this.Load += new System.EventHandler(this.Configuration_Load); ((System.ComponentModel.ISupportInitialize)(this.Params)).EndInit(); this.ConfigTabs.ResumeLayout(false); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx index b0a640427b..b299eea102 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx @@ -117,6297 +117,7023 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Top, Bottom, Left - - - True - - - Command - - - - 150 - - - True - - - Value - - - 80 - - - True - - - Default - - - False - - - mavScale - - - False - - - True - - - RawValue - - - False - - - - 3, 3 - - - 150 - - - 269, 409 - - - 58 - - - Params - - - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - Top, Bottom, Left, Right - - - 111, 82 - - - 78, 20 - - - 11 - THR_FS_VALUE - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 0 - - - NoControl - - - 6, 86 - - - 50, 13 - - - 12 - - - FS Value - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - THR_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 2 - - - NoControl - - - 6, 63 - - - 27, 13 - - - 13 - - - Max - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - THR_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 4 - - - NoControl - - - 6, 40 - - - 24, 13 - - - 14 - - - Min - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - TRIM_THROTTLE - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 6 - - - NoControl - - - 6, 17 - - - 36, 13 - - - 15 - - - Cruise - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox3 - - - 7 - - - 405, 217 - - - 195, 108 - - - 0 - - - Throttle 0-100% - - - groupBox3 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 0 - - - 111, 82 - - - 78, 20 - - - 0 - - - ARSPD_RATIO - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - NoControl - - - 6, 87 - - - 32, 13 - - - 1 - - - Ratio - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - 111, 59 - - - 78, 20 - - - 2 - - - ARSPD_FBW_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - NoControl - - - 6, 59 - - - 53, 13 - - - 3 - - - FBW max - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 3 - - - 111, 36 - - - 78, 20 - - - 4 - - - ARSPD_FBW_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 4 - - - NoControl - - - 6, 40 - - - 50, 13 - - - 5 - - - FBW min - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - TRIM_ARSPD_CM - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 6 - - - NoControl - - - 6, 17 - - - 64, 13 - - - 6 - - - Cruise - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 7 - - - 406, 325 - - - 195, 108 - - - 1 - - - Airspeed m/s - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - LIM_PITCH_MIN - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 0 - - - NoControl - - - 6, 63 - - - 51, 13 - - - 10 - - - Pitch Min - - - label39 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 1 - - - 111, 36 - - - 78, 20 - - - 7 - - - LIM_PITCH_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 2 - - - NoControl - - - 6, 40 - - - 54, 13 - - - 11 - - - Pitch Max - - - label38 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 3 - - - 111, 13 - - - 78, 20 - - - 5 - - - LIM_ROLL_CD - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 4 - - - NoControl - - - 6, 17 - - - 55, 13 - - - 12 - - - Bank Max - - - label37 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 5 - - - 205, 325 - - - 195, 108 - - - 2 - - - Navigation Angles - - - groupBox2 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 2 - - - 111, 36 - - - 78, 20 - - - 7 - - - XTRK_ANGLE_CD - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 0 - - - NoControl - - - 6, 40 - - - 61, 13 - - - 8 - - - Entry Angle - - - label79 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 1 - - - 111, 13 - - - 78, 20 - - - 5 - - - XTRK_GAIN_SC - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 2 - - - NoControl - - - 6, 17 - - - 52, 13 - - - 9 - - - Gain (cm) - - - label80 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox15 - - - 3 - - - 4, 325 - - - 195, 108 - - - 3 - - - Xtrack Pids - - - groupBox15 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 3 - - - 111, 13 - - - 78, 20 - - - 13 - - - KFF_PTCH2THR - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 0 - - - NoControl - - - 6, 17 - - - 36, 13 - - - 14 - - - P to T - - - label83 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - KFF_RDDRMIX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 2 - - - NoControl - - - 6, 63 - - - 61, 13 - - - 15 - - - Rudder Mix - - - label78 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - KFF_PTCHCOMP - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 4 - - - NoControl - - - 6, 40 - - - 61, 13 - - - 16 - - - Pitch Comp - - - label81 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox16 - - - 5 - - - 205, 217 - - - 195, 108 - - - 4 - - - Other Mix's - - - groupBox16 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 4 - - - 111, 82 - - - 78, 20 - - - 11 - - - ENRGY2THR_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label73 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - ENRGY2THR_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label74 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - ENRGY2THR_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label75 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - ENRGY2THR_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label76 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox14 - - - 7 - - - 4, 217 - - - 195, 108 - - - 5 - - - Energy/Alt Pid - - - groupBox14 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 5 - - - 111, 82 - - - 78, 20 - - - 0 - - - ALT2PTCH_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 1 - - - INT_MAX - - - label69 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 1 - - - 111, 59 - - - 78, 20 - - - 2 - - - ALT2PTCH_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 3 - - - D - - - label70 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 3 - - - 111, 36 - - - 78, 20 - - - 4 - - - ALT2PTCH_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label71 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 5 - - - 111, 13 - - - 78, 20 - - - 6 - - - ALT2PTCH_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 7 - - - P - - - label72 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox13 - - - 7 - - - 406, 109 - - - 195, 108 - - - 6 - - - Nav Pitch Alt Pid - - - groupBox13 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 6 - - - 111, 82 - - - 78, 20 - - - 0 - - - ARSP2PTCH_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 1 - - - INT_MAX - - - label65 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 1 - - - 111, 59 - - - 78, 20 - - - 2 - - - ARSP2PTCH_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 3 - - - D - - - label66 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 3 - - - 111, 36 - - - 78, 20 - - - 4 - - - ARSP2PTCH_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label67 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 5 - - - 111, 13 - - - 78, 20 - - - 6 - - - ARSP2PTCH_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 7 - - - P - - - label68 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox12 - - - 7 - - - 205, 109 - - - 195, 108 - - - 7 - - - Nav Pitch AS Pid - - - groupBox12 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 7 - - - 111, 82 - - - 78, 20 - - - 11 - - - HDNG2RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label61 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - HDNG2RLL_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label62 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - HDNG2RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label63 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - HDNG2RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label64 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 7 - - - 4, 109 - - - 195, 108 - - - 8 - - - Nav Roll Pid - - - groupBox11 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 8 - - - 111, 82 - - - 78, 20 - - - 11 - - - YW2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label57 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - YW2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label58 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - YW2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label59 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - YW2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label60 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 7 - - - 406, 1 - - - 195, 108 - - - 9 - - - Servo Yaw Pid - - - groupBox10 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 9 - - - 111, 82 - - - 78, 20 - - - 11 - - - PTCH2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label53 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - PTCH2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label54 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - PTCH2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label55 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - PTCH2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label56 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - 7 - - - 205, 1 - - - 195, 108 - - - 10 - - - Servo Pitch Pid - - - groupBox9 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 10 - - - 111, 82 - - - 78, 20 - - - 11 - - - RLL2SRV_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 0 - - - NoControl - - - 6, 86 - - - 54, 13 - - - 12 - - - INT_MAX - - - label49 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 1 - - - 111, 59 - - - 78, 20 - - - 9 - - - RLL2SRV_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 2 - - - NoControl - - - 6, 63 - - - 15, 13 - - - 13 - - - D - - - label50 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 3 - - - 111, 36 - - - 78, 20 - - - 7 - - - RLL2SRV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label51 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 5 - - - 111, 13 - - - 78, 20 - - - 5 - - - RLL2SRV_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 6 - - - NoControl - - - 6, 17 - - - 14, 13 - - - 15 - - - P - - - label52 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 7 - - - 4, 1 - - - 195, 108 - - - 11 - - - Servo Roll Pid - - - groupBox8 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 11 - - - 4, 22 - - - 0, 0, 0, 0 - - - 722, 434 - - - 0 - - - ArduPlane - - - TabAP - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - - 0 - - - 358, 336 - - - 53, 23 - - - 20 - - - Ch6 Opt - - - myLabel2 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - TabAC - - - 0 - - - CH6_NONE - - - CH6_STABILIZE_KP - - - CH6_STABILIZE_KI - - - CH6_YAW_KP - - - CH6_RATE_KP - - - CH6_RATE_KI - - - CH6_YAW_RATE_KP - - - CH6_THROTTLE_KP - - - CH6_TOP_BOTTOM_RATIO - - - CH6_RELAY - - - CH6_TRAVERSE_SPEED - - - CH6_NAV_P - - - CH6_LOITER_P - - - CH6_HELI_EXTERNAL_GYRO - - - CH6_THR_HOLD_KP - - - CH6_Z_GAIN - - - CH6_DAMP - - - CH6_OPTFLOW_KP - - - CH6_OPTFLOW_KI - - - CH6_OPTFLOW_KD - - - CH6_NAV_I - - - 417, 336 - - - 112, 21 - - - 19 - - - TUNE - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 1 - - - 358, 309 - - - 53, 23 - - - 18 - - - Ch7 Opt - - - myLabel1 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - TabAC - - - 2 - - - Do Nothing - - - - - - - - - Simple Mode - - - RTL - - - - - - - - - Save WP - - - 417, 309 - - - 112, 21 - - - 17 - - - CH7_OPT - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 3 - - - 80, 60 - - - 78, 20 - - - 14 - - - THR_RATE_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 15 - - - D - - - label29 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 1 - - - NoControl - - - 6, 86 - - - 65, 13 - - - 16 - - - IMAX - - - label14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 2 - - - 80, 83 - - - 78, 20 - - - 11 - - - THR_RATE_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 3 - - - 80, 37 - - - 78, 20 - - - 7 - - - THR_RATE_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 5 - - - 80, 13 - - - 78, 20 - - - 5 - - - THR_RATE_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label25 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 7 - - - 6, 260 - - - 170, 110 - - - 16 - - - Throttle Rate - - - groupBox5 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 4 - - - True - - - 3, 240 - - - 154, 17 - - - 13 - - - Lock Pitch and Roll Values - - - CHK_lockrollpitch - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 5 - - - 80, 60 - - - 78, 20 - - - 18 - - - NAV_LAT_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 19 - - - D - - - label27 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 1 - - - 80, 107 - - - 78, 20 - - - 16 - - - WP_SPEED_MAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 2 - - - NoControl - - - 6, 110 - - - 54, 13 - - - 17 - - - m/s - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 3 - - - 80, 84 - - - 78, 20 - - - 11 - - - NAV_LAT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 4 - - - NoControl - - - 6, 87 - - - 65, 13 - - - 12 - - - IMAX - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 5 - - - 80, 37 - - - 78, 20 - - - 7 - - - NAV_LAT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 6 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 7 - - - 80, 13 - - - 78, 20 - - - 5 - - - NAV_LAT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 8 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label16 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox4 - - - 9 - - - 534, 126 - - - 170, 131 - - - 0 - - - Nav WP - - - groupBox4 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 6 - - - 80, 13 - - - 78, 20 - - - 5 - - - XTRK_GAIN_SC1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox6 - - - 0 - - - NoControl - - - 6, 16 - - - 38, 13 - - - 15 - - - Gain - - - label18 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox6 - - - 1 - - - 358, 260 - - - 170, 43 - - - 2 - - - Crosstrack Correction - - - groupBox6 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 7 - - - 80, 63 - - - 78, 20 - - - 11 - - - THR_ALT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 0 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label19 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - THR_ALT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - THR_ALT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label22 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox7 - - - 5 - - - 182, 260 - - - 170, 110 - - - 3 - - - Altitude Hold - - - groupBox7 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 8 - - - 80, 61 - - - 78, 20 - - - 11 - - - HLD_LAT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 0 - - - NoControl - - - 6, 64 - - - 65, 13 - - - 12 - - - IMAX - - - label28 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - HLD_LAT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label30 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - HLD_LAT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label31 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox19 - - - 5 - - - 531, 6 - - - 170, 95 - - - 6 - - - Loiter - - - groupBox19 - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TabAC + + + 29 - - 9 + + groupBox14 - - 80, 63 - - - 78, 20 - - - 11 - - - STB_YAW_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 0 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label32 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - STB_YAW_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label34 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - STB_YAW_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label35 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox20 - - - 5 - - - 358, 6 - - - 170, 95 - - - 7 - - - Stabilize Yaw - - - groupBox20 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 10 - - - 80, 88 - - - 78, 20 - - - 16 - - - STAB_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 0 - - - NoControl - - - 6, 91 - - - 65, 13 - - - 17 - - - Stabalize D - - - lblSTAB_D - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 1 - - - 80, 63 - - - 78, 20 - - - 11 - - - STB_PIT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 2 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label36 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 3 - - - 80, 37 - - - 78, 20 - - - 7 - - - STB_PIT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label41 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 5 - - - 80, 13 - - - 78, 20 - - - 5 - - - STB_PIT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label42 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox21 - - - 7 - - - 182, 6 - - - 170, 114 - - - 8 - - - Stabilize Pitch - - - groupBox21 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 11 - - - 80, 63 - - - 78, 20 - - - 11 - - - STB_RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 0 - - - NoControl - - - 6, 66 - - - 65, 13 - - - 12 - - - IMAX - - - label43 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 1 - - - 80, 37 - - - 78, 20 - - - 7 - - - STB_RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 2 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 14 - - - I - - - label45 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 3 - - - 80, 13 - - - 78, 20 - - - 5 - - - STB_RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 4 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 15 - - - P - - - label46 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 5 - - - 6, 6 - - - 170, 95 - - - 9 - - - Stabilize Roll - - - groupBox22 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 12 - - - 80, 60 - - - 78, 20 - - - 8 - - - RATE_YAW_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 9 - - - D - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 1 - - - 80, 84 - - - 78, 20 - - - 0 - - - RATE_YAW_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 2 - - - NoControl - - - 6, 87 - - - 65, 13 - - - 1 - - - IMAX - - - label47 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 3 - - - 80, 37 - - - 78, 20 - - - 4 - - - RATE_YAW_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label77 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 5 - - - 80, 13 - - - 78, 20 - - - 6 - - - RATE_YAW_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 7 - - - P - - - label82 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - 7 - - - 358, 126 - - - 170, 108 - - - 10 - - - Rate Yaw - - - groupBox23 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 13 - - - 80, 60 - - - 78, 20 - - - 10 - - - RATE_PIT_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 11 - - - D - - - label11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 1 - - - 80, 83 - - - 78, 20 - - - 0 - - - RATE_PIT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 2 - - - NoControl - - - 6, 86 - - - 65, 13 - - - 1 - - - IMAX - - - label84 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 3 - - - 80, 37 - - - 78, 20 - - - 4 - - - RATE_PIT_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label86 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 5 - - - 80, 13 - - - 78, 20 - - - 6 - - - RATE_PIT_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 7 - - - P - - - label87 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox24 - - - 7 - - - 182, 126 - - - 170, 108 - - - 11 - - - Rate Pitch - - - groupBox24 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 14 - - - 80, 60 - - - 78, 20 - - - 12 - - - RATE_RLL_D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 0 - - - NoControl - - - 6, 63 - - - 10, 13 - - - 13 - - - D - - - label17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 1 - - - 80, 83 - - - 78, 20 - - - 0 - - - RATE_RLL_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 2 - - - NoControl - - - 6, 86 - - - 68, 13 - - - 1 - - - IMAX - - - label88 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 3 - - - 80, 37 - - - 78, 20 - - - 4 - - - RATE_RLL_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 4 - - - NoControl - - - 6, 40 - - - 10, 13 - - - 5 - - - I - - - label90 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 5 - - - 80, 13 - - - 78, 20 - - - 6 - - - RATE_RLL_P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 6 - - - NoControl - - - 6, 16 - - - 14, 13 - - - 7 - - - P - - - label91 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox25 - - - 7 - - - 6, 126 - - - 170, 108 - - - 12 - - - Rate Roll - - - groupBox25 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 15 - - - 4, 22 - - - 3, 3, 3, 3 - - + + 722, 434 - - 1 - - - ArduCopter - - - TabAC - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - - 1 - - - NoControl - - - 30, 50 - - - 100, 23 - - - 41 - - - Video Format - - - label26 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 0 - - - 139, 47 - - - 408, 21 - - - 0 - - - CMB_videoresolutions - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 1 - - - NoControl - - - 30, 340 - - - 61, 13 - - - 39 - - - HUD - - - label12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 2 - - - NoControl - - - 139, 340 - - - 177, 17 - - - 40 - - - GDI+ (old type) - - - 17, 17 - - - OpenGL = Disabled -GDI+ = Enabled - - - CHK_GDIPlus + + label50 System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TabPlanner + + P - + + groupBox10 + + + D + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3 - - NoControl + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 30, 318 + + INT_MAX - + + 78, 20 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 390, 11 + + + RATE_YAW_IMAX + + + label22 + + + label51 + + + groupBox15 + + + 5 + + + 6, 16 + + + Setup + + + 3 + + 61, 13 - - 37 + + INT_MAX - - Waypoints + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + + + + RATE_RLL_IMAX + + + Ch6 Opt + + + 6, 87 + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + NoControl + + + label56 + + + 111, 59 + + + groupBox16 + + + 0 + + + $this + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + THR_RATE_P + + + 6, 40 + + + 5 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 13 + + + groupBox21 + + + + + + groupBox5 + + + 69, 13 + + + 80, 13 + + + label28 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + WP_SPEED_MAX + + + GDI+ (old type) + + + groupBox24 + + + + + + label57 + + + 111, 36 + + + 7 + + + 65, 13 + + + P + + + Default + + + + + + groupBox8 + + + NoControl + + + 3, 416 + + + 22, 13 + + + label29 + + + 3, 3, 3, 3 + + + CH6_RELAY + + + groupBox24 + + + 80, 21 + + + IMAX + + + INT_MAX + + + I + + + 136, 244 + + + Dist Units + + + + + + 6, 260 + + + NoControl + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 722, 434 + + + Load param's from file + + + FBW max + + + 65, 13 + + + CHK_hudshow + + + 78, 20 + + + groupBox12 + + + 11 + + + STB_PIT_I + + + 15 + + + 3 + + + 78, 20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 9 + + + groupBox5 + + + label52 + + + + + + 78, 20 + + + label102 + + + YW2SRV_IMAX + + + 4, 109 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 78, 20 + + + 78, 20 + + + 5 + + + 11 + + + 111, 36 + + + 78, 20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + + + + groupBox7 + + + + + + 78, 20 + + + 65, 13 + + + label53 + + + RATE_PIT_IMAX + + + 531, 6 + + + groupBox23 + + + 0 + + + 0 + + + 4 + + + 2 + + + label94 + + + 7 + + + 6 + + + + + + 80, 63 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 43, 13 + + + label58 + + + INT_MAX + + + 11 + + + + + + UI Language + + + groupBox1 + + + groupBox16 + + + + + + + + + NAV_LAT_I + + + 111, 13 + + + 205, 1 + + + 1 + + + label95 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 730, 460 + + + 7 + + + groupBox4 + + + label59 + + + TabAP label24 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 4 - - + NoControl - - 139, 317 - - - 177, 17 - - - 38 - - - Load Waypoints on connect? - - - CHK_loadwponconnect - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 5 - - - NoControl - - - 30, 292 - - - 103, 18 - - - 36 - - - Track Length - - - label23 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 6 - - - 139, 291 - - - 67, 20 - - - 35 - - - On the Flight Data Tab - - - NUM_tracklength - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 7 - - - NoControl - - - 579, 107 - - - 102, 17 - - - 34 - - - Alt Warning - - - CHK_speechaltwarning - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 8 - - - NoControl - - - 30, 269 - - - 61, 13 - - - 0 - - - APM Reset - - - label108 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 9 - - - NoControl - - - 139, 267 - - - 163, 17 - - - 1 - - - Reset APM on USB Connect - - - CHK_resetapmonconnect - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 10 - - - Bottom, Left - - - NoControl - - - 33, 411 - - - 144, 17 - - + 2 - - Mavlink Message Debug + + 111, 36 - - CHK_mavdebug + + - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox25 - - TabPlanner + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + RATE_YAW_P + + + 6 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + groupBox22 + + + NoControl + + + + + + 0, 0, 0, 0 + + + HDNG2RLL_P + + + 80, 60 + + + 78, 20 + + + NoControl + + 11 NoControl - - 590, 244 + + System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - 22, 13 - - - 3 - - - RC - - - label107 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 12 - - + 0 - - 1 + + 170, 108 - - 3 + + 0 - - 10 + + 358, 336 - - 621, 240 + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 80, 21 + + 154, 17 - - 4 + + - - CMB_raterc - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 13 - - - NoControl - - - 425, 244 - - - 69, 13 - - - 5 - - - Mode/Status - - - label104 - - + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TabPlanner - - - 14 - - - NoControl - - - 280, 244 - - - 44, 13 - - - 6 - - - Position - - - label103 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox9 TabPlanner - - 15 + + 78, 20 - + + + + + RTL + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + NoControl - - 136, 244 + + groupBox20 - - 43, 13 + + label3 + + + 16 + + + + + + + + + label90 + + + + + + 111, 13 + + + NoControl + + + TabPlanner + + + label46 + + + 2 + + + 7 + + + Write changed params to device + + + 78, 20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11 + + + groupBox9 + + + groupBox7 + + + NoControl + + + Bottom, Left + + + + + + + + + 12 + + + 1 + + + label91 + + + ENRGY2THR_P + + + 10, 13 + + + + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 66 + + + 80, 37 + + + CHK_GDIPlus + + + 4 + + + label7 + + + 78, 20 + + + 11 + + + + + + 17 + + + 56, 17 + + + groupBox12 + + + 4 + + + + + + label96 + + + 6 + + + NoControl + + + 14 + + + 16 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + + + + 111, 36 + + + groupBox19 + + + 18 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Command + + + 14 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + HLD_LAT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 138, 21 + + + 5 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + groupBox10 + + + groupBox8 + + + TabPlanner 7 - - Attitude + + 4 - - label102 + + 52, 13 - + + 5 + + + 15, 13 + + + NoControl + + + + + + + + + + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + ConfigTabs + + + groupBox8 + + + 1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 10, 13 + + + 150 + + + Cruise + + + + + + Max + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + NoControl + + + Video Format + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 111, 59 + + + 3 + + + 87, 17 + + + toolTip1 + + + 111, 82 + + + IMAX + + + 6, 63 + + + groupBox9 + + + groupBox9 + + + 111, 36 + + + RLL2SRV_IMAX + + + 12 + + + ARSP2PTCH_P + + + 27 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 100, 23 + + + 5 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 5 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 5 + + + 27, 13 + + + Nav Pitch AS Pid + + + 245, 107 + + + 590, 244 + + + label93 + + + groupBox12 + + + 80, 60 + + + RLL2SRV_I + + + 30, 318 + + + 11 + + + CHK_mavdebug + + + Ch7 Opt + + + 78, 20 + + + CH6_THR_HOLD_KP + + + 139, 317 + + + groupBox21 + + + 15 + + + 78, 20 + + + CMB_rateposition + + + Stabilize Roll + + + label98 + + + NAV_LAT_D + + + 20 + + + CMB_ratestatus + + + 39 + + + + + + 5 + + + 10, 13 + + + CHK_speechwaypoint + + + Enable Speech + + + CHK_speechaltwarning + + + + + + NoControl + + + 14, 13 + + + lblSTAB_D + + + NUM_tracklength + + + BUT_Joystick + + + label23 + + + 6, 17 + + + + + + 65, 13 + + + 579, 107 + + + IMAX + + + 139, 158 + + + 78, 20 + + + 2 + + + + + + + + + I + + + + + + 68, 13 + + + 80, 13 + + + CH6_NAV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 9 + + + 0 + + + NoControl + + + label107 + + + 61, 13 + + + groupBox3 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + NoControl + + + Energy/Alt Pid + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + + + + + + + 78, 20 + + + THR_RATE_D + + + groupBox9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + 5 + + + 111, 82 + + + 195, 108 + + + RawValue + + + 358, 6 + + + 0 + + + + + + Enable HUD Overlay + + + NoControl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 205, 217 + + + 23 + + + 53, 23 + + + 0 + + + ENRGY2THR_D + + + 25 + + + + + + 80, 88 + + + + + + + + + groupBox10 + + + 6, 86 + + + 80, 37 + + + NAV_LAT_P + + + + + + + + + 139, 131 + + + groupBox23 + + + CH6_TRAVERSE_SPEED + + + 50, 13 + + + 78, 20 + + + label64 + + + 30, 162 + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + + + + 65, 13 + + + + + + 14, 13 + + + + + + 14, 13 + + + 0 + + + P to T + + + groupBox10 + + + groupBox3 + + + 334, 240 + + + + + + BUT_writePIDS + + + Save params to file + + + 78, 20 + + + label65 + + + + + + 111, 13 + + + 10, 13 + + + + + + 3 + + + Reload params from device + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Waypoint + + + 20 + + + 0 + + + 80, 37 + + + RATE_YAW_D + + + 7 + + + 75, 23 + + + 80, 21 + + + 5 + + + 111, 13 + + + 30 + + + + + + 103, 19 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + + + + ConfigTabs + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 195, 108 + + + 78, 20 + + + + + TabPlanner - - 16 + + 24 - + NoControl + + IMAX + + + 406, 325 + + + P + + + + + + 6 + + + IMAX + + + 139, 187 + + + P + + + 5 + + + TabAP + + + 80, 13 + + + P + + + NoControl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 14, 13 + + + 4, 22 + + + NoControl + + + label60 + + + 170, 95 + + + 14, 13 + + + 44, 13 + 27, 244 - - 84, 13 + + TabAP - + + 11 + + + TabPlanner + + + TabPlanner + + + 10 + + + 5 + + + + + + 3 + + + label61 + + + 20 + + + IMAX + + + I + + + + + + 150 + + + D + + + RATE_YAW_I + + 8 - - Telemetry Rates + + 3 - - label101 + + groupBox21 - + + 6, 17 + + + 6 + + + True + + + 78, 20 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 30, 50 + + + 5 + + + HDNG2RLL_D + + + 111, 59 + + + NoControl + + + 13 + + + 10, 13 + + + NoControl + + + 2 + + + 205, 109 + + + 5 + + + 139, 80 + + + groupBox6 + + + 5 + + + + + + 3, 240 + + + NoControl + + + IMAX + + + NoControl + + + 1 + + + 111, 82 + + + groupBox23 + + + STAB_D + + + TabPlanner + + + 6, 40 + + + label67 + + + 0, 0, 0, 0 + + + P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15 + + + P + + + P + + + 3 + + + P + + + 195, 108 + + + 12 + + + 78, 20 + + + 5 + + + 15 + + + THR_ALT_I + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + 6, 17 + + + 18 + + + TRIM_THROTTLE + + + groupBox4 + + + $this + + + I + + + 78, 20 + + + BUT_rerequestparams + + + 6, 17 + + + groupBox21 + + + 58 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 40 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 78, 20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 195, 108 + + + + + + 111, 13 + + + Stabalize D + + + 195, 108 + + + TabAC + + + NoControl + + + D + + + 1 + + + groupBox4 + + + 6, 17 + + + + + + Do Nothing + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 80 + + + + + + 6, 64 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15, 13 + + + 6, 17 + + + 65, 13 + + + + + + groupBox25 + + + 9 + + + 2 + + + 30, 269 + + + groupBox14 + + + 195, 108 + + + label62 + + + 78, 20 + + + label99 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 80, 37 + + TabPlanner + + 10, 13 + + + label27 + + + 170, 131 + 17 - + + 78, 20 + + + 4 + + + 24 + + + 6, 16 + + + 7 + + + 5 + + + NoControl + + + XTRK_GAIN_SC + + + + + + + + + NoControl + + + Video Device + + + 4 + + + 14 + + + TabPlanner + + + 75, 23 + + + CH7_OPT + + + 78, 20 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 10 + + + 170, 110 + + + INT_MAX + + + 10, 13 + + + label68 + + + 6, 40 + + + 188, 240 + + + ENRGY2THR_I + + + 19 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + STB_PIT_P + + + 283, 209 + + + ARSP2PTCH_D + + + groupBox5 + + + 6, 40 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CH6_Z_GAIN + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 30 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 170, 43 + + + 61, 13 + + + 44, 13 + + + label69 + + + groupBox7 + + + 182, 6 + + + groupBox5 + + + + + + 15, 13 + + + NoControl + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + NoControl + + + + + + + + + THR_MIN + + + 65 + + + 170, 110 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 78, 20 + + + + + + 3 + + 0 - + + 4 + + + Command + + + 7 + + + 13 + + + TabPlanner + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 40 + + + 80, 37 + + + 4 + + + 6 + + + TabAP + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 31, 438 + + + TabPlanner + + 1 + + NoControl + + + 5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 0 + + + 11 + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + 34 + + + 0 + + + groupBox5 + + + 111, 36 + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + groupBox6 + + + + + + 4 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15, 13 + + + ConfigTabs + + + 4 + + + + + + TabAC + + + 4 + + + Top, Bottom, Left, Right + + + Ratio + + + 11 + + + TabAC + + + groupBox16 + + + 65, 13 + + + groupBox8 + + + 4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ALT2PTCH_I + + + 7 + + + TabAP + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 28 + + + NoControl + + + + + + 14, 13 + + + + + + 102, 17 + + + ARSP2PTCH_I + + + groupBox1 + + + 15 + + + 11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 278, 0 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 6, 40 + + + 6, 40 + + + NoControl + + + 111, 36 + + + + + + THR_ALT_IMAX + + + 12 + + + 6, 63 + + + 19 + + + 7 + + + 3 + + + + + + NoControl + + + 14 + + + 33 + + + 15 + + + 6, 16 + + + + + + + + + TabAP + + + Track Length + + + label86 + + + 3 + + + CMB_distunits + + + groupBox14 + + + label4 + + + groupBox15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + 7 + + + Joystick Setup + + + 14, 13 + + + NoControl + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + groupBox13 + + + label2 + + + 12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + YW2SRV_I + + + 6, 66 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 12 + + + 15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 402, 13 + + + 2 + + + 15 + + + Min + + + label6 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 63 + + + 61, 13 + + + 111, 82 + + + P + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 32 + + + label8 + + + groupBox19 + + + 17 + + + 125, 17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 78, 20 + + + 14, 13 + + + 80, 63 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + groupBox13 + + + groupBox25 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 7 + + + 30, 189 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + + + + 111, 59 + + + groupBox1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 22 + + + 10, 13 + + + Nav Pitch Alt Pid + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 0 + + + groupBox21 + + + 2 + + + + + + 6, 86 + + + Servo Roll Pid + + + 12 + + + RLL2SRV_P + + + TabAP + + + 30, 16 + + + YW2SRV_D + + + 7 + + + groupBox7 + + + 0 + + + 80, 13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 11 + + + mavScale + + + NoControl + + + + + + 3, 3, 3, 3 + + + NoControl + + + Servo Pitch Pid + + + TabPlanner + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 13 + + + 9 + + + Bottom, Left + + + 1 + + + 78, 20 + + + groupBox23 + + + 0 + + + PTCH2SRV_D + + + m/s + + + 195, 108 + + + P + + + Telemetry Rates + + + myLabel1 + + + label45 + + + 6, 63 + + + groupBox15 + + + 111, 82 + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + I + + + + + + + + + 78, 20 + + + + + + 1 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + groupBox4 + + + 78, 20 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 30, 217 + + + 15 + + + HDNG2RLL_IMAX + + + 6, 66 + + + NoControl + + + 78, 20 + + + 10, 13 + + + + + + Nav Roll Pid + + + 3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + IMAX + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + STB_PIT_IMAX + + + 5 + + + 30, 135 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label97 + + + 10, 13 + + + 25 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Stabilize Pitch + + + 6, 86 + + + NoControl + + + ENRGY2THR_IMAX + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 31 + + + TabPlanner + + + groupBox4 + + + groupBox20 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + 3 10 - - 499, 240 + + 4 - - 80, 21 + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - + + 13 + + + groupBox4 + + + 12 + + + groupBox2 + + + groupBox1 + + + NoControl + + + 3, 3 + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6 + + + TabAC + + + + + + + + + + + + + + + NoControl + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 16 + + + HUD + + + 0 + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 63 + + + TabAC + + + 2 + + + 10, 13 + + + 7 + + + 0 + + + 0 + + + CHK_enablespeech + + + 10, 13 + + + NoControl + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NAV_LAT_IMAX + + + 54, 13 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 52, 13 + + + I + + + 111, 59 + + + 50, 13 + + + 4, 217 + + + 80, 37 + + + TabAC + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + INT_MAX + + + + + + 16 + + + Bottom, Left + + + 78, 20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 80, 60 + + + label47 + + + NoControl + + + 195, 108 + + + Save + + + ALT2PTCH_D + + + 6, 63 + + + TabPlanner + + + 8 + + 9 - - CMB_ratestatus - - + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 14, 13 + + + Airspeed m/s + + + CH6_NAV_P + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 0, 0, 0 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CH6_OPTFLOW_KI + + + 8 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 86 + + + 6 + + + 3 + + + 78, 20 + + + 10 + + + + + + 6 + + + 139, 47 + + + 6, 16 + + + 2 + + + NoControl + + + + + + Navigation Angles + + + groupBox24 + + + 5 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + RawValue + + + False + + + CHK_speechcustom + + + groupBox20 + + + 16 + + + 78, 20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + XTRK_ANGLE_CD + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 7 + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 6 + + + NoControl + + + 17 + + + P + + + 7 + + + groupBox19 + + + D + + + 1 + + + CHK_loadwponconnect + + + 6, 87 + + + Loiter + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + Throttle 0-100% + + + CMB_videoresolutions + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 15 + + + groupBox1 + + + 65, 13 + + + 2 + + + 205, 325 + + + Start + + + NoControl + + + Nav WP + + + 10, 13 + + + label43 + + + 78, 20 + + + 139, 340 + + + 78, 20 + + + 65, 13 + + + 80, 13 + + + + + + 78, 20 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 111, 82 + + + + + + + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Throttle Rate + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 36, 13 + + + 78, 20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 18 + + + 6, 40 + + + 78, 20 + + + 7 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label108 + + + ConfigTabs + + + 12 + + + + + + 14 + + + 111, 36 + + + 78, 20 + + + D + + + 33 + + + groupBox14 + + + label49 + + + groupBox10 + + + Crosstrack Correction + + + 35 + + + + + + + + + + + + P + + + 30, 83 + + + groupBox19 + + + NoControl + + + + + + ALT2PTCH_IMAX + + + + + + TabAC + + + 6, 91 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 15 + + + 8 + + + 26 + + + Altitude Hold + + + 4 + + + 57, 13 + + + groupBox1 + + + 12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 63 + + + 0 + + + groupBox19 + + + TabPlanner + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + Lock Pitch and Roll Values + + + + + + 103, 18 + + + 13 + + + NoControl + + + NoControl + + + groupBox24 + + + 40 + + + 80, 84 + + + 71, 17 + + + 2 + + + 2 + + + 111, 82 + + + groupBox21 + + + TabAC + + + label109 + + + 80, 83 + + + 78, 20 + + + 0 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + NoControl + + + groupBox13 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + 1 + + + 0 + + + groupBox2 + + + 78, 20 + + + 80, 13 + + + groupBox11 + + + INT_MAX + + + 54, 13 + + + 30, 111 + + + + + + 4, 22 + + + 5 + + + 4 + + + 6, 40 + + + 0 + + + NoControl + + + Value + + + NoControl + + + ARSPD_FBW_MIN + + + 14 + + + 1 + + + 78, 20 + + + 0 + + + 14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Reset APM on USB Connect + + + 5 + + + 170, 108 + + + 9 + TabPlanner - - 18 + + 78, 20 - - 0 - - + 1 - + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + + + + 11 + + + 80, 61 + + + 1 + + + 78, 20 + + + YW2SRV_P + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 59 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15 + + + groupBox8 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + groupBox13 + + + 78, 20 + + + 80, 37 + + + ARSPD_FBW_MAX + + + Compare Params + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 3 - - 10 + + label41 - - 334, 240 + + groupBox11 - - 80, 21 + + groupBox20 - - 10 + + CMB_speedunits - - CMB_rateposition + + - + + 722, 434 + + + + + + 22 + + + groupBox23 + + + 53, 23 + + + THR_RATE_I + + + groupBox3 + + + + + + + + + 5 + + + 1 + + + 78, 20 + + + 111, 59 + + + 15, 13 + + + 13 + + + 4, 325 + + + 11 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + PTCH2SRV_P + + + 78, 20 + + + + + + 78, 20 + + + 1 + + + + + + NoControl + + + 28 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + 144, 17 + + + 78, 20 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + groupBox10 + + + 358, 260 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6 + + + groupBox2 + + + Bottom, Left + + + 3 + + + + + + STB_YAW_P + + + 499, 240 + + + 1 + + + + + + TabPlanner + + + 111, 13 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 78, 20 + + + 12 + + + D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 621, 240 + + + 322, 107 + + + groupBox2 + + + groupBox11 + + + 4 + + + NoControl + + + groupBox2 + + + + + + 80, 13 + + + 4 + + + 6, 86 + + + 80, 60 + + + 7 + + + 6, 17 + + + 7 + + + + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 378, 107 + + + + + + 2 + + + 13 + + + label11 + + + NoControl + + + 0, 0 + + + Joystick + + + 169, 441 + + + 14 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TabPlanner + + 7 + + + NoControl + + + 15 + + + 54, 13 + + + 9 + + + 80, 37 + + + groupBox12 + + + 7 + + + 2 + + + groupBox24 + + + KFF_PTCH2THR + + + PTCH2SRV_IMAX + + + Bottom, Left + + + groupBox19 + + + Top, Bottom, Left + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label42 + + + 8 + + + $this + + + 27 + + + KFF_PTCHCOMP + + + 9 19 - - 0 + + 6 - + + 78, 20 + + + TabAC + + + NoControl + + 1 - + + 3 + + + 14 + + + On the Flight Data Tab + + + + + + 6, 126 + + + 45, 13 + + + groupBox24 + + + 5 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 78, 20 + + + 138, 21 + + + groupBox3 + + + 9 + + + groupBox20 + + + NoControl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 4 + + + 4 + + + 0 + + + NoControl + + + Gain (cm) + + + 6 + + + NoControl + + + RATE_PIT_P + + + groupBox4 + + + + + + 5 + + + 7 + + + 65, 13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 6, 40 + + + + + + + + + Rate Pitch + + + myLabel2 + + + LIM_PITCH_MIN + + + TabPlanner + + + + + + 14 + + + 80, 21 + + + APM Reset + + + 1 + + + groupBox25 + + + 5 + + + 63 + + + 10 + + + 13 + + + Battery Warning + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + D + + + 7 + + + 21 + + + groupBox22 + + + + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 7 + + + 5 + + + groupBox2 + + + TabPlanner + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 67, 20 + + + 14, 13 + + + + + + TabPlanner + + + False + + + 75, 19 + + + 1 + + + 30, 292 + + + TabAC + + + 111, 13 + + + TabPlanner + + + 38 + + + NoControl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15 + + + + + + 78, 20 + + + 4 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 3 10 - - 188, 240 + + 42 - - 80, 21 + + NoControl - + + 2 + + + + + + 23 + + + 15, 13 + + + 111, 13 + + + 3 + + + groupBox24 + + + NoControl + + + 5 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + NoControl + + + 14, 13 + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + 5 + + + Cruise + + + + + + 17 + + + 0 + + + + + + 100, 23 + + + 78, 20 + + + 78, 20 + + + NoControl + + + TabPlanner + + + 7 + + + I + + + CH6_LOITER_P + + + NoControl + + + + + + Mode/Status + + + 2 + + 11 - - CMB_rateattitude + + 0 + + + 6 + + + NoControl + + + 0 + + + 80, 13 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label84 + + + 1 + + + 7 + + + 14 + + + + + + NoControl + + + label73 + + + 53, 13 + + + Servo Yaw Pid + + + 102, 17 + + + 78, 20 + + + 4 + + + Gain + + + + + + Pitch Max + + + TabAP + + + D + + + XTRK_GAIN_SC1 + + + groupBox23 + + + label103 + + + 6 + + + groupBox14 + + + + + + 3 + + + 38 + + + + + + 11 + + + 3 + + + Stabilize Yaw + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + groupBox20 + + + label34 + + + NoControl + + + 14, 13 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + groupBox15 + + + BUT_videostart + + + 5 + + + D + + + 78, 20 + + + 35 + + + 3 + + + NoControl + + + 10, 13 + + + groupBox4 + + + 6 + + + 32, 13 + + + 5 + + + 6 + + + STB_RLL_P + + + label35 + + + Save WP + + + TabPlanner + + + Load + + + 406, 109 + + + I + + + 78, 20 + + + 4 + + + 1 + + + STB_YAW_IMAX + + + 177, 17 + + + NoControl + + + + + + 5 + + + TabPlanner + + + CMB_osdcolor + + + 5 + + + 0 + + + + + + + + + 78, 20 + + + 7 + + + 182, 126 + + + TabPlanner + + + label80 + + + + + + TabPlanner + + + 6, 63 + + + + + + groupBox4 + + + 7 + + + 417, 336 + + + 78, 20 + + + groupBox16 + + + + + + NoControl + + + 7 + + + groupBox14 + + + Rudder Mix + + + 11 + + + CH6_THROTTLE_KP + + + Speed Units + + + 4 + + + label81 + + + 1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 86 + + + + + + + + + + + + BUT_save + + + 5 + + + groupBox20 + + + 14 + + + P + + + CHK_speechbattery + + + I + + + 26 + + + label30 + + + CH6_DAMP + + + label17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CH6_OPTFLOW_KD + + + $this + + + Configuration + + + 40 + + + 358, 309 + + + 4, 22 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 78, 20 + + + groupBox1 + + + TabAC + + + groupBox13 + + + label31 + + + THR_MAX + + + 61, 13 + + + 14, 13 + + + TabPlanner + + + Alt Warning + + + 54, 13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 36, 13 + + + STB_RLL_IMAX + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label87 + + + 6, 40 + + + 75, 19 + + + 6, 110 + + + 1 + + + KFF_RDDRMIX + + + 80, 63 + + + 4 + + + TabPlanner + + + label36 + + + TabPlanner + + + ARSP2PTCH_IMAX + + + groupBox9 + + + 78, 20 + + + + + + groupBox25 + + + TabAC + + + Time Interval + + + Other Mix's + + + 0 + + + + + + Mode + + + groupBox23 + + + + + + 405, 217 + + + TabAC + + + 11 + + + 7 + + + + + + 80, 13 + + + label12 + + + 0 + + + label37 + + + 5 + + + TabPlanner + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + I + + + Attitude + + + P + + + 1 + + + RC + + + 6, 86 + + + NoControl + + + label82 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 36 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 177, 17 + + + 54, 13 + + + 1 + + + groupBox21 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Speech + + + + + + + + + 9 + + + + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 14, 13 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + THR_RATE_IMAX + + + 19 + + + 1008, 461 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + D + + + label83 + + + 3 + + + 0 + + + 0 + + + NoControl System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TabPlanner + + 195, 108 - - 20 + + 7 - + + + + + 6 + + + 6 + + + 6, 40 + + + 7 + + + 6 + + + 111, 59 + + + label32 + + + label14 + + + groupBox13 + + + 1 + + + label88 + + + 78, 20 + + + + + + groupBox22 + + NoControl - - 283, 209 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 402, 13 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + NoControl + + + 2 + + + 170, 114 + + + 163, 17 + + + groupBox3 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + 170, 108 + + + groupBox14 + + + label15 + + + groupBox11 + + + 6, 86 + + + RATE_RLL_P + + + 195, 108 + + + 5 + + + CH6_RATE_KP + + + 21 + + + groupBox9 + + + 534, 126 + + + TabPlanner + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 64 + + + 6 + + + 13 + + + label38 + + + groupBox1 + + + $this + + + 111, 59 + + + groupBox16 + + + 4 + + + 12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + TabPlanner + + + 195, 108 + + + groupBox6 + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 10 + + + label39 + + + + + + 6, 16 + + + 78, 20 + + + NoControl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 14 + + + 6 + + + groupBox15 + + + 14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + groupBox4 + + + ArduPlane + + + 1 + + + TabPlanner + + + + + + Default + + + 12 + + + TabAP + + + LIM_PITCH_MAX + + + + + + label10 + + + 0 + + + groupBox8 + + + 3 + + + + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 99, 23 + + + 80, 83 + + + NoControl + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 14 + + + THR_ALT_P + + + TabPlanner + + + 6 + + + 4 + + + 78, 20 + + + 6, 17 + + + groupBox7 + + + 14 + + + + + + + + + 6, 16 + + + label1 + + + + + + 80, 83 + + + 111, 82 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label16 + + + + + + 80, 21 + + + 6, 16 + + + + + + ConfigTabs + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 182, 260 + + + 0 + + + + + + 7 + + + 10, 13 + + + TUNE + + + 13 + + + 4, 1 + + + 30, 340 + + + D + + + 9 + + + CH6_YAW_RATE_KP + + + 12 + + + 8 + + + NoControl + + + label5 + + + groupBox14 + + + 111, 59 + + + 6, 17 + + + NoControl + + + 170, 95 + + + 10, 13 + + + + + + TabAP + + + + + + 6 + + + 6, 40 + + + NoControl + + + 6, 40 + + + 14, 13 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Refresh Params + + + CHK_lockrollpitch + + + HDNG2RLL_I 12 + + + + + + + + 6, 16 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 10, 13 + + + 16 + + + CMB_language + + + label9 + + + 6, 63 + + + RATE_PIT_I + + + NoControl + + + 7 + + + 12 + + + 722, 434 + + + groupBox12 + + + groupBox3 + + + + + + 1 + + + CH6_RATE_KI + + + TabPlanner + + + 0, 0, 0, 0 + + + 1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 10 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Write Params + + + 6, 40 + + + 80, 13 + + + IMAX + + + NoControl + + + 6, 17 + + + + + + NoControl + + + 80, 37 + + + + + + groupBox8 + + + 14 + + + NoControl + + + 4 + + + TabPlanner + + + + + + 4 + + + I + + + 425, 244 + + + Value + + + 139, 291 + + + 6, 16 + + + 36 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ArduCopter + + + 0 + + + + + + + + + TabAP + + + label13 + + + 41 + + + mavScale + + + groupBox16 + + + TabAC + + + 80, 107 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabSetup + + + NoControl + + + 78, 20 + + + I + + + P + + + 2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + I + + + 111, 13 + + + label18 + + + 0 + + + 6, 86 + + + 14, 13 + + + groupBox3 + + + 5 + + + groupBox23 + + + 5 + + + 78, 20 + + + 5 + + + Waypoints + + + + + + 15 + + + groupBox5 + + + 138, 21 + + + $this + + + label19 + + + + + + groupBox22 + + + TabPlanner + + + 78, 20 + + + + + + 78, 20 + + + 6, 17 + + + 3 + + + TabAC + + + 41 + + + label101 + + + 78, 20 + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 10 + + + 29 + + + 2 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + NoControl + + + 6, 40 + + + 2 + + + 471, 11 + + + Pitch Comp + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CH6_YAW_KP + + + 9 + + + 5 + + + FBW min + + + NoControl + + + D + + + 51, 13 + + + 78, 20 + + + 6, 66 + + + HLD_LAT_P + + + + + + CMB_rateattitude + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + HLD_LAT_I + + + 6, 40 + + + 6, 40 + + + I + + + groupBox12 + + + 11 + + + 2 + + + 103, 19 + + + 111, 13 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 6, 63 + + + 82, 416 + + + + + + 6, 63 + + + 78, 20 + + + Bank Max + + + + + + groupBox9 + + + 78, 20 + + + groupBox13 + + + 78, 20 + + + 2 + + + 103, 19 + + + groupBox14 + + + groupBox13 + + + + + + 6, 16 + + + 4 + + + 1 + + + CH6_STABILIZE_KI + + + + + + P + + + 54, 13 + + + 6 + + + 2 + + + + + + + + + 69, 13 + + + 6, 63 + + + Rate Yaw + + + groupBox21 + + + 13 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + TabAC + + + FS Value + + + 5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 10, 13 + + + 12 + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + groupBox16 + + + 111, 36 + + + + + + 7 + + + 15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 7 + + + + + + 10, 13 + + + BUT_videostop + + + CHK_resetapmonconnect + + + + + + 14, 13 + + + 245, 21 + + + 15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + 3 + + + CH6_STABILIZE_KP + + + 6, 40 + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 55, 13 + + + ARSPD_RATIO + + + Params + + + groupBox19 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 37 + + + 0 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + groupBox5 + + + 0 + + + 7 + + + + + + TabPlanner + + + RATE_RLL_D + + + NoControl + + + 6, 63 + + + False + + + + + + NoControl + + + + + + + + + IMAX + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Pitch Min + + + 269, 409 + + + 358, 126 + + + I + + + NoControl + + + RATE_PIT_D + + + TabAP + + + NoControl + + + 7 + + + 408, 21 + + + CH6_NONE + + + 78, 20 + + + NoControl + + + Stop + + + 18 + + + 169, 416 + + + 111, 59 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 111, 13 + + + 78, 20 + + + 2 + + + 4 + + + label74 + + + 78, 20 + + + RATE_RLL_I + + + NoControl + + + 9 + + + 6, 86 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 54, 13 + + + CMB_videosources + + + groupBox12 + + + TabPlanner + + + 417, 309 + + + label75 + + + + + + 5 + + + Simple Mode + + + 1 + + + 6, 40 + + + + + + + + + 139, 214 + + + 6, 63 + + + 7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 16 + + + 6, 66 + + + TabPlanner + + + 33, 411 + + + groupBox24 + + + 6, 17 + + + 7 + + + + + + CH6_OPTFLOW_KP + + + 12 + + + 16 + + + 10, 13 + + + + + + CHK_speechmode + + + 111, 59 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 4 + + + Entry Angle + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + NOTE: The Configuration Tab will NOT display these units, as those are raw values. - - label99 + + - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 78, 20 - - TabPlanner - - - 21 - - - NoControl - - - 30, 217 - - - 65, 13 - - - 13 - - - Speed Units - - - label98 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 22 - - - NoControl - - - 30, 189 - - - 52, 13 - - - 14 - - - Dist Units - - - label97 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 23 - - - 139, 214 - - - 138, 21 - - - 15 - - - CMB_speedunits - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 24 - - - 139, 187 - - - 138, 21 - - - 16 - - - CMB_distunits - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 25 - - - NoControl - - - 30, 162 - - - 45, 13 - - - 17 - - - Joystick - - - label96 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 26 - - - NoControl - - - 30, 111 - - - 44, 13 - - - 18 - - - Speech - - - label95 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 27 - - - NoControl - - - 471, 107 - - - 102, 17 - - - 19 - - - Battery Warning - - - CHK_speechbattery - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 28 - - - NoControl - - - 378, 107 - - - 87, 17 - - - 20 - - - Time Interval - - - CHK_speechcustom - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 29 - - - NoControl - - - 322, 107 - - - 56, 17 - - - 21 - - - Mode - - - CHK_speechmode - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 30 - - - NoControl - - - 245, 107 - - - 71, 17 - - - 22 - - - Waypoint - - - CHK_speechwaypoint - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 31 - - - NoControl - - - 30, 83 - - - 57, 13 - - - 23 - - - OSD Color - - - label94 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 32 - - - 139, 80 - - - 138, 21 - - - 24 - - - CMB_osdcolor - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 33 - - - 139, 131 - - - 138, 21 - - - 25 - - - CMB_language - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 34 - - - NoControl - - - 30, 135 - - - 69, 13 - - - 26 - - - UI Language - - - label93 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 35 - - - NoControl - - - 139, 107 - - - 99, 17 - - - 27 - - - Enable Speech - - - CHK_enablespeech - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 36 - - - NoControl - - - 552, 15 - - - 125, 17 - - - 28 - - - Enable HUD Overlay - - - CHK_hudshow - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 37 - - - NoControl - - - 30, 16 - - - 100, 23 - - - 29 - - - Video Device - - - label92 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 38 - - - 139, 13 - - - 245, 21 - - - 30 - - - CMB_videosources - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabPlanner - - - 39 - - - NoControl - - - 139, 158 - - - 99, 23 - - - 31 - - - Joystick Setup - - - BUT_Joystick - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - TabPlanner - - - 40 - - - NoControl - - - 471, 11 - - - 75, 23 - - - 32 - - - Stop - - - BUT_videostop - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - TabPlanner - - - 41 - - - NoControl - - - 390, 11 - - - 75, 23 - - - 33 - - - Start - - - BUT_videostart - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - TabPlanner - - - 42 - - - 4, 22 - - - 3, 3, 3, 3 - - - 722, 434 - - + 2 - - Planner + + - - TabPlanner + + 84, 13 - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - + 2 - - 4, 22 - - - 722, 434 - - - 3 - - - Setup - - - TabSetup - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - - 3 - - - 52, 18 - - - 278, 0 - - - 0, 0, 0, 0 - - - 0, 0 - - - 730, 460 - - - 62 - - - ConfigTabs - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - 0, 0 - - - 100, 23 - - - 0 - - - label109 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Bottom, Left - - - NoControl - - - 169, 441 - - - 103, 19 - - - 0 - - - Refresh Params - - - Reload params from device - - - BUT_rerequestparams - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 1 - - - Bottom, Left - - - NoControl - - - 169, 416 - - - 103, 19 - - - 63 - - - Write Params - - - Write changed params to device - - - BUT_writePIDS - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 3 - - - Bottom, Left - - - NoControl - - - 82, 416 - - - 0, 0, 0, 0 - - - 75, 19 - - - 64 - - - Save - - - Save params to file - - - BUT_save - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - 4 - - Bottom, Left + + 6 - - NoControl - - - 3, 416 - - - 0, 0, 0, 0 - - - 75, 19 - - - 65 - - - Load - - - Load param's from file - - - BUT_load - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - + $this - - 5 + + 112, 21 - - Bottom, Left + + - + + 8 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + NoControl - - 31, 438 + + Position - - 103, 19 + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 66 + + 80, 63 - - Compare Params + + 80, 60 + + + 10 + + + 2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 8 + + + LIM_ROLL_CD + + + groupBox10 + + + label66 + + + label70 + + + groupBox13 + + + + + + 6, 40 + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OpenGL = Disabled +GDI+ = Enabled + + + 6 + + + 54, 13 + + + 8 + + + 111, 82 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + Xtrack Pids + + + NoControl + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 24, 13 + + + label71 + + + 39 + + + 552, 15 + + + groupBox11 BUT_compare - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + 139, 107 - - $this + + NoControl - + + Planner + + + 6, 63 + + + TabPlanner + + + I + + + 15 + + 0 + + CMB_raterc + + + groupBox21 + + + OSD Color + + + + + + Rate Roll + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label25 + + + 80, 37 + + + label76 + + + 6, 86 + + + 406, 1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + NoControl + + + 100, 23 + + + 37 + + + 7 + + + 6, 6 + + + 111, 36 + + + + + + 64, 13 + + + 111, 36 + + + 11 + + + Mavlink Message Debug + + + 31 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CH6_HELI_EXTERNAL_GYRO + + + groupBox12 + + + 111, 13 + + + BUT_load + + + label77 + + + 9 + + + 3 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 280, 244 + + + 4 + + + 9 + + + groupBox4 + + + 78, 20 + + + 4, 22 + + + NoControl + + + NoControl + + + 5 + + + 195, 108 + + + + + + groupBox7 + + + Bottom, Left + + + + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 87 + + + RLL2SRV_D + + + 32 + + + 9 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + 170, 95 + + + label20 + + + 15, 13 + + + + + + 6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label92 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label63 + + + TRIM_ARSPD_CM + + + NoControl + + + + + + 111, 36 + + + 7 + + + 10, 13 + + + NoControl + + + CH6_TOP_BOTTOM_RATIO + + + label21 + + + 13 + + + groupBox9 + + + label72 + + + label54 + + + 471, 107 + + + 10 + + + 2 + + + + + + groupBox11 + + + groupBox11 + + + 99, 17 + + + TabPlanner + + + PTCH2SRV_I + + + groupBox24 + + + 139, 267 + + + Load Waypoints on connect? + + + STB_RLL_I + + + label26 + + + label55 + + + groupBox25 + + + 14 + + + NoControl + + + 78, 20 + + + 34 + + + + + + 3 + + + 38, 13 + + + 2 + + + groupBox8 + + + + + + 62 + + + + + + 5 + + + groupBox25 + + + + + + 112, 21 + + + groupBox25 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label78 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 138, 21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 54, 13 + + + STB_YAW_I + + + 61, 13 + + + label104 + + + 5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + + + + 139, 13 + + + 80, 13 + + + 80, 84 + + + 9 + + + label79 + + + groupBox3 + + + TabAC + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + + + + ALT2PTCH_P + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15 + + + 65, 13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 10, 13 + + + 10 + + + 2 + + + I + + + groupBox22 + + + 52, 18 + + + True + True - - 6, 13 - - - 1008, 461 - - - Command - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Value - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Default - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mavScale - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - RawValue - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolTip1 - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Configuration - - - System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - + + 17, 17 + + + True + + + True + + + True + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.zh-Hans.resx index abda20d918..726105550c 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.zh-Hans.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.zh-Hans.resx @@ -727,30 +727,33 @@ - + - + + Ch6 选项 + + - + - + + Ch7 选项 + + + + + + + + - - - - - - - - - @@ -769,30 +772,12 @@ + + 油门比率 + - - - - - - - - - - - - - - - - - - - - - 122, 17 @@ -802,6 +787,12 @@ + + + + + + @@ -838,25 +829,7 @@ - - - - - - - - - - - - - - - - - - - + @@ -934,9 +907,18 @@ + + 稳定å航 + + + + + + + @@ -955,6 +937,9 @@ + + 稳定俯仰 + @@ -976,9 +961,18 @@ + + 稳定侧倾 + + + + + + + @@ -997,9 +991,18 @@ + + 比率å航 + + + + + + + @@ -1018,9 +1021,18 @@ + + 比率俯仰 + + + + + + + @@ -1039,10 +1051,13 @@ + + 比率侧倾 + - + @@ -1357,8 +1372,4 @@ - - - ..\Resources\MAVParam.zh-Hans.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 - \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs index 45318952a8..14ec04fdcc 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs @@ -127,6 +127,7 @@ // resources.ApplyResources(this.CHKREV_roll, "CHKREV_roll"); this.CHKREV_roll.Name = "CHKREV_roll"; + this.toolTip1.SetToolTip(this.CHKREV_roll, resources.GetString("CHKREV_roll.ToolTip")); this.CHKREV_roll.UseVisualStyleBackColor = true; this.CHKREV_roll.CheckedChanged += new System.EventHandler(this.CHKREV_roll_CheckedChanged); // @@ -134,6 +135,7 @@ // resources.ApplyResources(this.CHKREV_pitch, "CHKREV_pitch"); this.CHKREV_pitch.Name = "CHKREV_pitch"; + this.toolTip1.SetToolTip(this.CHKREV_pitch, resources.GetString("CHKREV_pitch.ToolTip")); this.CHKREV_pitch.UseVisualStyleBackColor = true; this.CHKREV_pitch.CheckedChanged += new System.EventHandler(this.CHKREV_pitch_CheckedChanged); // @@ -141,11 +143,13 @@ // resources.ApplyResources(this.CHKREV_rudder, "CHKREV_rudder"); this.CHKREV_rudder.Name = "CHKREV_rudder"; + this.toolTip1.SetToolTip(this.CHKREV_rudder, resources.GetString("CHKREV_rudder.ToolTip")); this.CHKREV_rudder.UseVisualStyleBackColor = true; this.CHKREV_rudder.CheckedChanged += new System.EventHandler(this.CHKREV_rudder_CheckedChanged); // // GPSrate // + resources.ApplyResources(this.GPSrate, "GPSrate"); this.GPSrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.GPSrate.FormattingEnabled = true; this.GPSrate.Items.AddRange(new object[] { @@ -157,8 +161,8 @@ resources.GetString("GPSrate.Items5"), resources.GetString("GPSrate.Items6"), resources.GetString("GPSrate.Items7")}); - resources.ApplyResources(this.GPSrate, "GPSrate"); this.GPSrate.Name = "GPSrate"; + this.toolTip1.SetToolTip(this.GPSrate, resources.GetString("GPSrate.ToolTip")); this.GPSrate.SelectedIndexChanged += new System.EventHandler(this.GPSrate_SelectedIndexChanged); this.GPSrate.KeyDown += new System.Windows.Forms.KeyEventHandler(this.GPSrate_KeyDown); this.GPSrate.Leave += new System.EventHandler(this.GPSrate_Leave); @@ -167,6 +171,7 @@ // resources.ApplyResources(this.ConnectComPort, "ConnectComPort"); this.ConnectComPort.Name = "ConnectComPort"; + this.toolTip1.SetToolTip(this.ConnectComPort, resources.GetString("ConnectComPort.ToolTip")); this.ConnectComPort.UseVisualStyleBackColor = true; this.ConnectComPort.Click += new System.EventHandler(this.ConnectComPort_Click); // @@ -174,6 +179,7 @@ // resources.ApplyResources(this.OutputLog, "OutputLog"); this.OutputLog.Name = "OutputLog"; + this.toolTip1.SetToolTip(this.OutputLog, resources.GetString("OutputLog.ToolTip")); this.OutputLog.TextChanged += new System.EventHandler(this.OutputLog_TextChanged); // // TXT_roll @@ -181,24 +187,28 @@ resources.ApplyResources(this.TXT_roll, "TXT_roll"); this.TXT_roll.Name = "TXT_roll"; this.TXT_roll.resize = false; + this.toolTip1.SetToolTip(this.TXT_roll, resources.GetString("TXT_roll.ToolTip")); // // TXT_pitch // resources.ApplyResources(this.TXT_pitch, "TXT_pitch"); this.TXT_pitch.Name = "TXT_pitch"; this.TXT_pitch.resize = false; + this.toolTip1.SetToolTip(this.TXT_pitch, resources.GetString("TXT_pitch.ToolTip")); // // TXT_heading // resources.ApplyResources(this.TXT_heading, "TXT_heading"); this.TXT_heading.Name = "TXT_heading"; this.TXT_heading.resize = false; + this.toolTip1.SetToolTip(this.TXT_heading, resources.GetString("TXT_heading.ToolTip")); // // TXT_wpdist // resources.ApplyResources(this.TXT_wpdist, "TXT_wpdist"); this.TXT_wpdist.Name = "TXT_wpdist"; this.TXT_wpdist.resize = false; + this.toolTip1.SetToolTip(this.TXT_wpdist, resources.GetString("TXT_wpdist.ToolTip")); // // currentStateBindingSource // @@ -209,35 +219,41 @@ resources.ApplyResources(this.TXT_bererror, "TXT_bererror"); this.TXT_bererror.Name = "TXT_bererror"; this.TXT_bererror.resize = false; + this.toolTip1.SetToolTip(this.TXT_bererror, resources.GetString("TXT_bererror.ToolTip")); // // TXT_alterror // resources.ApplyResources(this.TXT_alterror, "TXT_alterror"); this.TXT_alterror.Name = "TXT_alterror"; this.TXT_alterror.resize = false; + this.toolTip1.SetToolTip(this.TXT_alterror, resources.GetString("TXT_alterror.ToolTip")); // // TXT_lat // resources.ApplyResources(this.TXT_lat, "TXT_lat"); this.TXT_lat.Name = "TXT_lat"; this.TXT_lat.resize = false; + this.toolTip1.SetToolTip(this.TXT_lat, resources.GetString("TXT_lat.ToolTip")); // // TXT_long // resources.ApplyResources(this.TXT_long, "TXT_long"); this.TXT_long.Name = "TXT_long"; this.TXT_long.resize = false; + this.toolTip1.SetToolTip(this.TXT_long, resources.GetString("TXT_long.ToolTip")); // // TXT_alt // resources.ApplyResources(this.TXT_alt, "TXT_alt"); this.TXT_alt.Name = "TXT_alt"; this.TXT_alt.resize = false; + this.toolTip1.SetToolTip(this.TXT_alt, resources.GetString("TXT_alt.ToolTip")); // // SaveSettings // resources.ApplyResources(this.SaveSettings, "SaveSettings"); this.SaveSettings.Name = "SaveSettings"; + this.toolTip1.SetToolTip(this.SaveSettings, resources.GetString("SaveSettings.ToolTip")); this.SaveSettings.UseVisualStyleBackColor = true; this.SaveSettings.Click += new System.EventHandler(this.SaveSettings_Click); // @@ -264,27 +280,32 @@ resources.ApplyResources(this.TXT_servoroll, "TXT_servoroll"); this.TXT_servoroll.Name = "TXT_servoroll"; this.TXT_servoroll.resize = false; + this.toolTip1.SetToolTip(this.TXT_servoroll, resources.GetString("TXT_servoroll.ToolTip")); // // TXT_servopitch // resources.ApplyResources(this.TXT_servopitch, "TXT_servopitch"); this.TXT_servopitch.Name = "TXT_servopitch"; this.TXT_servopitch.resize = false; + this.toolTip1.SetToolTip(this.TXT_servopitch, resources.GetString("TXT_servopitch.ToolTip")); // // TXT_servorudder // resources.ApplyResources(this.TXT_servorudder, "TXT_servorudder"); this.TXT_servorudder.Name = "TXT_servorudder"; this.TXT_servorudder.resize = false; + this.toolTip1.SetToolTip(this.TXT_servorudder, resources.GetString("TXT_servorudder.ToolTip")); // // TXT_servothrottle // resources.ApplyResources(this.TXT_servothrottle, "TXT_servothrottle"); this.TXT_servothrottle.Name = "TXT_servothrottle"; this.TXT_servothrottle.resize = false; + this.toolTip1.SetToolTip(this.TXT_servothrottle, resources.GetString("TXT_servothrottle.ToolTip")); // // panel1 // + resources.ApplyResources(this.panel1, "panel1"); this.panel1.Controls.Add(this.label4); this.panel1.Controls.Add(this.label3); this.panel1.Controls.Add(this.label2); @@ -292,35 +313,40 @@ this.panel1.Controls.Add(this.TXT_lat); this.panel1.Controls.Add(this.TXT_long); this.panel1.Controls.Add(this.TXT_alt); - resources.ApplyResources(this.panel1, "panel1"); this.panel1.Name = "panel1"; + this.toolTip1.SetToolTip(this.panel1, resources.GetString("panel1.ToolTip")); // // label4 // resources.ApplyResources(this.label4, "label4"); this.label4.Name = "label4"; this.label4.resize = false; + this.toolTip1.SetToolTip(this.label4, resources.GetString("label4.ToolTip")); // // label3 // resources.ApplyResources(this.label3, "label3"); this.label3.Name = "label3"; this.label3.resize = false; + this.toolTip1.SetToolTip(this.label3, resources.GetString("label3.ToolTip")); // // label2 // resources.ApplyResources(this.label2, "label2"); this.label2.Name = "label2"; this.label2.resize = false; + this.toolTip1.SetToolTip(this.label2, resources.GetString("label2.ToolTip")); // // label1 // resources.ApplyResources(this.label1, "label1"); this.label1.Name = "label1"; this.label1.resize = false; + this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip")); // // panel2 // + resources.ApplyResources(this.panel2, "panel2"); this.panel2.Controls.Add(this.label30); this.panel2.Controls.Add(this.TXT_yaw); this.panel2.Controls.Add(this.label11); @@ -330,65 +356,75 @@ this.panel2.Controls.Add(this.TXT_roll); this.panel2.Controls.Add(this.TXT_pitch); this.panel2.Controls.Add(this.TXT_heading); - resources.ApplyResources(this.panel2, "panel2"); this.panel2.Name = "panel2"; + this.toolTip1.SetToolTip(this.panel2, resources.GetString("panel2.ToolTip")); // // label30 // resources.ApplyResources(this.label30, "label30"); this.label30.Name = "label30"; this.label30.resize = false; + this.toolTip1.SetToolTip(this.label30, resources.GetString("label30.ToolTip")); // // TXT_yaw // resources.ApplyResources(this.TXT_yaw, "TXT_yaw"); this.TXT_yaw.Name = "TXT_yaw"; this.TXT_yaw.resize = false; + this.toolTip1.SetToolTip(this.TXT_yaw, resources.GetString("TXT_yaw.ToolTip")); // // label11 // resources.ApplyResources(this.label11, "label11"); this.label11.Name = "label11"; this.label11.resize = false; + this.toolTip1.SetToolTip(this.label11, resources.GetString("label11.ToolTip")); // // label7 // resources.ApplyResources(this.label7, "label7"); this.label7.Name = "label7"; this.label7.resize = false; + this.toolTip1.SetToolTip(this.label7, resources.GetString("label7.ToolTip")); // // label6 // resources.ApplyResources(this.label6, "label6"); this.label6.Name = "label6"; this.label6.resize = false; + this.toolTip1.SetToolTip(this.label6, resources.GetString("label6.ToolTip")); // // label5 // resources.ApplyResources(this.label5, "label5"); this.label5.Name = "label5"; this.label5.resize = false; + this.toolTip1.SetToolTip(this.label5, resources.GetString("label5.ToolTip")); // // label8 // resources.ApplyResources(this.label8, "label8"); this.label8.Name = "label8"; this.label8.resize = false; + this.toolTip1.SetToolTip(this.label8, resources.GetString("label8.ToolTip")); // // label9 // resources.ApplyResources(this.label9, "label9"); this.label9.Name = "label9"; this.label9.resize = false; + this.toolTip1.SetToolTip(this.label9, resources.GetString("label9.ToolTip")); // // label10 // resources.ApplyResources(this.label10, "label10"); this.label10.Name = "label10"; this.label10.resize = false; + this.toolTip1.SetToolTip(this.label10, resources.GetString("label10.ToolTip")); // // panel3 // + resources.ApplyResources(this.panel3, "panel3"); this.panel3.Controls.Add(this.label16); this.panel3.Controls.Add(this.label15); this.panel3.Controls.Add(this.label14); @@ -398,41 +434,47 @@ this.panel3.Controls.Add(this.TXT_servopitch); this.panel3.Controls.Add(this.TXT_servorudder); this.panel3.Controls.Add(this.TXT_servothrottle); - resources.ApplyResources(this.panel3, "panel3"); this.panel3.Name = "panel3"; + this.toolTip1.SetToolTip(this.panel3, resources.GetString("panel3.ToolTip")); // // label16 // resources.ApplyResources(this.label16, "label16"); this.label16.Name = "label16"; this.label16.resize = false; + this.toolTip1.SetToolTip(this.label16, resources.GetString("label16.ToolTip")); // // label15 // resources.ApplyResources(this.label15, "label15"); this.label15.Name = "label15"; this.label15.resize = false; + this.toolTip1.SetToolTip(this.label15, resources.GetString("label15.ToolTip")); // // label14 // resources.ApplyResources(this.label14, "label14"); this.label14.Name = "label14"; this.label14.resize = false; + this.toolTip1.SetToolTip(this.label14, resources.GetString("label14.ToolTip")); // // label13 // resources.ApplyResources(this.label13, "label13"); this.label13.Name = "label13"; this.label13.resize = false; + this.toolTip1.SetToolTip(this.label13, resources.GetString("label13.ToolTip")); // // label12 // resources.ApplyResources(this.label12, "label12"); this.label12.Name = "label12"; this.label12.resize = false; + this.toolTip1.SetToolTip(this.label12, resources.GetString("label12.ToolTip")); // // panel4 // + resources.ApplyResources(this.panel4, "panel4"); this.panel4.Controls.Add(this.label20); this.panel4.Controls.Add(this.label19); this.panel4.Controls.Add(this.TXT_control_mode); @@ -444,50 +486,57 @@ this.panel4.Controls.Add(this.TXT_wpdist); this.panel4.Controls.Add(this.TXT_bererror); this.panel4.Controls.Add(this.TXT_alterror); - resources.ApplyResources(this.panel4, "panel4"); this.panel4.Name = "panel4"; + this.toolTip1.SetToolTip(this.panel4, resources.GetString("panel4.ToolTip")); // // label20 // resources.ApplyResources(this.label20, "label20"); this.label20.Name = "label20"; this.label20.resize = false; + this.toolTip1.SetToolTip(this.label20, resources.GetString("label20.ToolTip")); // // label19 // resources.ApplyResources(this.label19, "label19"); this.label19.Name = "label19"; this.label19.resize = false; + this.toolTip1.SetToolTip(this.label19, resources.GetString("label19.ToolTip")); // // TXT_control_mode // resources.ApplyResources(this.TXT_control_mode, "TXT_control_mode"); this.TXT_control_mode.Name = "TXT_control_mode"; this.TXT_control_mode.resize = false; + this.toolTip1.SetToolTip(this.TXT_control_mode, resources.GetString("TXT_control_mode.ToolTip")); // // TXT_WP // resources.ApplyResources(this.TXT_WP, "TXT_WP"); this.TXT_WP.Name = "TXT_WP"; this.TXT_WP.resize = false; + this.toolTip1.SetToolTip(this.TXT_WP, resources.GetString("TXT_WP.ToolTip")); // // label18 // resources.ApplyResources(this.label18, "label18"); this.label18.Name = "label18"; this.label18.resize = false; + this.toolTip1.SetToolTip(this.label18, resources.GetString("label18.ToolTip")); // // label17 // resources.ApplyResources(this.label17, "label17"); this.label17.Name = "label17"; this.label17.resize = false; + this.toolTip1.SetToolTip(this.label17, resources.GetString("label17.ToolTip")); // // panel5 // - this.panel5.Controls.Add(this.ConnectComPort); resources.ApplyResources(this.panel5, "panel5"); + this.panel5.Controls.Add(this.ConnectComPort); this.panel5.Name = "panel5"; + this.toolTip1.SetToolTip(this.panel5, resources.GetString("panel5.ToolTip")); // // zg1 // @@ -500,6 +549,7 @@ this.zg1.ScrollMinX = 0D; this.zg1.ScrollMinY = 0D; this.zg1.ScrollMinY2 = 0D; + this.toolTip1.SetToolTip(this.zg1, resources.GetString("zg1.ToolTip")); // // timer_servo_graph // @@ -507,6 +557,7 @@ // // panel6 // + resources.ApplyResources(this.panel6, "panel6"); this.panel6.Controls.Add(this.label28); this.panel6.Controls.Add(this.label29); this.panel6.Controls.Add(this.label27); @@ -519,37 +570,42 @@ this.panel6.Controls.Add(this.TXT_ruddergain); this.panel6.Controls.Add(this.TXT_pitchgain); this.panel6.Controls.Add(this.TXT_rollgain); - resources.ApplyResources(this.panel6, "panel6"); this.panel6.Name = "panel6"; + this.toolTip1.SetToolTip(this.panel6, resources.GetString("panel6.ToolTip")); // // label28 // resources.ApplyResources(this.label28, "label28"); this.label28.Name = "label28"; this.label28.resize = false; + this.toolTip1.SetToolTip(this.label28, resources.GetString("label28.ToolTip")); // // label29 // resources.ApplyResources(this.label29, "label29"); this.label29.Name = "label29"; this.label29.resize = false; + this.toolTip1.SetToolTip(this.label29, resources.GetString("label29.ToolTip")); // // label27 // resources.ApplyResources(this.label27, "label27"); this.label27.Name = "label27"; this.label27.resize = false; + this.toolTip1.SetToolTip(this.label27, resources.GetString("label27.ToolTip")); // // label25 // resources.ApplyResources(this.label25, "label25"); this.label25.Name = "label25"; this.label25.resize = false; + this.toolTip1.SetToolTip(this.label25, resources.GetString("label25.ToolTip")); // // TXT_throttlegain // resources.ApplyResources(this.TXT_throttlegain, "TXT_throttlegain"); this.TXT_throttlegain.Name = "TXT_throttlegain"; + this.toolTip1.SetToolTip(this.TXT_throttlegain, resources.GetString("TXT_throttlegain.ToolTip")); this.TXT_throttlegain.TextChanged += new System.EventHandler(this.TXT_throttlegain_TextChanged); // // label24 @@ -557,41 +613,48 @@ resources.ApplyResources(this.label24, "label24"); this.label24.Name = "label24"; this.label24.resize = false; + this.toolTip1.SetToolTip(this.label24, resources.GetString("label24.ToolTip")); // // label23 // resources.ApplyResources(this.label23, "label23"); this.label23.Name = "label23"; this.label23.resize = false; + this.toolTip1.SetToolTip(this.label23, resources.GetString("label23.ToolTip")); // // label22 // resources.ApplyResources(this.label22, "label22"); this.label22.Name = "label22"; this.label22.resize = false; + this.toolTip1.SetToolTip(this.label22, resources.GetString("label22.ToolTip")); // // label21 // resources.ApplyResources(this.label21, "label21"); this.label21.Name = "label21"; this.label21.resize = false; + this.toolTip1.SetToolTip(this.label21, resources.GetString("label21.ToolTip")); // // TXT_ruddergain // resources.ApplyResources(this.TXT_ruddergain, "TXT_ruddergain"); this.TXT_ruddergain.Name = "TXT_ruddergain"; + this.toolTip1.SetToolTip(this.TXT_ruddergain, resources.GetString("TXT_ruddergain.ToolTip")); this.TXT_ruddergain.TextChanged += new System.EventHandler(this.TXT_ruddergain_TextChanged); // // TXT_pitchgain // resources.ApplyResources(this.TXT_pitchgain, "TXT_pitchgain"); this.TXT_pitchgain.Name = "TXT_pitchgain"; + this.toolTip1.SetToolTip(this.TXT_pitchgain, resources.GetString("TXT_pitchgain.ToolTip")); this.TXT_pitchgain.TextChanged += new System.EventHandler(this.TXT_pitchgain_TextChanged); // // TXT_rollgain // resources.ApplyResources(this.TXT_rollgain, "TXT_rollgain"); this.TXT_rollgain.Name = "TXT_rollgain"; + this.toolTip1.SetToolTip(this.TXT_rollgain, resources.GetString("TXT_rollgain.ToolTip")); this.TXT_rollgain.TextChanged += new System.EventHandler(this.TXT_rollgain_TextChanged); // // label26 @@ -599,11 +662,13 @@ resources.ApplyResources(this.label26, "label26"); this.label26.Name = "label26"; this.label26.resize = false; + this.toolTip1.SetToolTip(this.label26, resources.GetString("label26.ToolTip")); // // CHKdisplayall // resources.ApplyResources(this.CHKdisplayall, "CHKdisplayall"); this.CHKdisplayall.Name = "CHKdisplayall"; + this.toolTip1.SetToolTip(this.CHKdisplayall, resources.GetString("CHKdisplayall.ToolTip")); this.CHKdisplayall.UseVisualStyleBackColor = true; this.CHKdisplayall.CheckedChanged += new System.EventHandler(this.CHKdisplayall_CheckedChanged); // @@ -613,6 +678,7 @@ this.CHKgraphroll.Checked = true; this.CHKgraphroll.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphroll.Name = "CHKgraphroll"; + this.toolTip1.SetToolTip(this.CHKgraphroll, resources.GetString("CHKgraphroll.ToolTip")); this.CHKgraphroll.UseVisualStyleBackColor = true; // // CHKgraphpitch @@ -621,6 +687,7 @@ this.CHKgraphpitch.Checked = true; this.CHKgraphpitch.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphpitch.Name = "CHKgraphpitch"; + this.toolTip1.SetToolTip(this.CHKgraphpitch, resources.GetString("CHKgraphpitch.ToolTip")); this.CHKgraphpitch.UseVisualStyleBackColor = true; // // CHKgraphrudder @@ -629,6 +696,7 @@ this.CHKgraphrudder.Checked = true; this.CHKgraphrudder.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphrudder.Name = "CHKgraphrudder"; + this.toolTip1.SetToolTip(this.CHKgraphrudder, resources.GetString("CHKgraphrudder.ToolTip")); this.CHKgraphrudder.UseVisualStyleBackColor = true; // // CHKgraphthrottle @@ -637,12 +705,14 @@ this.CHKgraphthrottle.Checked = true; this.CHKgraphthrottle.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphthrottle.Name = "CHKgraphthrottle"; + this.toolTip1.SetToolTip(this.CHKgraphthrottle, resources.GetString("CHKgraphthrottle.ToolTip")); this.CHKgraphthrottle.UseVisualStyleBackColor = true; // // but_advsettings // resources.ApplyResources(this.but_advsettings, "but_advsettings"); this.but_advsettings.Name = "but_advsettings"; + this.toolTip1.SetToolTip(this.but_advsettings, resources.GetString("but_advsettings.ToolTip")); this.but_advsettings.UseVisualStyleBackColor = true; this.but_advsettings.Click += new System.EventHandler(this.but_advsettings_Click); // @@ -650,12 +720,14 @@ // resources.ApplyResources(this.chkSensor, "chkSensor"); this.chkSensor.Name = "chkSensor"; + this.toolTip1.SetToolTip(this.chkSensor, resources.GetString("chkSensor.ToolTip")); this.chkSensor.UseVisualStyleBackColor = true; // // CHK_quad // resources.ApplyResources(this.CHK_quad, "CHK_quad"); this.CHK_quad.Name = "CHK_quad"; + this.toolTip1.SetToolTip(this.CHK_quad, resources.GetString("CHK_quad.ToolTip")); this.CHK_quad.UseVisualStyleBackColor = true; this.CHK_quad.CheckedChanged += new System.EventHandler(this.CHK_quad_CheckedChanged); // @@ -663,6 +735,7 @@ // resources.ApplyResources(this.BUT_startfgquad, "BUT_startfgquad"); this.BUT_startfgquad.Name = "BUT_startfgquad"; + this.toolTip1.SetToolTip(this.BUT_startfgquad, resources.GetString("BUT_startfgquad.ToolTip")); this.BUT_startfgquad.UseVisualStyleBackColor = true; this.BUT_startfgquad.Click += new System.EventHandler(this.BUT_startfgquad_Click); // @@ -670,6 +743,7 @@ // resources.ApplyResources(this.BUT_startfgplane, "BUT_startfgplane"); this.BUT_startfgplane.Name = "BUT_startfgplane"; + this.toolTip1.SetToolTip(this.BUT_startfgplane, resources.GetString("BUT_startfgplane.ToolTip")); this.BUT_startfgplane.UseVisualStyleBackColor = true; this.BUT_startfgplane.Click += new System.EventHandler(this.BUT_startfgplane_Click); // @@ -677,6 +751,7 @@ // resources.ApplyResources(this.BUT_startxplane, "BUT_startxplane"); this.BUT_startxplane.Name = "BUT_startxplane"; + this.toolTip1.SetToolTip(this.BUT_startxplane, resources.GetString("BUT_startxplane.ToolTip")); this.BUT_startxplane.UseVisualStyleBackColor = true; this.BUT_startxplane.Click += new System.EventHandler(this.BUT_startxplane_Click); // @@ -684,6 +759,7 @@ // resources.ApplyResources(this.CHK_heli, "CHK_heli"); this.CHK_heli.Name = "CHK_heli"; + this.toolTip1.SetToolTip(this.CHK_heli, resources.GetString("CHK_heli.ToolTip")); this.CHK_heli.UseVisualStyleBackColor = true; // // RAD_aerosimrc @@ -704,6 +780,7 @@ // resources.ApplyResources(this.CHK_xplane10, "CHK_xplane10"); this.CHK_xplane10.Name = "CHK_xplane10"; + this.toolTip1.SetToolTip(this.CHK_xplane10, resources.GetString("CHK_xplane10.ToolTip")); this.CHK_xplane10.UseVisualStyleBackColor = true; // // Simulation @@ -743,6 +820,7 @@ this.Controls.Add(this.CHKREV_pitch); this.Controls.Add(this.CHKREV_roll); this.Name = "Simulation"; + this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip")); this.Load += new System.EventHandler(this.Simulation_Load); ((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).EndInit(); this.panel1.ResumeLayout(false); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx index b78bdb87cf..26574a9a47 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx @@ -118,1152 +118,1021 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - True - - - - 213, 10 - - - 87, 17 - - - 1 - - - Reverse Roll - - - CHKREV_roll - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 31 - - - True - - - 299, 10 - - - 93, 17 - - - 2 - - - Reverse Pitch - - - CHKREV_pitch - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 30 - - - True - - - 398, 10 - - - 104, 17 - 3 - - Reverse Rudder + + - - CHKREV_rudder + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + - - $this - - - 29 - - - 100 - - - 200 - - - 250 - - - 333 - - - 500 + + 1000 - - 30000 + + + 126, 37 - - 99999 + + 6 - - 551, 36 + + label26 - - 79, 21 + + label3 - - 4 - - - GPSrate - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + $this - - 28 - - - 26, 13 - 128, 23 - - 5 + + Plane IMU - - Sim Link Start/Stop + + CHKgraphthrottle + + + 24 + + + label27 + + + Pitch + + + 25, 13 ConnectComPort - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel5 - - - 0 - - - Lucida Console, 8.25pt - - - 197, 66 - - - 363, 208 - - - 6 - - + - - OutputLog + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 7, 104 - - $this + + 5 - - 27 + + SIM only - - 67, 22 + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - 100, 20 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - 7 + + 43 - - TXT_roll - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel2 - - - 6 - - - 67, 45 - - - 100, 20 - - - 8 - - - TXT_pitch - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel2 - - - 7 - - - 67, 70 - - - 100, 20 - - - 9 - - - TXT_heading - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel2 - - - 8 - - - 75, 24 - - - 100, 20 - - - 10 - - - TXT_wpdist - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 8 - - - 104, 17 - - - 75, 50 - - - 100, 20 - - - 11 - - - TXT_bererror - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 9 - - - 75, 76 - - - 100, 20 - - - 12 - - - TXT_alterror - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 + + 10 - - 67, 23 + + 67, 24 - - 100, 20 + + Roll - - 13 + + 41 - - TXT_lat + + 9 - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - + panel1 - - 4 + + Reverse Pitch - - 67, 49 + + Show Rudder - - 100, 20 + + panel2 - - 14 - - - TXT_long - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel1 - - - 5 - - - 67, 75 - - - 100, 20 - - - 15 - - - TXT_alt - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel1 - - - 6 - - - 566, 330 - - - 64, 34 - - - 16 - - - Save Settings - - - SaveSettings - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - + $this - - 26 + + 19 - - True + + panel5 - - 197, 40 + + 67, 76 - - 61, 17 + + 13 - + + GPS Refresh Rate + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 7 + + + 551, 36 + + + 75, 74 + + + 500 + + + 39 + + + Start FG Quad + + + 2 + + 17 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + label22 + + + 6 + + + panel2 + + + 2 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + $this + + + 100, 20 + + + 38, 98 + X-plane - - 301, 17 - - - Can Do Plane/Quad with plugin + + TXT_heading - - RAD_softXplanes + + CHKdisplayall + + + 100, 20 + + + 48 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 0 + + + Longitude + + + 6 + + + panel6 + + + + + + toolTip1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + - - 25 + + label28 - - True + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - 259, 40 + + 7, 52 + + + + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 68, 13 + + + 64, 34 + + + but_advsettings + + + 7, 78 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Bottom, Left + + + 1 + + + 8 + + + 16 + + + 7, 27 + + + 0 + + + label29 + + + 6 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 2 + + + 73, 17 - - 18 - - - FlightGear - Can do Plane and Quad with model + + 99999 + + + + + + label23 + + + panel2 + + + + + + 23 + + + Latitude + + + CHKREV_roll + + + $this + + + 18 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + True + + + Sensor + + + Simulation + + + 1 + + + + + + Reverse Rudder + + + label14 + + + + + + 49 + + + Save Settings + + + Plane GPS + + + 9 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + True + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label15 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TXT_servothrottle + + + 110, 709 + + + 566, 66 + + + Show Roll + + + + + + 91, 17 + + + True + + + 0 + + + Pitch + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TXT_bererror + + + 25 + + + NoControl + + + 213, 10 + + + + + + 16 + + + $this + RAD_softFlightGear - + + 2 + + + CHKgraphroll + + + TXT_servorudder + + + 30000 + + + 5 + + + panel2 + + + 40 + + + + + + panel6 + + + 17 + + + panel1 + + + 25 + + + + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + These + + + 74, 17 + + + 2 + + + True + + + Start Xplane + + + 37, 13 + + + 63, 20 + + + + + + $this + + + 0 + + + 100, 20 + + + 7, 78 + + + 18 + + + 21 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + panel3 + + + label11 + + + + + + 19 + + + 0 + + + 13, 709 + + + 471, 41 + + + panel3 + + + Show Pitch + + + 16 + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + panel3 + + + panel3 + + + 13, 294 + + $this 24 - - 67, 24 - - - 100, 20 - - - 19 - - - TXT_servoroll + + 29 - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - panel3 - - - 5 - - - 67, 50 - - - 100, 20 - - - 20 - - - TXT_servopitch - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel3 - - - 6 - - - 67, 76 - - - 100, 20 - - - 21 - - - TXT_servorudder - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel3 - - - 7 - - - 67, 102 - - - 100, 20 - - - 22 - - - TXT_servothrottle - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel3 - - - 8 - - - 60, 3 - - - 59, 13 - - + 19 - - Plane GPS + + label16 - - label4 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + TXT_rollgain - - panel1 + + 126, 63 - - 0 + + 6, 13 - - 7, 78 + + panel3 - - 42, 13 - - - 18 - - - Altitude - - - label3 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel1 + + System.Windows.Forms.Timer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 1 - - 7, 52 - - - 54, 13 - - - 17 - - - Longitude - - - label2 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel1 - - - 2 - - - 7, 26 - - - 45, 13 - - - 16 - - - Latitude - - - label1 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel1 - - - 3 - - - 13, 66 - - - 178, 100 - - + 23 - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 23 - - - 7, 100 - - - 28, 13 - - + 21 - - Yaw + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - label30 + + - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + - - panel2 + + $this - - 0 + + $this - - 67, 93 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - 100, 20 + + label17 - - 20 + + $this + + + System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 566, 368 + + + + + + CHK_xplane10 + + + True + + + 12, 172 + + + $this + + + panel6 + + + + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + 566, 186 + + + True TXT_yaw - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - + + + + + + + + 10, 27 + + + panel6 + + + 4 + + + panel6 + + + panel4 + + + Throttle + + + 69, 13 + + + label12 + + + TXT_throttlegain + + + 45, 20 + + + 6 + + + Show Throttle + + + 3 + + + label2 + + + Quad + + + 566, 237 + + + + + + panel5 + + + panel1 + + + label6 + + + + + + 44 + + + + + + panel4 + + + 2, 7 + + + Start FG Plane + + + 32 + + + 28, 13 + + + 178, 52 + + + 104, 17 + + + 48, 13 + + + ZedGraph.ZedGraphControl, ZedGraph, Version=5.1.2.878, Culture=neutral, PublicKeyToken=02a83cbd123fcd60 + + + 7 + + + 10 + + + 4 + + + + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + panel3 + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11 + + + Yaw + + + FlightGear + + + label18 + + + True + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + panel2 - + + 4 + + + 3 + + + 299, 10 + + + True + + + $this + + 1 - - 60, 4 + + panel4 - - 57, 13 + + 30 - - 19 + + label19 - - Plane IMU + + 8 - - label11 + + Yaw - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel2 + + 67, 45 - + + 12, 420 + + + 5 + + + + + + NoControl + + + panel6 + + + 47 + + + 42 + + + Sim Link Start/Stop + + + $this + + + 25, 13 + + + True + + + 566, 203 + + + Simulator Authority - For diff planes + + + currentStateBindingSource + + + 10, 78 + + + Bottom, Left + + + 36 + + + $this + + + panel1 + + + 79, 21 + + + 7 + + + Altitude + + + 28 + + + 304, 709 + + + Bearing ERR + + + 22, 13 + + + WPDist + + + 14 + + + 27 + + + 31 + + + WP + + + panel3 + + + 566, 146 + + + panel1 + + + 6 + + + are + + + 4, 52 + + + $this + + + 7, 52 + + + 43, 13 + + + 178, 100 + + 2 7, 77 - - 47, 13 - - - 15 - - - Heading - - - label7 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel2 - - - 3 - - - 7, 52 - - - 31, 13 - - - 14 - - - Pitch - - - label6 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel2 - - - 4 - - - 7, 29 - - - 25, 13 - - - 13 - - - Roll - - - label5 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel2 - - - 5 - - - 12, 172 - - - 178, 116 - - - 24 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 22 - - - 7, 27 - - - 43, 13 - - - 16 - - - WPDist - - - label8 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 7 - - - 7, 52 - - - 69, 13 - - - 17 - - - Bearing ERR - - - label9 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 6 - - - 7, 78 - - - 68, 13 - - - 18 - - - Altitude ERR - - - label10 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 5 - - - 50, 8 - - - 83, 13 - - - 27 - - - Ardupilot Output - - - label16 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel3 - - - 0 - - - 10, 104 - - - 43, 13 - - - 26 - - - Throttle - - - label15 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel3 - - - 1 - - - 10, 78 - - - 28, 13 - - - 25 - - - Yaw - - - label14 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel3 - - - 2 - - - 10, 52 - - - 31, 13 - - - 24 - - - Pitch - - - label13 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + BUT_startfgquad panel3 - - 3 + + Roll Gain - - 10, 27 + + 7, 100 - - 25, 13 + + 13 - - 23 + + Xplane 10 - - Roll - - - label12 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel3 - - - 4 - - - 13, 294 - - - 178, 122 - - - 25 - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 21 - - - 72, 104 - - - 34, 13 - - - 23 - - - Mode - - - label20 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 0 - - - 7, 104 - - - 25, 13 - - - 22 - - - WP - - - label19 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 1 - - - 112, 99 - - - 63, 20 - - - 21 - - - TXT_control_mode - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 2 - - - 38, 98 - - - 28, 20 - - - 20 - - - TXT_WP - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 3 - - - 50, 8 - - - 81, 13 - - - 19 - - - Autopilot Status - - - label18 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel4 - - - 4 + + 126, 76 197, 294 @@ -1271,893 +1140,1258 @@ 178, 122 - - 26 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel4 + + TXT_long - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 20 - - - 535, 9 - - - 95, 13 - - - 27 - - - GPS Refresh Rate - - - label17 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 19 - - - 13, 5 - - - 178, 52 - - - 28 - - - panel5 + + 21 System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + panel4 - - 18 - - - - Top, Bottom, Left, Right - - - 12, 420 - - - 702, 283 - - - 29 - - - zg1 - - - ZedGraph.ZedGraphControl, ZedGraph, Version=5.1.2.878, Culture=neutral, PublicKeyToken=02a83cbd123fcd60 - - - $this - - - 17 - - - 17, 17 - - - 126, 76 - - - 48, 13 - - - 32 - - - SIM only - - - label28 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 0 - - - 126, 37 - - - 43, 13 - - - 33 - - - NOTE: - - - label29 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 1 - - - 126, 63 - - - 22, 13 - - - 31 - - - are - - - label27 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 2 - - - 4, 104 - - - 68, 13 - - - 8 - - - Throttle Gain - - - label25 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 3 - - - 75, 100 - - - 45, 20 - - - 7 - - - 10000 - - - TXT_throttlegain - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 - - - 4 - - - 4, 78 - - - 67, 13 - - - 6 - - - Rudder Gain - - - label24 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 5 - - - 4, 52 - - - 56, 13 - - - 5 - - - Pitch Gain - - - label23 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 6 - - - 4, 27 - - - 50, 13 - - - 4 - - - Roll Gain - - - label22 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 7 - - - 2, 7 - - - 169, 13 - - - 3 - - - Simulator Authority - For diff planes - - - label21 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - panel6 - - - 8 - - - 75, 74 - - - 45, 20 - - - 2 - - - 10000 - - - TXT_ruddergain - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 - - - 9 - - - 75, 48 - - - 45, 20 - - - 1 - - - 10000 - - - TXT_pitchgain - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 - - - 10 - - - 75, 23 - - - 45, 20 - - - 0 - - - 10000 - - - TXT_rollgain - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 - - - 11 - - - 382, 294 - - - 178, 122 - - - 30 - - - panel6 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 16 - - - 508, 330 - - - 37, 13 - - - 9 - - - These - - - label26 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 15 - - - True - - - 471, 41 - - - 74, 17 - - - 36 - - - Display All - - - CHKdisplayall - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 14 - - - Bottom, Left - - - True - - - 13, 709 - - - 74, 17 - - - 37 - - - Show Roll - - - CHKgraphroll - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - + 13 - - Bottom, Left - - - True - - - 110, 709 - - - 80, 17 - - - 38 - - - Show Pitch - - - CHKgraphpitch - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 12 - - - Bottom, Left - - - True - - - 207, 709 - - - 91, 17 - - - 39 - - - Show Rudder - - - CHKgraphrudder - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 11 - - - Bottom, Left - - - True - - - 304, 709 - - - 92, 17 - - - 40 - - - Show Throttle - - - CHKgraphthrottle - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 10 - - - 566, 368 - - - 64, 47 - - - 41 - - - Advanced IP Settings - - - but_advsettings - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 9 - - - True - - - 566, 186 - 59, 17 - - 42 + + 10000 - - Sensor + + 100, 20 - - chkSensor - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - - - True - - - NoControl - - - 566, 203 - - - 52, 17 - - - 43 - - - Quad - - - CHK_quad - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - - - NoControl - - - 566, 66 - - - 64, 34 - - - 44 - - - Start FG Quad - - - BUT_startfgquad - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 6 - - - NoControl - - - 566, 106 - - - 64, 34 + + 100, 20 45 - - Start FG Plane - - - BUT_startfgplane - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 5 - - - NoControl - - - 566, 146 - - - 64, 34 - - - 46 - - - Start Xplane - - - BUT_startxplane - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - $this - - - 4 - - - True - - - NoControl - - - 566, 219 - - - 44, 17 - - - 47 + + label25 Heli - - CHK_heli + + 50, 13 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 24 + + + 50, 8 + + + panel6 + + + 9 + + + + + + 22 + + + NoControl + + + panel4 + + + 259, 40 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + CHKREV_rudder + + $this - + + 45, 13 + + + 50 + + + RAD_JSBSim + + + 26 + + + panel6 + + + panel6 + + + 31, 13 + + + 197, 40 + + + Bottom, Left + + + 702, 283 + + + + + + 3 + + + 4, 104 + + + 59, 13 + + + True + + + 19 + + + AeroSimRC + + + + + + 722, 742 + + + 508, 330 + + + 8 + + + panel6 + + + 81, 13 + + + 10000 + + + 83, 13 + + + 2 + + + 75, 24 + + + 27 + + + 11 + + + 398, 10 + + + panel1 + + + Heading + + + $this + + + panel2 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + Display All + + + label21 + + + 56, 13 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + Throttle Gain + + + + + + 67, 23 + + + 100, 20 + + + Can do Plane/Heli/Quads + + + label30 + + 3 True - - NoControl + + TXT_servoroll - - 332, 40 + + - - 79, 17 + + Reverse Roll - - 48 + + Pitch Gain - - AeroSimRC - - - Can do Plane/Heli/Quads - - - RAD_aerosimrc - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + $this - - 2 + + 10 - + + 4 + + + 26, 13 + + + Can Do Plane/Quad with plugin + + + 0 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + $this + + + 67, 22 + + True - - NoControl - - - 409, 40 - - - 61, 17 - - - 49 - - - JSBSim + + 7, 29 Can do Plane/Heli/Quads - - RAD_JSBSim + + - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - $this - - - 1 - - - True - - - NoControl - - - 566, 237 - - - 74, 17 - - - 50 - - - Xplane 10 - - - CHK_xplane10 - - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + 67, 50 - - 0 + + - - True - - - 6, 13 + + 61, 17 - - 722, 742 + + 15 - - currentStateBindingSource + + 38 + + + 178, 122 System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - timer_servo_graph + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Timer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this - - toolTip1 + + 95, 13 + + + 5 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + + + + 61, 17 + + + panel2 + + + panel4 + + + + + + 3 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 8 + + + NoControl + + + 100 + + + NoControl + + + 333 + + + panel1 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 382, 294 + + + 67, 70 + + + 7 + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Simulation + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + 75, 100 + + timer_servo_graph + + + $this + + + + + + 12 + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 112, 99 + + + 31, 13 + + + chkSensor + + + NoControl + + + 26 + + + RAD_softXplanes + + + TXT_alterror + + + 19 + + + 25, 13 + + + + + + 45, 20 + + + + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + Altitude ERR + + + 207, 709 + + + 178, 116 + + + + + + TXT_servopitch + + + label4 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label8 + + + 0 + + + 46 + + + 4 + + + 1 + + + 14 + + + + + + 1 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 67, 93 + + + 10, 52 + + + panel6 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 44, 17 + + + panel2 + + + + + + True + + + GPSrate + + + $this + + + 535, 9 + + + 57, 13 + + + panel2 + + + 31 + + + + + + 9 + + + + + + 54, 13 + + + 100, 20 + + + $this + + + 74, 17 + + + BUT_startfgplane + + + 13, 5 + + + 1 + + + 87, 17 + + + $this + + + NoControl + + + $this + + + 6 + + + + + + 25 + + + TXT_lat + + + 67, 13 + + + + + + $this + + + 332, 40 + + + 100, 20 + + + 20 + + + + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 10000 + + + Rudder Gain + + + Advanced IP Settings + + + 64, 34 + + + 75, 48 + + + Lucida Console, 8.25pt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 79, 17 + + + 7 + + + 3 + + + panel3 + + + 7, 52 + + + 45, 20 + + + 7 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 60, 4 + + + panel3 + + + 9 + + + + + + + + + 20 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + Top, Bottom, Left, Right + + + TXT_WP + + + 5 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 64, 34 + + + NOTE: + + + 7 + + + 22 + + + 28 + + + + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11 + + + 12 + + + $this + + + 18 + + + 200 + + + 100, 20 + + + 363, 208 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + CHKgraphpitch + + + 74, 17 + + + 68, 13 + + + 26 + + + label1 + + + + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 15 + + + label5 + + + $this + + + True + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 64, 34 + + + panel1 + + + + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + + + + 75, 23 + + + 566, 219 + + + 21 + + + $this + + + 64, 47 + + + RAD_aerosimrc + + + panel2 + + + 75, 76 + + + True + + + 23 + + + 30 + + + 7, 26 + + + BUT_startxplane + + + 16 + + + TXT_roll + + + 566, 106 + + + TXT_control_mode + + + + + + zg1 + + + 4 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 60, 3 + + + + + + + + + TXT_wpdist + + + 28, 20 + + + 50, 8 + + + 18 + + + True + + + + + + TXT_pitchgain + + + + + + 75, 50 + + + 2 + + + + + + 47, 13 + + + panel4 + + + 28, 13 + + + label7 + + + $this + + + + + + 100, 20 + + + 67, 75 + + + Ardupilot Output + + + + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 409, 40 + + + + + + 17 + + + 178, 122 + + + 43, 13 + + + 23 + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 197, 66 + + + + + + 10000 + + + 80, 17 + + + panel4 + + + 1 + + + 10, 104 + + + 4, 27 + + + 52, 17 + + + 67, 49 + + + label9 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + $this + + + 20 + + + 93, 17 + + + + + + + + + 4 + + + panel4 + + + TXT_alt + + + CHKgraphrudder + + + CHK_heli + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 3 + + + 22 + + + label24 + + + 42, 13 + + + CHK_quad + + + 92, 17 + + + + + + label13 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + + + + 100, 20 + + + panel6 + + + 169, 13 + + + 29 + + + 10 + + + 100, 20 + + + 43, 13 + + + 45, 20 + + + 67, 102 + + + 100, 20 + + + 5 + + + panel4 + + + 33 + + + TXT_ruddergain + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 17 + + + 250 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + 20 + + + 34, 13 + + + + + + + + + JSBSim + + + 566, 330 + + + CHKREV_pitch + + + 6 + + + 100, 20 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 5 + + + 0 + + + 27 + + + 4 + + + Mode + + + 8 + + + 8 + + + SaveSettings + + + TXT_pitch + + + 4, 78 + + + panel4 + + + Roll + + + 13, 66 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + + + + label20 + + + 8 + + + + + + $this + + + + + + label10 + + + 14 + + + Autopilot Status + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OutputLog + + + 72, 104 + + + Bottom, Left + + + 37 + + + 15 + + + panel4 + + + 5 + + + True + + + 301, 17 + + + 104, 17 + + + 17, 17 + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.zh-Hans.resx index 69ab5e431d..65ad9464fe 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.zh-Hans.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.zh-Hans.resx @@ -122,7 +122,7 @@ 86, 17 - 横滚舵åå‘ + 侧倾舵åå‘ @@ -278,7 +278,7 @@ 31, 13 - 横滚 + 侧倾 @@ -350,7 +350,7 @@ 31, 13 - 横滚 + 侧倾 @@ -464,7 +464,7 @@ 55, 13 - 横滚增益 + 侧倾增益 @@ -505,15 +505,36 @@ + + 显示侧倾 + + + 74, 17 + + + 显示俯仰 + + + 86, 17 + + + 显示方å‘舵 + + + 74, 17 + + + 显示油门 + @@ -568,6 +589,9 @@ + + + diff --git a/Tools/ArdupilotMegaPlanner/MavlinkLog.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/MavlinkLog.zh-Hans.resx new file mode 100644 index 0000000000..27e1d90802 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/MavlinkLog.zh-Hans.resx @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 创建 KML + + + 转æ¢ä¸ºæ–‡æœ¬ + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABILAAASCwAAAAAAAAAA + AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOxkjAtnoOAKpJ4vyiK + c+8nh3D/J4Zv/yeHcP8oi3PvKpJ4vy6fg4AzsZIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjGo2AyspPfLZ+D/yiQ + d/8hlXj/G6F9/xeqg/8XqYL/GKqD/xuhfv8ilnn/KZB3/y2fhP8yspPfN8ajYAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvRrDA1vpzfL6uN/yel + hP8XvJD/DMyY/wfQl/8FzJP/A8qS/wPJkf8EypL/BsyU/wnRmP8PzZn/Gb2R/yemhP8tqoz/Mb2a3zbQ + qkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAA4y6ZgMbWV/yin + iP8WwZP/Btqf/wDPlf8AyI7/A8aP/yfNnv9T2LP/UNax/03XsP8506b/G8ya/wHKkf8F0Zf/CNuf/xLB + kv8fpYT/J7KQ/y7IomAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAANcajny+w + kf8hqoj/CNSd/wDRlf8Axor/Hcyd/3Lhwf+p7Nj/o+vV/57m0/+X5dD/k+TN/4/jzf+K5Mz/fuHH/0PW + rf8HzJT/ANCT/wDRlv8OpX//HayI/yrFn58AAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAADDC + nmAtro7/H62J/wPWmv8Ay47/AMaO/3XhxP+e6tT/mObP/5Pjy/+Q4sr/jODJ/4ffx/+C3MT/f9vC/3nb + wf9y2r7/adq7/2DauP8ZzZv/Fdae/8T/9/9WxKj/HKuI/y7IomAAAAAAAAAAAAAAAAD///8AAAAAAAAA + AAAiuZMwKKyM/x6ohf8C1Zr/AMmL/wHGjv+49OL///////////9+3ML/f9zD/4Dcwv9+28L/e9rA/3bZ + vv9w1rr/Z9S4/17Rs/9Qz63/Qcyn/3LewP////////////n///8MpH7/JbKP/zXQqUAAAAAAAAAAAP// + /wAAAAAAAAAAABymhN8dnn//BNGa/wDKjP8AxY3/sfHf/////////////////2nXt/9w1rv/c9e8/3TX + vP9x17z/a9W5/2TTtf9Y0K//SMyp/zXFoP9i07X/////////////////f/LR/wDQlf8epYT/Mb2a3wAA + AAAAAAAA////AAAAAAADlnJgFZR1/wq4iv8AzpH/AMCD/4rmzf//////////////////////WdGv/2PU + tf9p1rf/atS4/2nUtv9i0rT/Vc+u/0fKpv8zxZz/Ws+w//////////////////////8GyJL/ANCS/xLB + kv8tq4z/OMajYAAAAAD///8AAAAAAACHZt8NkW//ANKV/wDChP9i27r//////////////////////9Dx + 6P9MzKn/Vc+v/17Rsv9g0rP/XNCx/1XNrv9Fyaf/McSd/1fPr///////////////////////QM2m/ynK + oP8JzJX/C9yh/ymmhf80spPfAAAAAP///wAAcUwwAHtc/wCrfP8AyIv/AMKK//////////////////// + /////////////5Dgyv9Gyqb/TMyq/07Nq/9MzKn/Qcmj/y/Fnf9Wzq3//////////////////////57k + 0v8av5T/Lceg/yzOo/8M05v/Hr6T/zCghf80spIw////AABoRYAAclT/AL2H/wDBhf9R1rL///////// + ////////4vfw//////////////////H8+P9KzKn/Ocah/zTFnv8qwpj/Us2t//////////////////// + ////////DLqM/yDBlv8wxp//OM6m/xPPm/8Xz53/LZF5/y+fg4////8AAGNAvwB7Wf8Aw4j/ALyC/4bj + yP+g5tL/g93E/2HSsv9Pzqz/Us6s//////////////////////9Yzq//Gr2S/0jLp/////////////// + /////////////yrDm/8SvI//JMGY/zDHn/81zKT/Is2e/xTUnf8nl3v/LJJ5v////wAAXz3vAIlg/wDA + hf8AuoD/quzZ/5Hjyv9628D/ada2/1jRsP9Jy6f/a9a4//////////////////////+Y4s7///////// + //////////////////+c4tD/AbaH/xW8kf8jwZj/LcWd/y/Jn/8kzJ3/E9Ca/yGjgf8ri3Tv////AABd + PP8Ak2b/AL6D/w/Ekv+m6tf/j+HJ/3vawP9p1rf/W9Gx/0rNqf85yJ//Nsaf//////////////////// + /////////////////////////////wCwe/8AtoT/ELqP/xu+k/8jwZj/KMeb/yHKm/8QzZf/HqyG/ymI + cf////8AAF07/wCSZP8AvYL/GMWU/6Dn1P+K38f/ddi+/27Wuf+E3MX/leHN/6fm1f+l5tX/neLQ//// + ////////////////////////////////////////j9/J/27Vuv9Tzq7/JsKY/xa/kv8aw5T/FcaW/wvL + lf8aqoT/J4dw/////wAAXTv/AJFk/wC9gP8GwY3/mObQ/5rkz/+26dv/y/Hl/8Dt3/+06tz/pebV/5bg + zP+g5NL//////////////v///f7+//7+/v//////7fn2////////////tOnb/6Ll0v+v6Nj/jeDI/zXK + o/8IxJD/BMqS/xaqgv8lh2//////AABeO+8AgVf/AL1//wDBif/R9uv/1PPq/8Tv5P+36t3/rujY/6Lk + 0v+U4cv/jt7J//j8+///////+/38//f8+//2+/r/+Pz7//3+/v/m9/P/9Pv6//D6+P9/28L/jd7J/5jj + z/+h5dL/qOvX/4Hmyf8f1J//E596/yOJcO////8AAGA8vwB3U/8p06P/hufM/8Ty5f/D7+T/s+vb/6bm + 1P+c4c//j9/K/4vcyP/t+fb///7///j8/P/0+/r/8vr5//P7+f/1+/r/+/39///////i9fL/ZNO1/3HW + vP992sH/htzG/4vhyv+S5dD/mO7W/6X74v80noT/Io90v////wAAZkCAAHla/33ny/945cb/nunV/7Xr + 3v+l5tT/luDN/4ndxv992cL/1vLq//v9/P/1+/n/8vv4//L69//z+/j/9Pv5/7Xo2//x+vn///////// + //+y59n/aNS3/3LWvP932r//fNzD/4Ljyf+J7ND/l/bd/yORdf8knH6A////AABuRzAAdlT/Xc6x/23o + xv9s4MH/qurZ/5jiz/+I3cb/edjA/8ju5f/3/Pv/8vv4//H6+P/y+/j/6/f0/7np3v/7/fz//v7+/6fk + 1f+56tz///////////9h0bT/aNW4/23Wu/9v3L//dOLG/37w0f9m1rn/Hpt8/ymujTD///8AAAAAAACD + X98po4X/Z+7K/1vgvP+A4sf/jOHK/3rZwv+r59f/9Pv6/+/69//v+vf/8vr4/9fy6/9n0rf/VM6t/6Di + 0v/N7+f/adO4/1PMrf9t1Lr/i9zI/1/Rs/9h0rX/ZNe4/2bbvf9s5sb/ePfV/z2ylf8lrozfAAAAAP// + /wAAAAAAAJNsYAWQbf9U1rP/Vee//0rYsf993sb/pebV//P7+v/s+Pb/6/f1/+749v+s5tj/Vc2u/1jP + r/9ZzrD/btW5/1bOr/9Wza//Vs6v/1fOr/9Z0LD/WdCy/1vTtP9d1rX/Xt+8/2btyP9k4L//IaaF/y7D + nmAAAAAA////AAAAAAAAAAAAD6J9zyCjgv9S68L/P9+0/2Pevv/5////7/v6/+v59//j9/L/gtvF/1PN + r/9Wz7D/Wc+x/1nQsf9Zz7H/WM6w/1fPsP9UzrD/VM+w/1TPrv9U0a//U9Oy/1Tatv9Z5sD/Y/LL/zSx + lP8qupbPAAAAAAAAAAD///8AAAAAAAAAAAAYto4wGaeE/y23lP8+5rn/6/////j////w//3/ve/i/2bV + uP9Tzq7/Vc+v/1jPsP9Z0LL/WM+w/1fOsf9Wz7D/Us2w/1HOrf9Qzq3/T9Cu/0zSr/9M2LP/TeC5/1bt + xP9HxaX/KLKQ/zTPqDAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAkvpdgG6iF/y++m//e/////P///3rl + yf9G0K3/VdKy/1bPsf9Wz7H/Vs6w/1bPsP9Sza//Ucyu/0/Nrf9NzKz/S82s/0fOrP9G0a7/QdWv/0Le + tP9I6L7/Q8Ok/yitjP8yyKJgAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAmwJlgG6iF/yK3 + kP8k3q7/H9el/x7Pn/8tzKT/Q9Cs/1HQsP9Q0K7/TM6u/0nMrf9Hzaz/RMyp/0LNqf8+zqn/ONGo/zTV + qf833rD/O+S4/zvCof8orIv/MMSfYAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAkvpdgG6iE/xukgv8gy53/HNql/xzRn/8czJz/HcmZ/yXJnP8qyp7/Lcqg/yzLn/8nypz/JMqc/yTO + n/8l1KT/KN2r/y3Tpv8nq4n/JaqJ/yzAm2AAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAato8wFKN/zxCScv8RnHn/DbqM/wjIlP8GyZT/BsaS/wbFkf8GxZH/B8WR/wfH + k/8IypX/DMmV/xG3jP8WoX3/Fph2/xqkgs8ft5EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVvYACGZM8Aelr/AHlZ/wCFX/8AiWL/AJlr/wCb + bP8AlGf/AI5k/wB/W/8AeFj/AHtb/wCHZd8ClXBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwSzAAaESAAGI/vwBf + Pd8AXTz/AF08/wBdPP8AXz3fAGJAvwBoRIAAcUswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A/+AD//+AAP/+AAA//AAAH/gAAA/wAAAH4AAAA+AAAAPAAAABwAAAAYAA + AACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAcAAAAHgAAAD4AAAA/AA + AAf4AAAP/AAAH/4AAD//gAD//+AD//////8= + + + + 记录 + + \ No newline at end of file From 364afe8da0446957dbfde434c330364c896c0e39 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Thu, 23 Feb 2012 09:14:27 -0800 Subject: [PATCH 013/122] added a constraint to D term --- ArduCopter/Attitude.pde | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ArduCopter/Attitude.pde b/ArduCopter/Attitude.pde index eaf4d75b38..5b3c3c024c 100644 --- a/ArduCopter/Attitude.pde +++ b/ArduCopter/Attitude.pde @@ -134,6 +134,7 @@ get_rate_roll(int32_t target_rate) // MultiWii uses a filter of the last three to get around noise and get a stronger signal. // Works well! Thanks! int16_t d_temp = (rate_d1 + rate_d2 + rate_d3) * g.stabilize_d; + d_temp = constrain(d_temp, -400, 400); target_rate -= d_temp; // output control: @@ -167,6 +168,7 @@ get_rate_pitch(int32_t target_rate) // D term int16_t d_temp = (rate_d1 + rate_d2 + rate_d3) * g.stabilize_d; + d_temp = constrain(d_temp, -400, 400); target_rate -= d_temp; // output control: From b094f6ce52b49beea25cabca3cb6ecfbe7f3bc81 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Thu, 23 Feb 2012 09:38:08 -0800 Subject: [PATCH 014/122] added set integrator --- libraries/AC_PID/AC_PID.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/AC_PID/AC_PID.h b/libraries/AC_PID/AC_PID.h index 0a69f5eca0..b0ff88cfca 100755 --- a/libraries/AC_PID/AC_PID.h +++ b/libraries/AC_PID/AC_PID.h @@ -92,6 +92,7 @@ public: void imax(const int16_t v) { _imax.set(abs(v)); } float get_integrator() const { return _integrator; } + void set_integrator(float i) { _integrator = i; } static const struct AP_Param::GroupInfo var_info[]; From 17170da96e1539cc4b29b30dfdf448e6fdc487d1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 23 Feb 2012 22:55:59 +1100 Subject: [PATCH 015/122] AP_Math: added is_nan() methods to vector3f and matrix3f --- libraries/AP_Math/matrix3.h | 4 ++++ libraries/AP_Math/vector3.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/libraries/AP_Math/matrix3.h b/libraries/AP_Math/matrix3.h index c279728baf..0df2ae7bce 100644 --- a/libraries/AP_Math/matrix3.h +++ b/libraries/AP_Math/matrix3.h @@ -124,6 +124,10 @@ public: Matrix3 transpose(void) { return *this = transposed(); } + // check if any elements are NAN + bool is_nan(void) + { return a.is_nan() || b.is_nan() || c.is_nan(); } + }; typedef Matrix3 Matrix3i; diff --git a/libraries/AP_Math/vector3.h b/libraries/AP_Math/vector3.h index e77cd99f1b..caa1ad5398 100644 --- a/libraries/AP_Math/vector3.h +++ b/libraries/AP_Math/vector3.h @@ -173,6 +173,10 @@ public: T angle_normalized(const Vector3 &v1, const Vector3 &v2) { return (T)acosf(v1*v2); } + // check if any elements are NAN + bool is_nan(void) + { return isnan(x) || isnan(y) || isnan(z); } + }; typedef Vector3 Vector3i; From 502fbf6e17cc497b853fe60b310376afd634b75d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 23 Feb 2012 22:56:40 +1100 Subject: [PATCH 016/122] AP_Math: added a safe_asin() function this adds range checking to asin() --- libraries/AP_Math/AP_Math.cpp | 18 ++++++++++++++++++ libraries/AP_Math/AP_Math.h | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 libraries/AP_Math/AP_Math.cpp diff --git a/libraries/AP_Math/AP_Math.cpp b/libraries/AP_Math/AP_Math.cpp new file mode 100644 index 0000000000..cbe56b8142 --- /dev/null +++ b/libraries/AP_Math/AP_Math.cpp @@ -0,0 +1,18 @@ +#include "AP_Math.h" + +// a varient of asin() that checks the input ranges and ensures a +// valid angle as output. If nan is given as input then zero is +// returned. +float safe_asin(float v) +{ + if (isnan(v)) { + return 0; + } + if (v >= 1.0) { + return PI/2; + } + if (v <= -1.0) { + return -PI/2; + } + return asin(v); +} diff --git a/libraries/AP_Math/AP_Math.h b/libraries/AP_Math/AP_Math.h index fbff53cb3d..06eceac6a3 100644 --- a/libraries/AP_Math/AP_Math.h +++ b/libraries/AP_Math/AP_Math.h @@ -12,3 +12,6 @@ // define AP_Param types AP_Vector3f and Ap_Matrix3f AP_PARAMDEFV(Matrix3f, Matrix3f, AP_PARAM_MATRIX3F); AP_PARAMDEFV(Vector3f, Vector3f, AP_PARAM_VECTOR3F); + +// a varient of asin() that always gives a valid answer. +float safe_asin(float v); From c8e6d03c67aeb4dd334a887e29c2b5e0e39f9fdd Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 23 Feb 2012 22:58:41 +1100 Subject: [PATCH 017/122] DCM: added matrix recovery on reset when we get a bad DCM error we can recover a matrix corresponding to the current attitude, making it more likely that the aircraft will be able to recover --- libraries/AP_DCM/AP_DCM.cpp | 72 ++++++++++++++++++++++++++++--------- libraries/AP_DCM/AP_DCM.h | 2 +- 2 files changed, 56 insertions(+), 18 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index aa1a1380a0..6dca5084ef 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -194,20 +194,13 @@ AP_DCM::accel_adjust(void) extreme errors in the matrix */ void -AP_DCM::matrix_reset(void) +AP_DCM::matrix_reset(bool recover_eulers) { if (_compass != NULL) { _compass->null_offsets_disable(); } - _dcm_matrix.a.x = 1.0f; - _dcm_matrix.a.y = 0.0f; - _dcm_matrix.a.z = 0.0f; - _dcm_matrix.b.x = 0.0f; - _dcm_matrix.b.y = 1.0f; - _dcm_matrix.b.z = 0.0f; - _dcm_matrix.c.x = 0.0f; - _dcm_matrix.c.y = 0.0f; - _dcm_matrix.c.z = 1.0f; + + // reset the integration terms _omega_I.x = 0.0f; _omega_I.y = 0.0f; _omega_I.z = 0.0f; @@ -218,6 +211,39 @@ AP_DCM::matrix_reset(void) _error_yaw = _omega_I; _errorCourse = 0; + // if the caller wants us to try to recover to the current + // attitude then calculate the dcm matrix from the current + // roll/pitch/yaw values + if (recover_eulers && !isnan(roll) && !isnan(pitch) && !isnan(yaw)) { + float cp = cos(pitch); + float sp = sin(pitch); + float sr = sin(roll); + float cr = cos(roll); + float sy = sin(yaw); + float cy = cos(yaw); + _dcm_matrix.a.x = cp * cy; + _dcm_matrix.a.y = (sr * sp * cy) - (cr * sy); + _dcm_matrix.a.z = (cr * sp * cy) + (sr * sy); + _dcm_matrix.b.x = cp * sy; + _dcm_matrix.b.y = (sr * sp * sy) + (cr * cy); + _dcm_matrix.b.z = (cr * sp * sy) - (sr * cy); + _dcm_matrix.c.x = -sp; + _dcm_matrix.c.y = sr * cp; + _dcm_matrix.c.z = cr * cp; + } else { + // otherwise make it flat + //Serial.printf("zeroing DCM matrix\n"); + _dcm_matrix.a.x = 1.0f; + _dcm_matrix.a.y = 0.0f; + _dcm_matrix.a.z = 0.0f; + _dcm_matrix.b.x = 0.0f; + _dcm_matrix.b.y = 1.0f; + _dcm_matrix.b.z = 0.0f; + _dcm_matrix.c.x = 0.0f; + _dcm_matrix.c.y = 0.0f; + _dcm_matrix.c.z = 1.0f; + } + if (_compass != NULL) { _compass->null_offsets_enable(); // This call is needed to restart the nulling // Otherwise the reset in the DCM matrix can mess up @@ -231,6 +257,13 @@ AP_DCM::matrix_reset(void) void AP_DCM::check_matrix(void) { + if (_dcm_matrix.is_nan()) { + //Serial.printf("ERROR: DCM matrix NAN\n"); + SITL_debug("ERROR: DCM matrix NAN\n"); + renorm_blowup_count++; + matrix_reset(true); + return; + } // some DCM matrix values can lead to an out of range error in // the pitch calculation via asin(). These NaN values can // feed back into the rest of the DCM matrix via the @@ -240,14 +273,17 @@ AP_DCM::check_matrix(void) // We have an invalid matrix. Force a normalisation. renorm_range_count++; normalize(); - if (!(_dcm_matrix.c.x < 1.0 && - _dcm_matrix.c.x > -1.0)) { + + if (isnan(_dcm_matrix.c.x) || + fabs(_dcm_matrix.c.x) > 10) { // normalisation didn't fix the problem! We're // in real trouble. All we can do is reset + //Serial.printf("ERROR: DCM matrix error. _dcm_matrix.c.x=%f\n", + // _dcm_matrix.c.x); SITL_debug("ERROR: DCM matrix error. _dcm_matrix.c.x=%f\n", _dcm_matrix.c.x); renorm_blowup_count++; - matrix_reset(); + matrix_reset(true); } } } @@ -284,7 +320,7 @@ AP_DCM::normalize(void) _dcm_matrix.c = renorm(temporary[2], problem); if (problem == 1) { // Our solution is blowing up and we will force back to initial condition. Hope we are not upside down! - matrix_reset(); + matrix_reset(true); } } @@ -323,6 +359,8 @@ AP_DCM::renorm(Vector3f const &a, int &problem) // can recover our attitude using drift // correction before we hit the ground! problem = 1; + //Serial.printf("ERROR: DCM renormalisation error. renorm_val=%f\n", + // renorm_val); SITL_debug("ERROR: DCM renormalisation error. renorm_val=%f\n", renorm_val); renorm_blowup_count++; @@ -444,14 +482,14 @@ AP_DCM::euler_angles(void) pitch = asin((_accel_vector.x) / (double)9.81); // asin(acc_x) yaw = 0; #else - pitch = -asin(_dcm_matrix.c.x); + pitch = -safe_asin(_dcm_matrix.c.x); roll = atan2(_dcm_matrix.c.y, _dcm_matrix.c.z); yaw = atan2(_dcm_matrix.b.x, _dcm_matrix.a.x); #endif roll_sensor = degrees(roll) * 100; pitch_sensor = degrees(pitch) * 100; - yaw_sensor = degrees(yaw) * 100; + yaw_sensor = degrees(yaw) * 100; if (yaw_sensor < 0) yaw_sensor += 36000; @@ -461,7 +499,7 @@ void AP_DCM::euler_rp(void) { check_matrix(); - pitch = -asin(_dcm_matrix.c.x); + pitch = -safe_asin(_dcm_matrix.c.x); roll = atan2(_dcm_matrix.c.y, _dcm_matrix.c.z); roll_sensor = roll * DEGX100; //degrees(roll) * 100; pitch_sensor = pitch * DEGX100; //degrees(pitch) * 100; diff --git a/libraries/AP_DCM/AP_DCM.h b/libraries/AP_DCM/AP_DCM.h index 7ce6a5fd7b..cf7be518aa 100644 --- a/libraries/AP_DCM/AP_DCM.h +++ b/libraries/AP_DCM/AP_DCM.h @@ -57,7 +57,7 @@ public: // Methods void update_DCM(void); void update_DCM_fast(void); - void matrix_reset(void); + void matrix_reset(bool recover_eulers = false); long roll_sensor; // Degrees * 100 long pitch_sensor; // Degrees * 100 From bad653f230664719e324a294807134207419e8f9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 10:45:47 +1100 Subject: [PATCH 018/122] DCM: tidy up the nan checking in DCM use is_nan() on the matrix rather than just on c.x, and add safe_asin() to the (unused) OUTPUTMODE==2 code. --- libraries/AP_DCM/AP_DCM.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 6dca5084ef..7d1d04141e 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -221,6 +221,7 @@ AP_DCM::matrix_reset(bool recover_eulers) float cr = cos(roll); float sy = sin(yaw); float cy = cos(yaw); + //Serial.printf("setting DCM matrix to %f %f %f\n", ToDeg(roll), ToDeg(pitch), ToDeg(yaw)); _dcm_matrix.a.x = cp * cy; _dcm_matrix.a.y = (sr * sp * cy) - (cr * sy); _dcm_matrix.a.z = (cr * sp * cy) + (sr * sy); @@ -274,7 +275,7 @@ AP_DCM::check_matrix(void) renorm_range_count++; normalize(); - if (isnan(_dcm_matrix.c.x) || + if (_dcm_matrix.is_nan() || fabs(_dcm_matrix.c.x) > 10) { // normalisation didn't fix the problem! We're // in real trouble. All we can do is reset @@ -479,7 +480,7 @@ AP_DCM::euler_angles(void) #if (OUTPUTMODE == 2) // Only accelerometer info (debugging purposes) roll = atan2(_accel_vector.y, -_accel_vector.z); // atan2(acc_y, acc_z) - pitch = asin((_accel_vector.x) / (double)9.81); // asin(acc_x) + pitch = safe_asin((_accel_vector.x) / (double)9.81); // asin(acc_x) yaw = 0; #else pitch = -safe_asin(_dcm_matrix.c.x); From 17d16bc8c6ac22bdd523af915b33a84e130a2c6b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 10:40:56 +1100 Subject: [PATCH 019/122] AP_Math: added safe_sqrt() function this function will never return NAN. It will return zero for negative numbers. --- libraries/AP_Math/AP_Math.cpp | 15 ++++++++++++++- libraries/AP_Math/AP_Math.h | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Math/AP_Math.cpp b/libraries/AP_Math/AP_Math.cpp index cbe56b8142..6cd620335b 100644 --- a/libraries/AP_Math/AP_Math.cpp +++ b/libraries/AP_Math/AP_Math.cpp @@ -6,7 +6,7 @@ float safe_asin(float v) { if (isnan(v)) { - return 0; + return 0.0; } if (v >= 1.0) { return PI/2; @@ -16,3 +16,16 @@ float safe_asin(float v) } return asin(v); } + +// a varient of sqrt() that checks the input ranges and ensures a +// valid value as output. If a negative number is given then 0 is +// returned. The reasoning is that a negative number for sqrt() in our +// code is usually caused by small numerical rounding errors, so the +// real input should have been zero +float safe_sqrt(float v) +{ + if (isnan(v) || v <= 0.0) { + return 0.0; + } + return sqrt(v); +} diff --git a/libraries/AP_Math/AP_Math.h b/libraries/AP_Math/AP_Math.h index 06eceac6a3..466be65cf9 100644 --- a/libraries/AP_Math/AP_Math.h +++ b/libraries/AP_Math/AP_Math.h @@ -15,3 +15,6 @@ AP_PARAMDEFV(Vector3f, Vector3f, AP_PARAM_VECTOR3F); // a varient of asin() that always gives a valid answer. float safe_asin(float v); + +// a varient of sqrt() that always gives a valid answer. +float safe_sqrt(float v); From c354879f1fd9dba20f3e45923b59016f258e1ff9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 10:42:03 +1100 Subject: [PATCH 020/122] Compass: ensure we don't produce NAN values for compass heading this leaves the previous heading values alone if we are at a pitch of exactly 90 or -90, at which point we can't compute a meaningful heading --- libraries/AP_Compass/Compass.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Compass/Compass.cpp b/libraries/AP_Compass/Compass.cpp index db3bd2eef5..ea9586b49d 100644 --- a/libraries/AP_Compass/Compass.cpp +++ b/libraries/AP_Compass/Compass.cpp @@ -114,11 +114,18 @@ Compass::calculate(const Matrix3f &dcm_matrix) { float headX; float headY; - float cos_pitch = sqrt(1-(dcm_matrix.c.x*dcm_matrix.c.x)); + float cos_pitch = safe_sqrt(1-(dcm_matrix.c.x*dcm_matrix.c.x)); // sin(pitch) = - dcm_matrix(3,1) // cos(pitch)*sin(roll) = - dcm_matrix(3,2) // cos(pitch)*cos(roll) = - dcm_matrix(3,3) + if (cos_pitch == 0.0) { + // we are pointing straight up or down so don't update our + // heading using the compass. Wait for the next iteration when + // we hopefully will have valid values again. + return; + } + // Tilt compensated magnetic field X component: headX = mag_x*cos_pitch - mag_y*dcm_matrix.c.y*dcm_matrix.c.x/cos_pitch - mag_z*dcm_matrix.c.z*dcm_matrix.c.x/cos_pitch; // Tilt compensated magnetic field Y component: @@ -140,6 +147,20 @@ Compass::calculate(const Matrix3f &dcm_matrix) // Optimization for external DCM use. Calculate normalized components heading_x = cos(heading); heading_y = sin(heading); + +#if 0 + if (isnan(heading_x) || isnan(heading_y)) { + Serial.printf("COMPASS: c.x %f c.y %f c.z %f cos_pitch %f mag_x %d mag_y %d mag_z %d headX %f headY %f heading %f heading_x %f heading_y %f\n", + dcm_matrix.c.x, + dcm_matrix.c.y, + dcm_matrix.c.x, + cos_pitch, + (int)mag_x, (int)mag_y, (int)mag_z, + headX, headY, + heading, + heading_x, heading_y); + } +#endif } void From 1cd31729548750e92ce186b518e95b3d1db25d01 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 10:44:55 +1100 Subject: [PATCH 021/122] ACM: ensure update_trig() doesn't cause NAN values for cos_roll/cos_pitch the DCM matrix could have a value over 1.0 for c.x due to rounding errors --- ArduCopter/ArduCopter.pde | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index cac2ba85fd..83bdaf692f 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -480,7 +480,7 @@ static boolean loiter_override; static float cos_roll_x = 1; static float cos_pitch_x = 1; static float cos_yaw_x = 1; -static float sin_pitch_y, sin_yaw_y, sin_roll_y; +static float sin_yaw_y; //////////////////////////////////////////////////////////////////////////////// // SIMPLE Mode @@ -1816,12 +1816,13 @@ static void update_trig(void){ yawvector.y = temp.b.x; // cos yawvector.normalize(); + cos_pitch_x = safe_sqrt(1 - (temp.c.x * temp.c.x)); // level = 1 + cos_roll_x = temp.c.z / cos_pitch_x; // level = 1 - sin_pitch_y = -temp.c.x; // level = 0 - cos_pitch_x = sqrt(1 - (temp.c.x * temp.c.x)); // level = 1 - - sin_roll_y = temp.c.y / cos_pitch_x; // level = 0 - cos_roll_x = temp.c.z / cos_pitch_x; // level = 1 + cos_pitch_x = constrain(cos_pitch_x, 0, 1.0); + // this relies on constrain() of infinity doing the right thing, + // which it does do in avr-libc + cos_roll_x = constrain(cos_roll_x, -1.0, 1.0); sin_yaw_y = yawvector.x; // 1y = north cos_yaw_x = yawvector.y; // 0x = north From 16ed8bc8f62fb4ddeab31c051215e9f7f26483bb Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 11:23:12 +1100 Subject: [PATCH 022/122] AP_Math: added rotmat <-> euler functions these will make the dcm matrix manipulation easier to understand --- libraries/AP_Math/AP_Math.cpp | 38 +++++++++++++++++++++++++++++++++++ libraries/AP_Math/AP_Math.h | 6 ++++++ 2 files changed, 44 insertions(+) diff --git a/libraries/AP_Math/AP_Math.cpp b/libraries/AP_Math/AP_Math.cpp index 6cd620335b..0541246e53 100644 --- a/libraries/AP_Math/AP_Math.cpp +++ b/libraries/AP_Math/AP_Math.cpp @@ -29,3 +29,41 @@ float safe_sqrt(float v) } return sqrt(v); } + + +// create a rotation matrix given some euler angles +// this is based on http://gentlenav.googlecode.com/files/EulerAngles.pdf +void rotation_matrix_from_euler(Matrix3f &m, float roll, float pitch, float yaw) +{ + float cp = cos(pitch); + float sp = sin(pitch); + float sr = sin(roll); + float cr = cos(roll); + float sy = sin(yaw); + float cy = cos(yaw); + + m.a.x = cp * cy; + m.a.y = (sr * sp * cy) - (cr * sy); + m.a.z = (cr * sp * cy) + (sr * sy); + m.b.x = cp * sy; + m.b.y = (sr * sp * sy) + (cr * cy); + m.b.z = (cr * sp * sy) - (sr * cy); + m.c.x = -sp; + m.c.y = sr * cp; + m.c.z = cr * cp; +} + +// calculate euler angles from a rotation matrix +// this is based on http://gentlenav.googlecode.com/files/EulerAngles.pdf +void calculate_euler_angles(Matrix3f &m, float *roll, float *pitch, float *yaw) +{ + if (pitch != NULL) { + *pitch = -safe_asin(m.c.x); + } + if (roll != NULL) { + *roll = atan2(m.c.y, m.c.z); + } + if (yaw != NULL) { + *yaw = atan2(m.b.x, m.a.x); + } +} diff --git a/libraries/AP_Math/AP_Math.h b/libraries/AP_Math/AP_Math.h index 466be65cf9..37cc5bac14 100644 --- a/libraries/AP_Math/AP_Math.h +++ b/libraries/AP_Math/AP_Math.h @@ -18,3 +18,9 @@ float safe_asin(float v); // a varient of sqrt() that always gives a valid answer. float safe_sqrt(float v); + +// create a rotation matrix given some euler angles +void rotation_matrix_from_euler(Matrix3f &m, float roll, float pitch, float yaw); + +// calculate euler angles from a rotation matrix +void calculate_euler_angles(Matrix3f &m, float *roll, float *pitch, float *yaw); From 06f37aad75557854fbffbb779c96adb09f660bcc Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 11:32:20 +1100 Subject: [PATCH 023/122] DCM: use calculate_euler_angles() to get eulers from DCM this makes the code a bit easier to understand --- libraries/AP_DCM/AP_DCM.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 7d1d04141e..443b23365e 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -483,9 +483,7 @@ AP_DCM::euler_angles(void) pitch = safe_asin((_accel_vector.x) / (double)9.81); // asin(acc_x) yaw = 0; #else - pitch = -safe_asin(_dcm_matrix.c.x); - roll = atan2(_dcm_matrix.c.y, _dcm_matrix.c.z); - yaw = atan2(_dcm_matrix.b.x, _dcm_matrix.a.x); + calculate_euler_angles(_dcm_matrix, &roll, &pitch, &yaw); #endif roll_sensor = degrees(roll) * 100; @@ -500,8 +498,7 @@ void AP_DCM::euler_rp(void) { check_matrix(); - pitch = -safe_asin(_dcm_matrix.c.x); - roll = atan2(_dcm_matrix.c.y, _dcm_matrix.c.z); + calculate_euler_angles(_dcm_matrix, &roll, &pitch, NULL); roll_sensor = roll * DEGX100; //degrees(roll) * 100; pitch_sensor = pitch * DEGX100; //degrees(pitch) * 100; } @@ -509,7 +506,7 @@ AP_DCM::euler_rp(void) void AP_DCM::euler_yaw(void) { - yaw = atan2(_dcm_matrix.b.x, _dcm_matrix.a.x); + calculate_euler_angles(_dcm_matrix, NULL, NULL, &yaw); yaw_sensor = yaw * DEGX100; //degrees(yaw) * 100; if (yaw_sensor < 0) From ddeda1c3673dbbc0d82f987c19086eabf4005b7b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 11:23:49 +1100 Subject: [PATCH 024/122] DCM: use rotation_matrix_from_euler() in matrix reset this makes the code a bit easier to read --- libraries/AP_DCM/AP_DCM.cpp | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 443b23365e..9fd4f06c78 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -215,34 +215,10 @@ AP_DCM::matrix_reset(bool recover_eulers) // attitude then calculate the dcm matrix from the current // roll/pitch/yaw values if (recover_eulers && !isnan(roll) && !isnan(pitch) && !isnan(yaw)) { - float cp = cos(pitch); - float sp = sin(pitch); - float sr = sin(roll); - float cr = cos(roll); - float sy = sin(yaw); - float cy = cos(yaw); - //Serial.printf("setting DCM matrix to %f %f %f\n", ToDeg(roll), ToDeg(pitch), ToDeg(yaw)); - _dcm_matrix.a.x = cp * cy; - _dcm_matrix.a.y = (sr * sp * cy) - (cr * sy); - _dcm_matrix.a.z = (cr * sp * cy) + (sr * sy); - _dcm_matrix.b.x = cp * sy; - _dcm_matrix.b.y = (sr * sp * sy) + (cr * cy); - _dcm_matrix.b.z = (cr * sp * sy) - (sr * cy); - _dcm_matrix.c.x = -sp; - _dcm_matrix.c.y = sr * cp; - _dcm_matrix.c.z = cr * cp; + rotation_matrix_from_euler(_dcm_matrix, roll, pitch, yaw); } else { // otherwise make it flat - //Serial.printf("zeroing DCM matrix\n"); - _dcm_matrix.a.x = 1.0f; - _dcm_matrix.a.y = 0.0f; - _dcm_matrix.a.z = 0.0f; - _dcm_matrix.b.x = 0.0f; - _dcm_matrix.b.y = 1.0f; - _dcm_matrix.b.z = 0.0f; - _dcm_matrix.c.x = 0.0f; - _dcm_matrix.c.y = 0.0f; - _dcm_matrix.c.z = 1.0f; + rotation_matrix_from_euler(_dcm_matrix, 0, 0, 0); } if (_compass != NULL) { From d85596841faca8f9bc81ce8eb334afc166e10692 Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Fri, 24 Feb 2012 09:38:56 +0800 Subject: [PATCH 025/122] APM Planner 1.1.41 add NaN checking/error message add config page shortcuts - F5, ctl-s and ctl-o add +++ passthrough on terminal add longer delay to log download modify param receive process. modify connecting and param receive process - re Andrew --- Tools/ArdupilotMegaPlanner/ArduinoSTK.cs | 1 + .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 30 +- Tools/ArdupilotMegaPlanner/Common.cs | 33 +- .../Controls/ProgressReporterDialogue.cs | 214 + .../ProgressReporterDialogue.designer.cs | 141 + .../Controls/ProgressReporterDialogue.resx | 120 + .../GCSViews/Configuration.Designer.cs | 326 +- .../GCSViews/Configuration.cs | 20 + .../GCSViews/Configuration.resx | 12588 ++++++++-------- .../GCSViews/Simulation.Designer.cs | 92 +- .../GCSViews/Simulation.resx | 3948 +++-- .../ArdupilotMegaPlanner/GCSViews/Terminal.cs | 4 + Tools/ArdupilotMegaPlanner/HUD.cs | 22 +- Tools/ArdupilotMegaPlanner/Log.cs | 2 +- Tools/ArdupilotMegaPlanner/MAVLink.cs | 243 +- Tools/ArdupilotMegaPlanner/MainV2.cs | 9 +- .../Properties/AssemblyInfo.cs | 2 +- .../Properties/Resources.Designer.cs | 14 + .../Properties/Resources.resx | 14 +- .../Radio/3DRradio.Designer.cs | 620 + Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs | 522 + .../ArdupilotMegaPlanner/Radio/3DRradio.resx | 123 + Tools/ArdupilotMegaPlanner/Radio/IHex.cs | 147 + Tools/ArdupilotMegaPlanner/Radio/Uploader.cs | 441 + Tools/ArdupilotMegaPlanner/SerialInput.cs | 2 +- .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 898560 -> 937472 bytes 26 files changed, 10423 insertions(+), 9255 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs create mode 100644 Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.designer.cs create mode 100644 Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.resx create mode 100644 Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs create mode 100644 Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs create mode 100644 Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx create mode 100644 Tools/ArdupilotMegaPlanner/Radio/IHex.cs create mode 100644 Tools/ArdupilotMegaPlanner/Radio/Uploader.cs diff --git a/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs b/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs index d16ab575a1..04e4189f27 100644 --- a/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs +++ b/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs @@ -257,6 +257,7 @@ namespace ArdupilotMega return sync(); } + /// /// Upload data at preset address /// diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 196431f150..a74e89b886 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -225,6 +225,18 @@ + + Form + + + ProgressReporterDialogue.cs + + + Form + + + 3DRradio.cs + UserControl @@ -252,18 +264,13 @@ UserControl - - Form - - - ProgressReporter.cs - Form XorPlus.cs + @@ -437,6 +444,13 @@ temp.cs + + + ProgressReporterDialogue.cs + + + 3DRradio.cs + AGauge.cs Designer @@ -447,9 +461,6 @@ ImageLabel.cs - - ProgressReporter.cs - XorPlus.cs @@ -830,6 +841,7 @@ Always + diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs index 05a0fdaabf..79c64e275f 100644 --- a/Tools/ArdupilotMegaPlanner/Common.cs +++ b/Tools/ArdupilotMegaPlanner/Common.cs @@ -118,13 +118,19 @@ namespace ArdupilotMega g.TranslateTransform(LocalPosition.X, LocalPosition.Y); int length = 500; - - g.DrawLine(new Pen(Color.Red, 2), 0.0f, 0.0f, (float)Math.Cos((heading - 90) * deg2rad) * length, (float)Math.Sin((heading - 90) * deg2rad) * length); +// anti NaN + try + { + g.DrawLine(new Pen(Color.Red, 2), 0.0f, 0.0f, (float)Math.Cos((heading - 90) * deg2rad) * length, (float)Math.Sin((heading - 90) * deg2rad) * length); + } + catch { } g.DrawLine(new Pen(Color.Green, 2), 0.0f, 0.0f, (float)Math.Cos((nav_bearing - 90) * deg2rad) * length, (float)Math.Sin((nav_bearing - 90) * deg2rad) * length); g.DrawLine(new Pen(Color.Black, 2), 0.0f, 0.0f, (float)Math.Cos((cog - 90) * deg2rad) * length, (float)Math.Sin((cog - 90) * deg2rad) * length); g.DrawLine(new Pen(Color.Orange, 2), 0.0f, 0.0f, (float)Math.Cos((target - 90) * deg2rad) * length, (float)Math.Sin((target - 90) * deg2rad) * length); - +// anti NaN + try { g.RotateTransform(heading); + } catch{} g.DrawImageUnscaled(global::ArdupilotMega.Properties.Resources.planeicon, global::ArdupilotMega.Properties.Resources.planeicon.Width / -2, global::ArdupilotMega.Properties.Resources.planeicon.Height / -2); g.Transform = temp; @@ -157,14 +163,21 @@ namespace ArdupilotMega g.TranslateTransform(LocalPosition.X, LocalPosition.Y); int length = 500; - - g.DrawLine(new Pen(Color.Red, 2), 0.0f, 0.0f, (float)Math.Cos((heading - 90) * deg2rad) * length, (float)Math.Sin((heading - 90) * deg2rad) * length); +// anti NaN + try + { + g.DrawLine(new Pen(Color.Red, 2), 0.0f, 0.0f, (float)Math.Cos((heading - 90) * deg2rad) * length, (float)Math.Sin((heading - 90) * deg2rad) * length); + } + catch { } //g.DrawLine(new Pen(Color.Green, 2), 0.0f, 0.0f, (float)Math.Cos((nav_bearing - 90) * deg2rad) * length, (float)Math.Sin((nav_bearing - 90) * deg2rad) * length); g.DrawLine(new Pen(Color.Black, 2), 0.0f, 0.0f, (float)Math.Cos((cog - 90) * deg2rad) * length, (float)Math.Sin((cog - 90) * deg2rad) * length); g.DrawLine(new Pen(Color.Orange, 2), 0.0f, 0.0f, (float)Math.Cos((target - 90) * deg2rad) * length, (float)Math.Sin((target - 90) * deg2rad) * length); - - - g.RotateTransform(heading); +// anti NaN + try + { + g.RotateTransform(heading); + } + catch { } g.DrawImageUnscaled(global::ArdupilotMega.Properties.Resources.quadicon, global::ArdupilotMega.Properties.Resources.quadicon.Width / -2 + 2, global::ArdupilotMega.Properties.Resources.quadicon.Height / -2); g.Transform = temp; @@ -490,7 +503,7 @@ namespace ArdupilotMega WebResponse response = request.GetResponse(); // Display the status. Console.WriteLine(((HttpWebResponse)response).StatusDescription); - if (((HttpWebResponse)response).StatusDescription != "200") + if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK) return false; // Get the stream containing content returned by the server. Stream dataStream = response.GetResponseStream(); @@ -500,7 +513,7 @@ namespace ArdupilotMega byte[] buf1 = new byte[1024]; - FileStream fs = new FileStream(saveto+".new", FileMode.Create); + FileStream fs = new FileStream(saveto + ".new", FileMode.Create); DateTime dt = DateTime.Now; diff --git a/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs new file mode 100644 index 0000000000..4cc19161ff --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs @@ -0,0 +1,214 @@ +using System; +using System.ComponentModel; +using System.Threading; +using System.Windows.Forms; + +namespace ArdupilotMega.Controls +{ + + + /// + /// Form that is shown to the user during a background operation + /// + /// + /// Performs operation excplicitely on a threadpool thread due to + /// Mono not playing nice with the BackgroundWorker + /// + public partial class ProgressReporterDialogue : Form + { + private Exception workerException; + public ProgressWorkerEventArgs doWorkArgs; + + public delegate void DoWorkEventHandler(object sender, ProgressWorkerEventArgs e); + + // This is the event that will be raised on the BG thread + public event DoWorkEventHandler DoWork; + + public ProgressReporterDialogue() + { + InitializeComponent(); + doWorkArgs = new ProgressWorkerEventArgs(); + this.btnClose.Visible = false; + } + + /// + /// Called at setup - will kick off the background process on a thread pool thread + /// + public void RunBackgroundOperationAsync() + { + ThreadPool.QueueUserWorkItem(RunBackgroundOperation); + this.ShowDialog(); + } + + private void RunBackgroundOperation(object o) + { + try + { + if (this.DoWork != null) this.DoWork(this, doWorkArgs); + } + catch(Exception e) + { + // The background operation thew an exception. + // Examine the work args, if there is an error, then display that and the exception details + // Otherwise display 'Unexpected error' and exception details + ShowDoneWithError(e, doWorkArgs.ErrorMessage); + return; + } + + if (doWorkArgs.CancelRequested && doWorkArgs.CancelAcknowledged) + { + ShowDoneCancelled(); + return; + } + + if (!string.IsNullOrEmpty(doWorkArgs.ErrorMessage)) + { + ShowDoneWithError(null, doWorkArgs.ErrorMessage); + return; + } + + if (doWorkArgs.CancelRequested) + { + ShowDoneWithError(null, "Operation could not cancel"); + return; + } + + ShowDone(); + } + + // Called as a possible last operation of the bg thread that was cancelled + // - Hide progress bar + // - Set label text + private void ShowDoneCancelled() + { + this.Invoke((MethodInvoker)delegate + { + this.progressBar1.Visible = false; + this.lblProgressMessage.Text = "Cancelled"; + this.btnClose.Visible = true; + }); + } + + // Called as a possible last operation of the bg thread + // - Set progress bar to 100% + // - Wait a little bit to allow the Aero progress animatiom to catch up + // - Signal that we can close + private void ShowDone() + { + this.Invoke((MethodInvoker) delegate + { + this.progressBar1.Style = ProgressBarStyle.Continuous; + this.progressBar1.Value = 100; + this.btnCancel.Visible = false; + this.btnClose.Visible = false; + }); + + Thread.Sleep(1000); + + this.BeginInvoke((MethodInvoker) this.Close); + } + + // Called as a possible last operation of the bg thread + // There was an exception on the worker event, so: + // - Show the error message supplied by the worker, or a default message + // - Make visible the error icon + // - Make the progress bar invisible to make room for: + // - Add the exception details and stack trace in an expansion panel + // - Change the Cancel button to 'Close', so that the user can look at the exception message a bit + private void ShowDoneWithError(Exception exception, string doWorkArgs) + { + var errMessage = doWorkArgs ?? "There was an unexpected error"; + + if (this.InvokeRequired) + { + this.Invoke((MethodInvoker) delegate + { + this.Text = "Error"; + this.lblProgressMessage.Left = 65; + this.lblProgressMessage.Text = errMessage; + this.imgWarning.Visible = true; + this.progressBar1.Visible = false; + this.btnCancel.Visible = false; + this.btnClose.Visible = true; + this.linkLabel1.Visible = exception != null; + this.workerException = exception; + }); + } + + } + + + private void btnCancel_Click(object sender, EventArgs e) + { + // User wants to cancel - + // * Set the text of the Cancel button to 'Close' + // * Set the cancel button to disabled, will enable it and let the user dismiss the dialogue + // when the async operation is complete + // * Set the status text to 'Cancelling...' + // * Set the progress bar to marquee, we don't know how long the worker will take to cancel + // * Signal the worker. + this.btnCancel.Visible = false; + this.lblProgressMessage.Text = "Cancelling..."; + this.progressBar1.Style = ProgressBarStyle.Marquee; + + doWorkArgs.CancelRequested = true; + } + + + private void btn_Close_Click(object sender, EventArgs e) + { + // we have already cancelled, and this now a 'close' button + this.Close(); + } + + /// + /// Called from the BG thread + /// + /// progress in %, -1 means inderteminate + /// + public void UpdateProgressAndStatus(int progress, string status) + { + // we don't let the worker update progress when a cancel has been + // requested, unless the cancel has been acknowleged, so we know that + // this progress update pertains to the cancellation cleanup + if (doWorkArgs.CancelRequested && !doWorkArgs.CancelAcknowledged) + return; + + if (this.InvokeRequired) + { + + this.Invoke((MethodInvoker) delegate + { + + lblProgressMessage.Text = status; + if (progress == -1) + { + this.progressBar1.Style = ProgressBarStyle.Marquee; + } + else + { + this.progressBar1.Style = ProgressBarStyle.Continuous; + this.progressBar1.Value = progress; + } + }); + } + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var message = this.workerException.Message + + Environment.NewLine + Environment.NewLine + + this.workerException.StackTrace; + + MessageBox.Show(message,"Exception Details",MessageBoxButtons.OK,MessageBoxIcon.Information); + } + + } + + public class ProgressWorkerEventArgs : EventArgs + { + public string ErrorMessage; + public volatile bool CancelRequested; + public volatile bool CancelAcknowledged; + } +} diff --git a/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.designer.cs b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.designer.cs new file mode 100644 index 0000000000..93261295d6 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.designer.cs @@ -0,0 +1,141 @@ +using System; +using System.ComponentModel; +using System.Windows.Forms; + +namespace ArdupilotMega.Controls +{ + partial class ProgressReporterDialogue + { + + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.lblProgressMessage = new System.Windows.Forms.Label(); + this.btnCancel = new System.Windows.Forms.Button(); + this.imgWarning = new System.Windows.Forms.PictureBox(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.btnClose = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.imgWarning)).BeginInit(); + this.SuspendLayout(); + // + // progressBar1 + // + this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar1.Location = new System.Drawing.Point(11, 90); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(277, 13); + this.progressBar1.TabIndex = 0; + // + // lblProgressMessage + // + this.lblProgressMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lblProgressMessage.Location = new System.Drawing.Point(13, 13); + this.lblProgressMessage.Name = "lblProgressMessage"; + this.lblProgressMessage.Size = new System.Drawing.Size(275, 74); + this.lblProgressMessage.TabIndex = 1; + this.lblProgressMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(213, 109); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 2; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // imgWarning + // + this.imgWarning.Image = global::ArdupilotMega.Properties.Resources.iconWarning48; + this.imgWarning.Location = new System.Drawing.Point(13, 22); + this.imgWarning.Name = "imgWarning"; + this.imgWarning.Size = new System.Drawing.Size(48, 48); + this.imgWarning.TabIndex = 3; + this.imgWarning.TabStop = false; + this.imgWarning.Visible = false; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(240, 90); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(48, 13); + this.linkLabel1.TabIndex = 4; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "Details..."; + this.linkLabel1.Visible = false; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // btn_Close + // + this.btnClose.Location = new System.Drawing.Point(213, 109); + this.btnClose.Name = "btnClose"; + this.btnClose.Size = new System.Drawing.Size(75, 23); + this.btnClose.TabIndex = 5; + this.btnClose.Text = "Close"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btn_Close_Click); + // + // ProgressReporterDialogue + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(306, 144); + this.ControlBox = false; + this.Controls.Add(this.btnClose); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.imgWarning); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.lblProgressMessage); + this.Controls.Add(this.progressBar1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ProgressReporterDialogue"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Progress"; + ((System.ComponentModel.ISupportInitialize)(this.imgWarning)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ProgressBar progressBar1; + private System.Windows.Forms.Label lblProgressMessage; + private Button btnCancel; + private PictureBox imgWarning; + private LinkLabel linkLabel1; + private Button btnClose; + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.resx b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.resx new file mode 100644 index 0000000000..7080a7d118 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs index 8e24a596ef..4c0332e32b 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs @@ -400,9 +400,9 @@ // // Params // - resources.ApplyResources(this.Params, "Params"); this.Params.AllowUserToAddRows = false; this.Params.AllowUserToDeleteRows = false; + resources.ApplyResources(this.Params, "Params"); dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle1.BackColor = System.Drawing.Color.Maroon; dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -428,7 +428,6 @@ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.Params.RowHeadersDefaultCellStyle = dataGridViewCellStyle2; this.Params.RowHeadersVisible = false; - this.toolTip1.SetToolTip(this.Params, resources.GetString("Params.ToolTip")); this.Params.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.Params_CellValueChanged); // // Command @@ -466,12 +465,10 @@ this.ConfigTabs.Controls.Add(this.TabSetup); this.ConfigTabs.Name = "ConfigTabs"; this.ConfigTabs.SelectedIndex = 0; - this.toolTip1.SetToolTip(this.ConfigTabs, resources.GetString("ConfigTabs.ToolTip")); this.ConfigTabs.SelectedIndexChanged += new System.EventHandler(this.Planner_TabIndexChanged); // // TabAP // - resources.ApplyResources(this.TabAP, "TabAP"); this.TabAP.BackColor = System.Drawing.Color.Transparent; this.TabAP.Controls.Add(this.groupBox3); this.TabAP.Controls.Add(this.groupBox1); @@ -485,12 +482,11 @@ this.TabAP.Controls.Add(this.groupBox10); this.TabAP.Controls.Add(this.groupBox9); this.TabAP.Controls.Add(this.groupBox8); + resources.ApplyResources(this.TabAP, "TabAP"); this.TabAP.Name = "TabAP"; - this.toolTip1.SetToolTip(this.TabAP, resources.GetString("TabAP.ToolTip")); // // groupBox3 // - resources.ApplyResources(this.groupBox3, "groupBox3"); this.groupBox3.Controls.Add(this.THR_FS_VALUE); this.groupBox3.Controls.Add(this.label5); this.groupBox3.Controls.Add(this.THR_MAX); @@ -499,61 +495,52 @@ this.groupBox3.Controls.Add(this.label7); this.groupBox3.Controls.Add(this.TRIM_THROTTLE); this.groupBox3.Controls.Add(this.label8); + resources.ApplyResources(this.groupBox3, "groupBox3"); this.groupBox3.Name = "groupBox3"; this.groupBox3.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox3, resources.GetString("groupBox3.ToolTip")); // // THR_FS_VALUE // resources.ApplyResources(this.THR_FS_VALUE, "THR_FS_VALUE"); this.THR_FS_VALUE.Name = "THR_FS_VALUE"; - this.toolTip1.SetToolTip(this.THR_FS_VALUE, resources.GetString("THR_FS_VALUE.ToolTip")); // // label5 // resources.ApplyResources(this.label5, "label5"); this.label5.Name = "label5"; - this.toolTip1.SetToolTip(this.label5, resources.GetString("label5.ToolTip")); // // THR_MAX // resources.ApplyResources(this.THR_MAX, "THR_MAX"); this.THR_MAX.Name = "THR_MAX"; - this.toolTip1.SetToolTip(this.THR_MAX, resources.GetString("THR_MAX.ToolTip")); // // label6 // resources.ApplyResources(this.label6, "label6"); this.label6.Name = "label6"; - this.toolTip1.SetToolTip(this.label6, resources.GetString("label6.ToolTip")); // // THR_MIN // resources.ApplyResources(this.THR_MIN, "THR_MIN"); this.THR_MIN.Name = "THR_MIN"; - this.toolTip1.SetToolTip(this.THR_MIN, resources.GetString("THR_MIN.ToolTip")); // // label7 // resources.ApplyResources(this.label7, "label7"); this.label7.Name = "label7"; - this.toolTip1.SetToolTip(this.label7, resources.GetString("label7.ToolTip")); // // TRIM_THROTTLE // resources.ApplyResources(this.TRIM_THROTTLE, "TRIM_THROTTLE"); this.TRIM_THROTTLE.Name = "TRIM_THROTTLE"; - this.toolTip1.SetToolTip(this.TRIM_THROTTLE, resources.GetString("TRIM_THROTTLE.ToolTip")); // // label8 // resources.ApplyResources(this.label8, "label8"); this.label8.Name = "label8"; - this.toolTip1.SetToolTip(this.label8, resources.GetString("label8.ToolTip")); // // groupBox1 // - resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Controls.Add(this.ARSPD_RATIO); this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.ARSPD_FBW_MAX); @@ -562,194 +549,166 @@ this.groupBox1.Controls.Add(this.label3); this.groupBox1.Controls.Add(this.TRIM_ARSPD_CM); this.groupBox1.Controls.Add(this.label4); + resources.ApplyResources(this.groupBox1, "groupBox1"); this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox1, resources.GetString("groupBox1.ToolTip")); // // ARSPD_RATIO // resources.ApplyResources(this.ARSPD_RATIO, "ARSPD_RATIO"); this.ARSPD_RATIO.Name = "ARSPD_RATIO"; - this.toolTip1.SetToolTip(this.ARSPD_RATIO, resources.GetString("ARSPD_RATIO.ToolTip")); // // label1 // resources.ApplyResources(this.label1, "label1"); this.label1.Name = "label1"; - this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip")); // // ARSPD_FBW_MAX // resources.ApplyResources(this.ARSPD_FBW_MAX, "ARSPD_FBW_MAX"); this.ARSPD_FBW_MAX.Name = "ARSPD_FBW_MAX"; - this.toolTip1.SetToolTip(this.ARSPD_FBW_MAX, resources.GetString("ARSPD_FBW_MAX.ToolTip")); // // label2 // resources.ApplyResources(this.label2, "label2"); this.label2.Name = "label2"; - this.toolTip1.SetToolTip(this.label2, resources.GetString("label2.ToolTip")); // // ARSPD_FBW_MIN // resources.ApplyResources(this.ARSPD_FBW_MIN, "ARSPD_FBW_MIN"); this.ARSPD_FBW_MIN.Name = "ARSPD_FBW_MIN"; - this.toolTip1.SetToolTip(this.ARSPD_FBW_MIN, resources.GetString("ARSPD_FBW_MIN.ToolTip")); // // label3 // resources.ApplyResources(this.label3, "label3"); this.label3.Name = "label3"; - this.toolTip1.SetToolTip(this.label3, resources.GetString("label3.ToolTip")); // // TRIM_ARSPD_CM // resources.ApplyResources(this.TRIM_ARSPD_CM, "TRIM_ARSPD_CM"); this.TRIM_ARSPD_CM.Name = "TRIM_ARSPD_CM"; - this.toolTip1.SetToolTip(this.TRIM_ARSPD_CM, resources.GetString("TRIM_ARSPD_CM.ToolTip")); // // label4 // resources.ApplyResources(this.label4, "label4"); this.label4.Name = "label4"; - this.toolTip1.SetToolTip(this.label4, resources.GetString("label4.ToolTip")); // // groupBox2 // - resources.ApplyResources(this.groupBox2, "groupBox2"); this.groupBox2.Controls.Add(this.LIM_PITCH_MIN); this.groupBox2.Controls.Add(this.label39); this.groupBox2.Controls.Add(this.LIM_PITCH_MAX); this.groupBox2.Controls.Add(this.label38); this.groupBox2.Controls.Add(this.LIM_ROLL_CD); this.groupBox2.Controls.Add(this.label37); + resources.ApplyResources(this.groupBox2, "groupBox2"); this.groupBox2.Name = "groupBox2"; this.groupBox2.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox2, resources.GetString("groupBox2.ToolTip")); // // LIM_PITCH_MIN // resources.ApplyResources(this.LIM_PITCH_MIN, "LIM_PITCH_MIN"); this.LIM_PITCH_MIN.Name = "LIM_PITCH_MIN"; - this.toolTip1.SetToolTip(this.LIM_PITCH_MIN, resources.GetString("LIM_PITCH_MIN.ToolTip")); // // label39 // resources.ApplyResources(this.label39, "label39"); this.label39.Name = "label39"; - this.toolTip1.SetToolTip(this.label39, resources.GetString("label39.ToolTip")); // // LIM_PITCH_MAX // resources.ApplyResources(this.LIM_PITCH_MAX, "LIM_PITCH_MAX"); this.LIM_PITCH_MAX.Name = "LIM_PITCH_MAX"; - this.toolTip1.SetToolTip(this.LIM_PITCH_MAX, resources.GetString("LIM_PITCH_MAX.ToolTip")); // // label38 // resources.ApplyResources(this.label38, "label38"); this.label38.Name = "label38"; - this.toolTip1.SetToolTip(this.label38, resources.GetString("label38.ToolTip")); // // LIM_ROLL_CD // resources.ApplyResources(this.LIM_ROLL_CD, "LIM_ROLL_CD"); this.LIM_ROLL_CD.Name = "LIM_ROLL_CD"; - this.toolTip1.SetToolTip(this.LIM_ROLL_CD, resources.GetString("LIM_ROLL_CD.ToolTip")); // // label37 // resources.ApplyResources(this.label37, "label37"); this.label37.Name = "label37"; - this.toolTip1.SetToolTip(this.label37, resources.GetString("label37.ToolTip")); // // groupBox15 // - resources.ApplyResources(this.groupBox15, "groupBox15"); this.groupBox15.Controls.Add(this.XTRK_ANGLE_CD); this.groupBox15.Controls.Add(this.label79); this.groupBox15.Controls.Add(this.XTRK_GAIN_SC); this.groupBox15.Controls.Add(this.label80); + resources.ApplyResources(this.groupBox15, "groupBox15"); this.groupBox15.Name = "groupBox15"; this.groupBox15.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox15, resources.GetString("groupBox15.ToolTip")); // // XTRK_ANGLE_CD // resources.ApplyResources(this.XTRK_ANGLE_CD, "XTRK_ANGLE_CD"); this.XTRK_ANGLE_CD.Name = "XTRK_ANGLE_CD"; - this.toolTip1.SetToolTip(this.XTRK_ANGLE_CD, resources.GetString("XTRK_ANGLE_CD.ToolTip")); // // label79 // resources.ApplyResources(this.label79, "label79"); this.label79.Name = "label79"; - this.toolTip1.SetToolTip(this.label79, resources.GetString("label79.ToolTip")); // // XTRK_GAIN_SC // resources.ApplyResources(this.XTRK_GAIN_SC, "XTRK_GAIN_SC"); this.XTRK_GAIN_SC.Name = "XTRK_GAIN_SC"; - this.toolTip1.SetToolTip(this.XTRK_GAIN_SC, resources.GetString("XTRK_GAIN_SC.ToolTip")); // // label80 // resources.ApplyResources(this.label80, "label80"); this.label80.Name = "label80"; - this.toolTip1.SetToolTip(this.label80, resources.GetString("label80.ToolTip")); // // groupBox16 // - resources.ApplyResources(this.groupBox16, "groupBox16"); this.groupBox16.Controls.Add(this.KFF_PTCH2THR); this.groupBox16.Controls.Add(this.label83); this.groupBox16.Controls.Add(this.KFF_RDDRMIX); this.groupBox16.Controls.Add(this.label78); this.groupBox16.Controls.Add(this.KFF_PTCHCOMP); this.groupBox16.Controls.Add(this.label81); + resources.ApplyResources(this.groupBox16, "groupBox16"); this.groupBox16.Name = "groupBox16"; this.groupBox16.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox16, resources.GetString("groupBox16.ToolTip")); // // KFF_PTCH2THR // resources.ApplyResources(this.KFF_PTCH2THR, "KFF_PTCH2THR"); this.KFF_PTCH2THR.Name = "KFF_PTCH2THR"; - this.toolTip1.SetToolTip(this.KFF_PTCH2THR, resources.GetString("KFF_PTCH2THR.ToolTip")); // // label83 // resources.ApplyResources(this.label83, "label83"); this.label83.Name = "label83"; - this.toolTip1.SetToolTip(this.label83, resources.GetString("label83.ToolTip")); // // KFF_RDDRMIX // resources.ApplyResources(this.KFF_RDDRMIX, "KFF_RDDRMIX"); this.KFF_RDDRMIX.Name = "KFF_RDDRMIX"; - this.toolTip1.SetToolTip(this.KFF_RDDRMIX, resources.GetString("KFF_RDDRMIX.ToolTip")); // // label78 // resources.ApplyResources(this.label78, "label78"); this.label78.Name = "label78"; - this.toolTip1.SetToolTip(this.label78, resources.GetString("label78.ToolTip")); // // KFF_PTCHCOMP // resources.ApplyResources(this.KFF_PTCHCOMP, "KFF_PTCHCOMP"); this.KFF_PTCHCOMP.Name = "KFF_PTCHCOMP"; - this.toolTip1.SetToolTip(this.KFF_PTCHCOMP, resources.GetString("KFF_PTCHCOMP.ToolTip")); // // label81 // resources.ApplyResources(this.label81, "label81"); this.label81.Name = "label81"; - this.toolTip1.SetToolTip(this.label81, resources.GetString("label81.ToolTip")); // // groupBox14 // - resources.ApplyResources(this.groupBox14, "groupBox14"); this.groupBox14.Controls.Add(this.ENRGY2THR_IMAX); this.groupBox14.Controls.Add(this.label73); this.groupBox14.Controls.Add(this.ENRGY2THR_D); @@ -758,61 +717,52 @@ this.groupBox14.Controls.Add(this.label75); this.groupBox14.Controls.Add(this.ENRGY2THR_P); this.groupBox14.Controls.Add(this.label76); + resources.ApplyResources(this.groupBox14, "groupBox14"); this.groupBox14.Name = "groupBox14"; this.groupBox14.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox14, resources.GetString("groupBox14.ToolTip")); // // ENRGY2THR_IMAX // resources.ApplyResources(this.ENRGY2THR_IMAX, "ENRGY2THR_IMAX"); this.ENRGY2THR_IMAX.Name = "ENRGY2THR_IMAX"; - this.toolTip1.SetToolTip(this.ENRGY2THR_IMAX, resources.GetString("ENRGY2THR_IMAX.ToolTip")); // // label73 // resources.ApplyResources(this.label73, "label73"); this.label73.Name = "label73"; - this.toolTip1.SetToolTip(this.label73, resources.GetString("label73.ToolTip")); // // ENRGY2THR_D // resources.ApplyResources(this.ENRGY2THR_D, "ENRGY2THR_D"); this.ENRGY2THR_D.Name = "ENRGY2THR_D"; - this.toolTip1.SetToolTip(this.ENRGY2THR_D, resources.GetString("ENRGY2THR_D.ToolTip")); // // label74 // resources.ApplyResources(this.label74, "label74"); this.label74.Name = "label74"; - this.toolTip1.SetToolTip(this.label74, resources.GetString("label74.ToolTip")); // // ENRGY2THR_I // resources.ApplyResources(this.ENRGY2THR_I, "ENRGY2THR_I"); this.ENRGY2THR_I.Name = "ENRGY2THR_I"; - this.toolTip1.SetToolTip(this.ENRGY2THR_I, resources.GetString("ENRGY2THR_I.ToolTip")); // // label75 // resources.ApplyResources(this.label75, "label75"); this.label75.Name = "label75"; - this.toolTip1.SetToolTip(this.label75, resources.GetString("label75.ToolTip")); // // ENRGY2THR_P // resources.ApplyResources(this.ENRGY2THR_P, "ENRGY2THR_P"); this.ENRGY2THR_P.Name = "ENRGY2THR_P"; - this.toolTip1.SetToolTip(this.ENRGY2THR_P, resources.GetString("ENRGY2THR_P.ToolTip")); // // label76 // resources.ApplyResources(this.label76, "label76"); this.label76.Name = "label76"; - this.toolTip1.SetToolTip(this.label76, resources.GetString("label76.ToolTip")); // // groupBox13 // - resources.ApplyResources(this.groupBox13, "groupBox13"); this.groupBox13.Controls.Add(this.ALT2PTCH_IMAX); this.groupBox13.Controls.Add(this.label69); this.groupBox13.Controls.Add(this.ALT2PTCH_D); @@ -821,61 +771,52 @@ this.groupBox13.Controls.Add(this.label71); this.groupBox13.Controls.Add(this.ALT2PTCH_P); this.groupBox13.Controls.Add(this.label72); + resources.ApplyResources(this.groupBox13, "groupBox13"); this.groupBox13.Name = "groupBox13"; this.groupBox13.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox13, resources.GetString("groupBox13.ToolTip")); // // ALT2PTCH_IMAX // resources.ApplyResources(this.ALT2PTCH_IMAX, "ALT2PTCH_IMAX"); this.ALT2PTCH_IMAX.Name = "ALT2PTCH_IMAX"; - this.toolTip1.SetToolTip(this.ALT2PTCH_IMAX, resources.GetString("ALT2PTCH_IMAX.ToolTip")); // // label69 // resources.ApplyResources(this.label69, "label69"); this.label69.Name = "label69"; - this.toolTip1.SetToolTip(this.label69, resources.GetString("label69.ToolTip")); // // ALT2PTCH_D // resources.ApplyResources(this.ALT2PTCH_D, "ALT2PTCH_D"); this.ALT2PTCH_D.Name = "ALT2PTCH_D"; - this.toolTip1.SetToolTip(this.ALT2PTCH_D, resources.GetString("ALT2PTCH_D.ToolTip")); // // label70 // resources.ApplyResources(this.label70, "label70"); this.label70.Name = "label70"; - this.toolTip1.SetToolTip(this.label70, resources.GetString("label70.ToolTip")); // // ALT2PTCH_I // resources.ApplyResources(this.ALT2PTCH_I, "ALT2PTCH_I"); this.ALT2PTCH_I.Name = "ALT2PTCH_I"; - this.toolTip1.SetToolTip(this.ALT2PTCH_I, resources.GetString("ALT2PTCH_I.ToolTip")); // // label71 // resources.ApplyResources(this.label71, "label71"); this.label71.Name = "label71"; - this.toolTip1.SetToolTip(this.label71, resources.GetString("label71.ToolTip")); // // ALT2PTCH_P // resources.ApplyResources(this.ALT2PTCH_P, "ALT2PTCH_P"); this.ALT2PTCH_P.Name = "ALT2PTCH_P"; - this.toolTip1.SetToolTip(this.ALT2PTCH_P, resources.GetString("ALT2PTCH_P.ToolTip")); // // label72 // resources.ApplyResources(this.label72, "label72"); this.label72.Name = "label72"; - this.toolTip1.SetToolTip(this.label72, resources.GetString("label72.ToolTip")); // // groupBox12 // - resources.ApplyResources(this.groupBox12, "groupBox12"); this.groupBox12.Controls.Add(this.ARSP2PTCH_IMAX); this.groupBox12.Controls.Add(this.label65); this.groupBox12.Controls.Add(this.ARSP2PTCH_D); @@ -884,61 +825,52 @@ this.groupBox12.Controls.Add(this.label67); this.groupBox12.Controls.Add(this.ARSP2PTCH_P); this.groupBox12.Controls.Add(this.label68); + resources.ApplyResources(this.groupBox12, "groupBox12"); this.groupBox12.Name = "groupBox12"; this.groupBox12.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox12, resources.GetString("groupBox12.ToolTip")); // // ARSP2PTCH_IMAX // resources.ApplyResources(this.ARSP2PTCH_IMAX, "ARSP2PTCH_IMAX"); this.ARSP2PTCH_IMAX.Name = "ARSP2PTCH_IMAX"; - this.toolTip1.SetToolTip(this.ARSP2PTCH_IMAX, resources.GetString("ARSP2PTCH_IMAX.ToolTip")); // // label65 // resources.ApplyResources(this.label65, "label65"); this.label65.Name = "label65"; - this.toolTip1.SetToolTip(this.label65, resources.GetString("label65.ToolTip")); // // ARSP2PTCH_D // resources.ApplyResources(this.ARSP2PTCH_D, "ARSP2PTCH_D"); this.ARSP2PTCH_D.Name = "ARSP2PTCH_D"; - this.toolTip1.SetToolTip(this.ARSP2PTCH_D, resources.GetString("ARSP2PTCH_D.ToolTip")); // // label66 // resources.ApplyResources(this.label66, "label66"); this.label66.Name = "label66"; - this.toolTip1.SetToolTip(this.label66, resources.GetString("label66.ToolTip")); // // ARSP2PTCH_I // resources.ApplyResources(this.ARSP2PTCH_I, "ARSP2PTCH_I"); this.ARSP2PTCH_I.Name = "ARSP2PTCH_I"; - this.toolTip1.SetToolTip(this.ARSP2PTCH_I, resources.GetString("ARSP2PTCH_I.ToolTip")); // // label67 // resources.ApplyResources(this.label67, "label67"); this.label67.Name = "label67"; - this.toolTip1.SetToolTip(this.label67, resources.GetString("label67.ToolTip")); // // ARSP2PTCH_P // resources.ApplyResources(this.ARSP2PTCH_P, "ARSP2PTCH_P"); this.ARSP2PTCH_P.Name = "ARSP2PTCH_P"; - this.toolTip1.SetToolTip(this.ARSP2PTCH_P, resources.GetString("ARSP2PTCH_P.ToolTip")); // // label68 // resources.ApplyResources(this.label68, "label68"); this.label68.Name = "label68"; - this.toolTip1.SetToolTip(this.label68, resources.GetString("label68.ToolTip")); // // groupBox11 // - resources.ApplyResources(this.groupBox11, "groupBox11"); this.groupBox11.Controls.Add(this.HDNG2RLL_IMAX); this.groupBox11.Controls.Add(this.label61); this.groupBox11.Controls.Add(this.HDNG2RLL_D); @@ -947,61 +879,52 @@ this.groupBox11.Controls.Add(this.label63); this.groupBox11.Controls.Add(this.HDNG2RLL_P); this.groupBox11.Controls.Add(this.label64); + resources.ApplyResources(this.groupBox11, "groupBox11"); this.groupBox11.Name = "groupBox11"; this.groupBox11.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox11, resources.GetString("groupBox11.ToolTip")); // // HDNG2RLL_IMAX // resources.ApplyResources(this.HDNG2RLL_IMAX, "HDNG2RLL_IMAX"); this.HDNG2RLL_IMAX.Name = "HDNG2RLL_IMAX"; - this.toolTip1.SetToolTip(this.HDNG2RLL_IMAX, resources.GetString("HDNG2RLL_IMAX.ToolTip")); // // label61 // resources.ApplyResources(this.label61, "label61"); this.label61.Name = "label61"; - this.toolTip1.SetToolTip(this.label61, resources.GetString("label61.ToolTip")); // // HDNG2RLL_D // resources.ApplyResources(this.HDNG2RLL_D, "HDNG2RLL_D"); this.HDNG2RLL_D.Name = "HDNG2RLL_D"; - this.toolTip1.SetToolTip(this.HDNG2RLL_D, resources.GetString("HDNG2RLL_D.ToolTip")); // // label62 // resources.ApplyResources(this.label62, "label62"); this.label62.Name = "label62"; - this.toolTip1.SetToolTip(this.label62, resources.GetString("label62.ToolTip")); // // HDNG2RLL_I // resources.ApplyResources(this.HDNG2RLL_I, "HDNG2RLL_I"); this.HDNG2RLL_I.Name = "HDNG2RLL_I"; - this.toolTip1.SetToolTip(this.HDNG2RLL_I, resources.GetString("HDNG2RLL_I.ToolTip")); // // label63 // resources.ApplyResources(this.label63, "label63"); this.label63.Name = "label63"; - this.toolTip1.SetToolTip(this.label63, resources.GetString("label63.ToolTip")); // // HDNG2RLL_P // resources.ApplyResources(this.HDNG2RLL_P, "HDNG2RLL_P"); this.HDNG2RLL_P.Name = "HDNG2RLL_P"; - this.toolTip1.SetToolTip(this.HDNG2RLL_P, resources.GetString("HDNG2RLL_P.ToolTip")); // // label64 // resources.ApplyResources(this.label64, "label64"); this.label64.Name = "label64"; - this.toolTip1.SetToolTip(this.label64, resources.GetString("label64.ToolTip")); // // groupBox10 // - resources.ApplyResources(this.groupBox10, "groupBox10"); this.groupBox10.Controls.Add(this.YW2SRV_IMAX); this.groupBox10.Controls.Add(this.label57); this.groupBox10.Controls.Add(this.YW2SRV_D); @@ -1010,61 +933,52 @@ this.groupBox10.Controls.Add(this.label59); this.groupBox10.Controls.Add(this.YW2SRV_P); this.groupBox10.Controls.Add(this.label60); + resources.ApplyResources(this.groupBox10, "groupBox10"); this.groupBox10.Name = "groupBox10"; this.groupBox10.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox10, resources.GetString("groupBox10.ToolTip")); // // YW2SRV_IMAX // resources.ApplyResources(this.YW2SRV_IMAX, "YW2SRV_IMAX"); this.YW2SRV_IMAX.Name = "YW2SRV_IMAX"; - this.toolTip1.SetToolTip(this.YW2SRV_IMAX, resources.GetString("YW2SRV_IMAX.ToolTip")); // // label57 // resources.ApplyResources(this.label57, "label57"); this.label57.Name = "label57"; - this.toolTip1.SetToolTip(this.label57, resources.GetString("label57.ToolTip")); // // YW2SRV_D // resources.ApplyResources(this.YW2SRV_D, "YW2SRV_D"); this.YW2SRV_D.Name = "YW2SRV_D"; - this.toolTip1.SetToolTip(this.YW2SRV_D, resources.GetString("YW2SRV_D.ToolTip")); // // label58 // resources.ApplyResources(this.label58, "label58"); this.label58.Name = "label58"; - this.toolTip1.SetToolTip(this.label58, resources.GetString("label58.ToolTip")); // // YW2SRV_I // resources.ApplyResources(this.YW2SRV_I, "YW2SRV_I"); this.YW2SRV_I.Name = "YW2SRV_I"; - this.toolTip1.SetToolTip(this.YW2SRV_I, resources.GetString("YW2SRV_I.ToolTip")); // // label59 // resources.ApplyResources(this.label59, "label59"); this.label59.Name = "label59"; - this.toolTip1.SetToolTip(this.label59, resources.GetString("label59.ToolTip")); // // YW2SRV_P // resources.ApplyResources(this.YW2SRV_P, "YW2SRV_P"); this.YW2SRV_P.Name = "YW2SRV_P"; - this.toolTip1.SetToolTip(this.YW2SRV_P, resources.GetString("YW2SRV_P.ToolTip")); // // label60 // resources.ApplyResources(this.label60, "label60"); this.label60.Name = "label60"; - this.toolTip1.SetToolTip(this.label60, resources.GetString("label60.ToolTip")); // // groupBox9 // - resources.ApplyResources(this.groupBox9, "groupBox9"); this.groupBox9.Controls.Add(this.PTCH2SRV_IMAX); this.groupBox9.Controls.Add(this.label53); this.groupBox9.Controls.Add(this.PTCH2SRV_D); @@ -1073,61 +987,52 @@ this.groupBox9.Controls.Add(this.label55); this.groupBox9.Controls.Add(this.PTCH2SRV_P); this.groupBox9.Controls.Add(this.label56); + resources.ApplyResources(this.groupBox9, "groupBox9"); this.groupBox9.Name = "groupBox9"; this.groupBox9.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox9, resources.GetString("groupBox9.ToolTip")); // // PTCH2SRV_IMAX // resources.ApplyResources(this.PTCH2SRV_IMAX, "PTCH2SRV_IMAX"); this.PTCH2SRV_IMAX.Name = "PTCH2SRV_IMAX"; - this.toolTip1.SetToolTip(this.PTCH2SRV_IMAX, resources.GetString("PTCH2SRV_IMAX.ToolTip")); // // label53 // resources.ApplyResources(this.label53, "label53"); this.label53.Name = "label53"; - this.toolTip1.SetToolTip(this.label53, resources.GetString("label53.ToolTip")); // // PTCH2SRV_D // resources.ApplyResources(this.PTCH2SRV_D, "PTCH2SRV_D"); this.PTCH2SRV_D.Name = "PTCH2SRV_D"; - this.toolTip1.SetToolTip(this.PTCH2SRV_D, resources.GetString("PTCH2SRV_D.ToolTip")); // // label54 // resources.ApplyResources(this.label54, "label54"); this.label54.Name = "label54"; - this.toolTip1.SetToolTip(this.label54, resources.GetString("label54.ToolTip")); // // PTCH2SRV_I // resources.ApplyResources(this.PTCH2SRV_I, "PTCH2SRV_I"); this.PTCH2SRV_I.Name = "PTCH2SRV_I"; - this.toolTip1.SetToolTip(this.PTCH2SRV_I, resources.GetString("PTCH2SRV_I.ToolTip")); // // label55 // resources.ApplyResources(this.label55, "label55"); this.label55.Name = "label55"; - this.toolTip1.SetToolTip(this.label55, resources.GetString("label55.ToolTip")); // // PTCH2SRV_P // resources.ApplyResources(this.PTCH2SRV_P, "PTCH2SRV_P"); this.PTCH2SRV_P.Name = "PTCH2SRV_P"; - this.toolTip1.SetToolTip(this.PTCH2SRV_P, resources.GetString("PTCH2SRV_P.ToolTip")); // // label56 // resources.ApplyResources(this.label56, "label56"); this.label56.Name = "label56"; - this.toolTip1.SetToolTip(this.label56, resources.GetString("label56.ToolTip")); // // groupBox8 // - resources.ApplyResources(this.groupBox8, "groupBox8"); this.groupBox8.Controls.Add(this.RLL2SRV_IMAX); this.groupBox8.Controls.Add(this.label49); this.groupBox8.Controls.Add(this.RLL2SRV_D); @@ -1136,61 +1041,52 @@ this.groupBox8.Controls.Add(this.label51); this.groupBox8.Controls.Add(this.RLL2SRV_P); this.groupBox8.Controls.Add(this.label52); + resources.ApplyResources(this.groupBox8, "groupBox8"); this.groupBox8.Name = "groupBox8"; this.groupBox8.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox8, resources.GetString("groupBox8.ToolTip")); // // RLL2SRV_IMAX // resources.ApplyResources(this.RLL2SRV_IMAX, "RLL2SRV_IMAX"); this.RLL2SRV_IMAX.Name = "RLL2SRV_IMAX"; - this.toolTip1.SetToolTip(this.RLL2SRV_IMAX, resources.GetString("RLL2SRV_IMAX.ToolTip")); // // label49 // resources.ApplyResources(this.label49, "label49"); this.label49.Name = "label49"; - this.toolTip1.SetToolTip(this.label49, resources.GetString("label49.ToolTip")); // // RLL2SRV_D // resources.ApplyResources(this.RLL2SRV_D, "RLL2SRV_D"); this.RLL2SRV_D.Name = "RLL2SRV_D"; - this.toolTip1.SetToolTip(this.RLL2SRV_D, resources.GetString("RLL2SRV_D.ToolTip")); // // label50 // resources.ApplyResources(this.label50, "label50"); this.label50.Name = "label50"; - this.toolTip1.SetToolTip(this.label50, resources.GetString("label50.ToolTip")); // // RLL2SRV_I // resources.ApplyResources(this.RLL2SRV_I, "RLL2SRV_I"); this.RLL2SRV_I.Name = "RLL2SRV_I"; - this.toolTip1.SetToolTip(this.RLL2SRV_I, resources.GetString("RLL2SRV_I.ToolTip")); // // label51 // resources.ApplyResources(this.label51, "label51"); this.label51.Name = "label51"; - this.toolTip1.SetToolTip(this.label51, resources.GetString("label51.ToolTip")); // // RLL2SRV_P // resources.ApplyResources(this.RLL2SRV_P, "RLL2SRV_P"); this.RLL2SRV_P.Name = "RLL2SRV_P"; - this.toolTip1.SetToolTip(this.RLL2SRV_P, resources.GetString("RLL2SRV_P.ToolTip")); // // label52 // resources.ApplyResources(this.label52, "label52"); this.label52.Name = "label52"; - this.toolTip1.SetToolTip(this.label52, resources.GetString("label52.ToolTip")); // // TabAC // - resources.ApplyResources(this.TabAC, "TabAC"); this.TabAC.Controls.Add(this.myLabel2); this.TabAC.Controls.Add(this.TUNE); this.TabAC.Controls.Add(this.myLabel1); @@ -1207,19 +1103,17 @@ this.TabAC.Controls.Add(this.groupBox23); this.TabAC.Controls.Add(this.groupBox24); this.TabAC.Controls.Add(this.groupBox25); + resources.ApplyResources(this.TabAC, "TabAC"); this.TabAC.Name = "TabAC"; - this.toolTip1.SetToolTip(this.TabAC, resources.GetString("TabAC.ToolTip")); // // myLabel2 // resources.ApplyResources(this.myLabel2, "myLabel2"); this.myLabel2.Name = "myLabel2"; this.myLabel2.resize = false; - this.toolTip1.SetToolTip(this.myLabel2, resources.GetString("myLabel2.ToolTip")); // // TUNE // - resources.ApplyResources(this.TUNE, "TUNE"); this.TUNE.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.TUNE.DropDownWidth = 150; this.TUNE.FormattingEnabled = true; @@ -1245,19 +1139,17 @@ resources.GetString("TUNE.Items18"), resources.GetString("TUNE.Items19"), resources.GetString("TUNE.Items20")}); + resources.ApplyResources(this.TUNE, "TUNE"); this.TUNE.Name = "TUNE"; - this.toolTip1.SetToolTip(this.TUNE, resources.GetString("TUNE.ToolTip")); // // myLabel1 // resources.ApplyResources(this.myLabel1, "myLabel1"); this.myLabel1.Name = "myLabel1"; this.myLabel1.resize = false; - this.toolTip1.SetToolTip(this.myLabel1, resources.GetString("myLabel1.ToolTip")); // // CH7_OPT // - resources.ApplyResources(this.CH7_OPT, "CH7_OPT"); this.CH7_OPT.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CH7_OPT.DropDownWidth = 150; this.CH7_OPT.FormattingEnabled = true; @@ -1270,12 +1162,11 @@ resources.GetString("CH7_OPT.Items5"), resources.GetString("CH7_OPT.Items6"), resources.GetString("CH7_OPT.Items7")}); + resources.ApplyResources(this.CH7_OPT, "CH7_OPT"); this.CH7_OPT.Name = "CH7_OPT"; - this.toolTip1.SetToolTip(this.CH7_OPT, resources.GetString("CH7_OPT.ToolTip")); // // groupBox5 // - resources.ApplyResources(this.groupBox5, "groupBox5"); this.groupBox5.Controls.Add(this.THR_RATE_D); this.groupBox5.Controls.Add(this.label29); this.groupBox5.Controls.Add(this.label14); @@ -1284,57 +1175,49 @@ this.groupBox5.Controls.Add(this.label20); this.groupBox5.Controls.Add(this.THR_RATE_P); this.groupBox5.Controls.Add(this.label25); + resources.ApplyResources(this.groupBox5, "groupBox5"); this.groupBox5.Name = "groupBox5"; this.groupBox5.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox5, resources.GetString("groupBox5.ToolTip")); // // THR_RATE_D // resources.ApplyResources(this.THR_RATE_D, "THR_RATE_D"); this.THR_RATE_D.Name = "THR_RATE_D"; - this.toolTip1.SetToolTip(this.THR_RATE_D, resources.GetString("THR_RATE_D.ToolTip")); // // label29 // resources.ApplyResources(this.label29, "label29"); this.label29.Name = "label29"; - this.toolTip1.SetToolTip(this.label29, resources.GetString("label29.ToolTip")); // // label14 // resources.ApplyResources(this.label14, "label14"); this.label14.Name = "label14"; - this.toolTip1.SetToolTip(this.label14, resources.GetString("label14.ToolTip")); // // THR_RATE_IMAX // resources.ApplyResources(this.THR_RATE_IMAX, "THR_RATE_IMAX"); this.THR_RATE_IMAX.Name = "THR_RATE_IMAX"; - this.toolTip1.SetToolTip(this.THR_RATE_IMAX, resources.GetString("THR_RATE_IMAX.ToolTip")); // // THR_RATE_I // resources.ApplyResources(this.THR_RATE_I, "THR_RATE_I"); this.THR_RATE_I.Name = "THR_RATE_I"; - this.toolTip1.SetToolTip(this.THR_RATE_I, resources.GetString("THR_RATE_I.ToolTip")); // // label20 // resources.ApplyResources(this.label20, "label20"); this.label20.Name = "label20"; - this.toolTip1.SetToolTip(this.label20, resources.GetString("label20.ToolTip")); // // THR_RATE_P // resources.ApplyResources(this.THR_RATE_P, "THR_RATE_P"); this.THR_RATE_P.Name = "THR_RATE_P"; - this.toolTip1.SetToolTip(this.THR_RATE_P, resources.GetString("THR_RATE_P.ToolTip")); // // label25 // resources.ApplyResources(this.label25, "label25"); this.label25.Name = "label25"; - this.toolTip1.SetToolTip(this.label25, resources.GetString("label25.ToolTip")); // // CHK_lockrollpitch // @@ -1342,13 +1225,11 @@ this.CHK_lockrollpitch.Checked = true; this.CHK_lockrollpitch.CheckState = System.Windows.Forms.CheckState.Checked; this.CHK_lockrollpitch.Name = "CHK_lockrollpitch"; - this.toolTip1.SetToolTip(this.CHK_lockrollpitch, resources.GetString("CHK_lockrollpitch.ToolTip")); this.CHK_lockrollpitch.UseVisualStyleBackColor = true; this.CHK_lockrollpitch.CheckedChanged += new System.EventHandler(this.CHK_lockrollpitch_CheckedChanged); // // groupBox4 // - resources.ApplyResources(this.groupBox4, "groupBox4"); this.groupBox4.Controls.Add(this.NAV_LAT_D); this.groupBox4.Controls.Add(this.label27); this.groupBox4.Controls.Add(this.WP_SPEED_MAX); @@ -1359,241 +1240,206 @@ this.groupBox4.Controls.Add(this.label15); this.groupBox4.Controls.Add(this.NAV_LAT_P); this.groupBox4.Controls.Add(this.label16); + resources.ApplyResources(this.groupBox4, "groupBox4"); this.groupBox4.Name = "groupBox4"; this.groupBox4.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox4, resources.GetString("groupBox4.ToolTip")); // // NAV_LAT_D // resources.ApplyResources(this.NAV_LAT_D, "NAV_LAT_D"); this.NAV_LAT_D.Name = "NAV_LAT_D"; - this.toolTip1.SetToolTip(this.NAV_LAT_D, resources.GetString("NAV_LAT_D.ToolTip")); // // label27 // resources.ApplyResources(this.label27, "label27"); this.label27.Name = "label27"; - this.toolTip1.SetToolTip(this.label27, resources.GetString("label27.ToolTip")); // // WP_SPEED_MAX // resources.ApplyResources(this.WP_SPEED_MAX, "WP_SPEED_MAX"); this.WP_SPEED_MAX.Name = "WP_SPEED_MAX"; - this.toolTip1.SetToolTip(this.WP_SPEED_MAX, resources.GetString("WP_SPEED_MAX.ToolTip")); // // label9 // resources.ApplyResources(this.label9, "label9"); this.label9.Name = "label9"; - this.toolTip1.SetToolTip(this.label9, resources.GetString("label9.ToolTip")); // // NAV_LAT_IMAX // resources.ApplyResources(this.NAV_LAT_IMAX, "NAV_LAT_IMAX"); this.NAV_LAT_IMAX.Name = "NAV_LAT_IMAX"; - this.toolTip1.SetToolTip(this.NAV_LAT_IMAX, resources.GetString("NAV_LAT_IMAX.ToolTip")); // // label13 // resources.ApplyResources(this.label13, "label13"); this.label13.Name = "label13"; - this.toolTip1.SetToolTip(this.label13, resources.GetString("label13.ToolTip")); // // NAV_LAT_I // resources.ApplyResources(this.NAV_LAT_I, "NAV_LAT_I"); this.NAV_LAT_I.Name = "NAV_LAT_I"; - this.toolTip1.SetToolTip(this.NAV_LAT_I, resources.GetString("NAV_LAT_I.ToolTip")); // // label15 // resources.ApplyResources(this.label15, "label15"); this.label15.Name = "label15"; - this.toolTip1.SetToolTip(this.label15, resources.GetString("label15.ToolTip")); // // NAV_LAT_P // resources.ApplyResources(this.NAV_LAT_P, "NAV_LAT_P"); this.NAV_LAT_P.Name = "NAV_LAT_P"; - this.toolTip1.SetToolTip(this.NAV_LAT_P, resources.GetString("NAV_LAT_P.ToolTip")); // // label16 // resources.ApplyResources(this.label16, "label16"); this.label16.Name = "label16"; - this.toolTip1.SetToolTip(this.label16, resources.GetString("label16.ToolTip")); // // groupBox6 // - resources.ApplyResources(this.groupBox6, "groupBox6"); this.groupBox6.Controls.Add(this.XTRK_GAIN_SC1); this.groupBox6.Controls.Add(this.label18); + resources.ApplyResources(this.groupBox6, "groupBox6"); this.groupBox6.Name = "groupBox6"; this.groupBox6.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox6, resources.GetString("groupBox6.ToolTip")); // // XTRK_GAIN_SC1 // resources.ApplyResources(this.XTRK_GAIN_SC1, "XTRK_GAIN_SC1"); this.XTRK_GAIN_SC1.Name = "XTRK_GAIN_SC1"; - this.toolTip1.SetToolTip(this.XTRK_GAIN_SC1, resources.GetString("XTRK_GAIN_SC1.ToolTip")); // // label18 // resources.ApplyResources(this.label18, "label18"); this.label18.Name = "label18"; - this.toolTip1.SetToolTip(this.label18, resources.GetString("label18.ToolTip")); // // groupBox7 // - resources.ApplyResources(this.groupBox7, "groupBox7"); this.groupBox7.Controls.Add(this.THR_ALT_IMAX); this.groupBox7.Controls.Add(this.label19); this.groupBox7.Controls.Add(this.THR_ALT_I); this.groupBox7.Controls.Add(this.label21); this.groupBox7.Controls.Add(this.THR_ALT_P); this.groupBox7.Controls.Add(this.label22); + resources.ApplyResources(this.groupBox7, "groupBox7"); this.groupBox7.Name = "groupBox7"; this.groupBox7.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox7, resources.GetString("groupBox7.ToolTip")); // // THR_ALT_IMAX // resources.ApplyResources(this.THR_ALT_IMAX, "THR_ALT_IMAX"); this.THR_ALT_IMAX.Name = "THR_ALT_IMAX"; - this.toolTip1.SetToolTip(this.THR_ALT_IMAX, resources.GetString("THR_ALT_IMAX.ToolTip")); // // label19 // resources.ApplyResources(this.label19, "label19"); this.label19.Name = "label19"; - this.toolTip1.SetToolTip(this.label19, resources.GetString("label19.ToolTip")); // // THR_ALT_I // resources.ApplyResources(this.THR_ALT_I, "THR_ALT_I"); this.THR_ALT_I.Name = "THR_ALT_I"; - this.toolTip1.SetToolTip(this.THR_ALT_I, resources.GetString("THR_ALT_I.ToolTip")); // // label21 // resources.ApplyResources(this.label21, "label21"); this.label21.Name = "label21"; - this.toolTip1.SetToolTip(this.label21, resources.GetString("label21.ToolTip")); // // THR_ALT_P // resources.ApplyResources(this.THR_ALT_P, "THR_ALT_P"); this.THR_ALT_P.Name = "THR_ALT_P"; - this.toolTip1.SetToolTip(this.THR_ALT_P, resources.GetString("THR_ALT_P.ToolTip")); // // label22 // resources.ApplyResources(this.label22, "label22"); this.label22.Name = "label22"; - this.toolTip1.SetToolTip(this.label22, resources.GetString("label22.ToolTip")); // // groupBox19 // - resources.ApplyResources(this.groupBox19, "groupBox19"); this.groupBox19.Controls.Add(this.HLD_LAT_IMAX); this.groupBox19.Controls.Add(this.label28); this.groupBox19.Controls.Add(this.HLD_LAT_I); this.groupBox19.Controls.Add(this.label30); this.groupBox19.Controls.Add(this.HLD_LAT_P); this.groupBox19.Controls.Add(this.label31); + resources.ApplyResources(this.groupBox19, "groupBox19"); this.groupBox19.Name = "groupBox19"; this.groupBox19.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox19, resources.GetString("groupBox19.ToolTip")); // // HLD_LAT_IMAX // resources.ApplyResources(this.HLD_LAT_IMAX, "HLD_LAT_IMAX"); this.HLD_LAT_IMAX.Name = "HLD_LAT_IMAX"; - this.toolTip1.SetToolTip(this.HLD_LAT_IMAX, resources.GetString("HLD_LAT_IMAX.ToolTip")); // // label28 // resources.ApplyResources(this.label28, "label28"); this.label28.Name = "label28"; - this.toolTip1.SetToolTip(this.label28, resources.GetString("label28.ToolTip")); // // HLD_LAT_I // resources.ApplyResources(this.HLD_LAT_I, "HLD_LAT_I"); this.HLD_LAT_I.Name = "HLD_LAT_I"; - this.toolTip1.SetToolTip(this.HLD_LAT_I, resources.GetString("HLD_LAT_I.ToolTip")); // // label30 // resources.ApplyResources(this.label30, "label30"); this.label30.Name = "label30"; - this.toolTip1.SetToolTip(this.label30, resources.GetString("label30.ToolTip")); // // HLD_LAT_P // resources.ApplyResources(this.HLD_LAT_P, "HLD_LAT_P"); this.HLD_LAT_P.Name = "HLD_LAT_P"; - this.toolTip1.SetToolTip(this.HLD_LAT_P, resources.GetString("HLD_LAT_P.ToolTip")); // // label31 // resources.ApplyResources(this.label31, "label31"); this.label31.Name = "label31"; - this.toolTip1.SetToolTip(this.label31, resources.GetString("label31.ToolTip")); // // groupBox20 // - resources.ApplyResources(this.groupBox20, "groupBox20"); this.groupBox20.Controls.Add(this.STB_YAW_IMAX); this.groupBox20.Controls.Add(this.label32); this.groupBox20.Controls.Add(this.STB_YAW_I); this.groupBox20.Controls.Add(this.label34); this.groupBox20.Controls.Add(this.STB_YAW_P); this.groupBox20.Controls.Add(this.label35); + resources.ApplyResources(this.groupBox20, "groupBox20"); this.groupBox20.Name = "groupBox20"; this.groupBox20.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox20, resources.GetString("groupBox20.ToolTip")); // // STB_YAW_IMAX // resources.ApplyResources(this.STB_YAW_IMAX, "STB_YAW_IMAX"); this.STB_YAW_IMAX.Name = "STB_YAW_IMAX"; - this.toolTip1.SetToolTip(this.STB_YAW_IMAX, resources.GetString("STB_YAW_IMAX.ToolTip")); // // label32 // resources.ApplyResources(this.label32, "label32"); this.label32.Name = "label32"; - this.toolTip1.SetToolTip(this.label32, resources.GetString("label32.ToolTip")); // // STB_YAW_I // resources.ApplyResources(this.STB_YAW_I, "STB_YAW_I"); this.STB_YAW_I.Name = "STB_YAW_I"; - this.toolTip1.SetToolTip(this.STB_YAW_I, resources.GetString("STB_YAW_I.ToolTip")); // // label34 // resources.ApplyResources(this.label34, "label34"); this.label34.Name = "label34"; - this.toolTip1.SetToolTip(this.label34, resources.GetString("label34.ToolTip")); // // STB_YAW_P // resources.ApplyResources(this.STB_YAW_P, "STB_YAW_P"); this.STB_YAW_P.Name = "STB_YAW_P"; - this.toolTip1.SetToolTip(this.STB_YAW_P, resources.GetString("STB_YAW_P.ToolTip")); // // label35 // resources.ApplyResources(this.label35, "label35"); this.label35.Name = "label35"; - this.toolTip1.SetToolTip(this.label35, resources.GetString("label35.ToolTip")); // // groupBox21 // - resources.ApplyResources(this.groupBox21, "groupBox21"); this.groupBox21.Controls.Add(this.STAB_D); this.groupBox21.Controls.Add(this.lblSTAB_D); this.groupBox21.Controls.Add(this.STB_PIT_IMAX); @@ -1602,110 +1448,94 @@ this.groupBox21.Controls.Add(this.label41); this.groupBox21.Controls.Add(this.STB_PIT_P); this.groupBox21.Controls.Add(this.label42); + resources.ApplyResources(this.groupBox21, "groupBox21"); this.groupBox21.Name = "groupBox21"; this.groupBox21.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox21, resources.GetString("groupBox21.ToolTip")); // // STAB_D // resources.ApplyResources(this.STAB_D, "STAB_D"); this.STAB_D.Name = "STAB_D"; - this.toolTip1.SetToolTip(this.STAB_D, resources.GetString("STAB_D.ToolTip")); // // lblSTAB_D // resources.ApplyResources(this.lblSTAB_D, "lblSTAB_D"); this.lblSTAB_D.Name = "lblSTAB_D"; - this.toolTip1.SetToolTip(this.lblSTAB_D, resources.GetString("lblSTAB_D.ToolTip")); // // STB_PIT_IMAX // resources.ApplyResources(this.STB_PIT_IMAX, "STB_PIT_IMAX"); this.STB_PIT_IMAX.Name = "STB_PIT_IMAX"; - this.toolTip1.SetToolTip(this.STB_PIT_IMAX, resources.GetString("STB_PIT_IMAX.ToolTip")); // // label36 // resources.ApplyResources(this.label36, "label36"); this.label36.Name = "label36"; - this.toolTip1.SetToolTip(this.label36, resources.GetString("label36.ToolTip")); // // STB_PIT_I // resources.ApplyResources(this.STB_PIT_I, "STB_PIT_I"); this.STB_PIT_I.Name = "STB_PIT_I"; - this.toolTip1.SetToolTip(this.STB_PIT_I, resources.GetString("STB_PIT_I.ToolTip")); // // label41 // resources.ApplyResources(this.label41, "label41"); this.label41.Name = "label41"; - this.toolTip1.SetToolTip(this.label41, resources.GetString("label41.ToolTip")); // // STB_PIT_P // resources.ApplyResources(this.STB_PIT_P, "STB_PIT_P"); this.STB_PIT_P.Name = "STB_PIT_P"; - this.toolTip1.SetToolTip(this.STB_PIT_P, resources.GetString("STB_PIT_P.ToolTip")); // // label42 // resources.ApplyResources(this.label42, "label42"); this.label42.Name = "label42"; - this.toolTip1.SetToolTip(this.label42, resources.GetString("label42.ToolTip")); // // groupBox22 // - resources.ApplyResources(this.groupBox22, "groupBox22"); this.groupBox22.Controls.Add(this.STB_RLL_IMAX); this.groupBox22.Controls.Add(this.label43); this.groupBox22.Controls.Add(this.STB_RLL_I); this.groupBox22.Controls.Add(this.label45); this.groupBox22.Controls.Add(this.STB_RLL_P); this.groupBox22.Controls.Add(this.label46); + resources.ApplyResources(this.groupBox22, "groupBox22"); this.groupBox22.Name = "groupBox22"; this.groupBox22.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox22, resources.GetString("groupBox22.ToolTip")); // // STB_RLL_IMAX // resources.ApplyResources(this.STB_RLL_IMAX, "STB_RLL_IMAX"); this.STB_RLL_IMAX.Name = "STB_RLL_IMAX"; - this.toolTip1.SetToolTip(this.STB_RLL_IMAX, resources.GetString("STB_RLL_IMAX.ToolTip")); // // label43 // resources.ApplyResources(this.label43, "label43"); this.label43.Name = "label43"; - this.toolTip1.SetToolTip(this.label43, resources.GetString("label43.ToolTip")); // // STB_RLL_I // resources.ApplyResources(this.STB_RLL_I, "STB_RLL_I"); this.STB_RLL_I.Name = "STB_RLL_I"; - this.toolTip1.SetToolTip(this.STB_RLL_I, resources.GetString("STB_RLL_I.ToolTip")); // // label45 // resources.ApplyResources(this.label45, "label45"); this.label45.Name = "label45"; - this.toolTip1.SetToolTip(this.label45, resources.GetString("label45.ToolTip")); // // STB_RLL_P // resources.ApplyResources(this.STB_RLL_P, "STB_RLL_P"); this.STB_RLL_P.Name = "STB_RLL_P"; - this.toolTip1.SetToolTip(this.STB_RLL_P, resources.GetString("STB_RLL_P.ToolTip")); // // label46 // resources.ApplyResources(this.label46, "label46"); this.label46.Name = "label46"; - this.toolTip1.SetToolTip(this.label46, resources.GetString("label46.ToolTip")); // // groupBox23 // - resources.ApplyResources(this.groupBox23, "groupBox23"); this.groupBox23.Controls.Add(this.RATE_YAW_D); this.groupBox23.Controls.Add(this.label10); this.groupBox23.Controls.Add(this.RATE_YAW_IMAX); @@ -1714,61 +1544,52 @@ this.groupBox23.Controls.Add(this.label77); this.groupBox23.Controls.Add(this.RATE_YAW_P); this.groupBox23.Controls.Add(this.label82); + resources.ApplyResources(this.groupBox23, "groupBox23"); this.groupBox23.Name = "groupBox23"; this.groupBox23.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox23, resources.GetString("groupBox23.ToolTip")); // // RATE_YAW_D // resources.ApplyResources(this.RATE_YAW_D, "RATE_YAW_D"); this.RATE_YAW_D.Name = "RATE_YAW_D"; - this.toolTip1.SetToolTip(this.RATE_YAW_D, resources.GetString("RATE_YAW_D.ToolTip")); // // label10 // resources.ApplyResources(this.label10, "label10"); this.label10.Name = "label10"; - this.toolTip1.SetToolTip(this.label10, resources.GetString("label10.ToolTip")); // // RATE_YAW_IMAX // resources.ApplyResources(this.RATE_YAW_IMAX, "RATE_YAW_IMAX"); this.RATE_YAW_IMAX.Name = "RATE_YAW_IMAX"; - this.toolTip1.SetToolTip(this.RATE_YAW_IMAX, resources.GetString("RATE_YAW_IMAX.ToolTip")); // // label47 // resources.ApplyResources(this.label47, "label47"); this.label47.Name = "label47"; - this.toolTip1.SetToolTip(this.label47, resources.GetString("label47.ToolTip")); // // RATE_YAW_I // resources.ApplyResources(this.RATE_YAW_I, "RATE_YAW_I"); this.RATE_YAW_I.Name = "RATE_YAW_I"; - this.toolTip1.SetToolTip(this.RATE_YAW_I, resources.GetString("RATE_YAW_I.ToolTip")); // // label77 // resources.ApplyResources(this.label77, "label77"); this.label77.Name = "label77"; - this.toolTip1.SetToolTip(this.label77, resources.GetString("label77.ToolTip")); // // RATE_YAW_P // resources.ApplyResources(this.RATE_YAW_P, "RATE_YAW_P"); this.RATE_YAW_P.Name = "RATE_YAW_P"; - this.toolTip1.SetToolTip(this.RATE_YAW_P, resources.GetString("RATE_YAW_P.ToolTip")); // // label82 // resources.ApplyResources(this.label82, "label82"); this.label82.Name = "label82"; - this.toolTip1.SetToolTip(this.label82, resources.GetString("label82.ToolTip")); // // groupBox24 // - resources.ApplyResources(this.groupBox24, "groupBox24"); this.groupBox24.Controls.Add(this.RATE_PIT_D); this.groupBox24.Controls.Add(this.label11); this.groupBox24.Controls.Add(this.RATE_PIT_IMAX); @@ -1777,61 +1598,52 @@ this.groupBox24.Controls.Add(this.label86); this.groupBox24.Controls.Add(this.RATE_PIT_P); this.groupBox24.Controls.Add(this.label87); + resources.ApplyResources(this.groupBox24, "groupBox24"); this.groupBox24.Name = "groupBox24"; this.groupBox24.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox24, resources.GetString("groupBox24.ToolTip")); // // RATE_PIT_D // resources.ApplyResources(this.RATE_PIT_D, "RATE_PIT_D"); this.RATE_PIT_D.Name = "RATE_PIT_D"; - this.toolTip1.SetToolTip(this.RATE_PIT_D, resources.GetString("RATE_PIT_D.ToolTip")); // // label11 // resources.ApplyResources(this.label11, "label11"); this.label11.Name = "label11"; - this.toolTip1.SetToolTip(this.label11, resources.GetString("label11.ToolTip")); // // RATE_PIT_IMAX // resources.ApplyResources(this.RATE_PIT_IMAX, "RATE_PIT_IMAX"); this.RATE_PIT_IMAX.Name = "RATE_PIT_IMAX"; - this.toolTip1.SetToolTip(this.RATE_PIT_IMAX, resources.GetString("RATE_PIT_IMAX.ToolTip")); // // label84 // resources.ApplyResources(this.label84, "label84"); this.label84.Name = "label84"; - this.toolTip1.SetToolTip(this.label84, resources.GetString("label84.ToolTip")); // // RATE_PIT_I // resources.ApplyResources(this.RATE_PIT_I, "RATE_PIT_I"); this.RATE_PIT_I.Name = "RATE_PIT_I"; - this.toolTip1.SetToolTip(this.RATE_PIT_I, resources.GetString("RATE_PIT_I.ToolTip")); // // label86 // resources.ApplyResources(this.label86, "label86"); this.label86.Name = "label86"; - this.toolTip1.SetToolTip(this.label86, resources.GetString("label86.ToolTip")); // // RATE_PIT_P // resources.ApplyResources(this.RATE_PIT_P, "RATE_PIT_P"); this.RATE_PIT_P.Name = "RATE_PIT_P"; - this.toolTip1.SetToolTip(this.RATE_PIT_P, resources.GetString("RATE_PIT_P.ToolTip")); // // label87 // resources.ApplyResources(this.label87, "label87"); this.label87.Name = "label87"; - this.toolTip1.SetToolTip(this.label87, resources.GetString("label87.ToolTip")); // // groupBox25 // - resources.ApplyResources(this.groupBox25, "groupBox25"); this.groupBox25.Controls.Add(this.RATE_RLL_D); this.groupBox25.Controls.Add(this.label17); this.groupBox25.Controls.Add(this.RATE_RLL_IMAX); @@ -1840,61 +1652,52 @@ this.groupBox25.Controls.Add(this.label90); this.groupBox25.Controls.Add(this.RATE_RLL_P); this.groupBox25.Controls.Add(this.label91); + resources.ApplyResources(this.groupBox25, "groupBox25"); this.groupBox25.Name = "groupBox25"; this.groupBox25.TabStop = false; - this.toolTip1.SetToolTip(this.groupBox25, resources.GetString("groupBox25.ToolTip")); // // RATE_RLL_D // resources.ApplyResources(this.RATE_RLL_D, "RATE_RLL_D"); this.RATE_RLL_D.Name = "RATE_RLL_D"; - this.toolTip1.SetToolTip(this.RATE_RLL_D, resources.GetString("RATE_RLL_D.ToolTip")); // // label17 // resources.ApplyResources(this.label17, "label17"); this.label17.Name = "label17"; - this.toolTip1.SetToolTip(this.label17, resources.GetString("label17.ToolTip")); // // RATE_RLL_IMAX // resources.ApplyResources(this.RATE_RLL_IMAX, "RATE_RLL_IMAX"); this.RATE_RLL_IMAX.Name = "RATE_RLL_IMAX"; - this.toolTip1.SetToolTip(this.RATE_RLL_IMAX, resources.GetString("RATE_RLL_IMAX.ToolTip")); // // label88 // resources.ApplyResources(this.label88, "label88"); this.label88.Name = "label88"; - this.toolTip1.SetToolTip(this.label88, resources.GetString("label88.ToolTip")); // // RATE_RLL_I // resources.ApplyResources(this.RATE_RLL_I, "RATE_RLL_I"); this.RATE_RLL_I.Name = "RATE_RLL_I"; - this.toolTip1.SetToolTip(this.RATE_RLL_I, resources.GetString("RATE_RLL_I.ToolTip")); // // label90 // resources.ApplyResources(this.label90, "label90"); this.label90.Name = "label90"; - this.toolTip1.SetToolTip(this.label90, resources.GetString("label90.ToolTip")); // // RATE_RLL_P // resources.ApplyResources(this.RATE_RLL_P, "RATE_RLL_P"); this.RATE_RLL_P.Name = "RATE_RLL_P"; - this.toolTip1.SetToolTip(this.RATE_RLL_P, resources.GetString("RATE_RLL_P.ToolTip")); // // label91 // resources.ApplyResources(this.label91, "label91"); this.label91.Name = "label91"; - this.toolTip1.SetToolTip(this.label91, resources.GetString("label91.ToolTip")); // // TabPlanner // - resources.ApplyResources(this.TabPlanner, "TabPlanner"); this.TabPlanner.Controls.Add(this.label26); this.TabPlanner.Controls.Add(this.CMB_videoresolutions); this.TabPlanner.Controls.Add(this.label12); @@ -1938,28 +1741,25 @@ this.TabPlanner.Controls.Add(this.BUT_Joystick); this.TabPlanner.Controls.Add(this.BUT_videostop); this.TabPlanner.Controls.Add(this.BUT_videostart); + resources.ApplyResources(this.TabPlanner, "TabPlanner"); this.TabPlanner.Name = "TabPlanner"; - this.toolTip1.SetToolTip(this.TabPlanner, resources.GetString("TabPlanner.ToolTip")); // // label26 // resources.ApplyResources(this.label26, "label26"); this.label26.Name = "label26"; - this.toolTip1.SetToolTip(this.label26, resources.GetString("label26.ToolTip")); // // CMB_videoresolutions // - resources.ApplyResources(this.CMB_videoresolutions, "CMB_videoresolutions"); this.CMB_videoresolutions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_videoresolutions.FormattingEnabled = true; + resources.ApplyResources(this.CMB_videoresolutions, "CMB_videoresolutions"); this.CMB_videoresolutions.Name = "CMB_videoresolutions"; - this.toolTip1.SetToolTip(this.CMB_videoresolutions, resources.GetString("CMB_videoresolutions.ToolTip")); // // label12 // resources.ApplyResources(this.label12, "label12"); this.label12.Name = "label12"; - this.toolTip1.SetToolTip(this.label12, resources.GetString("label12.ToolTip")); // // CHK_GDIPlus // @@ -1973,13 +1773,11 @@ // resources.ApplyResources(this.label24, "label24"); this.label24.Name = "label24"; - this.toolTip1.SetToolTip(this.label24, resources.GetString("label24.ToolTip")); // // CHK_loadwponconnect // resources.ApplyResources(this.CHK_loadwponconnect, "CHK_loadwponconnect"); this.CHK_loadwponconnect.Name = "CHK_loadwponconnect"; - this.toolTip1.SetToolTip(this.CHK_loadwponconnect, resources.GetString("CHK_loadwponconnect.ToolTip")); this.CHK_loadwponconnect.UseVisualStyleBackColor = true; this.CHK_loadwponconnect.CheckedChanged += new System.EventHandler(this.CHK_loadwponconnect_CheckedChanged); // @@ -1987,16 +1785,15 @@ // resources.ApplyResources(this.label23, "label23"); this.label23.Name = "label23"; - this.toolTip1.SetToolTip(this.label23, resources.GetString("label23.ToolTip")); // // NUM_tracklength // - resources.ApplyResources(this.NUM_tracklength, "NUM_tracklength"); this.NUM_tracklength.Increment = new decimal(new int[] { 100, 0, 0, 0}); + resources.ApplyResources(this.NUM_tracklength, "NUM_tracklength"); this.NUM_tracklength.Maximum = new decimal(new int[] { 2000, 0, @@ -2020,7 +1817,6 @@ // resources.ApplyResources(this.CHK_speechaltwarning, "CHK_speechaltwarning"); this.CHK_speechaltwarning.Name = "CHK_speechaltwarning"; - this.toolTip1.SetToolTip(this.CHK_speechaltwarning, resources.GetString("CHK_speechaltwarning.ToolTip")); this.CHK_speechaltwarning.UseVisualStyleBackColor = true; this.CHK_speechaltwarning.CheckedChanged += new System.EventHandler(this.CHK_speechaltwarning_CheckedChanged); // @@ -2028,15 +1824,13 @@ // resources.ApplyResources(this.label108, "label108"); this.label108.Name = "label108"; - this.toolTip1.SetToolTip(this.label108, resources.GetString("label108.ToolTip")); // // CHK_resetapmonconnect // - resources.ApplyResources(this.CHK_resetapmonconnect, "CHK_resetapmonconnect"); this.CHK_resetapmonconnect.Checked = true; this.CHK_resetapmonconnect.CheckState = System.Windows.Forms.CheckState.Checked; + resources.ApplyResources(this.CHK_resetapmonconnect, "CHK_resetapmonconnect"); this.CHK_resetapmonconnect.Name = "CHK_resetapmonconnect"; - this.toolTip1.SetToolTip(this.CHK_resetapmonconnect, resources.GetString("CHK_resetapmonconnect.ToolTip")); this.CHK_resetapmonconnect.UseVisualStyleBackColor = true; this.CHK_resetapmonconnect.CheckedChanged += new System.EventHandler(this.CHK_resetapmonconnect_CheckedChanged); // @@ -2044,7 +1838,6 @@ // resources.ApplyResources(this.CHK_mavdebug, "CHK_mavdebug"); this.CHK_mavdebug.Name = "CHK_mavdebug"; - this.toolTip1.SetToolTip(this.CHK_mavdebug, resources.GetString("CHK_mavdebug.ToolTip")); this.CHK_mavdebug.UseVisualStyleBackColor = true; this.CHK_mavdebug.CheckedChanged += new System.EventHandler(this.CHK_mavdebug_CheckedChanged); // @@ -2052,11 +1845,9 @@ // resources.ApplyResources(this.label107, "label107"); this.label107.Name = "label107"; - this.toolTip1.SetToolTip(this.label107, resources.GetString("label107.ToolTip")); // // CMB_raterc // - resources.ApplyResources(this.CMB_raterc, "CMB_raterc"); this.CMB_raterc.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_raterc.FormattingEnabled = true; this.CMB_raterc.Items.AddRange(new object[] { @@ -2064,37 +1855,32 @@ resources.GetString("CMB_raterc.Items1"), resources.GetString("CMB_raterc.Items2"), resources.GetString("CMB_raterc.Items3")}); + resources.ApplyResources(this.CMB_raterc, "CMB_raterc"); this.CMB_raterc.Name = "CMB_raterc"; - this.toolTip1.SetToolTip(this.CMB_raterc, resources.GetString("CMB_raterc.ToolTip")); this.CMB_raterc.SelectedIndexChanged += new System.EventHandler(this.CMB_raterc_SelectedIndexChanged); // // label104 // resources.ApplyResources(this.label104, "label104"); this.label104.Name = "label104"; - this.toolTip1.SetToolTip(this.label104, resources.GetString("label104.ToolTip")); // // label103 // resources.ApplyResources(this.label103, "label103"); this.label103.Name = "label103"; - this.toolTip1.SetToolTip(this.label103, resources.GetString("label103.ToolTip")); // // label102 // resources.ApplyResources(this.label102, "label102"); this.label102.Name = "label102"; - this.toolTip1.SetToolTip(this.label102, resources.GetString("label102.ToolTip")); // // label101 // resources.ApplyResources(this.label101, "label101"); this.label101.Name = "label101"; - this.toolTip1.SetToolTip(this.label101, resources.GetString("label101.ToolTip")); // // CMB_ratestatus // - resources.ApplyResources(this.CMB_ratestatus, "CMB_ratestatus"); this.CMB_ratestatus.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_ratestatus.FormattingEnabled = true; this.CMB_ratestatus.Items.AddRange(new object[] { @@ -2102,13 +1888,12 @@ resources.GetString("CMB_ratestatus.Items1"), resources.GetString("CMB_ratestatus.Items2"), resources.GetString("CMB_ratestatus.Items3")}); + resources.ApplyResources(this.CMB_ratestatus, "CMB_ratestatus"); this.CMB_ratestatus.Name = "CMB_ratestatus"; - this.toolTip1.SetToolTip(this.CMB_ratestatus, resources.GetString("CMB_ratestatus.ToolTip")); this.CMB_ratestatus.SelectedIndexChanged += new System.EventHandler(this.CMB_ratestatus_SelectedIndexChanged); // // CMB_rateposition // - resources.ApplyResources(this.CMB_rateposition, "CMB_rateposition"); this.CMB_rateposition.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_rateposition.FormattingEnabled = true; this.CMB_rateposition.Items.AddRange(new object[] { @@ -2116,13 +1901,12 @@ resources.GetString("CMB_rateposition.Items1"), resources.GetString("CMB_rateposition.Items2"), resources.GetString("CMB_rateposition.Items3")}); + resources.ApplyResources(this.CMB_rateposition, "CMB_rateposition"); this.CMB_rateposition.Name = "CMB_rateposition"; - this.toolTip1.SetToolTip(this.CMB_rateposition, resources.GetString("CMB_rateposition.ToolTip")); this.CMB_rateposition.SelectedIndexChanged += new System.EventHandler(this.CMB_rateposition_SelectedIndexChanged); // // CMB_rateattitude // - resources.ApplyResources(this.CMB_rateattitude, "CMB_rateattitude"); this.CMB_rateattitude.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_rateattitude.FormattingEnabled = true; this.CMB_rateattitude.Items.AddRange(new object[] { @@ -2130,63 +1914,55 @@ resources.GetString("CMB_rateattitude.Items1"), resources.GetString("CMB_rateattitude.Items2"), resources.GetString("CMB_rateattitude.Items3")}); + resources.ApplyResources(this.CMB_rateattitude, "CMB_rateattitude"); this.CMB_rateattitude.Name = "CMB_rateattitude"; - this.toolTip1.SetToolTip(this.CMB_rateattitude, resources.GetString("CMB_rateattitude.ToolTip")); this.CMB_rateattitude.SelectedIndexChanged += new System.EventHandler(this.CMB_rateattitude_SelectedIndexChanged); // // label99 // resources.ApplyResources(this.label99, "label99"); this.label99.Name = "label99"; - this.toolTip1.SetToolTip(this.label99, resources.GetString("label99.ToolTip")); // // label98 // resources.ApplyResources(this.label98, "label98"); this.label98.Name = "label98"; - this.toolTip1.SetToolTip(this.label98, resources.GetString("label98.ToolTip")); // // label97 // resources.ApplyResources(this.label97, "label97"); this.label97.Name = "label97"; - this.toolTip1.SetToolTip(this.label97, resources.GetString("label97.ToolTip")); // // CMB_speedunits // - resources.ApplyResources(this.CMB_speedunits, "CMB_speedunits"); this.CMB_speedunits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_speedunits.FormattingEnabled = true; + resources.ApplyResources(this.CMB_speedunits, "CMB_speedunits"); this.CMB_speedunits.Name = "CMB_speedunits"; - this.toolTip1.SetToolTip(this.CMB_speedunits, resources.GetString("CMB_speedunits.ToolTip")); this.CMB_speedunits.SelectedIndexChanged += new System.EventHandler(this.CMB_speedunits_SelectedIndexChanged); // // CMB_distunits // - resources.ApplyResources(this.CMB_distunits, "CMB_distunits"); this.CMB_distunits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_distunits.FormattingEnabled = true; + resources.ApplyResources(this.CMB_distunits, "CMB_distunits"); this.CMB_distunits.Name = "CMB_distunits"; - this.toolTip1.SetToolTip(this.CMB_distunits, resources.GetString("CMB_distunits.ToolTip")); this.CMB_distunits.SelectedIndexChanged += new System.EventHandler(this.CMB_distunits_SelectedIndexChanged); // // label96 // resources.ApplyResources(this.label96, "label96"); this.label96.Name = "label96"; - this.toolTip1.SetToolTip(this.label96, resources.GetString("label96.ToolTip")); // // label95 // resources.ApplyResources(this.label95, "label95"); this.label95.Name = "label95"; - this.toolTip1.SetToolTip(this.label95, resources.GetString("label95.ToolTip")); // // CHK_speechbattery // resources.ApplyResources(this.CHK_speechbattery, "CHK_speechbattery"); this.CHK_speechbattery.Name = "CHK_speechbattery"; - this.toolTip1.SetToolTip(this.CHK_speechbattery, resources.GetString("CHK_speechbattery.ToolTip")); this.CHK_speechbattery.UseVisualStyleBackColor = true; this.CHK_speechbattery.CheckedChanged += new System.EventHandler(this.CHK_speechbattery_CheckedChanged); // @@ -2194,7 +1970,6 @@ // resources.ApplyResources(this.CHK_speechcustom, "CHK_speechcustom"); this.CHK_speechcustom.Name = "CHK_speechcustom"; - this.toolTip1.SetToolTip(this.CHK_speechcustom, resources.GetString("CHK_speechcustom.ToolTip")); this.CHK_speechcustom.UseVisualStyleBackColor = true; this.CHK_speechcustom.CheckedChanged += new System.EventHandler(this.CHK_speechcustom_CheckedChanged); // @@ -2202,7 +1977,6 @@ // resources.ApplyResources(this.CHK_speechmode, "CHK_speechmode"); this.CHK_speechmode.Name = "CHK_speechmode"; - this.toolTip1.SetToolTip(this.CHK_speechmode, resources.GetString("CHK_speechmode.ToolTip")); this.CHK_speechmode.UseVisualStyleBackColor = true; this.CHK_speechmode.CheckedChanged += new System.EventHandler(this.CHK_speechmode_CheckedChanged); // @@ -2210,7 +1984,6 @@ // resources.ApplyResources(this.CHK_speechwaypoint, "CHK_speechwaypoint"); this.CHK_speechwaypoint.Name = "CHK_speechwaypoint"; - this.toolTip1.SetToolTip(this.CHK_speechwaypoint, resources.GetString("CHK_speechwaypoint.ToolTip")); this.CHK_speechwaypoint.UseVisualStyleBackColor = true; this.CHK_speechwaypoint.CheckedChanged += new System.EventHandler(this.CHK_speechwaypoint_CheckedChanged); // @@ -2218,48 +1991,42 @@ // resources.ApplyResources(this.label94, "label94"); this.label94.Name = "label94"; - this.toolTip1.SetToolTip(this.label94, resources.GetString("label94.ToolTip")); // // CMB_osdcolor // - resources.ApplyResources(this.CMB_osdcolor, "CMB_osdcolor"); this.CMB_osdcolor.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.CMB_osdcolor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_osdcolor.FormattingEnabled = true; + resources.ApplyResources(this.CMB_osdcolor, "CMB_osdcolor"); this.CMB_osdcolor.Name = "CMB_osdcolor"; - this.toolTip1.SetToolTip(this.CMB_osdcolor, resources.GetString("CMB_osdcolor.ToolTip")); this.CMB_osdcolor.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.CMB_osdcolor_DrawItem); this.CMB_osdcolor.SelectedIndexChanged += new System.EventHandler(this.CMB_osdcolor_SelectedIndexChanged); // // CMB_language // - resources.ApplyResources(this.CMB_language, "CMB_language"); this.CMB_language.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_language.FormattingEnabled = true; + resources.ApplyResources(this.CMB_language, "CMB_language"); this.CMB_language.Name = "CMB_language"; - this.toolTip1.SetToolTip(this.CMB_language, resources.GetString("CMB_language.ToolTip")); // // label93 // resources.ApplyResources(this.label93, "label93"); this.label93.Name = "label93"; - this.toolTip1.SetToolTip(this.label93, resources.GetString("label93.ToolTip")); // // CHK_enablespeech // resources.ApplyResources(this.CHK_enablespeech, "CHK_enablespeech"); this.CHK_enablespeech.Name = "CHK_enablespeech"; - this.toolTip1.SetToolTip(this.CHK_enablespeech, resources.GetString("CHK_enablespeech.ToolTip")); this.CHK_enablespeech.UseVisualStyleBackColor = true; this.CHK_enablespeech.CheckedChanged += new System.EventHandler(this.CHK_enablespeech_CheckedChanged); // // CHK_hudshow // - resources.ApplyResources(this.CHK_hudshow, "CHK_hudshow"); this.CHK_hudshow.Checked = true; this.CHK_hudshow.CheckState = System.Windows.Forms.CheckState.Checked; + resources.ApplyResources(this.CHK_hudshow, "CHK_hudshow"); this.CHK_hudshow.Name = "CHK_hudshow"; - this.toolTip1.SetToolTip(this.CHK_hudshow, resources.GetString("CHK_hudshow.ToolTip")); this.CHK_hudshow.UseVisualStyleBackColor = true; this.CHK_hudshow.CheckedChanged += new System.EventHandler(this.CHK_hudshow_CheckedChanged); // @@ -2267,15 +2034,13 @@ // resources.ApplyResources(this.label92, "label92"); this.label92.Name = "label92"; - this.toolTip1.SetToolTip(this.label92, resources.GetString("label92.ToolTip")); // // CMB_videosources // - resources.ApplyResources(this.CMB_videosources, "CMB_videosources"); this.CMB_videosources.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CMB_videosources.FormattingEnabled = true; + resources.ApplyResources(this.CMB_videosources, "CMB_videosources"); this.CMB_videosources.Name = "CMB_videosources"; - this.toolTip1.SetToolTip(this.CMB_videosources, resources.GetString("CMB_videosources.ToolTip")); this.CMB_videosources.SelectedIndexChanged += new System.EventHandler(this.CMB_videosources_SelectedIndexChanged); this.CMB_videosources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.CMB_videosources_MouseClick); // @@ -2283,7 +2048,6 @@ // resources.ApplyResources(this.BUT_Joystick, "BUT_Joystick"); this.BUT_Joystick.Name = "BUT_Joystick"; - this.toolTip1.SetToolTip(this.BUT_Joystick, resources.GetString("BUT_Joystick.ToolTip")); this.BUT_Joystick.UseVisualStyleBackColor = true; this.BUT_Joystick.Click += new System.EventHandler(this.BUT_Joystick_Click); // @@ -2291,7 +2055,6 @@ // resources.ApplyResources(this.BUT_videostop, "BUT_videostop"); this.BUT_videostop.Name = "BUT_videostop"; - this.toolTip1.SetToolTip(this.BUT_videostop, resources.GetString("BUT_videostop.ToolTip")); this.BUT_videostop.UseVisualStyleBackColor = true; this.BUT_videostop.Click += new System.EventHandler(this.BUT_videostop_Click); // @@ -2299,7 +2062,6 @@ // resources.ApplyResources(this.BUT_videostart, "BUT_videostart"); this.BUT_videostart.Name = "BUT_videostart"; - this.toolTip1.SetToolTip(this.BUT_videostart, resources.GetString("BUT_videostart.ToolTip")); this.BUT_videostart.UseVisualStyleBackColor = true; this.BUT_videostart.Click += new System.EventHandler(this.BUT_videostart_Click); // @@ -2307,14 +2069,12 @@ // resources.ApplyResources(this.TabSetup, "TabSetup"); this.TabSetup.Name = "TabSetup"; - this.toolTip1.SetToolTip(this.TabSetup, resources.GetString("TabSetup.ToolTip")); this.TabSetup.UseVisualStyleBackColor = true; // // label109 // resources.ApplyResources(this.label109, "label109"); this.label109.Name = "label109"; - this.toolTip1.SetToolTip(this.label109, resources.GetString("label109.ToolTip")); // // BUT_rerequestparams // @@ -2352,7 +2112,6 @@ // resources.ApplyResources(this.BUT_compare, "BUT_compare"); this.BUT_compare.Name = "BUT_compare"; - this.toolTip1.SetToolTip(this.BUT_compare, resources.GetString("BUT_compare.ToolTip")); this.BUT_compare.UseVisualStyleBackColor = true; this.BUT_compare.Click += new System.EventHandler(this.BUT_compare_Click); // @@ -2369,7 +2128,6 @@ this.Controls.Add(this.BUT_load); this.Controls.Add(this.Params); this.Name = "Configuration"; - this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip")); this.Load += new System.EventHandler(this.Configuration_Load); ((System.ComponentModel.ISupportInitialize)(this.Params)).EndInit(); this.ConfigTabs.ResumeLayout(false); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs index 6970e2567d..2ce3b57beb 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs @@ -1154,5 +1154,25 @@ namespace ArdupilotMega.GCSViews { } + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + if (keyData == Keys.F5) + { + BUT_rerequestparams_Click(BUT_rerequestparams, null); + return true; + } + if (keyData == (Keys.Control | Keys.S)) + { + BUT_writePIDS_Click(BUT_writePIDS, null); + return true; + } + if (keyData == (Keys.Control | Keys.O)) + { + BUT_load_Click(BUT_load, null); + return true; + } + return base.ProcessCmdKey(ref msg, keyData); + } } } \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx index b299eea102..d92de5c219 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx @@ -117,2795 +117,5325 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - THR_FS_VALUE - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 29 - - - groupBox14 - - - - 722, 434 - - - label50 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - P - - - groupBox10 - - - D - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - INT_MAX - - - 78, 20 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 390, 11 - - - RATE_YAW_IMAX - - - label22 - - - label51 - - - groupBox15 - - - 5 - - - 6, 16 - - - Setup - - - 3 - - - 61, 13 - - - INT_MAX - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - - - - RATE_RLL_IMAX - - - Ch6 Opt - - - 6, 87 - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl + + Top, Bottom, Left - - label56 - - - 111, 59 - - - groupBox16 - - - 0 - - - $this - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - THR_RATE_P - - - 6, 40 - - - 5 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 13 - - - groupBox21 - - - - - - groupBox5 - - - 69, 13 - - - 80, 13 - - - label28 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - WP_SPEED_MAX - - - GDI+ (old type) - - - groupBox24 - - - - - - label57 - - - 111, 36 - - - 7 - - - 65, 13 - - - P - - - Default - - - - - - groupBox8 - - - NoControl - - - 3, 416 - - - 22, 13 - - - label29 - - - 3, 3, 3, 3 - - - CH6_RELAY - - - groupBox24 - - - 80, 21 - - - IMAX - - - INT_MAX - - - I - - - 136, 244 - - - Dist Units - - - - - - 6, 260 - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 722, 434 - - - Load param's from file - - - FBW max - - - 65, 13 - - - CHK_hudshow - - - 78, 20 - - - groupBox12 - - - 11 - - - STB_PIT_I - - - 15 - - - 3 - - - 78, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 9 - - - groupBox5 - - - label52 - - - - - - 78, 20 - - - label102 - - - YW2SRV_IMAX - - - 4, 109 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 78, 20 - - - 78, 20 - - - 5 - - - 11 - - - 111, 36 - - - 78, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - - - - groupBox7 - - - - - - 78, 20 - - - 65, 13 - - - label53 - - - RATE_PIT_IMAX - - - 531, 6 - - - groupBox23 - - - 0 - - - 0 - - - 4 - - - 2 - - - label94 - - - 7 - - - 6 - - - - - - 80, 63 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 43, 13 - - - label58 - - - INT_MAX - - - 11 - - - - - - UI Language - - - groupBox1 - - - groupBox16 - - - - - - - - - NAV_LAT_I - - - 111, 13 - - - 205, 1 - - - 1 - - - label95 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 730, 460 - - - 7 - - - groupBox4 - - - label59 - - - TabAP - - - label24 - - - NoControl - - - 2 - - - 111, 36 - - - - - - groupBox25 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - RATE_YAW_P - - - 6 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - groupBox22 - - - NoControl - - - - - - 0, 0, 0, 0 - - - HDNG2RLL_P - - - 80, 60 - - - 78, 20 - - - NoControl - - - 11 - - - NoControl - - - System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 0 - - - 170, 108 - - - 0 - - - 358, 336 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 154, 17 - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox9 - - - TabPlanner - - - 78, 20 - - - - - - RTL - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - NoControl - - - groupBox20 - - - label3 - - - 16 - - - - - - - - - label90 - - - - - - 111, 13 - - - NoControl - - - TabPlanner - - - label46 - - - 2 - - - 7 - - - Write changed params to device - - - 78, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 11 - - - groupBox9 - - - groupBox7 - - - NoControl - - - Bottom, Left - - - - - - - - - 12 - - - 1 - - - label91 - - - ENRGY2THR_P - - - 10, 13 - - - - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 66 - - - 80, 37 - - - CHK_GDIPlus - - - 4 - - - label7 - - - 78, 20 - - - 11 - - - - - - 17 - - - 56, 17 - - - groupBox12 - - - 4 - - - - - - label96 - - - 6 - - - NoControl - - - 14 - - - 16 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - - - - 111, 36 - - - groupBox19 - - - 18 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + True + + Command - - 14 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - HLD_LAT_IMAX - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 138, 21 - - - 5 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - groupBox10 - - - groupBox8 - - - TabPlanner - - - 7 - - - 4 - - - 52, 13 - - - 5 - - - 15, 13 - - - NoControl - - - - - - - - - - - - - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - ConfigTabs - - - groupBox8 - - - 1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10, 13 - - - 150 - - - Cruise - - - - - - Max - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - NoControl - - - Video Format - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 111, 59 - - - 3 - - - 87, 17 - - - toolTip1 - - - 111, 82 - - - IMAX - - - 6, 63 - - - groupBox9 - - - groupBox9 - - - 111, 36 - - - RLL2SRV_IMAX - - - 12 - - - ARSP2PTCH_P - - - 27 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 100, 23 - - - 5 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 5 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox10 - - - 5 - - - 27, 13 - - - Nav Pitch AS Pid - - - 245, 107 - - - 590, 244 - - - label93 - - - groupBox12 - - - 80, 60 - - - RLL2SRV_I - - - 30, 318 - - - 11 - - - CHK_mavdebug - - - Ch7 Opt - - - 78, 20 - - - CH6_THR_HOLD_KP - - - 139, 317 - - - groupBox21 - - - 15 - - - 78, 20 - - - CMB_rateposition - - - Stabilize Roll - - - label98 - - - NAV_LAT_D - - - 20 - - - CMB_ratestatus - - - 39 - - - - - - 5 - - - 10, 13 - - - CHK_speechwaypoint - - - Enable Speech - - - CHK_speechaltwarning - - - - - - NoControl - - - 14, 13 - - - lblSTAB_D - - - NUM_tracklength - - - BUT_Joystick - - - label23 - - - 6, 17 - - - - - - 65, 13 - - - 579, 107 - - - IMAX - - - 139, 158 - - - 78, 20 - - - 2 - - - - - - - - - I - - - - - - 68, 13 - - - 80, 13 - - - CH6_NAV_I - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 9 - - - 0 - - - NoControl - - - label107 - - - 61, 13 - - - groupBox3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - NoControl - - - Energy/Alt Pid - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - - - - 78, 20 - - - THR_RATE_D - - - groupBox9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - 5 - - - 111, 82 - - - 195, 108 - - - RawValue - - - 358, 6 - - - 0 - - - - - - Enable HUD Overlay - - - NoControl - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 205, 217 - - - 23 - - - 53, 23 - - - 0 - - - ENRGY2THR_D - - - 25 - - - - - - 80, 88 - - - - - - - - - groupBox10 - - - 6, 86 - - - 80, 37 - - - NAV_LAT_P - - - - - - - - - 139, 131 - - - groupBox23 - - - CH6_TRAVERSE_SPEED - - - 50, 13 - - - 78, 20 - - - label64 - - - 30, 162 - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - - - - 65, 13 - - - - - - 14, 13 - - - - - - 14, 13 - - - 0 - - - P to T - - - groupBox10 - - - groupBox3 - - - 334, 240 - - - - - - BUT_writePIDS - - - Save params to file - - - 78, 20 - - - label65 - - - - - - 111, 13 - - - 10, 13 - - - - - - 3 - - - Reload params from device - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Waypoint - - - 20 - - - 0 - - - 80, 37 - - - RATE_YAW_D - - - 7 - - - 75, 23 - - - 80, 21 - - - 5 - - - 111, 13 - - - 30 - - - - - - 103, 19 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - - - - ConfigTabs - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 195, 108 - - - 78, 20 - - - - - - TabPlanner - - - 24 - - - NoControl - - - IMAX - - - 406, 325 - - - P - - - - - - 6 - - - IMAX - - - 139, 187 - - - P - - - 5 - - - TabAP - - - 80, 13 - - - P - - - NoControl - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 14, 13 - - - 4, 22 - - - NoControl - - - label60 - - - 170, 95 - - - 14, 13 - - - 44, 13 - - - 27, 244 - - - TabAP - - - 11 - - - TabPlanner - - - TabPlanner - - - 10 - - - 5 - - - - - - 3 - - - label61 - - - 20 - - - IMAX - - - I - - - - + 150 - - D - - - RATE_YAW_I - - - 8 - - - 3 - - - groupBox21 - - - 6, 17 - - - 6 - - + True - - - 78, 20 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 30, 50 - - - 5 - - - HDNG2RLL_D - - - 111, 59 - - - NoControl - - - 13 - - - 10, 13 - - - NoControl - - - 2 - - - 205, 109 - - - 5 - - - 139, 80 - - - groupBox6 - - - 5 - - - - - - 3, 240 - - - NoControl - - - IMAX - - - NoControl - - - 1 - - - 111, 82 - - - groupBox23 - - - STAB_D - - - TabPlanner - - - 6, 40 - - - label67 - - - 0, 0, 0, 0 - - - P - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15 - - - P - - - P - - - 3 - - - P - - - 195, 108 - - - 12 - - - 78, 20 - - - 5 - - - 15 - - - THR_ALT_I - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 17 - - - 18 - - - TRIM_THROTTLE - - - groupBox4 - - - $this - - - I - - - 78, 20 - - - BUT_rerequestparams - - - 6, 17 - - - groupBox21 - - - 58 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 40 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 78, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 195, 108 - - - - - - 111, 13 - - - Stabalize D - - - 195, 108 - - - TabAC - - - NoControl - - - D - - - 1 - - - groupBox4 - - - 6, 17 - - - - - - Do Nothing - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Value 80 - - + + True + + + Default - - 6, 64 + + False - + + mavScale + + + False + + + True + + + RawValue + + + False + + + + 3, 3 + + + 150 + + + 269, 409 + + + 58 + + + Params + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 6 + + + Top, Bottom, Left, Right + + + 111, 82 + + + 78, 20 + + + 11 + + + THR_FS_VALUE + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 0 + + + NoControl + + + 6, 86 + + + 50, 13 + + + 12 + + + FS Value + + + label5 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 15, 13 + + groupBox3 - - 6, 17 + + 1 - - 65, 13 + + 111, 59 - - + + 78, 20 - - groupBox25 - - + 9 - - 2 - - - 30, 269 - - - groupBox14 - - - 195, 108 - - - label62 - - - 78, 20 - - - label99 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 80, 37 - - - TabPlanner - - - 10, 13 - - - label27 - - - 170, 131 - - - 17 - - - 78, 20 - - - 4 - - - 24 - - - 6, 16 - - - 7 - - - 5 - - - NoControl - - - XTRK_GAIN_SC - - - - - - - - - NoControl - - - Video Device - - - 4 - - - 14 - - - TabPlanner - - - 75, 23 - - - CH7_OPT - - - 78, 20 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10 - - - 170, 110 - - - INT_MAX - - - 10, 13 - - - label68 - - - 6, 40 - - - 188, 240 - - - ENRGY2THR_I - - - 19 + + THR_MAX System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - STB_PIT_P + + groupBox3 - - 283, 209 + + 2 - - ARSP2PTCH_D + + NoControl - - groupBox5 + + 6, 63 - - 6, 40 + + 27, 13 - + + 13 + + + Max + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + THR_MIN + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - CH6_Z_GAIN + + groupBox3 - + + 4 + + + NoControl + + + 6, 40 + + + 24, 13 + + + 14 + + + Min + + + label7 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 30 + + groupBox3 - + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + TRIM_THROTTLE + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 6 + + + NoControl + + + 6, 17 + + + 36, 13 + + + 15 + + + Cruise + + + label8 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox3 + + + 7 + + + 405, 217 + + + 195, 108 + + + 0 + + + Throttle 0-100% + + + groupBox3 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 0 + + + 111, 82 + + + 78, 20 + + + 0 + + + ARSPD_RATIO + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + NoControl + + + 6, 87 + + + 32, 13 + + + 1 + + + Ratio + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + 111, 59 + + + 78, 20 + + + 2 + + + ARSPD_FBW_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + NoControl + + + 6, 59 + + + 53, 13 + + + 3 + + + FBW max + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + 111, 36 + + + 78, 20 + + + 4 + + + ARSPD_FBW_MIN + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + NoControl + + + 6, 40 + + + 50, 13 + + + 5 + + + FBW min + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + TRIM_ARSPD_CM + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + NoControl + + + 6, 17 + + + 64, 13 + + + 6 + + + Cruise + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + 406, 325 + + + 195, 108 + + + 1 + + + Airspeed m/s + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + TabAP - - 170, 43 + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + LIM_PITCH_MIN + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + NoControl + + + 6, 63 + + + 51, 13 + + + 10 + + + Pitch Min + + + label39 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + 111, 36 + + + 78, 20 + + + 7 + + + LIM_PITCH_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 2 + + + NoControl + + + 6, 40 + + + 54, 13 + + + 11 + + + Pitch Max + + + label38 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 3 + + + 111, 13 + + + 78, 20 + + + 5 + + + LIM_ROLL_CD + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 4 + + + NoControl + + + 6, 17 + + + 55, 13 + + + 12 + + + Bank Max + + + label37 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 5 + + + 205, 325 + + + 195, 108 + + + 2 + + + Navigation Angles + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 2 + + + 111, 36 + + + 78, 20 + + + 7 + + + XTRK_ANGLE_CD + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 0 + + + NoControl + + + 6, 40 + + + 61, 13 + + + 8 + + + Entry Angle + + + label79 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 1 + + + 111, 13 + + + 78, 20 + + + 5 + + + XTRK_GAIN_SC + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 2 + + + NoControl + + + 6, 17 + + + 52, 13 + + + 9 + + + Gain (cm) + + + label80 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 3 + + + 4, 325 + + + 195, 108 + + + 3 + + + Xtrack Pids + + + groupBox15 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 3 + + + 111, 13 + + + 78, 20 + + + 13 + + + KFF_PTCH2THR + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 0 + + + NoControl + + + 6, 17 + + + 36, 13 + + + 14 + + + P to T + + + label83 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + KFF_RDDRMIX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 2 + + + NoControl + + + 6, 63 + + + 61, 13 + + + 15 + + + Rudder Mix + + + label78 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + KFF_PTCHCOMP + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 4 + + + NoControl + + + 6, 40 61, 13 - - 44, 13 + + 16 + + + Pitch Comp + + + label81 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 5 + + + 205, 217 + + + 195, 108 + + + 4 + + + Other Mix's + + + groupBox16 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 4 + + + 111, 82 + + + 78, 20 + + + 11 + + + ENRGY2THR_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label73 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + ENRGY2THR_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label74 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + ENRGY2THR_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label75 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + ENRGY2THR_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label76 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 7 + + + 4, 217 + + + 195, 108 + + + 5 + + + Energy/Alt Pid + + + groupBox14 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 5 + + + 111, 82 + + + 78, 20 + + + 0 + + + ALT2PTCH_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 1 + + + INT_MAX label69 - - groupBox7 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 182, 6 + + groupBox13 - - groupBox5 + + 1 - - + + 111, 59 - - 15, 13 + + 78, 20 - + + 2 + + + ALT2PTCH_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 2 + + NoControl - - + + 6, 63 - + + 15, 13 + + + 3 + + + D + + + label70 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 3 + + + 111, 36 + + + 78, 20 + + + 4 + + + ALT2PTCH_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 5 + + + I + + + label71 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 5 + + + 111, 13 + + + 78, 20 + + + 6 + + + ALT2PTCH_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 7 + + + P + + + label72 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 7 + + + 406, 109 + + + 195, 108 + + + 6 + + + Nav Pitch Alt Pid + + + groupBox13 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 6 + + + 111, 82 + + + 78, 20 + + + 0 + + + ARSP2PTCH_IMAX + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 groupBox12 - - NoControl - - - - - - - - - THR_MIN - - - 65 - - - 170, 110 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 78, 20 - - - - - - 3 - - + 0 - + + NoControl + + + 6, 86 + + + 54, 13 + + + 1 + + + INT_MAX + + + label65 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 1 + + + 111, 59 + + + 78, 20 + + + 2 + + + ARSP2PTCH_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 3 + + + D + + + label66 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 3 + + + 111, 36 + + + 78, 20 + + 4 - - Command + + ARSP2PTCH_I - - 7 + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 13 + + groupBox12 - - TabPlanner + + 4 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + NoControl 6, 40 - - 80, 37 + + 10, 13 - - 4 + + 5 - + + I + + + label67 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 5 + + + 111, 13 + + + 78, 20 + + 6 - + + ARSP2PTCH_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 7 + + + P + + + label68 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 7 + + + 205, 109 + + + 195, 108 + + + 7 + + + Nav Pitch AS Pid + + + groupBox12 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + TabAP + + 7 + + + 111, 82 + + + 78, 20 + + + 11 + + + HDNG2RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label61 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + HDNG2RLL_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label62 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + HDNG2RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label63 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + HDNG2RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label64 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 7 + + + 4, 109 + + + 195, 108 + + + 8 + + + Nav Roll Pid + + + groupBox11 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 8 + + + 111, 82 + + + 78, 20 + + + 11 + + + YW2SRV_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label57 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + YW2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label58 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + YW2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label59 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + YW2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label60 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 7 + + + 406, 1 + + + 195, 108 + + + 9 + + + Servo Yaw Pid + + + groupBox10 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 9 + + + 111, 82 + + + 78, 20 + + + 11 + + + PTCH2SRV_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label53 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 1 + + + 111, 59 + + + 78, 20 + + + 9 + + + PTCH2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 2 + + + NoControl + + + 6, 63 + + + 15, 13 + + + 13 + + + D + + + label54 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + PTCH2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label55 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + PTCH2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label56 + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox9 - - 31, 438 + + 7 - - TabPlanner + + 205, 1 - - 1 + + 195, 108 - - NoControl + + 10 - - 5 + + Servo Pitch Pid - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox9 - - 0, 0 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + TabAP + + + 10 + + + 111, 82 + + + 78, 20 + + 11 - - + + RLL2SRV_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 0 + + + NoControl + + + 6, 86 + + + 54, 13 + + + 12 + + + INT_MAX + + + label49 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0 + + groupBox8 - - 34 + + 1 - - 0 + + 111, 59 - - groupBox5 + + 78, 20 - - 111, 36 + + 9 - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + RLL2SRV_D - - groupBox6 - - - - - - 4 - - + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox8 + + + 2 + + + NoControl + + + 6, 63 + 15, 13 - - ConfigTabs + + 13 - + + D + + + label50 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 3 + + + 111, 36 + + + 78, 20 + + + 7 + + + RLL2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + 4 - - + + NoControl - - TabAC + + 6, 40 - - 4 + + 10, 13 - - Top, Bottom, Left, Right + + 14 - - Ratio + + I - + + label51 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 5 + + + 111, 13 + + + 78, 20 + + + 5 + + + RLL2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 6 + + + NoControl + + + 6, 17 + + + 14, 13 + + + 15 + + + P + + + label52 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 7 + + + 4, 1 + + + 195, 108 + + 11 - - TabAC - - - groupBox16 - - - 65, 13 + + Servo Roll Pid groupBox8 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 11 + + + 4, 22 + + + 0, 0, 0, 0 + + + 722, 434 + + + 0 + + + ArduPlane + + + TabAP + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 0 + + + 358, 336 + + + 53, 23 + + + 20 + + + Ch6 Opt + + + myLabel2 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabAC + + + 0 + + + CH6_NONE + + + CH6_STABILIZE_KP + + + CH6_STABILIZE_KI + + + CH6_YAW_KP + + + CH6_RATE_KP + + + CH6_RATE_KI + + + CH6_YAW_RATE_KP + + + CH6_THROTTLE_KP + + + CH6_TOP_BOTTOM_RATIO + + + CH6_RELAY + + + CH6_TRAVERSE_SPEED + + + CH6_NAV_P + + + CH6_LOITER_P + + + CH6_HELI_EXTERNAL_GYRO + + + CH6_THR_HOLD_KP + + + CH6_Z_GAIN + + + CH6_DAMP + + + CH6_OPTFLOW_KP + + + CH6_OPTFLOW_KI + + + CH6_OPTFLOW_KD + + + CH6_NAV_I + + + 417, 336 + + + 112, 21 + + + 19 + + + TUNE + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 1 + + + 358, 309 + + + 53, 23 + + + 18 + + + Ch7 Opt + + + myLabel1 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabAC + + + 2 + + + Do Nothing + + + + + + + + + Simple Mode + + + RTL + + + + + + + + + Save WP + + + 417, 309 + + + 112, 21 + + + 17 + + + CH7_OPT + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 3 + + + 80, 60 + + + 78, 20 + + + 14 + + + THR_RATE_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 15 + + + D + + + label29 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 1 + + + NoControl + + + 6, 86 + + + 65, 13 + + + 16 + + + IMAX + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 2 + + + 80, 83 + + + 78, 20 + + + 11 + + + THR_RATE_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 3 + + + 80, 37 + + + 78, 20 + + + 7 + + + THR_RATE_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 5 + + + 80, 13 + + + 78, 20 + + + 5 + + + THR_RATE_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label25 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 7 + + + 6, 260 + + + 170, 110 + + + 16 + + + Throttle Rate + + + groupBox5 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + 4 - + + True + + + 3, 240 + + + 154, 17 + + + 13 + + + Lock Pitch and Roll Values + + + CHK_lockrollpitch + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 5 + + + 80, 60 + + + 78, 20 + + + 18 + + + NAV_LAT_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 19 + + + D + + + label27 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 1 + + + 80, 107 + + + 78, 20 + + + 16 + + + WP_SPEED_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 2 + + + NoControl + + + 6, 110 + + + 54, 13 + + + 17 + + + m/s + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 3 + + + 80, 84 + + + 78, 20 + + + 11 + + + NAV_LAT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 4 + + + NoControl + + + 6, 87 + + + 65, 13 + + + 12 + + + IMAX + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 5 + + + 80, 37 + + + 78, 20 + + + 7 + + + NAV_LAT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 6 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 7 + + + 80, 13 + + + 78, 20 + + + 5 + + + NAV_LAT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 8 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label16 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 9 + + + 534, 126 + + + 170, 131 + + + 0 + + + Nav WP + + + groupBox4 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 6 + + + 80, 13 + + + 78, 20 + + + 5 + + + XTRK_GAIN_SC1 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox6 + + + 0 + + + NoControl + + + 6, 16 + + + 38, 13 + + + 15 + + + Gain + + + label18 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox6 + + + 1 + + + 358, 260 + + + 170, 43 + + + 2 + + + Crosstrack Correction + + + groupBox6 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 7 + + + 80, 63 + + + 78, 20 + + + 11 + + + THR_ALT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 0 + + + NoControl + + + 6, 66 + + + 65, 13 + + + 12 + + + IMAX + + + label19 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 groupBox7 - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 1 - - ALT2PTCH_I + + 80, 37 - - 7 - - - TabAP - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 28 - - - NoControl - - - - - - 14, 13 - - - - - - 102, 17 - - - ARSP2PTCH_I - - - groupBox1 - - - 15 - - - 11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 278, 0 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox22 - - - 6, 40 - - - 6, 40 - - - NoControl - - - 111, 36 - - - - - - THR_ALT_IMAX - - - 12 - - - 6, 63 - - - 19 - - - 7 - - - 3 - - - - - - NoControl - - - 14 - - - 33 - - - 15 - - - 6, 16 - - - - - - - - - TabAP - - - Track Length - - - label86 - - - 3 - - - CMB_distunits - - - groupBox14 - - - label4 - - - groupBox15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 + + 78, 20 7 - - Joystick Setup + + THR_ALT_I - - 14, 13 - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox23 - - - groupBox13 - - - label2 - - - 12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - YW2SRV_I - - - 6, 66 - - + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - NoControl + + groupBox7 - - 12 - - - 15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 402, 13 - - + 2 - - 15 + + NoControl - - Min + + 6, 40 - - label6 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 63 - - - 61, 13 - - - 111, 82 - - - P - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 32 - - - label8 - - - groupBox19 - - - 17 - - - 125, 17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 78, 20 - - - 14, 13 - - - 80, 63 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - groupBox13 - - - groupBox25 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 7 - - - 30, 189 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - 111, 59 - - - groupBox1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 22 - - + 10, 13 - - Nav Pitch Alt Pid + + 14 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + I - + + label21 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + groupBox7 - - 0 + + 3 - - groupBox21 + + 80, 13 - - 2 + + 78, 20 - - + + 5 - - 6, 86 + + THR_ALT_P - - Servo Roll Pid + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 12 + + groupBox7 - - RLL2SRV_P + + 4 - - TabAP + + NoControl - - 30, 16 + + 6, 16 - - YW2SRV_D + + 14, 13 - - 7 + + 15 + + + P + + + label22 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 5 + + + 182, 260 + + + 170, 110 + + + 3 + + + Altitude Hold groupBox7 - + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 8 + + + 80, 61 + + + 78, 20 + + + 11 + + + HLD_LAT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + 0 - + + NoControl + + + 6, 64 + + + 65, 13 + + + 12 + + + IMAX + + + label28 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 1 + + + 80, 37 + + + 78, 20 + + + 7 + + + HLD_LAT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 2 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label30 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 3 + + 80, 13 - + + 78, 20 + + + 5 + + + HLD_LAT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 4 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label31 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 5 + + + 531, 6 + + + 170, 95 + + + 6 + + + Loiter + + + groupBox19 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 9 + + + 80, 63 + + + 78, 20 + + + 11 + + + STB_YAW_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 0 + + + NoControl + + + 6, 66 + + + 65, 13 + + + 12 + + + IMAX + + + label32 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 1 + + + 80, 37 + + + 78, 20 + + + 7 + + + STB_YAW_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 2 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label34 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 3 + + + 80, 13 + + + 78, 20 + + + 5 + + + STB_YAW_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 4 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label35 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 5 + + + 358, 6 + + + 170, 95 + + + 7 + + + Stabilize Yaw + + + groupBox20 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 10 + + + 80, 88 + + + 78, 20 + + + 16 + + + STAB_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 0 + + + NoControl + + + 6, 91 + + + 65, 13 + + + 17 + + + Stabilize D + + + lblSTAB_D + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 1 + + + 80, 63 + + + 78, 20 + + + 11 + + + STB_PIT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 2 + + + NoControl + + + 6, 66 + + + 65, 13 + + + 12 + + + IMAX + + + label36 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 3 + + + 80, 37 + + + 78, 20 + + + 7 + + + STB_PIT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label41 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 5 + + + 80, 13 + + + 78, 20 + + + 5 + + + STB_PIT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label42 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 7 + + + 182, 6 + + + 170, 114 + + + 8 + + + Stabilize Pitch + + + groupBox21 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 11 + + + 80, 63 + + + 78, 20 + + + 11 + + + STB_RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 0 + + + NoControl + + + 6, 66 + + + 65, 13 + + + 12 + + + IMAX + + + label43 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 1 + + + 80, 37 + + + 78, 20 + + + 7 + + + STB_RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 2 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 14 + + + I + + + label45 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 3 + + + 80, 13 + + + 78, 20 + + + 5 + + + STB_RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 4 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 15 + + + P + + + label46 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 groupBox22 - - 11 + + 5 - - mavScale + + 6, 6 - - NoControl - - - - - - 3, 3, 3, 3 - - - NoControl - - - Servo Pitch Pid - - - TabPlanner - - - - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 13 + + 170, 95 9 - - Bottom, Left + + Stabilize Roll - + + groupBox22 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 12 + + + 80, 60 + + + 78, 20 + + + 8 + + + RATE_YAW_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 9 + + + D + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + 1 - + + 80, 84 + + 78, 20 + + 0 + + + RATE_YAW_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 2 + + + NoControl + + + 6, 87 + + + 65, 13 + + + 1 + + + IMAX + + + label47 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + groupBox23 - - 0 + + 3 - - PTCH2SRV_D + + 80, 37 - - m/s - - - 195, 108 - - - P - - - Telemetry Rates - - - myLabel1 - - - label45 - - - 6, 63 - - - groupBox15 - - - 111, 82 - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - I - - - - - - - - + 78, 20 - - + + 4 - - 1 + + RATE_YAW_I - + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox23 - + + 4 + + NoControl - - groupBox4 - - - 78, 20 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 30, 217 - - - 15 - - - HDNG2RLL_IMAX - - - 6, 66 - - - NoControl - - - 78, 20 + + 6, 40 10, 13 - - + + 5 - - Nav Roll Pid + + I - - 3 + + label77 - + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + groupBox23 + + + 5 + + + 80, 13 + + + 78, 20 + + + 6 + + + RATE_YAW_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 7 + + + P + + + label82 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 7 + + + 358, 126 + + + 170, 108 + + + 10 + + + Rate Yaw + + + groupBox23 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 13 + + + 80, 60 + + + 78, 20 + + + 10 + + + RATE_PIT_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 11 + + + D + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 1 + + + 80, 83 + + + 78, 20 + + + 0 + + + RATE_PIT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 2 + + + NoControl + + + 6, 86 + + + 65, 13 + + + 1 + IMAX - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + label84 - - + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - STB_PIT_IMAX + + groupBox24 - - 5 + + 3 - - 30, 135 + + 80, 37 - + + 78, 20 + + + 4 + + + RATE_PIT_I + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - label97 + + groupBox24 + + + 4 + + + NoControl + + + 6, 40 10, 13 - - 25 + + 5 - + + I + + + label86 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 5 + + + 80, 13 + + + 78, 20 + + + 6 + + + RATE_PIT_P + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Stabilize Pitch + + groupBox24 - - 6, 86 + + 6 - + NoControl - - ENRGY2THR_IMAX + + 6, 16 + + + 14, 13 + + + 7 + + + P + + + label87 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 7 + + + 182, 126 + + + 170, 108 + + + 11 + + + Rate Pitch + + + groupBox24 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 14 + + + 80, 60 + + + 78, 20 + + + 12 + + + RATE_RLL_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 0 + + + NoControl + + + 6, 63 + + + 10, 13 + + + 13 + + + D + + + label17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 1 + + + 80, 83 + + + 78, 20 + + + 0 + + + RATE_RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 2 + + + NoControl + + + 6, 86 + + + 68, 13 + + + 1 + + + IMAX + + + label88 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 3 + + + 80, 37 + + + 78, 20 + + + 4 + + + RATE_RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 4 + + + NoControl + + + 6, 40 + + + 10, 13 + + + 5 + + + I + + + label90 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 5 + + + 80, 13 + + + 78, 20 + + + 6 + + + RATE_RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 6 + + + NoControl + + + 6, 16 + + + 14, 13 + + + 7 + + + P + + + label91 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 7 + + + 6, 126 + + + 170, 108 + + + 12 + + + Rate Roll + + + groupBox25 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 15 + + + 4, 22 + + + 3, 3, 3, 3 + + + 722, 434 + + + 1 + + + ArduCopter + + + TabAC + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 1 + + + NoControl + + + 30, 50 + + + 100, 23 + + + 41 + + + Video Format + + + label26 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 0 + + + 139, 47 + + + 408, 21 + + + 0 + + + CMB_videoresolutions + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 1 + + + NoControl + + + 30, 340 + + + 61, 13 + + + 39 + + + HUD + + + label12 System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 31 + + TabPlanner + + + 2 + + + NoControl + + + 139, 340 + + + 177, 17 + + + 40 + + + GDI+ (old type) + + + 17, 17 + + + OpenGL = Disabled +GDI+ = Enabled + + + CHK_GDIPlus + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 3 + + + NoControl + + + 30, 318 + + + 61, 13 + + + 37 + + + Waypoints + + + label24 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 4 + + + NoControl + + + 139, 317 + + + 177, 17 + + + 38 + + + Load Waypoints on connect? + + + CHK_loadwponconnect + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 5 + + + NoControl + + + 30, 292 + + + 103, 18 + + + 36 + + + Track Length + + + label23 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 6 + + + 139, 291 + + + 67, 20 + + + 35 + + + On the Flight Data Tab + + + NUM_tracklength + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 7 + + + NoControl + + + 579, 107 + + + 102, 17 + + + 34 + + + Alt Warning + + + CHK_speechaltwarning + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 8 + + + NoControl + + + 30, 269 + + + 61, 13 + + + 0 + + + APM Reset + + + label108 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 TabPlanner - - groupBox4 + + 9 - - groupBox20 + + NoControl - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 139, 267 + + + 163, 17 + + + 1 + + + Reset APM on USB Connect + + + CHK_resetapmonconnect + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 10 + + + Bottom, Left + + + NoControl + + + 33, 411 + + + 144, 17 + + + 2 + + + Mavlink Message Debug + + + CHK_mavdebug + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 11 + + + NoControl + + + 590, 244 + + + 22, 13 + + + 3 + + + RC + + + label107 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 12 + + + 0 + + + 1 + + + 3 + + + 10 + + + 621, 240 + + + 80, 21 + + + 4 + + + CMB_raterc + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 13 + + + NoControl + + + 425, 244 + + + 69, 13 + + + 5 + + + Mode/Status + + + label104 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 14 + + + NoControl + + + 280, 244 + + + 44, 13 + + + 6 + + + Position + + + label103 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 15 + + + NoControl + + + 136, 244 + + + 43, 13 + + + 7 + + + Attitude + + + label102 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 16 + + + NoControl + + + 27, 244 + + + 84, 13 + + + 8 + + + Telemetry Rates + + + label101 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 17 + + + 0 + + + 1 3 @@ -2913,4227 +5443,971 @@ 10 - - 4 - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 13 - - - groupBox4 - - - 12 - - - groupBox2 - - - groupBox1 - - - NoControl - - - 3, 3 - - - - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6 - - - TabAC - - - - - - - - - - - - - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 16 - - - HUD - - - 0 - - - - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 63 - - - TabAC - - - 2 - - - 10, 13 - - - 7 - - - 0 - - - 0 - - - CHK_enablespeech - - - 10, 13 - - - NoControl - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NAV_LAT_IMAX - - - 54, 13 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 52, 13 - - - I - - - 111, 59 - - - 50, 13 - - - 4, 217 - - - 80, 37 - - - TabAC - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - INT_MAX - - - - - - 16 - - - Bottom, Left - - - 78, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox8 - - - 80, 60 - - - label47 - - - NoControl - - - 195, 108 - - - Save - - - ALT2PTCH_D - - - 6, 63 - - - TabPlanner - - - 8 - - - 9 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 14, 13 - - - Airspeed m/s - - - CH6_NAV_P - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0, 0, 0, 0 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CH6_OPTFLOW_KI - - - 8 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 86 - - - 6 - - - 3 - - - 78, 20 - - - 10 - - - - - - 6 - - - 139, 47 - - - 6, 16 - - - 2 - - - NoControl - - - - - - Navigation Angles - - - groupBox24 - - - 5 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - RawValue - - - False - - - CHK_speechcustom - - - groupBox20 - - - 16 - - - 78, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - XTRK_ANGLE_CD - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 7 - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 6 - - - NoControl - - - 17 - - - P - - - 7 - - - groupBox19 - - - D - - - 1 - - - CHK_loadwponconnect - - - 6, 87 - - - Loiter - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - Throttle 0-100% - - - CMB_videoresolutions - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 15 - - - groupBox1 - - - 65, 13 - - - 2 - - - 205, 325 - - - Start - - - NoControl - - - Nav WP - - - 10, 13 - - - label43 - - - 78, 20 - - - 139, 340 - - - 78, 20 - - - 65, 13 - - - 80, 13 - - - - - - 78, 20 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 111, 82 - - - - - - - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Throttle Rate - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 36, 13 - - - 78, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 18 - - - 6, 40 - - - 78, 20 - - - 7 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label108 - - - ConfigTabs - - - 12 - - - - - - 14 - - - 111, 36 - - - 78, 20 - - - D - - - 33 - - - groupBox14 - - - label49 - - - groupBox10 - - - Crosstrack Correction - - - 35 - - - - - - - - - - - - P - - - 30, 83 - - - groupBox19 - - - NoControl - - - - - - ALT2PTCH_IMAX - - - - - - TabAC - - - 6, 91 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 15 - - - 8 - - - 26 - - - Altitude Hold - - - 4 - - - 57, 13 - - - groupBox1 - - - 12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 63 - - - 0 - - - groupBox19 - - - TabPlanner - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - Lock Pitch and Roll Values - - - - - - 103, 18 - - - 13 - - - NoControl - - - NoControl - - - groupBox24 - - - 40 - - - 80, 84 - - - 71, 17 - - - 2 - - - 2 - - - 111, 82 - - - groupBox21 - - - TabAC - - - label109 - - - 80, 83 - - - 78, 20 - - - 0 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - NoControl - - - groupBox13 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - 1 - - - 0 - - - groupBox2 - - - 78, 20 - - - 80, 13 - - - groupBox11 - - - INT_MAX - - - 54, 13 - - - 30, 111 - - - - - - 4, 22 - - - 5 - - - 4 - - - 6, 40 - - - 0 - - - NoControl - - - Value - - - NoControl - - - ARSPD_FBW_MIN - - - 14 - - - 1 - - - 78, 20 - - - 0 - - - 14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Reset APM on USB Connect - - - 5 - - - 170, 108 - - - 9 - - - TabPlanner - - - 78, 20 - - - 1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - - - - 11 - - - 80, 61 - - - 1 - - - 78, 20 - - - YW2SRV_P - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 59 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15 - - - groupBox8 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 - - - groupBox13 - - - 78, 20 - - - 80, 37 - - - ARSPD_FBW_MAX - - - Compare Params - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 3 - - - label41 - - - groupBox11 - - - groupBox20 - - - CMB_speedunits - - - - - - 722, 434 - - - - - - 22 - - - groupBox23 - - - 53, 23 - - - THR_RATE_I - - - groupBox3 - - - - - - - - - 5 - - - 1 - - - 78, 20 - - - 111, 59 - - - 15, 13 - - - 13 - - - 4, 325 - - - 11 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PTCH2SRV_P - - - 78, 20 - - - - - - 78, 20 - - - 1 - - - - - - NoControl - - - 28 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - 144, 17 - - - 78, 20 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - groupBox10 - - - 358, 260 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6 - - - groupBox2 - - - Bottom, Left - - - 3 - - - - - - STB_YAW_P - 499, 240 - - 1 - - - - - - TabPlanner - - - 111, 13 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 78, 20 - - - 12 - - - D - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 621, 240 - - - 322, 107 - - - groupBox2 - - - groupBox11 - - - 4 - - - NoControl - - - groupBox2 - - - - - - 80, 13 - - - 4 - - - 6, 86 - - - 80, 60 - - - 7 - - - 6, 17 - - - 7 - - - - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 378, 107 - - - - - - 2 - - - 13 - - - label11 - - - NoControl - - - 0, 0 - - - Joystick - - - 169, 441 - - - 14 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 7 - - - NoControl - - - 15 - - - 54, 13 - - - 9 - - - 80, 37 - - - groupBox12 - - - 7 - - - 2 - - - groupBox24 - - - KFF_PTCH2THR - - - PTCH2SRV_IMAX - - - Bottom, Left - - - groupBox19 - - - Top, Bottom, Left - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label42 - - - 8 - - - $this - - - 27 - - - KFF_PTCHCOMP - - - 9 - - - 19 - - - 6 - - - 78, 20 - - - TabAC - - - NoControl - - - 1 - - - 3 - - - 14 - - - On the Flight Data Tab - - - - - - 6, 126 - - - 45, 13 - - - groupBox24 - - - 5 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 78, 20 - - - 138, 21 - - - groupBox3 - - - 9 - - - groupBox20 - - - NoControl - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4 - - - 4 - - - 0 - - - NoControl - - - Gain (cm) - - - 6 - - - NoControl - - - RATE_PIT_P - - - groupBox4 - - - - - - 5 - - - 7 - - - 65, 13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 6, 40 - - - - - - - - - Rate Pitch - - - myLabel2 - - - LIM_PITCH_MIN - - - TabPlanner - - - - - - 14 - 80, 21 - - APM Reset + + 9 - + + CMB_ratestatus + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 18 + + + 0 + + 1 - - groupBox25 + + 3 - - 5 - - - 63 - - + 10 - - 13 + + 334, 240 - - Battery Warning + + 80, 21 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 10 - - D + + CMB_rateposition - - 7 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 21 - - - groupBox22 - - - - - - - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 7 - - - 5 - - - groupBox2 - - + TabPlanner - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 19 - - 67, 20 + + 0 - - 14, 13 - - - - - - TabPlanner - - - False - - - 75, 19 - - + 1 - - 30, 292 - - - TabAC - - - 111, 13 - - - TabPlanner - - - 38 - - - NoControl - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15 - - - - - - 78, 20 - - - 4 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - + 3 10 - - 42 + + 188, 240 - - NoControl - - - 2 - - - - - - 23 - - - 15, 13 - - - 111, 13 - - - 3 - - - groupBox24 - - - NoControl - - - 5 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - NoControl - - - 14, 13 - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - 5 - - - Cruise - - - - - - 17 - - - 0 - - - - - - 100, 23 - - - 78, 20 - - - 78, 20 - - - NoControl - - - TabPlanner - - - 7 - - - I - - - CH6_LOITER_P - - - NoControl - - - - - - Mode/Status - - - 2 - - - 11 - - - 0 - - - 6 - - - NoControl - - - 0 - - - 80, 13 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label84 - - - 1 - - - 7 - - - 14 - - - - - - NoControl - - - label73 - - - 53, 13 - - - Servo Yaw Pid - - - 102, 17 - - - 78, 20 - - - 4 - - - Gain - - - - - - Pitch Max - - - TabAP - - - D - - - XTRK_GAIN_SC1 - - - groupBox23 - - - label103 - - - 6 - - - groupBox14 - - - - - - 3 - - - 38 - - - - - - 11 - - - 3 - - - Stabilize Yaw - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - groupBox20 - - - label34 - - - NoControl - - - 14, 13 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - groupBox15 - - - BUT_videostart - - - 5 - - - D - - - 78, 20 - - - 35 - - - 3 - - - NoControl - - - 10, 13 - - - groupBox4 - - - 6 - - - 32, 13 - - - 5 - - - 6 - - - STB_RLL_P - - - label35 - - - Save WP - - - TabPlanner - - - Load - - - 406, 109 - - - I - - - 78, 20 - - - 4 - - - 1 - - - STB_YAW_IMAX - - - 177, 17 - - - NoControl - - - - - - 5 - - - TabPlanner - - - CMB_osdcolor - - - 5 - - - 0 - - - - - - - - - 78, 20 - - - 7 - - - 182, 126 - - - TabPlanner - - - label80 - - - - - - TabPlanner - - - 6, 63 - - - - - - groupBox4 - - - 7 - - - 417, 336 - - - 78, 20 - - - groupBox16 - - - - - - NoControl - - - 7 - - - groupBox14 - - - Rudder Mix - - - 11 - - - CH6_THROTTLE_KP - - - Speed Units - - - 4 - - - label81 - - - 1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 86 - - - - - - - - - - - - BUT_save - - - 5 - - - groupBox20 - - - 14 - - - P - - - CHK_speechbattery - - - I - - - 26 - - - label30 - - - CH6_DAMP - - - label17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CH6_OPTFLOW_KD - - - $this - - - Configuration - - - 40 - - - 358, 309 - - - 4, 22 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 78, 20 - - - groupBox1 - - - TabAC - - - groupBox13 - - - label31 - - - THR_MAX - - - 61, 13 - - - 14, 13 - - - TabPlanner - - - Alt Warning - - - 54, 13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 36, 13 - - - STB_RLL_IMAX - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label87 - - - 6, 40 - - - 75, 19 - - - 6, 110 - - - 1 - - - KFF_RDDRMIX - - - 80, 63 - - - 4 - - - TabPlanner - - - label36 - - - TabPlanner - - - ARSP2PTCH_IMAX - - - groupBox9 - - - 78, 20 - - - - - - groupBox25 - - - TabAC - - - Time Interval - - - Other Mix's - - - 0 - - - - - - Mode - - - groupBox23 - - - - - - 405, 217 - - - TabAC - - - 11 - - - 7 - - - - - - 80, 13 - - - label12 - - - 0 - - - label37 - - - 5 - - - TabPlanner - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - I - - - Attitude - - - P - - - 1 - - - RC - - - 6, 86 - - - NoControl - - - label82 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 36 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox5 - - - 177, 17 - - - 54, 13 - - - 1 - - - groupBox21 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Speech - - - - - - - - - 9 - - - - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 14, 13 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - THR_RATE_IMAX - - - 19 - - - 1008, 461 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - D - - - label83 - - - 3 - - - 0 - - - 0 - - - NoControl - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 195, 108 - - - 7 - - - - - - 6 - - - 6 - - - 6, 40 - - - 7 - - - 6 - - - 111, 59 - - - label32 - - - label14 - - - groupBox13 - - - 1 - - - label88 - - - 78, 20 - - - - - - groupBox22 - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - NoControl - - - 2 - - - 170, 114 - - - 163, 17 - - - groupBox3 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - 170, 108 - - - groupBox14 - - - label15 - - - groupBox11 - - - 6, 86 - - - RATE_RLL_P - - - 195, 108 - - - 5 - - - CH6_RATE_KP - - - 21 - - - groupBox9 - - - 534, 126 - - - TabPlanner - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 64 - - - 6 - - - 13 - - - label38 - - - groupBox1 - - - $this - - - 111, 59 - - - groupBox16 - - - 4 - - - 12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - TabPlanner - - - 195, 108 - - - groupBox6 - - - - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 10 - - - label39 - - - - - - 6, 16 - - - 78, 20 - - - NoControl - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 14 - - - 6 - - - groupBox15 - - - 14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - groupBox4 - - - ArduPlane - - - 1 - - - TabPlanner - - - - - - Default - - - 12 - - - TabAP - - - LIM_PITCH_MAX - - - - - - label10 - - - 0 - - - groupBox8 - - - 3 - - - - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 99, 23 - - - 80, 83 - - - NoControl - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 14 - - - THR_ALT_P - - - TabPlanner - - - 6 - - - 4 - - - 78, 20 - - - 6, 17 - - - groupBox7 - - - 14 - - - - - - - - - 6, 16 - - - label1 - - - - - - 80, 83 - - - 111, 82 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label16 - - - - - + 80, 21 - - 6, 16 - - - - - - ConfigTabs - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 182, 260 - - - 0 - - - - - - 7 - - - 10, 13 - - - TUNE - - - 13 - - - 4, 1 - - - 30, 340 - - - D - - - 9 - - - CH6_YAW_RATE_KP - - - 12 - - - 8 - - - NoControl - - - label5 - - - groupBox14 - - - 111, 59 - - - 6, 17 - - - NoControl - - - 170, 95 - - - 10, 13 - - - - - - TabAP - - - - - - 6 - - - 6, 40 - - - NoControl - - - 6, 40 - - - 14, 13 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Refresh Params - - - CHK_lockrollpitch - - - HDNG2RLL_I - - - 12 - - - - - - - - - 6, 16 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10, 13 - - - 16 - - - CMB_language - - - label9 - - - 6, 63 - - - RATE_PIT_I - - - NoControl - - - 7 - - - 12 - - - 722, 434 - - - groupBox12 - - - groupBox3 - - - - - - 1 - - - CH6_RATE_KI - - - TabPlanner - - - 0, 0, 0, 0 - - - 1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Write Params - - - 6, 40 - - - 80, 13 - - - IMAX - - - NoControl - - - 6, 17 - - - - - - NoControl - - - 80, 37 - - - - - - groupBox8 - - - 14 - - - NoControl - - - 4 - - - TabPlanner - - - - - - 4 - - - I - - - 425, 244 - - - Value - - - 139, 291 - - - 6, 16 - - - 36 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ArduCopter - - - 0 - - - - - - - - - TabAP - - - label13 - - - 41 - - - mavScale - - - groupBox16 - - - TabAC - - - 80, 107 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabSetup - - - NoControl - - - 78, 20 - - - I - - - P - - - 2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - I - - - 111, 13 - - - label18 - - - 0 - - - 6, 86 - - - 14, 13 - - - groupBox3 - - - 5 - - - groupBox23 - - - 5 - - - 78, 20 - - - 5 - - - Waypoints - - - - - - 15 - - - groupBox5 - - - 138, 21 - - - $this - - - label19 - - - - - - groupBox22 - - - TabPlanner - - - 78, 20 - - - - - - 78, 20 - - - 6, 17 - - - 3 - - - TabAC - - - 41 - - - label101 - - - 78, 20 - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 10 - - - 29 - - - 2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - NoControl - - - 6, 40 - - - 2 - - - 471, 11 - - - Pitch Comp - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CH6_YAW_KP - - - 9 - - - 5 - - - FBW min - - - NoControl - - - D - - - 51, 13 - - - 78, 20 - - - 6, 66 - - - HLD_LAT_P - - - + + 11 CMB_rateattitude - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - HLD_LAT_I - - - 6, 40 - - - 6, 40 - - - I - - - groupBox12 - - - 11 - - - 2 - - - 103, 19 - - - 111, 13 - - + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox10 - - - 6, 63 - - - 82, 416 - - - - - - 6, 63 - - - 78, 20 - - - Bank Max - - - - - - groupBox9 - - - 78, 20 - - - groupBox13 - - - 78, 20 - - - 2 - - - 103, 19 - - - groupBox14 - - - groupBox13 - - - - - - 6, 16 - - - 4 - - - 1 - - - CH6_STABILIZE_KI - - - - - - P - - - 54, 13 - - - 6 - - - 2 - - - - - - - - - 69, 13 - - - 6, 63 - - - Rate Yaw - - - groupBox21 - - - 13 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - TabAC - - - FS Value - - - 5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + TabPlanner - - 10, 13 + + 20 - + + NoControl + + + 283, 209 + + + 402, 13 + + 12 - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - groupBox16 - - - 111, 36 - - - - - - 7 - - - 15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 7 - - - - - - 10, 13 - - - BUT_videostop - - - CHK_resetapmonconnect - - - - - - 14, 13 - - - 245, 21 - - - 15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 11 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - 3 - - - CH6_STABILIZE_KP - - - 6, 40 - - - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 55, 13 - - - ARSPD_RATIO - - - Params - - - groupBox19 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 37 - - - 0 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - groupBox5 - - - 0 - - - 7 - - - - - - TabPlanner - - - RATE_RLL_D - - - NoControl - - - 6, 63 - - - False - - - - - - NoControl - - - - - - - - - IMAX - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Pitch Min - - - 269, 409 - - - 358, 126 - - - I - - - NoControl - - - RATE_PIT_D - - - TabAP - - - NoControl - - - 7 - - - 408, 21 - - - CH6_NONE - - - 78, 20 - - - NoControl - - - Stop - - - 18 - - - 169, 416 - - - 111, 59 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox11 - - - 111, 13 - - - 78, 20 - - - 2 - - - 4 - - - label74 - - - 78, 20 - - - RATE_RLL_I - - - NoControl - - - 9 - - - 6, 86 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 54, 13 - - - CMB_videosources - - - groupBox12 - - - TabPlanner - - - 417, 309 - - - label75 - - - - - - 5 - - - Simple Mode - - - 1 - - - 6, 40 - - - - - - - - - 139, 214 - - - 6, 63 - - - 7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 16 - - - 6, 66 - - - TabPlanner - - - 33, 411 - - - groupBox24 - - - 6, 17 - - - 7 - - - - - - CH6_OPTFLOW_KP - - - 12 - - - 16 - - - 10, 13 - - - - - - CHK_speechmode - - - 111, 59 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4 - - - Entry Angle - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - NOTE: The Configuration Tab will NOT display these units, as those are raw values. - - + + label99 - - 78, 20 - - - 2 - - - - - - 84, 13 - - - 2 - - - 4 - - - 6 - - - $this - - - 112, 21 - - - - - - 8 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - Position - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 80, 63 - - - 80, 60 - - - 10 - - - 2 - - + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 8 - - - LIM_ROLL_CD - - - groupBox10 - - - label66 - - - label70 - - - groupBox13 - - - - - - 6, 40 - - - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - OpenGL = Disabled -GDI+ = Enabled - - - 6 - - - 54, 13 - - - 8 - - - 111, 82 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - Xtrack Pids - - - NoControl - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + TabPlanner - - 24, 13 + + 21 - - label71 - - - 39 - - - 552, 15 - - - groupBox11 - - - BUT_compare - - - 139, 107 - - + NoControl - - Planner + + 30, 217 - - 6, 63 + + 65, 13 - - TabPlanner - - - I - - - 15 - - - 0 - - - CMB_raterc - - - groupBox21 - - - OSD Color - - - - - - Rate Roll - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label25 - - - 80, 37 - - - label76 - - - 6, 86 - - - 406, 1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - NoControl - - - 100, 23 - - - 37 - - - 7 - - - 6, 6 - - - 111, 36 - - - - - - 64, 13 - - - 111, 36 - - - 11 - - - Mavlink Message Debug - - - 31 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CH6_HELI_EXTERNAL_GYRO - - - groupBox12 - - - 111, 13 - - - BUT_load - - - label77 - - - 9 - - - 3 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 280, 244 - - - 4 - - - 9 - - - groupBox4 - - - 78, 20 - - - 4, 22 - - - NoControl - - - NoControl - - - 5 - - - 195, 108 - - - - - - groupBox7 - - - Bottom, Left - - - - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 6, 87 - - - RLL2SRV_D - - - 32 - - - 9 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - 170, 95 - - - label20 - - - 15, 13 - - - - - - 6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label92 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label63 - - - TRIM_ARSPD_CM - - - NoControl - - - - - - 111, 36 - - - 7 - - - 10, 13 - - - NoControl - - - CH6_TOP_BOTTOM_RATIO - - - label21 - - + 13 - - groupBox9 + + Speed Units - - label72 + + label98 - - label54 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 22 + + + NoControl + + + 30, 189 + + + 52, 13 + + + 14 + + + Dist Units + + + label97 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 23 + + + 139, 214 + + + 138, 21 + + + 15 + + + CMB_speedunits + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 24 + + + 139, 187 + + + 138, 21 + + + 16 + + + CMB_distunits + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 25 + + + NoControl + + + 30, 162 + + + 45, 13 + + + 17 + + + Joystick + + + label96 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 26 + + + NoControl + + + 30, 111 + + + 44, 13 + + + 18 + + + Speech + + + label95 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 27 + + + NoControl 471, 107 - - 10 + + 102, 17 - - 2 + + 19 - - + + Battery Warning - - groupBox11 + + CHK_speechbattery - - groupBox11 - - - 99, 17 - - - TabPlanner - - - PTCH2SRV_I - - - groupBox24 - - - 139, 267 - - - Load Waypoints on connect? - - - STB_RLL_I - - - label26 - - - label55 - - - groupBox25 - - - 14 - - - NoControl - - - 78, 20 - - - 34 - - - - - - 3 - - - 38, 13 - - - 2 - - - groupBox8 - - - - - - 62 - - - - - - 5 - - - groupBox25 - - - - - - 112, 21 - - - groupBox25 - - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - label78 + + TabPlanner - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 28 + + + NoControl + + + 378, 107 + + + 87, 17 + + + 20 + + + Time Interval + + + CHK_speechcustom + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 29 + + + NoControl + + + 322, 107 + + + 56, 17 + + + 21 + + + Mode + + + CHK_speechmode + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 30 + + + NoControl + + + 245, 107 + + + 71, 17 + + + 22 + + + Waypoint + + + CHK_speechwaypoint + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 31 + + + NoControl + + + 30, 83 + + + 57, 13 + + + 23 + + + OSD Color + + + label94 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 32 + + + 139, 80 138, 21 - + + 24 + + + CMB_osdcolor + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 33 + + + 139, 131 + + + 138, 21 + + + 25 + + + CMB_language + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 34 + + + NoControl + + + 30, 135 + + + 69, 13 + + + 26 + + + UI Language + + + label93 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 54, 13 + + TabPlanner - - STB_YAW_I + + 35 - - 61, 13 + + NoControl - - label104 + + 139, 107 - - 5 + + 99, 17 - + + 27 + + + Enable Speech + + + CHK_enablespeech + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 36 + + + NoControl + + + 552, 15 + + + 125, 17 + + + 28 + + + Enable HUD Overlay + + + CHK_hudshow + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 37 + + + NoControl + + + 30, 16 + + + 100, 23 + + + 29 + + + Video Device + + + label92 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox25 + + TabPlanner - - + + 38 139, 13 - - 80, 13 + + 245, 21 - - 80, 84 + + 30 - - 9 + + CMB_videosources - - label79 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox3 + + TabPlanner - - TabAC + + 39 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + NoControl - - groupBox3 + + 139, 158 - - + + 99, 23 - - ALT2PTCH_P + + 31 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Joystick Setup - - 15 + + BUT_Joystick - - 65, 13 + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + TabPlanner - - 10, 13 + + 40 - - 10 + + NoControl - + + 471, 11 + + + 75, 23 + + + 32 + + + Stop + + + BUT_videostop + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabPlanner + + + 41 + + + NoControl + + + 390, 11 + + + 75, 23 + + + 33 + + + Start + + + BUT_videostart + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabPlanner + + + 42 + + + 4, 22 + + + 3, 3, 3, 3 + + + 722, 434 + + 2 - - I + + Planner - - groupBox22 + + TabPlanner + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 2 + + + 4, 22 + + + 722, 434 + + + 3 + + + Setup + + + TabSetup + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 3 52, 18 - - True - + + 278, 0 + + + 0, 0, 0, 0 + + + 0, 0 + + + 730, 460 + + + 62 + + + ConfigTabs + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + 0, 0 + + + 100, 23 + + + 0 + + + label109 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bottom, Left + + + NoControl + + + 169, 441 + + + 103, 19 + + + 0 + + + Refresh Params + + + Reload params from device + + + BUT_rerequestparams + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 1 + + + Bottom, Left + + + NoControl + + + 169, 416 + + + 103, 19 + + + 63 + + + Write Params + + + Write changed params to device + + + BUT_writePIDS + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 3 + + + Bottom, Left + + + NoControl + + + 82, 416 + + + 0, 0, 0, 0 + + + 75, 19 + + + 64 + + + Save + + + Save params to file + + + BUT_save + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 4 + + + Bottom, Left + + + NoControl + + + 3, 416 + + + 0, 0, 0, 0 + + + 75, 19 + + + 65 + + + Load + + + Load param's from file + + + BUT_load + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 5 + + + Bottom, Left + + + NoControl + + + 31, 438 + + + 103, 19 + + + 66 + + + Compare Params + + + BUT_compare + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 0 + True - - 17, 17 - - - True - - - True - - - True - + + 6, 13 + + + 1008, 461 + + + Command + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Value + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Default + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + mavScale + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RawValue + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolTip1 + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Configuration + + + System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs index 14ec04fdcc..45318952a8 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.Designer.cs @@ -127,7 +127,6 @@ // resources.ApplyResources(this.CHKREV_roll, "CHKREV_roll"); this.CHKREV_roll.Name = "CHKREV_roll"; - this.toolTip1.SetToolTip(this.CHKREV_roll, resources.GetString("CHKREV_roll.ToolTip")); this.CHKREV_roll.UseVisualStyleBackColor = true; this.CHKREV_roll.CheckedChanged += new System.EventHandler(this.CHKREV_roll_CheckedChanged); // @@ -135,7 +134,6 @@ // resources.ApplyResources(this.CHKREV_pitch, "CHKREV_pitch"); this.CHKREV_pitch.Name = "CHKREV_pitch"; - this.toolTip1.SetToolTip(this.CHKREV_pitch, resources.GetString("CHKREV_pitch.ToolTip")); this.CHKREV_pitch.UseVisualStyleBackColor = true; this.CHKREV_pitch.CheckedChanged += new System.EventHandler(this.CHKREV_pitch_CheckedChanged); // @@ -143,13 +141,11 @@ // resources.ApplyResources(this.CHKREV_rudder, "CHKREV_rudder"); this.CHKREV_rudder.Name = "CHKREV_rudder"; - this.toolTip1.SetToolTip(this.CHKREV_rudder, resources.GetString("CHKREV_rudder.ToolTip")); this.CHKREV_rudder.UseVisualStyleBackColor = true; this.CHKREV_rudder.CheckedChanged += new System.EventHandler(this.CHKREV_rudder_CheckedChanged); // // GPSrate // - resources.ApplyResources(this.GPSrate, "GPSrate"); this.GPSrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.GPSrate.FormattingEnabled = true; this.GPSrate.Items.AddRange(new object[] { @@ -161,8 +157,8 @@ resources.GetString("GPSrate.Items5"), resources.GetString("GPSrate.Items6"), resources.GetString("GPSrate.Items7")}); + resources.ApplyResources(this.GPSrate, "GPSrate"); this.GPSrate.Name = "GPSrate"; - this.toolTip1.SetToolTip(this.GPSrate, resources.GetString("GPSrate.ToolTip")); this.GPSrate.SelectedIndexChanged += new System.EventHandler(this.GPSrate_SelectedIndexChanged); this.GPSrate.KeyDown += new System.Windows.Forms.KeyEventHandler(this.GPSrate_KeyDown); this.GPSrate.Leave += new System.EventHandler(this.GPSrate_Leave); @@ -171,7 +167,6 @@ // resources.ApplyResources(this.ConnectComPort, "ConnectComPort"); this.ConnectComPort.Name = "ConnectComPort"; - this.toolTip1.SetToolTip(this.ConnectComPort, resources.GetString("ConnectComPort.ToolTip")); this.ConnectComPort.UseVisualStyleBackColor = true; this.ConnectComPort.Click += new System.EventHandler(this.ConnectComPort_Click); // @@ -179,7 +174,6 @@ // resources.ApplyResources(this.OutputLog, "OutputLog"); this.OutputLog.Name = "OutputLog"; - this.toolTip1.SetToolTip(this.OutputLog, resources.GetString("OutputLog.ToolTip")); this.OutputLog.TextChanged += new System.EventHandler(this.OutputLog_TextChanged); // // TXT_roll @@ -187,28 +181,24 @@ resources.ApplyResources(this.TXT_roll, "TXT_roll"); this.TXT_roll.Name = "TXT_roll"; this.TXT_roll.resize = false; - this.toolTip1.SetToolTip(this.TXT_roll, resources.GetString("TXT_roll.ToolTip")); // // TXT_pitch // resources.ApplyResources(this.TXT_pitch, "TXT_pitch"); this.TXT_pitch.Name = "TXT_pitch"; this.TXT_pitch.resize = false; - this.toolTip1.SetToolTip(this.TXT_pitch, resources.GetString("TXT_pitch.ToolTip")); // // TXT_heading // resources.ApplyResources(this.TXT_heading, "TXT_heading"); this.TXT_heading.Name = "TXT_heading"; this.TXT_heading.resize = false; - this.toolTip1.SetToolTip(this.TXT_heading, resources.GetString("TXT_heading.ToolTip")); // // TXT_wpdist // resources.ApplyResources(this.TXT_wpdist, "TXT_wpdist"); this.TXT_wpdist.Name = "TXT_wpdist"; this.TXT_wpdist.resize = false; - this.toolTip1.SetToolTip(this.TXT_wpdist, resources.GetString("TXT_wpdist.ToolTip")); // // currentStateBindingSource // @@ -219,41 +209,35 @@ resources.ApplyResources(this.TXT_bererror, "TXT_bererror"); this.TXT_bererror.Name = "TXT_bererror"; this.TXT_bererror.resize = false; - this.toolTip1.SetToolTip(this.TXT_bererror, resources.GetString("TXT_bererror.ToolTip")); // // TXT_alterror // resources.ApplyResources(this.TXT_alterror, "TXT_alterror"); this.TXT_alterror.Name = "TXT_alterror"; this.TXT_alterror.resize = false; - this.toolTip1.SetToolTip(this.TXT_alterror, resources.GetString("TXT_alterror.ToolTip")); // // TXT_lat // resources.ApplyResources(this.TXT_lat, "TXT_lat"); this.TXT_lat.Name = "TXT_lat"; this.TXT_lat.resize = false; - this.toolTip1.SetToolTip(this.TXT_lat, resources.GetString("TXT_lat.ToolTip")); // // TXT_long // resources.ApplyResources(this.TXT_long, "TXT_long"); this.TXT_long.Name = "TXT_long"; this.TXT_long.resize = false; - this.toolTip1.SetToolTip(this.TXT_long, resources.GetString("TXT_long.ToolTip")); // // TXT_alt // resources.ApplyResources(this.TXT_alt, "TXT_alt"); this.TXT_alt.Name = "TXT_alt"; this.TXT_alt.resize = false; - this.toolTip1.SetToolTip(this.TXT_alt, resources.GetString("TXT_alt.ToolTip")); // // SaveSettings // resources.ApplyResources(this.SaveSettings, "SaveSettings"); this.SaveSettings.Name = "SaveSettings"; - this.toolTip1.SetToolTip(this.SaveSettings, resources.GetString("SaveSettings.ToolTip")); this.SaveSettings.UseVisualStyleBackColor = true; this.SaveSettings.Click += new System.EventHandler(this.SaveSettings_Click); // @@ -280,32 +264,27 @@ resources.ApplyResources(this.TXT_servoroll, "TXT_servoroll"); this.TXT_servoroll.Name = "TXT_servoroll"; this.TXT_servoroll.resize = false; - this.toolTip1.SetToolTip(this.TXT_servoroll, resources.GetString("TXT_servoroll.ToolTip")); // // TXT_servopitch // resources.ApplyResources(this.TXT_servopitch, "TXT_servopitch"); this.TXT_servopitch.Name = "TXT_servopitch"; this.TXT_servopitch.resize = false; - this.toolTip1.SetToolTip(this.TXT_servopitch, resources.GetString("TXT_servopitch.ToolTip")); // // TXT_servorudder // resources.ApplyResources(this.TXT_servorudder, "TXT_servorudder"); this.TXT_servorudder.Name = "TXT_servorudder"; this.TXT_servorudder.resize = false; - this.toolTip1.SetToolTip(this.TXT_servorudder, resources.GetString("TXT_servorudder.ToolTip")); // // TXT_servothrottle // resources.ApplyResources(this.TXT_servothrottle, "TXT_servothrottle"); this.TXT_servothrottle.Name = "TXT_servothrottle"; this.TXT_servothrottle.resize = false; - this.toolTip1.SetToolTip(this.TXT_servothrottle, resources.GetString("TXT_servothrottle.ToolTip")); // // panel1 // - resources.ApplyResources(this.panel1, "panel1"); this.panel1.Controls.Add(this.label4); this.panel1.Controls.Add(this.label3); this.panel1.Controls.Add(this.label2); @@ -313,40 +292,35 @@ this.panel1.Controls.Add(this.TXT_lat); this.panel1.Controls.Add(this.TXT_long); this.panel1.Controls.Add(this.TXT_alt); + resources.ApplyResources(this.panel1, "panel1"); this.panel1.Name = "panel1"; - this.toolTip1.SetToolTip(this.panel1, resources.GetString("panel1.ToolTip")); // // label4 // resources.ApplyResources(this.label4, "label4"); this.label4.Name = "label4"; this.label4.resize = false; - this.toolTip1.SetToolTip(this.label4, resources.GetString("label4.ToolTip")); // // label3 // resources.ApplyResources(this.label3, "label3"); this.label3.Name = "label3"; this.label3.resize = false; - this.toolTip1.SetToolTip(this.label3, resources.GetString("label3.ToolTip")); // // label2 // resources.ApplyResources(this.label2, "label2"); this.label2.Name = "label2"; this.label2.resize = false; - this.toolTip1.SetToolTip(this.label2, resources.GetString("label2.ToolTip")); // // label1 // resources.ApplyResources(this.label1, "label1"); this.label1.Name = "label1"; this.label1.resize = false; - this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip")); // // panel2 // - resources.ApplyResources(this.panel2, "panel2"); this.panel2.Controls.Add(this.label30); this.panel2.Controls.Add(this.TXT_yaw); this.panel2.Controls.Add(this.label11); @@ -356,75 +330,65 @@ this.panel2.Controls.Add(this.TXT_roll); this.panel2.Controls.Add(this.TXT_pitch); this.panel2.Controls.Add(this.TXT_heading); + resources.ApplyResources(this.panel2, "panel2"); this.panel2.Name = "panel2"; - this.toolTip1.SetToolTip(this.panel2, resources.GetString("panel2.ToolTip")); // // label30 // resources.ApplyResources(this.label30, "label30"); this.label30.Name = "label30"; this.label30.resize = false; - this.toolTip1.SetToolTip(this.label30, resources.GetString("label30.ToolTip")); // // TXT_yaw // resources.ApplyResources(this.TXT_yaw, "TXT_yaw"); this.TXT_yaw.Name = "TXT_yaw"; this.TXT_yaw.resize = false; - this.toolTip1.SetToolTip(this.TXT_yaw, resources.GetString("TXT_yaw.ToolTip")); // // label11 // resources.ApplyResources(this.label11, "label11"); this.label11.Name = "label11"; this.label11.resize = false; - this.toolTip1.SetToolTip(this.label11, resources.GetString("label11.ToolTip")); // // label7 // resources.ApplyResources(this.label7, "label7"); this.label7.Name = "label7"; this.label7.resize = false; - this.toolTip1.SetToolTip(this.label7, resources.GetString("label7.ToolTip")); // // label6 // resources.ApplyResources(this.label6, "label6"); this.label6.Name = "label6"; this.label6.resize = false; - this.toolTip1.SetToolTip(this.label6, resources.GetString("label6.ToolTip")); // // label5 // resources.ApplyResources(this.label5, "label5"); this.label5.Name = "label5"; this.label5.resize = false; - this.toolTip1.SetToolTip(this.label5, resources.GetString("label5.ToolTip")); // // label8 // resources.ApplyResources(this.label8, "label8"); this.label8.Name = "label8"; this.label8.resize = false; - this.toolTip1.SetToolTip(this.label8, resources.GetString("label8.ToolTip")); // // label9 // resources.ApplyResources(this.label9, "label9"); this.label9.Name = "label9"; this.label9.resize = false; - this.toolTip1.SetToolTip(this.label9, resources.GetString("label9.ToolTip")); // // label10 // resources.ApplyResources(this.label10, "label10"); this.label10.Name = "label10"; this.label10.resize = false; - this.toolTip1.SetToolTip(this.label10, resources.GetString("label10.ToolTip")); // // panel3 // - resources.ApplyResources(this.panel3, "panel3"); this.panel3.Controls.Add(this.label16); this.panel3.Controls.Add(this.label15); this.panel3.Controls.Add(this.label14); @@ -434,47 +398,41 @@ this.panel3.Controls.Add(this.TXT_servopitch); this.panel3.Controls.Add(this.TXT_servorudder); this.panel3.Controls.Add(this.TXT_servothrottle); + resources.ApplyResources(this.panel3, "panel3"); this.panel3.Name = "panel3"; - this.toolTip1.SetToolTip(this.panel3, resources.GetString("panel3.ToolTip")); // // label16 // resources.ApplyResources(this.label16, "label16"); this.label16.Name = "label16"; this.label16.resize = false; - this.toolTip1.SetToolTip(this.label16, resources.GetString("label16.ToolTip")); // // label15 // resources.ApplyResources(this.label15, "label15"); this.label15.Name = "label15"; this.label15.resize = false; - this.toolTip1.SetToolTip(this.label15, resources.GetString("label15.ToolTip")); // // label14 // resources.ApplyResources(this.label14, "label14"); this.label14.Name = "label14"; this.label14.resize = false; - this.toolTip1.SetToolTip(this.label14, resources.GetString("label14.ToolTip")); // // label13 // resources.ApplyResources(this.label13, "label13"); this.label13.Name = "label13"; this.label13.resize = false; - this.toolTip1.SetToolTip(this.label13, resources.GetString("label13.ToolTip")); // // label12 // resources.ApplyResources(this.label12, "label12"); this.label12.Name = "label12"; this.label12.resize = false; - this.toolTip1.SetToolTip(this.label12, resources.GetString("label12.ToolTip")); // // panel4 // - resources.ApplyResources(this.panel4, "panel4"); this.panel4.Controls.Add(this.label20); this.panel4.Controls.Add(this.label19); this.panel4.Controls.Add(this.TXT_control_mode); @@ -486,57 +444,50 @@ this.panel4.Controls.Add(this.TXT_wpdist); this.panel4.Controls.Add(this.TXT_bererror); this.panel4.Controls.Add(this.TXT_alterror); + resources.ApplyResources(this.panel4, "panel4"); this.panel4.Name = "panel4"; - this.toolTip1.SetToolTip(this.panel4, resources.GetString("panel4.ToolTip")); // // label20 // resources.ApplyResources(this.label20, "label20"); this.label20.Name = "label20"; this.label20.resize = false; - this.toolTip1.SetToolTip(this.label20, resources.GetString("label20.ToolTip")); // // label19 // resources.ApplyResources(this.label19, "label19"); this.label19.Name = "label19"; this.label19.resize = false; - this.toolTip1.SetToolTip(this.label19, resources.GetString("label19.ToolTip")); // // TXT_control_mode // resources.ApplyResources(this.TXT_control_mode, "TXT_control_mode"); this.TXT_control_mode.Name = "TXT_control_mode"; this.TXT_control_mode.resize = false; - this.toolTip1.SetToolTip(this.TXT_control_mode, resources.GetString("TXT_control_mode.ToolTip")); // // TXT_WP // resources.ApplyResources(this.TXT_WP, "TXT_WP"); this.TXT_WP.Name = "TXT_WP"; this.TXT_WP.resize = false; - this.toolTip1.SetToolTip(this.TXT_WP, resources.GetString("TXT_WP.ToolTip")); // // label18 // resources.ApplyResources(this.label18, "label18"); this.label18.Name = "label18"; this.label18.resize = false; - this.toolTip1.SetToolTip(this.label18, resources.GetString("label18.ToolTip")); // // label17 // resources.ApplyResources(this.label17, "label17"); this.label17.Name = "label17"; this.label17.resize = false; - this.toolTip1.SetToolTip(this.label17, resources.GetString("label17.ToolTip")); // // panel5 // - resources.ApplyResources(this.panel5, "panel5"); this.panel5.Controls.Add(this.ConnectComPort); + resources.ApplyResources(this.panel5, "panel5"); this.panel5.Name = "panel5"; - this.toolTip1.SetToolTip(this.panel5, resources.GetString("panel5.ToolTip")); // // zg1 // @@ -549,7 +500,6 @@ this.zg1.ScrollMinX = 0D; this.zg1.ScrollMinY = 0D; this.zg1.ScrollMinY2 = 0D; - this.toolTip1.SetToolTip(this.zg1, resources.GetString("zg1.ToolTip")); // // timer_servo_graph // @@ -557,7 +507,6 @@ // // panel6 // - resources.ApplyResources(this.panel6, "panel6"); this.panel6.Controls.Add(this.label28); this.panel6.Controls.Add(this.label29); this.panel6.Controls.Add(this.label27); @@ -570,42 +519,37 @@ this.panel6.Controls.Add(this.TXT_ruddergain); this.panel6.Controls.Add(this.TXT_pitchgain); this.panel6.Controls.Add(this.TXT_rollgain); + resources.ApplyResources(this.panel6, "panel6"); this.panel6.Name = "panel6"; - this.toolTip1.SetToolTip(this.panel6, resources.GetString("panel6.ToolTip")); // // label28 // resources.ApplyResources(this.label28, "label28"); this.label28.Name = "label28"; this.label28.resize = false; - this.toolTip1.SetToolTip(this.label28, resources.GetString("label28.ToolTip")); // // label29 // resources.ApplyResources(this.label29, "label29"); this.label29.Name = "label29"; this.label29.resize = false; - this.toolTip1.SetToolTip(this.label29, resources.GetString("label29.ToolTip")); // // label27 // resources.ApplyResources(this.label27, "label27"); this.label27.Name = "label27"; this.label27.resize = false; - this.toolTip1.SetToolTip(this.label27, resources.GetString("label27.ToolTip")); // // label25 // resources.ApplyResources(this.label25, "label25"); this.label25.Name = "label25"; this.label25.resize = false; - this.toolTip1.SetToolTip(this.label25, resources.GetString("label25.ToolTip")); // // TXT_throttlegain // resources.ApplyResources(this.TXT_throttlegain, "TXT_throttlegain"); this.TXT_throttlegain.Name = "TXT_throttlegain"; - this.toolTip1.SetToolTip(this.TXT_throttlegain, resources.GetString("TXT_throttlegain.ToolTip")); this.TXT_throttlegain.TextChanged += new System.EventHandler(this.TXT_throttlegain_TextChanged); // // label24 @@ -613,48 +557,41 @@ resources.ApplyResources(this.label24, "label24"); this.label24.Name = "label24"; this.label24.resize = false; - this.toolTip1.SetToolTip(this.label24, resources.GetString("label24.ToolTip")); // // label23 // resources.ApplyResources(this.label23, "label23"); this.label23.Name = "label23"; this.label23.resize = false; - this.toolTip1.SetToolTip(this.label23, resources.GetString("label23.ToolTip")); // // label22 // resources.ApplyResources(this.label22, "label22"); this.label22.Name = "label22"; this.label22.resize = false; - this.toolTip1.SetToolTip(this.label22, resources.GetString("label22.ToolTip")); // // label21 // resources.ApplyResources(this.label21, "label21"); this.label21.Name = "label21"; this.label21.resize = false; - this.toolTip1.SetToolTip(this.label21, resources.GetString("label21.ToolTip")); // // TXT_ruddergain // resources.ApplyResources(this.TXT_ruddergain, "TXT_ruddergain"); this.TXT_ruddergain.Name = "TXT_ruddergain"; - this.toolTip1.SetToolTip(this.TXT_ruddergain, resources.GetString("TXT_ruddergain.ToolTip")); this.TXT_ruddergain.TextChanged += new System.EventHandler(this.TXT_ruddergain_TextChanged); // // TXT_pitchgain // resources.ApplyResources(this.TXT_pitchgain, "TXT_pitchgain"); this.TXT_pitchgain.Name = "TXT_pitchgain"; - this.toolTip1.SetToolTip(this.TXT_pitchgain, resources.GetString("TXT_pitchgain.ToolTip")); this.TXT_pitchgain.TextChanged += new System.EventHandler(this.TXT_pitchgain_TextChanged); // // TXT_rollgain // resources.ApplyResources(this.TXT_rollgain, "TXT_rollgain"); this.TXT_rollgain.Name = "TXT_rollgain"; - this.toolTip1.SetToolTip(this.TXT_rollgain, resources.GetString("TXT_rollgain.ToolTip")); this.TXT_rollgain.TextChanged += new System.EventHandler(this.TXT_rollgain_TextChanged); // // label26 @@ -662,13 +599,11 @@ resources.ApplyResources(this.label26, "label26"); this.label26.Name = "label26"; this.label26.resize = false; - this.toolTip1.SetToolTip(this.label26, resources.GetString("label26.ToolTip")); // // CHKdisplayall // resources.ApplyResources(this.CHKdisplayall, "CHKdisplayall"); this.CHKdisplayall.Name = "CHKdisplayall"; - this.toolTip1.SetToolTip(this.CHKdisplayall, resources.GetString("CHKdisplayall.ToolTip")); this.CHKdisplayall.UseVisualStyleBackColor = true; this.CHKdisplayall.CheckedChanged += new System.EventHandler(this.CHKdisplayall_CheckedChanged); // @@ -678,7 +613,6 @@ this.CHKgraphroll.Checked = true; this.CHKgraphroll.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphroll.Name = "CHKgraphroll"; - this.toolTip1.SetToolTip(this.CHKgraphroll, resources.GetString("CHKgraphroll.ToolTip")); this.CHKgraphroll.UseVisualStyleBackColor = true; // // CHKgraphpitch @@ -687,7 +621,6 @@ this.CHKgraphpitch.Checked = true; this.CHKgraphpitch.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphpitch.Name = "CHKgraphpitch"; - this.toolTip1.SetToolTip(this.CHKgraphpitch, resources.GetString("CHKgraphpitch.ToolTip")); this.CHKgraphpitch.UseVisualStyleBackColor = true; // // CHKgraphrudder @@ -696,7 +629,6 @@ this.CHKgraphrudder.Checked = true; this.CHKgraphrudder.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphrudder.Name = "CHKgraphrudder"; - this.toolTip1.SetToolTip(this.CHKgraphrudder, resources.GetString("CHKgraphrudder.ToolTip")); this.CHKgraphrudder.UseVisualStyleBackColor = true; // // CHKgraphthrottle @@ -705,14 +637,12 @@ this.CHKgraphthrottle.Checked = true; this.CHKgraphthrottle.CheckState = System.Windows.Forms.CheckState.Checked; this.CHKgraphthrottle.Name = "CHKgraphthrottle"; - this.toolTip1.SetToolTip(this.CHKgraphthrottle, resources.GetString("CHKgraphthrottle.ToolTip")); this.CHKgraphthrottle.UseVisualStyleBackColor = true; // // but_advsettings // resources.ApplyResources(this.but_advsettings, "but_advsettings"); this.but_advsettings.Name = "but_advsettings"; - this.toolTip1.SetToolTip(this.but_advsettings, resources.GetString("but_advsettings.ToolTip")); this.but_advsettings.UseVisualStyleBackColor = true; this.but_advsettings.Click += new System.EventHandler(this.but_advsettings_Click); // @@ -720,14 +650,12 @@ // resources.ApplyResources(this.chkSensor, "chkSensor"); this.chkSensor.Name = "chkSensor"; - this.toolTip1.SetToolTip(this.chkSensor, resources.GetString("chkSensor.ToolTip")); this.chkSensor.UseVisualStyleBackColor = true; // // CHK_quad // resources.ApplyResources(this.CHK_quad, "CHK_quad"); this.CHK_quad.Name = "CHK_quad"; - this.toolTip1.SetToolTip(this.CHK_quad, resources.GetString("CHK_quad.ToolTip")); this.CHK_quad.UseVisualStyleBackColor = true; this.CHK_quad.CheckedChanged += new System.EventHandler(this.CHK_quad_CheckedChanged); // @@ -735,7 +663,6 @@ // resources.ApplyResources(this.BUT_startfgquad, "BUT_startfgquad"); this.BUT_startfgquad.Name = "BUT_startfgquad"; - this.toolTip1.SetToolTip(this.BUT_startfgquad, resources.GetString("BUT_startfgquad.ToolTip")); this.BUT_startfgquad.UseVisualStyleBackColor = true; this.BUT_startfgquad.Click += new System.EventHandler(this.BUT_startfgquad_Click); // @@ -743,7 +670,6 @@ // resources.ApplyResources(this.BUT_startfgplane, "BUT_startfgplane"); this.BUT_startfgplane.Name = "BUT_startfgplane"; - this.toolTip1.SetToolTip(this.BUT_startfgplane, resources.GetString("BUT_startfgplane.ToolTip")); this.BUT_startfgplane.UseVisualStyleBackColor = true; this.BUT_startfgplane.Click += new System.EventHandler(this.BUT_startfgplane_Click); // @@ -751,7 +677,6 @@ // resources.ApplyResources(this.BUT_startxplane, "BUT_startxplane"); this.BUT_startxplane.Name = "BUT_startxplane"; - this.toolTip1.SetToolTip(this.BUT_startxplane, resources.GetString("BUT_startxplane.ToolTip")); this.BUT_startxplane.UseVisualStyleBackColor = true; this.BUT_startxplane.Click += new System.EventHandler(this.BUT_startxplane_Click); // @@ -759,7 +684,6 @@ // resources.ApplyResources(this.CHK_heli, "CHK_heli"); this.CHK_heli.Name = "CHK_heli"; - this.toolTip1.SetToolTip(this.CHK_heli, resources.GetString("CHK_heli.ToolTip")); this.CHK_heli.UseVisualStyleBackColor = true; // // RAD_aerosimrc @@ -780,7 +704,6 @@ // resources.ApplyResources(this.CHK_xplane10, "CHK_xplane10"); this.CHK_xplane10.Name = "CHK_xplane10"; - this.toolTip1.SetToolTip(this.CHK_xplane10, resources.GetString("CHK_xplane10.ToolTip")); this.CHK_xplane10.UseVisualStyleBackColor = true; // // Simulation @@ -820,7 +743,6 @@ this.Controls.Add(this.CHKREV_pitch); this.Controls.Add(this.CHKREV_roll); this.Name = "Simulation"; - this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip")); this.Load += new System.EventHandler(this.Simulation_Load); ((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).EndInit(); this.panel1.ResumeLayout(false); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx index 26574a9a47..b78bdb87cf 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.resx @@ -118,1237 +118,312 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 3 - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - - - - 1000 + + True - - 126, 37 + + 213, 10 - - 6 + + 87, 17 - - label26 - - - label3 - - - $this - - - 128, 23 - - - Plane IMU - - - CHKgraphthrottle - - - 24 - - - label27 - - - Pitch - - - 25, 13 - - - ConnectComPort - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 7, 104 - - - 5 - - - SIM only - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 43 - - - - - - 10 - - - 67, 24 - - - Roll - - - 41 - - - 9 - - - panel1 - - - Reverse Pitch - - - Show Rudder - - - panel2 - - - $this - - - 19 - - - panel5 - - - 67, 76 - - - 13 - - - GPS Refresh Rate - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 7 - - - 551, 36 - - - 75, 74 - - - 500 - - - 39 - - - Start FG Quad - - - 2 - - - 17 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - label22 - - - 6 - - - panel2 - - - 2 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - $this - - - 100, 20 - - - 38, 98 - - - X-plane - - - TXT_heading - - - CHKdisplayall - - - 100, 20 - - - 48 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 0 - - - Longitude - - - 6 - - - panel6 - - - - - - toolTip1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - label28 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 7, 52 - - - - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 68, 13 - - - 64, 34 - - - but_advsettings - - - 7, 78 - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Bottom, Left - - + 1 - - 8 - - - 16 - - - 7, 27 - - - 0 - - - label29 - - - 6 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 2 - - - - - - 73, 17 - - - Can do Plane and Quad with model - - - 99999 - - - - - - label23 - - - panel2 - - - - - - 23 - - - Latitude + + Reverse Roll CHKREV_roll - - $this - - - 18 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - True - - - Sensor - - - Simulation - - - 1 - - - - - - Reverse Rudder - - - label14 - - - - - - 49 - - - Save Settings - - - Plane GPS - - - 9 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - True - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label15 - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TXT_servothrottle - - - 110, 709 - - - 566, 66 - - - Show Roll - - - - - - 91, 17 - - - True - - - 0 - - - Pitch - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TXT_bererror - - - 25 - - - NoControl - - - 213, 10 - - - - - - 16 - - - $this - - - RAD_softFlightGear - - - 2 - - - CHKgraphroll - - - TXT_servorudder - - - 30000 - - - 5 - - - panel2 - - - 40 - - - - - - panel6 - - - 17 - - - panel1 - - - 25 - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - These - - - 74, 17 - - - 2 - - - True - - - Start Xplane - - - 37, 13 - - - 63, 20 - - - - - - $this - - - 0 - - - 100, 20 - - - 7, 78 - - - 18 - - - 21 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - panel3 - - - label11 - - - - - - 19 - - - 0 - - - 13, 709 - - - 471, 41 - - - panel3 - - - Show Pitch - - - 16 - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - panel3 - - - 13, 294 - - - $this - - - 24 - - - 29 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 19 - - - label16 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - TXT_rollgain - - - 126, 63 - - - 6, 13 - - - panel3 - - - System.Windows.Forms.Timer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - 23 - - - 21 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - - - - $this - - - $this - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - label17 - - - $this - - - System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 566, 368 - - - - - - CHK_xplane10 - - - True - - - 12, 172 - $this - - panel6 - - - - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 566, 186 + + 31 True - - TXT_yaw - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - - - - 10, 27 - - - panel6 - - - 4 - - - panel6 - - - panel4 - - - Throttle - - - 69, 13 - - - label12 - - - TXT_throttlegain - - - 45, 20 - - - 6 - - - Show Throttle - - - 3 - - - label2 - - - Quad - - - 566, 237 - - - - - - panel5 - - - panel1 - - - label6 - - - - - - 44 - - - - - - panel4 - - - 2, 7 - - - Start FG Plane - - - 32 - - - 28, 13 - - - 178, 52 - - - 104, 17 - - - 48, 13 - - - ZedGraph.ZedGraphControl, ZedGraph, Version=5.1.2.878, Culture=neutral, PublicKeyToken=02a83cbd123fcd60 - - - 7 - - - 10 - - - 4 - - - - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - panel3 - - - System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 11 - - - Yaw - - - FlightGear - - - label18 - - - True - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - panel2 - - - 4 - - - 3 - 299, 10 - - True + + 93, 17 - - $this - - - 1 - - - panel4 - - - 30 - - - label19 - - - 8 - - - Yaw - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 67, 45 - - - 12, 420 - - - 5 - - - - - - NoControl - - - panel6 - - - 47 - - - 42 - - - Sim Link Start/Stop - - - $this - - - 25, 13 - - - True - - - 566, 203 - - - Simulator Authority - For diff planes - - - currentStateBindingSource - - - 10, 78 - - - Bottom, Left - - - 36 - - - $this - - - panel1 - - - 79, 21 - - - 7 - - - Altitude - - - 28 - - - 304, 709 - - - Bearing ERR - - - 22, 13 - - - WPDist - - - 14 - - - 27 - - - 31 - - - WP - - - panel3 - - - 566, 146 - - - panel1 - - - 6 - - - are - - - 4, 52 - - - $this - - - 7, 52 - - - 43, 13 - - - 178, 100 - - + 2 - - 7, 77 + + Reverse Pitch - - BUT_startfgquad + + CHKREV_pitch - - panel3 - - - Roll Gain - - - 7, 100 - - - 13 - - - Xplane 10 - - - 126, 76 - - - 197, 294 - - - 178, 122 - - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - TXT_long - - - 21 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel4 - - - 13 - - - 59, 17 - - - 10000 - - - 100, 20 - - - 100, 20 - - - 45 - - - label25 - - - Heli - - - 50, 13 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 24 - - - 50, 8 - - - panel6 - - - 9 - - - - - - 22 - - - NoControl - - - panel4 - - - 259, 40 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - CHKREV_rudder - - + $this - - 45, 13 + + 30 - - 50 - - - RAD_JSBSim - - - 26 - - - panel6 - - - panel6 - - - 31, 13 - - - 197, 40 - - - Bottom, Left - - - 702, 283 - - - - - - 3 - - - 4, 104 - - - 59, 13 - - + True - - 19 - - - AeroSimRC - - - - - - 722, 742 - - - 508, 330 - - - 8 - - - panel6 - - - 81, 13 - - - 10000 - - - 83, 13 - - - 2 - - - 75, 24 - - - 27 - - - 11 - 398, 10 - - panel1 + + 104, 17 - - Heading + + 3 - + + Reverse Rudder + + + CHKREV_rudder + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this + + 29 + + + 100 + + + 200 + + + 250 + + + 333 + + + 500 + + + 1000 + + + 30000 + + + 99999 + + + 551, 36 + + + 79, 21 + + + 4 + + + GPSrate + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 28 + + + 26, 13 + + + 128, 23 + + + 5 + + + Sim Link Start/Stop + + + ConnectComPort + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel5 + + + 0 + + + Lucida Console, 8.25pt + + + 197, 66 + + + 363, 208 + + + 6 + + + + + + OutputLog + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 27 + + + 67, 22 + + + 100, 20 + + + 7 + + + TXT_roll + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel2 + + + 6 + + + 67, 45 + + + 100, 20 + + + 8 + + + TXT_pitch + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + panel2 - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + 7 - - Display All + + 67, 70 - - label21 + + 100, 20 - - 56, 13 + + 9 - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + TXT_heading - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - Throttle Gain + + panel2 - - + + 8 + + + 75, 24 + + + 100, 20 + + + 10 + + + TXT_wpdist + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 8 + + + 104, 17 + + + 75, 50 + + + 100, 20 + + + 11 + + + TXT_bererror + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 9 + + + 75, 76 + + + 100, 20 + + + 12 + + + TXT_alterror + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 10 67, 23 @@ -1356,1042 +431,1733 @@ 100, 20 - - Can do Plane/Heli/Quads - - - label30 - - - 3 - - - True - - - TXT_servoroll - - - - - - Reverse Roll - - - Pitch Gain - - - $this - - - 10 - - - 4 - - - 26, 13 - - - Can Do Plane/Quad with plugin - - - 0 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - $this - - - 67, 22 - - - True - - - 7, 29 - - - Can do Plane/Heli/Quads - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 67, 50 - - - - - - 61, 17 - - - 15 - - - 38 - - - 178, 122 - - - System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 95, 13 - - - 5 - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - 61, 17 - - - panel2 - - - panel4 - - - - - - 3 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 8 - - - NoControl - - - 100 - - - NoControl - - - 333 - - - panel1 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 382, 294 - - - 67, 70 - - - 7 - - - - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 75, 100 - - - timer_servo_graph - - - $this - - - - - - 12 - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 112, 99 - - - 31, 13 - - - chkSensor - - - NoControl - - - 26 - - - RAD_softXplanes - - - TXT_alterror - - - 19 - - - 25, 13 - - - - - - 45, 20 - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - Altitude ERR - - - 207, 709 - - - 178, 116 - - - - - - TXT_servopitch - - - label4 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label8 - - - 0 - - - 46 - - - 4 - - - 1 - - - 14 - - - - - - 1 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 67, 93 - - - 10, 52 - - - panel6 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 44, 17 - - - panel2 - - - - - - True - - - GPSrate - - - $this - - - 535, 9 - - - 57, 13 - - - panel2 - - - 31 - - - - - - 9 - - - - - - 54, 13 - - - 100, 20 - - - $this - - - 74, 17 - - - BUT_startfgplane - - - 13, 5 - - - 1 - - - 87, 17 - - - $this - - - NoControl - - - $this - - - 6 - - - - - - 25 + + 13 TXT_lat - - 67, 13 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - + + panel1 - + + 4 + + + 67, 49 + + + 100, 20 + + + 14 + + + TXT_long + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel1 + + + 5 + + + 67, 75 + + + 100, 20 + + + 15 + + + TXT_alt + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel1 + + + 6 + + + 566, 330 + + + 64, 34 + + + 16 + + + Save Settings + + + SaveSettings + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + $this - - 332, 40 + + 26 - + + True + + + 197, 40 + + + 61, 17 + + + 17 + + + X-plane + + + 301, 17 + + + Can Do Plane/Quad with plugin + + + RAD_softXplanes + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 25 + + + True + + + 259, 40 + + + 73, 17 + + + 18 + + + FlightGear + + + Can do Plane and Quad with model + + + RAD_softFlightGear + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 24 + + + 67, 24 + + + 100, 20 + + + 19 + + + TXT_servoroll + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 5 + + + 67, 50 + + + 100, 20 + + + 20 + + + TXT_servopitch + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 6 + + + 67, 76 + + + 100, 20 + + + 21 + + + TXT_servorudder + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 7 + + + 67, 102 + + + 100, 20 + + + 22 + + + TXT_servothrottle + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 8 + + + 60, 3 + + + 59, 13 + + + 19 + + + Plane GPS + + + label4 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel1 + + + 0 + + + 7, 78 + + + 42, 13 + + + 18 + + + Altitude + + + label3 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel1 + + + 1 + + + 7, 52 + + + 54, 13 + + + 17 + + + Longitude + + + label2 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel1 + + + 2 + + + 7, 26 + + + 45, 13 + + + 16 + + + Latitude + + + label1 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel1 + + + 3 + + + 13, 66 + + + 178, 100 + + + 23 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 23 + + + 7, 100 + + + 28, 13 + + + 21 + + + Yaw + + + label30 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel2 + + + 0 + + + 67, 93 + + 100, 20 20 - - + + TXT_yaw - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - 10000 - - - Rudder Gain - - - Advanced IP Settings - - - 64, 34 - - - 75, 48 - - - Lucida Console, 8.25pt - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 79, 17 - - - 7 - - - 3 - - - panel3 - - - 7, 52 - - - 45, 20 - - - 7 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 60, 4 - - - panel3 - - - 9 - - - - - - - - - 20 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - Top, Bottom, Left, Right - - - TXT_WP - - - 5 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 64, 34 - - - NOTE: - - - 7 - - - 22 - - - 28 - - - - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 11 - - - 12 - - - $this - - - 18 - - - 200 - - - 100, 20 - - - 363, 208 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - CHKgraphpitch - - - 74, 17 - - - 68, 13 - - - 26 - - - label1 - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 15 - - - label5 - - - $this - - - True - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 64, 34 - - - panel1 - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - 75, 23 - - - 566, 219 - - - 21 - - - $this - - - 64, 47 - - - RAD_aerosimrc - - + panel2 - - 75, 76 - - - True - - - 23 - - - 30 - - - 7, 26 - - - BUT_startxplane - - - 16 - - - TXT_roll - - - 566, 106 - - - TXT_control_mode - - - - - - zg1 - - - 4 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - - 60, 3 - - - - - - - - - TXT_wpdist - - - 28, 20 - - - 50, 8 - - - 18 - - - True - - - - - - TXT_pitchgain - - - - - - 75, 50 - - - 2 - - - - - - 47, 13 - - - panel4 - - - 28, 13 - - - label7 - - - $this - - - - - - 100, 20 - - - 67, 75 - - - Ardupilot Output - - - - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 409, 40 - - - - - - 17 - - - 178, 122 - - - 43, 13 - - - 23 - - - ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - 197, 66 - - - - - - 10000 - - - 80, 17 - - - panel4 - 1 - - 10, 104 + + 60, 4 - - 4, 27 + + 57, 13 - - 52, 17 + + 19 - - 67, 49 + + Plane IMU + + + label11 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel2 + + + 2 + + + 7, 77 + + + 47, 13 + + + 15 + + + Heading + + + label7 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel2 + + + 3 + + + 7, 52 + + + 31, 13 + + + 14 + + + Pitch + + + label6 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel2 + + + 4 + + + 7, 29 + + + 25, 13 + + + 13 + + + Roll + + + label5 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel2 + + + 5 + + + 12, 172 + + + 178, 116 + + + 24 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 22 + + + 7, 27 + + + 43, 13 + + + 16 + + + WPDist + + + label8 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 7 + + + 7, 52 + + + 69, 13 + + + 17 + + + Bearing ERR label9 - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - + + panel4 + + + 6 + + + 7, 78 + + + 68, 13 + + + 18 + + + Altitude ERR + + + label10 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 5 + + + 50, 8 + + + 83, 13 + + + 27 + + + Ardupilot Output + + + label16 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 0 + + + 10, 104 + + + 43, 13 + + + 26 + + + Throttle + + + label15 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 1 + + + 10, 78 + + + 28, 13 + + + 25 + + + Yaw + + + label14 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 2 + + + 10, 52 + + + 31, 13 + + + 24 + + + Pitch + + + label13 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 3 + + + 10, 27 + + + 25, 13 + + + 23 + + + Roll + + + label12 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel3 + + + 4 + + + 13, 294 + + + 178, 122 + + + 25 + + + panel3 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 21 + + + 72, 104 + + + 34, 13 + + + 23 + + + Mode + + + label20 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 0 + + + 7, 104 + + + 25, 13 + + + 22 + + + WP + + + label19 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 1 + + + 112, 99 + + + 63, 20 + + + 21 + + + TXT_control_mode + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 2 + + + 38, 98 + + + 28, 20 + + + 20 + + + TXT_WP + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 3 + + + 50, 8 + + + 81, 13 + + + 19 + + + Autopilot Status + + + label18 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel4 + + + 4 + + + 197, 294 + + + 178, 122 + + + 26 + + + panel4 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this 20 - - 93, 17 + + 535, 9 - - + + 95, 13 - - + + 27 - - 4 + + GPS Refresh Rate - - panel4 + + label17 - - TXT_alt + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - CHKgraphrudder + + $this - - CHK_heli + + 19 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 13, 5 - - + + 178, 52 - - 3 + + 28 - - 22 + + panel5 - - label24 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 42, 13 + + $this - - CHK_quad + + 18 - - 92, 17 + + + Top, Bottom, Left, Right - - + + 12, 420 - - label13 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - - - - - 100, 20 - - - panel6 - - - 169, 13 + + 702, 283 29 - - 10 + + zg1 - - 100, 20 + + ZedGraph.ZedGraphControl, ZedGraph, Version=5.1.2.878, Culture=neutral, PublicKeyToken=02a83cbd123fcd60 - + + $this + + + 17 + + + 17, 17 + + + 126, 76 + + + 48, 13 + + + 32 + + + SIM only + + + label28 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel6 + + + 0 + + + 126, 37 + + 43, 13 - - 45, 20 - - - 67, 102 - - - 100, 20 - - - 5 - - - panel4 - 33 - - TXT_ruddergain + + NOTE: - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + label29 - - 17 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - 250 + + panel6 - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + 1 - - 20 + + 126, 63 - - 34, 13 + + 22, 13 - - + + 31 - - + + are - - JSBSim + + label27 - - 566, 330 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - CHKREV_pitch + + panel6 - + + 2 + + + 4, 104 + + + 68, 13 + + + 8 + + + Throttle Gain + + + label25 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel6 + + + 3 + + + 75, 100 + + + 45, 20 + + + 7 + + + 10000 + + + TXT_throttlegain + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 4 + + + 4, 78 + + + 67, 13 + + 6 - - 100, 20 + + Rudder Gain - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + label24 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - + panel6 5 - - 0 + + 4, 52 - - 27 + + 56, 13 + + + 5 + + + Pitch Gain + + + label23 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + panel6 + + + 6 + + + 4, 27 + + + 50, 13 4 - - Mode + + Roll Gain - - 8 + + label22 - - 8 + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - SaveSettings + + panel6 - - TXT_pitch + + 7 - - 4, 78 + + 2, 7 - - panel4 + + 169, 13 - - Roll + + 3 - - 13, 66 + + Simulator Authority - For diff planes - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + label21 - - + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - label20 + + panel6 8 - - + + 75, 74 - - $this + + 45, 20 - - + + 2 - - label10 + + 10000 - - 14 + + TXT_ruddergain - - Autopilot Status + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 9 + + + 75, 48 + + + 45, 20 + + + 1 + + + 10000 + + + TXT_pitchgain + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel6 + + + 10 + + + 75, 23 + + + 45, 20 + + + 0 + + + 10000 + + + TXT_rollgain System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - OutputLog + + panel6 - - 72, 104 + + 11 - - Bottom, Left + + 382, 294 - - 37 + + 178, 122 + + + 30 + + + panel6 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 16 + + + 508, 330 + + + 37, 13 + + + 9 + + + These + + + label26 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this 15 - - panel4 + + True - + + 471, 41 + + + 74, 17 + + + 36 + + + Display All + + + CHKdisplayall + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 14 + + + Bottom, Left + + + True + + + 13, 709 + + + 74, 17 + + + 37 + + + Show Roll + + + CHKgraphroll + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 13 + + + Bottom, Left + + + True + + + 110, 709 + + + 80, 17 + + + 38 + + + Show Pitch + + + CHKgraphpitch + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 12 + + + Bottom, Left + + + True + + + 207, 709 + + + 91, 17 + + + 39 + + + Show Rudder + + + CHKgraphrudder + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 11 + + + Bottom, Left + + + True + + + 304, 709 + + + 92, 17 + + + 40 + + + Show Throttle + + + CHKgraphthrottle + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 10 + + + 566, 368 + + + 64, 47 + + + 41 + + + Advanced IP Settings + + + but_advsettings + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 9 + + + True + + + 566, 186 + + + 59, 17 + + + 42 + + + Sensor + + + chkSensor + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 8 + + + True + + + NoControl + + + 566, 203 + + + 52, 17 + + + 43 + + + Quad + + + CHK_quad + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 7 + + + NoControl + + + 566, 66 + + + 64, 34 + + + 44 + + + Start FG Quad + + + BUT_startfgquad + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 6 + + + NoControl + + + 566, 106 + + + 64, 34 + + + 45 + + + Start FG Plane + + + BUT_startfgplane + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + 5 + + NoControl + + + 566, 146 + + + 64, 34 + + + 46 + + + Start Xplane + + + BUT_startxplane + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 4 + + + True + + + NoControl + + + 566, 219 + + + 44, 17 + + + 47 + + + Heli + + + CHK_heli + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + True + + + NoControl + + + 332, 40 + + + 79, 17 + + + 48 + + + AeroSimRC + + + Can do Plane/Heli/Quads + + + RAD_aerosimrc + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + True + + + NoControl + + + 409, 40 + + + 61, 17 + + + 49 + + + JSBSim + + + Can do Plane/Heli/Quads + + + RAD_JSBSim + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + True + + + NoControl + + + 566, 237 + + + 74, 17 + + + 50 + + + Xplane 10 + + + CHK_xplane10 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + True - - 301, 17 - - - 104, 17 - - - 17, 17 - + + 6, 13 + + + 722, 742 + + + currentStateBindingSource + + + System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + timer_servo_graph + + + System.Windows.Forms.Timer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolTip1 + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Simulation + + + System.Windows.Forms.MyUserControl, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs index e0e6d02ffc..4ff9bd2f27 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Terminal.cs @@ -146,7 +146,11 @@ namespace ArdupilotMega.GCSViews } } // do not change this \r is correct - no \n + if (cmd == "+++") + comPort.Write(Encoding.ASCII.GetBytes(cmd), 0, cmd.Length); + else { comPort.Write(Encoding.ASCII.GetBytes(cmd + "\r"), 0, cmd.Length + 1); + } } catch { MessageBox.Show("Error writing to com port"); } } diff --git a/Tools/ArdupilotMegaPlanner/HUD.cs b/Tools/ArdupilotMegaPlanner/HUD.cs index 84f0176962..299db6ed42 100644 --- a/Tools/ArdupilotMegaPlanner/HUD.cs +++ b/Tools/ArdupilotMegaPlanner/HUD.cs @@ -676,6 +676,7 @@ namespace hud void doPaint(PaintEventArgs e) { + bool isNaN = false; try { if (graphicsObjectGDIP == null || !opengl && (objBitmap.Width != this.Width || objBitmap.Height != this.Height)) @@ -709,9 +710,22 @@ namespace hud bgon = true; } + + if (float.IsNaN(_roll) || float.IsNaN(_pitch) || float.IsNaN(_heading)) + { + isNaN = true; + + _roll = 0; + _pitch = 0; + _heading = 0; + } + graphicsObject.TranslateTransform(this.Width / 2, this.Height / 2); - graphicsObject.RotateTransform(-_roll); + + + graphicsObject.RotateTransform(-_roll); + int fontsize = this.Height / 30; // = 10 int fontoffset = fontsize - 10; @@ -1272,6 +1286,11 @@ namespace hud drawstring(graphicsObject, gps, font, fontsize + 2, whiteBrush, this.Width - 10 * fontsize, this.Height - 30 - fontoffset); + + if (isNaN) + drawstring(graphicsObject, "NaN Error " + DateTime.Now, font, this.Height / 30 + 10, Brushes.Red, 50, 50); + + if (!opengl) { e.Graphics.DrawImageUnscaled(objBitmap, 0, 0); @@ -1305,7 +1324,6 @@ namespace hud catch (Exception ex) { Console.WriteLine("hud error "+ex.ToString()); - //MessageBox.Show(ex.ToString()); } } diff --git a/Tools/ArdupilotMegaPlanner/Log.cs b/Tools/ArdupilotMegaPlanner/Log.cs index f2595ce09e..cb5addc411 100644 --- a/Tools/ArdupilotMegaPlanner/Log.cs +++ b/Tools/ArdupilotMegaPlanner/Log.cs @@ -83,7 +83,7 @@ namespace ArdupilotMega threadrun = true; - System.Threading.Thread.Sleep(2000); + System.Threading.Thread.Sleep(4000); try { diff --git a/Tools/ArdupilotMegaPlanner/MAVLink.cs b/Tools/ArdupilotMegaPlanner/MAVLink.cs index 8066c903ec..bcf6f63d50 100644 --- a/Tools/ArdupilotMegaPlanner/MAVLink.cs +++ b/Tools/ArdupilotMegaPlanner/MAVLink.cs @@ -9,6 +9,8 @@ using System.Reflection; using System.Reflection.Emit; using System.IO; using System.Drawing; +using System.Threading; +using ArdupilotMega.Controls; using ArdupilotMega.Mavlink; using System.ComponentModel; @@ -20,14 +22,10 @@ namespace ArdupilotMega private const double CONNECT_TIMEOUT_SECONDS = 30; - /// - /// Used for progress reporting on all internal functions - /// - public event ProgressEventHandler Progress; /// /// progress form to handle connect and param requests /// - ProgressReporter frm; + ProgressReporterDialogue frmProgressReporter; /// /// used for outbound packet sending @@ -131,22 +129,39 @@ namespace ArdupilotMega if (BaseStream.IsOpen) return; - //System.Windows.Forms.Form frm = Common.LoadingBox("Mavlink Connecting..", "Mavlink Connecting.."); - //frm.TopMost = true; + frmProgressReporter = new ProgressReporterDialogue + { + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen, + Text = "Connecting Mavlink" + }; - frm = new ProgressReporter(); - MainV2.fixtheme(frm); - this.Progress += new ProgressEventHandler(MAVLink_Progress); - //(progress, status) => { frm.updateProgressAndStatus(progress, status); }; + if (getparams) + { + frmProgressReporter.DoWork += FrmProgressReporterDoWorkAndParams; + } + else + { + frmProgressReporter.DoWork += FrmProgressReporterDoWorkNOParams; + } + frmProgressReporter.UpdateProgressAndStatus(-1, "Mavlink Connecting..."); + MainV2.fixtheme(frmProgressReporter); - frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + frmProgressReporter.RunBackgroundOperationAsync(); + } - frm.Show(); + void FrmProgressReporterDoWorkAndParams(object sender, ProgressWorkerEventArgs e) + { + OpenBg(true, e); + } - frm.Focus(); + void FrmProgressReporterDoWorkNOParams(object sender, ProgressWorkerEventArgs e) + { + OpenBg(false, e); + } - if (Progress != null) - Progress(-1, "Mavlink Connecting..."); + private void OpenBg(bool getparams, ProgressWorkerEventArgs progressWorkerEventArgs) + { + frmProgressReporter.UpdateProgressAndStatus(-1, "Mavlink Connecting..."); // reset sysid = 0; @@ -168,15 +183,7 @@ namespace ArdupilotMega BaseStream.toggleDTR(); - // allow 2560 connect timeout on usb - for (int a = 0; a < 1000; a++ ) { - System.Threading.Thread.Sleep(1); - if (!MainV2.instance.InvokeRequired) - { - System.Windows.Forms.Application.DoEvents(); - } - } - + Thread.Sleep(1000); } byte[] buffer; @@ -189,8 +196,9 @@ namespace ArdupilotMega countDown.Elapsed += (sender, e) => { int secondsRemaining = (deadline - e.SignalTime).Seconds; - if (Progress != null) - Progress(-1, string.Format("Trying to connect.\nTimeout in {0}", secondsRemaining)); + //if (Progress != null) + // Progress(-1, string.Format("Trying to connect.\nTimeout in {0}", secondsRemaining)); + frmProgressReporter.UpdateProgressAndStatus(-1, string.Format("Trying to connect.\nTimeout in {0}", secondsRemaining)); if (secondsRemaining > 0) countDown.Start(); }; countDown.Start(); @@ -199,31 +207,35 @@ namespace ArdupilotMega while (true) { + if (progressWorkerEventArgs.CancelRequested) + { + progressWorkerEventArgs.CancelAcknowledged = true; + countDown.Stop(); + if (BaseStream.IsOpen) + BaseStream.Close(); + MainV2.givecomport = false; + return; + } + // incase we are in setup mode BaseStream.WriteLine("planner\rgcs\r"); Console.WriteLine(DateTime.Now.Millisecond + " start "); - /* - if (Progress != null) - { - int secondsRemaining = (start.AddSeconds(CONNECT_TIMEOUT_SECONDS) - DateTime.Now).Seconds; - Progress(-1, string.Format("Trying to connect.\nTimeout in {0}", secondsRemaining)); - } - */ - if (lastbad[0] == '!' && lastbad[1] == 'G' || lastbad[0] == 'G' && lastbad[1] == '!') // waiting for gps lock { - if (Progress != null) - Progress(-1, "Waiting for GPS detection.."); - start = start.AddSeconds(5); // each round is 1.1 seconds + //if (Progress != null) + // Progress(-1, "Waiting for GPS detection.."); + frmProgressReporter.UpdateProgressAndStatus(-1, "Waiting for GPS detection.."); + deadline = deadline.AddSeconds(5); // each round is 1.1 seconds } if (DateTime.Now > deadline) { - if (Progress != null) - Progress(-1, "No Heatbeat Packets"); + //if (Progress != null) + // Progress(-1, "No Heatbeat Packets"); this.Close(); + progressWorkerEventArgs.ErrorMessage = "No Heatbeat Packets Received"; throw new Exception("No Mavlink Heartbeat Packets where read from this port - Verify Baud Rate and setup\nIt might also be waiting for GPS Lock\nAPM Planner waits for 2 valid heartbeat packets before connecting"); } @@ -267,11 +279,12 @@ namespace ArdupilotMega countDown.Stop(); - if (Progress != null) - Progress(-1, "Getting Params.. (sysid " + sysid + " compid " + compid + ") "); +// if (Progress != null) +// Progress(-1, "Getting Params.. (sysid " + sysid + " compid " + compid + ") "); + frmProgressReporter.UpdateProgressAndStatus(0, "Getting Params.. (sysid " + sysid + " compid " + compid + ") "); if (getparams) - getParamList(); + getParamListBG(); } catch (Exception e) { @@ -281,28 +294,19 @@ namespace ArdupilotMega } catch { } MainV2.givecomport = false; - if (Progress != null) - Progress(-1, "Connect Failed\n" + e.Message); - throw e; +// if (Progress != null) +// Progress(-1, "Connect Failed\n" + e.Message); + if (string.IsNullOrEmpty(progressWorkerEventArgs.ErrorMessage)) + progressWorkerEventArgs.ErrorMessage = "Connect Failed"; + throw; } - frm.Close(); + //frmProgressReporter.Close(); MainV2.givecomport = false; + frmProgressReporter.UpdateProgressAndStatus(100, "Done."); Console.WriteLine("Done open " + sysid + " " + compid); packetslost = 0; } - void MAVLink_Progress(int progress, string status) - { - if (frm != null) - { - try - { - frm.updateProgressAndStatus(progress, status); - } - catch (Exception ex) { throw ex; } - } - } - byte[] getHeartBeat() { DateTime start = DateTime.Now; @@ -556,19 +560,48 @@ namespace ArdupilotMega } */ + public void getParamList() + { + frmProgressReporter = new ProgressReporterDialogue + { + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen, + Text = "Getting Params" + }; + + frmProgressReporter.DoWork += FrmProgressReporterGetParams; + frmProgressReporter.UpdateProgressAndStatus(-1, "Getting Params..."); + MainV2.fixtheme(frmProgressReporter); + + frmProgressReporter.RunBackgroundOperationAsync(); + } + + void FrmProgressReporterGetParams(object sender, ProgressWorkerEventArgs e) + { + Hashtable old = new Hashtable(param); + getParamListBG(); + if (frmProgressReporter.doWorkArgs.CancelRequested) + { + param = old; + } + } + /// /// Get param list from apm /// /// - public Hashtable getParamList() + private Hashtable getParamListBG() { MainV2.givecomport = true; List missed = new List(); - // ryan - re start - __mavlink_param_request_read_t rereq = new __mavlink_param_request_read_t(); - rereq.target_system = sysid; - rereq.target_component = compid; + // clear old + param = new Hashtable(); + + int retrys = 3; + int param_count = 0; + int param_total = 5; + + goagain: __mavlink_param_request_list_t req = new __mavlink_param_request_list_t(); req.target_system = sysid; @@ -578,13 +611,18 @@ namespace ArdupilotMega DateTime start = DateTime.Now; DateTime restart = DateTime.Now; - - int retrys = 3; - int nextid = 0; - int param_count = 0; - int param_total = 5; + while (param_count < param_total) { + + if (frmProgressReporter.doWorkArgs.CancelRequested) + { + frmProgressReporter.doWorkArgs.CancelAcknowledged = true; + MainV2.givecomport = false; + frmProgressReporter.doWorkArgs.ErrorMessage = "User Canceled"; + return param; + } + if (!(start.AddMilliseconds(5000) > DateTime.Now)) { if (retrys > 0) @@ -598,15 +636,7 @@ namespace ArdupilotMega MainV2.givecomport = false; throw new Exception("Timeout on read - getParamList"); } - if (!(restart.AddMilliseconds(1000) > DateTime.Now)) - { - rereq.param_id = new byte[] { 0x0, 0x0 }; - rereq.param_index = (short)nextid; - sendPacket(rereq); - restart = DateTime.Now; - } - System.Windows.Forms.Application.DoEvents(); byte[] buffer = readPacket(); if (buffer.Length > 5) { @@ -619,9 +649,10 @@ namespace ArdupilotMega __mavlink_param_value_t par = buffer.ByteArrayToStructure<__mavlink_param_value_t>(6); + // set new target param_total = (par.param_count); - + string paramID = System.Text.ASCIIEncoding.ASCII.GetString(par.param_id); int pos = paramID.IndexOf('\0'); @@ -629,47 +660,41 @@ namespace ArdupilotMega { paramID = paramID.Substring(0, pos); } - Console.WriteLine(DateTime.Now.Millisecond + " got param " + (par.param_index) + " of " + (param_total - 1) + " name: " + paramID); - // for out of order udp packets - if (BaseStream.GetType() != typeof(UdpSerial)) - { - if (nextid == (par.param_index)) - { - nextid++; - if (Progress != null) - Progress((par.param_index * 100) / param_total, "Got param " + paramID); - } - else - { - - if (retrys > 0) - { - generatePacket(MAVLINK_MSG_ID_PARAM_REQUEST_LIST, req); - param_count = 0; - nextid = 0; - retrys--; - continue; - } - Console.WriteLine("Out of order packet. Re-requesting list"); - missed.Add(nextid); // for later devel - MainV2.givecomport = false; - throw new Exception("Missed ID expecting " + nextid + " got " + (par.param_index) + "\nPlease try loading again"); - } + // check if we already have it + if (param.ContainsKey(paramID)) { + continue; } + Console.WriteLine(DateTime.Now.Millisecond + " got param " + (par.param_index) + " of " + (param_total - 1) + " name: " + paramID); + modifyParamForDisplay(true, paramID, ref par.param_value); param[paramID] = (par.param_value); param_count++; + +// if (Progress != null) +// Progress((param.Count * 100) / param_total, "Got param " + paramID); + this.frmProgressReporter.UpdateProgressAndStatus((param.Count * 100) / param_total, "Got param " + paramID); } else { - //Console.WriteLine(DateTime.Now + " PC paramlist " + buffer[5] + " " + this.BytesToRead); + //Console.WriteLine(DateTime.Now + " PC paramlist " + buffer[5] + " want " + MAVLINK_MSG_ID_PARAM_VALUE + " btr " + BaseStream.BytesToRead); } //stopwatch.Stop(); //Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed); } } + + if (param.Count != param_total) + { + if (retrys > 0) + { + this.frmProgressReporter.UpdateProgressAndStatus((param.Count * 100) / param_total, "Getting missed params"); + retrys--; + goto goagain; + } + throw new Exception("Missing Params"); + } MainV2.givecomport = false; return param; } @@ -1923,10 +1948,10 @@ namespace ArdupilotMega throw new Exception("Timeout"); } System.Threading.Thread.Sleep(1); - if (!MainV2.instance.InvokeRequired) - { - System.Windows.Forms.Application.DoEvents(); // when connecting this is in the main thread - } +// if (!MainV2.instance.InvokeRequired) +// { +// System.Windows.Forms.Application.DoEvents(); // when connecting this is in the main thread +// } to++; } if (BaseStream.IsOpen) diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index ba8bc897a9..0756eadced 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -125,8 +125,8 @@ namespace ArdupilotMega CMB_serialport.Items.Add("UDP"); if (CMB_serialport.Items.Count > 0) { - CMB_serialport.SelectedIndex = 0; CMB_baudrate.SelectedIndex = 7; + CMB_serialport.SelectedIndex = 0; } splash.Refresh(); @@ -1945,6 +1945,13 @@ namespace ArdupilotMega frm.Show(); return true; } + if (keyData == (Keys.Control | Keys.A)) // test + { + Form frm = new _3DRradio(); + fixtheme(frm); + frm.Show(); + return true; + } if (keyData == (Keys.Control | Keys.T)) // for override connect { try diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index eeee0051fa..e8a4d66854 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.1.40")] +[assembly: AssemblyFileVersion("1.1.41")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs b/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs index cb850fdcbc..d218a1ae09 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs @@ -214,6 +214,20 @@ namespace ArdupilotMega.Properties { } } + public static System.Drawing.Bitmap iconWarning32 { + get { + object obj = ResourceManager.GetObject("iconWarning32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + public static System.Drawing.Bitmap iconWarning48 { + get { + object obj = ResourceManager.GetObject("iconWarning48", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + public static System.Drawing.Bitmap octo { get { object obj = ResourceManager.GetObject("octo", resourceCulture); diff --git a/Tools/ArdupilotMegaPlanner/Properties/Resources.resx b/Tools/ArdupilotMegaPlanner/Properties/Resources.resx index ca1caef98f..bfe114553b 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/Resources.resx +++ b/Tools/ArdupilotMegaPlanner/Properties/Resources.resx @@ -181,9 +181,6 @@ ..\Resources\frames-07.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\frames-08.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\planetracker.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1201,7 +1198,6 @@ ..\Resources\BR-0016-01-3T.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\new frames-10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1220,4 +1216,14 @@ ..\Resources\new frames-06.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\iconWarning32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\iconWarning48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\y6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs new file mode 100644 index 0000000000..bdf1a242d2 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs @@ -0,0 +1,620 @@ +namespace ArdupilotMega +{ + partial class _3DRradio + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.Progressbar = new System.Windows.Forms.ProgressBar(); + this.S1 = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.S0 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.S2 = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.S3 = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.S4 = new System.Windows.Forms.ComboBox(); + this.label6 = new System.Windows.Forms.Label(); + this.S5 = new System.Windows.Forms.CheckBox(); + this.label7 = new System.Windows.Forms.Label(); + this.S6 = new System.Windows.Forms.CheckBox(); + this.label8 = new System.Windows.Forms.Label(); + this.S7 = new System.Windows.Forms.CheckBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.RS7 = new System.Windows.Forms.CheckBox(); + this.RS6 = new System.Windows.Forms.CheckBox(); + this.RS5 = new System.Windows.Forms.CheckBox(); + this.RS4 = new System.Windows.Forms.ComboBox(); + this.RS3 = new System.Windows.Forms.ComboBox(); + this.RS2 = new System.Windows.Forms.ComboBox(); + this.RS1 = new System.Windows.Forms.ComboBox(); + this.RS0 = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.RTI = new System.Windows.Forms.TextBox(); + this.ATI = new System.Windows.Forms.TextBox(); + this.RSSI = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.BUT_savesettings = new ArdupilotMega.MyButton(); + this.BUT_getcurrent = new ArdupilotMega.MyButton(); + this.lbl_status = new ArdupilotMega.MyLabel(); + this.BUT_upload = new ArdupilotMega.MyButton(); + this.SuspendLayout(); + // + // Progressbar + // + this.Progressbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.Progressbar.Location = new System.Drawing.Point(12, 368); + this.Progressbar.Name = "Progressbar"; + this.Progressbar.Size = new System.Drawing.Size(294, 36); + this.Progressbar.TabIndex = 2; + // + // S1 + // + this.S1.FormattingEnabled = true; + this.S1.Items.AddRange(new object[] { + "115", + "111", + "57", + "38", + "19", + "9", + "4", + "2", + "1"}); + this.S1.Location = new System.Drawing.Point(87, 103); + this.S1.Name = "S1"; + this.S1.Size = new System.Drawing.Size(80, 21); + this.S1.TabIndex = 4; + this.toolTip1.SetToolTip(this.S1, "Serial Baud Rate 57 = 57600"); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(15, 111); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(32, 13); + this.label1.TabIndex = 5; + this.label1.Text = "Baud"; + // + // S0 + // + this.S0.Location = new System.Drawing.Point(87, 77); + this.S0.Name = "S0"; + this.S0.ReadOnly = true; + this.S0.Size = new System.Drawing.Size(80, 20); + this.S0.TabIndex = 7; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(15, 84); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(39, 13); + this.label2.TabIndex = 8; + this.label2.Text = "Format"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(15, 138); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 13); + this.label3.TabIndex = 10; + this.label3.Text = "Air Speed"; + // + // S2 + // + this.S2.FormattingEnabled = true; + this.S2.Items.AddRange(new object[] { + "192", + "160", + "128", + "96", + "64", + "32", + "16"}); + this.S2.Location = new System.Drawing.Point(87, 130); + this.S2.Name = "S2"; + this.S2.Size = new System.Drawing.Size(80, 21); + this.S2.TabIndex = 9; + this.toolTip1.SetToolTip(this.S2, "the inter-radio data rate in rounded kbps. So 128 means"); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(15, 165); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(38, 13); + this.label4.TabIndex = 12; + this.label4.Text = "Net ID"; + // + // S3 + // + this.S3.FormattingEnabled = true; + this.S3.Items.AddRange(new object[] { + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30"}); + this.S3.Location = new System.Drawing.Point(87, 157); + this.S3.Name = "S3"; + this.S3.Size = new System.Drawing.Size(80, 21); + this.S3.TabIndex = 11; + this.toolTip1.SetToolTip(this.S3, "a 16 bit \'network ID\'. This is used to seed the frequency"); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(15, 192); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(52, 13); + this.label5.TabIndex = 14; + this.label5.Text = "Tx Power"; + // + // S4 + // + this.S4.FormattingEnabled = true; + this.S4.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20"}); + this.S4.Location = new System.Drawing.Point(87, 184); + this.S4.Name = "S4"; + this.S4.Size = new System.Drawing.Size(80, 21); + this.S4.TabIndex = 13; + this.toolTip1.SetToolTip(this.S4, "the transmit power in dBm. 20dBm is 100mW. It is useful to"); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(15, 219); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(28, 13); + this.label6.TabIndex = 16; + this.label6.Text = "ECC"; + // + // S5 + // + this.S5.Location = new System.Drawing.Point(87, 211); + this.S5.Name = "S5"; + this.S5.Size = new System.Drawing.Size(80, 21); + this.S5.TabIndex = 15; + this.toolTip1.SetToolTip(this.S5, "to enable/disable the golay error correcting code. It defaults"); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(15, 246); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(44, 13); + this.label7.TabIndex = 18; + this.label7.Text = "Mavlink"; + // + // S6 + // + this.S6.Location = new System.Drawing.Point(87, 238); + this.S6.Name = "S6"; + this.S6.Size = new System.Drawing.Size(80, 21); + this.S6.TabIndex = 17; + this.toolTip1.SetToolTip(this.S6, "enables/disables MAVLink packet framing. This tries to align"); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(15, 273); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(68, 13); + this.label8.TabIndex = 20; + this.label8.Text = "Op Pre Send"; + // + // S7 + // + this.S7.Location = new System.Drawing.Point(87, 265); + this.S7.Name = "S7"; + this.S7.Size = new System.Drawing.Size(80, 21); + this.S7.TabIndex = 19; + this.toolTip1.SetToolTip(this.S7, "enables/disables \"opportunistic resend\". When enabled the"); + // + // RS7 + // + this.RS7.Location = new System.Drawing.Point(201, 265); + this.RS7.Name = "RS7"; + this.RS7.Size = new System.Drawing.Size(80, 21); + this.RS7.TabIndex = 29; + this.toolTip1.SetToolTip(this.RS7, "enables/disables \"opportunistic resend\". When enabled the"); + // + // RS6 + // + this.RS6.Location = new System.Drawing.Point(201, 238); + this.RS6.Name = "RS6"; + this.RS6.Size = new System.Drawing.Size(80, 21); + this.RS6.TabIndex = 28; + this.toolTip1.SetToolTip(this.RS6, "enables/disables MAVLink packet framing. This tries to align"); + // + // RS5 + // + this.RS5.Location = new System.Drawing.Point(201, 211); + this.RS5.Name = "RS5"; + this.RS5.Size = new System.Drawing.Size(80, 21); + this.RS5.TabIndex = 27; + this.toolTip1.SetToolTip(this.RS5, "to enable/disable the golay error correcting code. It defaults"); + // + // RS4 + // + this.RS4.FormattingEnabled = true; + this.RS4.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20"}); + this.RS4.Location = new System.Drawing.Point(201, 184); + this.RS4.Name = "RS4"; + this.RS4.Size = new System.Drawing.Size(80, 21); + this.RS4.TabIndex = 26; + this.toolTip1.SetToolTip(this.RS4, "the transmit power in dBm. 20dBm is 100mW. It is useful to"); + // + // RS3 + // + this.RS3.FormattingEnabled = true; + this.RS3.Items.AddRange(new object[] { + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30"}); + this.RS3.Location = new System.Drawing.Point(201, 157); + this.RS3.Name = "RS3"; + this.RS3.Size = new System.Drawing.Size(80, 21); + this.RS3.TabIndex = 25; + this.toolTip1.SetToolTip(this.RS3, "a 16 bit \'network ID\'. This is used to seed the frequency"); + // + // RS2 + // + this.RS2.FormattingEnabled = true; + this.RS2.Items.AddRange(new object[] { + "192", + "160", + "128", + "96", + "64", + "32", + "16"}); + this.RS2.Location = new System.Drawing.Point(201, 130); + this.RS2.Name = "RS2"; + this.RS2.Size = new System.Drawing.Size(80, 21); + this.RS2.TabIndex = 24; + this.toolTip1.SetToolTip(this.RS2, "the inter-radio data rate in rounded kbps. So 128 means"); + // + // RS1 + // + this.RS1.FormattingEnabled = true; + this.RS1.Items.AddRange(new object[] { + "115", + "111", + "57", + "38", + "19", + "9", + "4", + "2", + "1"}); + this.RS1.Location = new System.Drawing.Point(201, 103); + this.RS1.Name = "RS1"; + this.RS1.Size = new System.Drawing.Size(80, 21); + this.RS1.TabIndex = 22; + this.toolTip1.SetToolTip(this.RS1, "Serial Baud Rate 57 = 57600"); + // + // RS0 + // + this.RS0.Location = new System.Drawing.Point(201, 77); + this.RS0.Name = "RS0"; + this.RS0.ReadOnly = true; + this.RS0.Size = new System.Drawing.Size(80, 20); + this.RS0.TabIndex = 23; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(108, 9); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(33, 13); + this.label9.TabIndex = 30; + this.label9.Text = "Local"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(225, 9); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(44, 13); + this.label10.TabIndex = 31; + this.label10.Text = "Remote"; + // + // RTI + // + this.RTI.Location = new System.Drawing.Point(201, 25); + this.RTI.Name = "RTI"; + this.RTI.ReadOnly = true; + this.RTI.Size = new System.Drawing.Size(80, 20); + this.RTI.TabIndex = 33; + // + // ATI + // + this.ATI.Location = new System.Drawing.Point(87, 25); + this.ATI.Name = "ATI"; + this.ATI.ReadOnly = true; + this.ATI.Size = new System.Drawing.Size(80, 20); + this.ATI.TabIndex = 32; + // + // RSSI + // + this.RSSI.Location = new System.Drawing.Point(87, 51); + this.RSSI.Name = "RSSI"; + this.RSSI.ReadOnly = true; + this.RSSI.Size = new System.Drawing.Size(194, 20); + this.RSSI.TabIndex = 34; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(15, 32); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(42, 13); + this.label11.TabIndex = 36; + this.label11.Text = "Version"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(15, 58); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(32, 13); + this.label12.TabIndex = 37; + this.label12.Text = "RSSI"; + // + // BUT_savesettings + // + this.BUT_savesettings.Location = new System.Drawing.Point(99, 292); + this.BUT_savesettings.Name = "BUT_savesettings"; + this.BUT_savesettings.Size = new System.Drawing.Size(75, 39); + this.BUT_savesettings.TabIndex = 21; + this.BUT_savesettings.Text = "Save Settings"; + this.BUT_savesettings.UseVisualStyleBackColor = true; + this.BUT_savesettings.Click += new System.EventHandler(this.BUT_savesettings_Click); + // + // BUT_getcurrent + // + this.BUT_getcurrent.Location = new System.Drawing.Point(18, 292); + this.BUT_getcurrent.Name = "BUT_getcurrent"; + this.BUT_getcurrent.Size = new System.Drawing.Size(75, 39); + this.BUT_getcurrent.TabIndex = 6; + this.BUT_getcurrent.Text = "Load Settings"; + this.BUT_getcurrent.UseVisualStyleBackColor = true; + this.BUT_getcurrent.Click += new System.EventHandler(this.BUT_getcurrent_Click); + // + // lbl_status + // + this.lbl_status.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbl_status.BackColor = System.Drawing.SystemColors.ActiveCaption; + this.lbl_status.Location = new System.Drawing.Point(12, 340); + this.lbl_status.Name = "lbl_status"; + this.lbl_status.resize = false; + this.lbl_status.Size = new System.Drawing.Size(294, 22); + this.lbl_status.TabIndex = 3; + // + // BUT_upload + // + this.BUT_upload.Location = new System.Drawing.Point(180, 292); + this.BUT_upload.Name = "BUT_upload"; + this.BUT_upload.Size = new System.Drawing.Size(127, 39); + this.BUT_upload.TabIndex = 0; + this.BUT_upload.Text = "Upload Firmware (Local)"; + this.BUT_upload.UseVisualStyleBackColor = true; + this.BUT_upload.Click += new System.EventHandler(this.BUT_upload_Click); + // + // _3DRradio + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(318, 416); + this.Controls.Add(this.label12); + this.Controls.Add(this.label11); + this.Controls.Add(this.RSSI); + this.Controls.Add(this.RTI); + this.Controls.Add(this.ATI); + this.Controls.Add(this.label10); + this.Controls.Add(this.label9); + this.Controls.Add(this.RS7); + this.Controls.Add(this.RS6); + this.Controls.Add(this.RS5); + this.Controls.Add(this.RS4); + this.Controls.Add(this.RS3); + this.Controls.Add(this.RS2); + this.Controls.Add(this.RS0); + this.Controls.Add(this.RS1); + this.Controls.Add(this.BUT_savesettings); + this.Controls.Add(this.label8); + this.Controls.Add(this.S7); + this.Controls.Add(this.label7); + this.Controls.Add(this.S6); + this.Controls.Add(this.label6); + this.Controls.Add(this.S5); + this.Controls.Add(this.label5); + this.Controls.Add(this.S4); + this.Controls.Add(this.label4); + this.Controls.Add(this.S3); + this.Controls.Add(this.label3); + this.Controls.Add(this.S2); + this.Controls.Add(this.label2); + this.Controls.Add(this.S0); + this.Controls.Add(this.BUT_getcurrent); + this.Controls.Add(this.label1); + this.Controls.Add(this.S1); + this.Controls.Add(this.lbl_status); + this.Controls.Add(this.Progressbar); + this.Controls.Add(this.BUT_upload); + this.MinimumSize = new System.Drawing.Size(334, 454); + this.Name = "_3DRradio"; + this.Text = "3DRradio"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private MyButton BUT_upload; + private System.Windows.Forms.ProgressBar Progressbar; + private MyLabel lbl_status; + private System.Windows.Forms.ComboBox S1; + private System.Windows.Forms.Label label1; + private MyButton BUT_getcurrent; + private System.Windows.Forms.TextBox S0; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox S2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox S3; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.ComboBox S4; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.CheckBox S5; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.CheckBox S6; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.CheckBox S7; + private MyButton BUT_savesettings; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.CheckBox RS7; + private System.Windows.Forms.CheckBox RS6; + private System.Windows.Forms.CheckBox RS5; + private System.Windows.Forms.ComboBox RS4; + private System.Windows.Forms.ComboBox RS3; + private System.Windows.Forms.ComboBox RS2; + private System.Windows.Forms.TextBox RS0; + private System.Windows.Forms.ComboBox RS1; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox RTI; + private System.Windows.Forms.TextBox ATI; + private System.Windows.Forms.TextBox RSSI; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs new file mode 100644 index 0000000000..5b2f350eb9 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs @@ -0,0 +1,522 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Net; +using System.IO; + +namespace ArdupilotMega +{ + public partial class _3DRradio : Form + { + public delegate void LogEventHandler(string message, int level = 0); + + public delegate void ProgressEventHandler(double completed); + + string firmwarefile = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "radio.hm_trp.hex"; + + public _3DRradio() + { + InitializeComponent(); + } + + bool getFirmware() + { + //https://raw.github.com/tridge/SiK/master/Firmware/dst/radio.hm_trp.hex + + return Common.getFilefromNet("https://raw.github.com/tridge/SiK/master/Firmware/dst/radio.hm_trp.hex", firmwarefile); + } + + void Sleep(int mstimeout) + { + DateTime endtime = DateTime.Now.AddMilliseconds(mstimeout); + + while (DateTime.Now < endtime) + { + System.Threading.Thread.Sleep(1); + Application.DoEvents(); + } + } + + private void BUT_upload_Click(object sender, EventArgs e) + { + ArduinoSTK comPort = new ArduinoSTK(); + + string version = ""; + + uploader.Uploader uploader = new uploader.Uploader(); + + comPort.PortName = MainV2.comPort.BaseStream.PortName; + comPort.BaudRate = 115200; + + comPort.Open(); + + bool bootloadermode = false; + + try + { + uploader_ProgressEvent(0); + uploader_LogEvent("Trying Bootloader Mode"); + uploader.port = comPort; + uploader.connect_and_sync(); + uploader_LogEvent("In Bootloader Mode"); + bootloadermode = true; + } + catch { uploader_LogEvent("Trying Firmware Mode"); bootloadermode = false; } + + uploader.ProgressEvent += new ProgressEventHandler(uploader_ProgressEvent); + uploader.LogEvent += new LogEventHandler(uploader_LogEvent); + + if (!bootloadermode) + { + comPort.BaudRate = 57600; + // clear buffer + comPort.DiscardInBuffer(); + // setup a known enviroment + comPort.Write("\r\n"); + // wait + Sleep(1000); + // send config string + comPort.Write("+++"); + // wait + Sleep(1100); + // check for config responce "OK" + if (comPort.ReadExisting().Contains("OK")) + { + + } + + comPort.Write("\r\nATI\r\n"); + + Sleep(100); + + version = comPort.ReadExisting(); + } + + + if (version.Contains("on HM-TRP") || bootloadermode) + { + if (getFirmware()) + { + uploader.IHex iHex = new uploader.IHex(); + + iHex.LogEvent += new LogEventHandler(iHex_LogEvent); + + iHex.ProgressEvent += new ProgressEventHandler(iHex_ProgressEvent); + + try + { + iHex.load(firmwarefile); + } + catch { MessageBox.Show("Bad Firmware File"); goto exit; } + + if (!bootloadermode) + { + + comPort.Write("AT&UPDATE\r\n"); + string left = comPort.ReadExisting(); + Console.WriteLine(left); + Sleep(700); + comPort.BaudRate = 115200; + + } + + try + { + uploader.upload(comPort, iHex); + } + catch (Exception ex) { MessageBox.Show("Upload Failed " + ex.Message); goto exit; } + } + else + { + MessageBox.Show("Failed to download new firmware"); + } + } + else + { + MessageBox.Show("Failed to identify Radio"); + } + + exit: + if (comPort.IsOpen) + comPort.Close(); + } + + void iHex_ProgressEvent(double completed) + { + try + { + Progressbar.Value = (int)(completed * 100); + Application.DoEvents(); + } + catch { } + } + + void uploader_LogEvent(string message, int level = 0) + { + try + { + if (level == 0) + { + Console.Write(message); + lbl_status.Text = message; + Application.DoEvents(); + } + } + catch { } + } + + void iHex_LogEvent(string message, int level = 0) + { + try + { + if (level == 0) + { + lbl_status.Text = message; + Console.WriteLine(message); + Application.DoEvents(); + } + } + catch { } + } + + void uploader_ProgressEvent(double completed) + { + try + { + Progressbar.Value = (int)(completed * 100); + Application.DoEvents(); + } + catch { } + } + + private void BUT_getcurrent_Click(object sender, EventArgs e) + { + SerialPort comPort = new SerialPort(); + + comPort.PortName = MainV2.comPort.BaseStream.PortName; + comPort.BaudRate = 57600; + + comPort.ReadTimeout = 4000; + + comPort.Open(); + + lbl_status.Text = "Connecting"; + + if (doConnect(comPort)) + { + comPort.DiscardInBuffer(); + + lbl_status.Text = "Doing Command ATI & RTI"; + + ATI.Text = doCommand(comPort, "ATI1"); + + RTI.Text = doCommand(comPort, "RTI1"); + + RSSI.Text = doCommand(comPort, "ATI7"); + + lbl_status.Text = "Doing Command ATI5"; + + string answer = doCommand(comPort, "ATI5"); + + Console.Write("Local\n" + answer); + + string[] items = answer.Split('\n'); + + foreach (string item in items) + { + if (item.StartsWith("S")) + { + string[] values = item.Split(':', '='); + + if (values.Length == 3) + { + Control[] controls = this.Controls.Find(values[0].Trim(), false); + + if (controls.Length > 0) + { + if (controls[0].GetType() == typeof(CheckBox)) + { + ((CheckBox)controls[0]).Checked = values[2].Trim() == "1"; + } + else + { + controls[0].Text = values[2].Trim(); + } + } + } + } + } + + // remote + + comPort.DiscardInBuffer(); + + lbl_status.Text = "Doing Command RTI5"; + + answer = doCommand(comPort, "RTI5"); + + Console.Write("Remote\n" + answer); + + items = answer.Split('\n'); + + foreach (string item in items) + { + if (item.StartsWith("S")) + { + string[] values = item.Split(':', '='); + + if (values.Length == 3) + { + Control[] controls = this.Controls.Find("R"+values[0].Trim(), false); + + if (controls[0].GetType() == typeof(CheckBox)) + { + ((CheckBox)controls[0]).Checked = values[2].Trim() == "1"; + } + else + { + controls[0].Text = values[2].Trim(); + } + } + } + } + + lbl_status.Text = "Done"; + } + else + { + lbl_status.Text = "Fail"; + MessageBox.Show("Failed to enter command mode"); + } + + comPort.WriteLine("ATZ"); + + comPort.Close(); + + } + + string doCommand(SerialPort comPort, string cmd) + { + Sleep(100); + comPort.DiscardInBuffer(); + comPort.Write(cmd + "\r\n"); + string temp = comPort.ReadLine(); // echo + Sleep(500); + string ans = ""; + while (comPort.BytesToRead > 0) + { + ans = ans + comPort.ReadLine() + "\n"; + Sleep(50); + + if (ans.Length > 500) + return ""; + } + + return ans; + } + + bool doConnect(SerialPort comPort) + { + // clear buffer + comPort.DiscardOutBuffer(); + comPort.DiscardInBuffer(); + // setup a known enviroment + comPort.Write("\r\n"); + // wait + Sleep(1100); + // send config string + comPort.Write("+++"); + // wait + Sleep(1100); + // check for config responce "OK" + if (comPort.ReadExisting().Contains("OK")) + { + //return true; + } + else + { + // cleanup incase we are already in cmd mode + comPort.Write("\r\n"); + } + + string version = doCommand(comPort, "ATI"); + + Console.Write("Connect Version: "+version); + + if (version.Contains("on HM-TRP")) + { + return true; + } + + return false; + } + + private void BUT_savesettings_Click(object sender, EventArgs e) + { + SerialPort comPort = new SerialPort(); + + comPort.PortName = MainV2.comPort.BaseStream.PortName; + comPort.BaudRate = 57600; + + comPort.ReadTimeout = 4000; + + comPort.Open(); + + lbl_status.Text = "Connecting"; + + if (doConnect(comPort)) + { + comPort.DiscardInBuffer(); + + lbl_status.Text = "Doing Command"; + + // remote + string answer = doCommand(comPort, "RTI5"); + + Console.Write("Remote\n"+answer); + + string[] items = answer.Split('\n'); + + foreach (string item in items) + { + if (item.StartsWith("S")) + { + string[] values = item.Split(':', '='); + + if (values.Length == 3) + { + Control[] controls = this.Controls.Find("R"+values[0].Trim(), false); + + if (controls.Length > 0) + { + if (controls[0].GetType() == typeof(CheckBox)) + { + string value = ((CheckBox)controls[0]).Checked ? "1" : "0"; + + if (value != values[2].Trim()) + { + string cmdanswer = doCommand(comPort, "RT" + values[0].Trim() + "=" + value + "\r"); + + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } + } + } + else + { + if (controls[0].Text != values[2].Trim()) + { + string cmdanswer = doCommand(comPort, "RT" + values[0].Trim() + "=" + controls[0].Text + "\r"); + + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } + } + } + } + } + } + } + + // write it + doCommand(comPort, "RT&W"); + + // return to normal mode + comPort.WriteLine("RTZ"); + + comPort.Write("\r\n"); + + Sleep(100); + + comPort.DiscardInBuffer(); + //local + answer = doCommand(comPort, "ATI5"); + + Console.Write("Local\n" + answer); + + items = answer.Split('\n'); + + foreach (string item in items) + { + if (item.StartsWith("S")) + { + string[] values = item.Split(':', '='); + + if (values.Length == 3) + { + Control[] controls = this.Controls.Find(values[0].Trim(), false); + + if (controls.Length > 0) + { + if (controls[0].GetType() == typeof(CheckBox)) + { + string value = ((CheckBox)controls[0]).Checked ? "1" : "0"; + + if (value != values[2].Trim()) + { + string cmdanswer = doCommand(comPort, "AT" + values[0].Trim() + "=" + value + "\r"); + + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } + } + } + else + { + if (controls[0].Text != values[2].Trim()) + { + string cmdanswer = doCommand(comPort, "AT" + values[0].Trim() + "=" + controls[0].Text + "\r"); + + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } + } + } + } + } + } + } + + // write it + doCommand(comPort, "AT&W"); + + lbl_status.Text = "Done"; + } + else + { + lbl_status.Text = "Fail"; + MessageBox.Show("Failed to enter command mode"); + } + + // return to normal mode + comPort.WriteLine("ATZ"); + + comPort.Close(); + } + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx new file mode 100644 index 0000000000..271670364a --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Radio/IHex.cs b/Tools/ArdupilotMegaPlanner/Radio/IHex.cs new file mode 100644 index 0000000000..1a6ce2550d --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Radio/IHex.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections.Generic; +using System.IO; + +namespace uploader +{ + public class IHex : SortedList + { + public event ArdupilotMega._3DRradio.LogEventHandler LogEvent; + + public event ArdupilotMega._3DRradio.ProgressEventHandler ProgressEvent; + + private SortedList merge_index; + + public IHex () + { + merge_index = new SortedList (); + } + + public void load (string fromPath) + { + StreamReader sr = new StreamReader (fromPath); + UInt32 loadedSize = 0; + + // discard anything we might previous have loaded + Clear (); + merge_index.Clear (); + + log (string.Format ("reading from {0}\n", Path.GetFileName(fromPath))); + + while (!sr.EndOfStream) { + string line = sr.ReadLine (); + + // every line must start with a : + if (!line.StartsWith (":")) + throw new Exception ("invalid IntelHex file"); + + if (ProgressEvent != null) + ProgressEvent(sr.BaseStream.Position / (double)sr.BaseStream.Length); + + // parse the record type and data length, assume ihex8 + // ignore the checksum + byte length = Convert.ToByte (line.Substring (1, 2), 16); + UInt32 address = Convert.ToUInt32 (line.Substring (3, 4), 16); + byte rtype = Convert.ToByte (line.Substring (7, 2), 16); + + // handle type zero (data) records + if (rtype == 0) { + byte[] b = new byte[length]; + string hexbytes = line.Substring (9, length * 2); + + // convert hex bytes + for (int i = 0; i < length; i++) { + b [i] = Convert.ToByte (hexbytes.Substring (i * 2, 2), 16); + } + + log (string.Format ("ihex: 0x{0:X}: {1}\n", address, length), 1); + loadedSize += length; + + // and add to the list of ranges + insert (address, b); + } + } + if (Count < 1) + throw new Exception ("no data in IntelHex file"); + log (string.Format ("read {0} bytes from {1}\n", loadedSize, fromPath)); + } + + private void log (string message, int level = 0) + { + if (LogEvent != null) + LogEvent (message, level); + } + + private void idx_record (UInt32 start, byte[] data) + { + UInt32 len = (UInt32)data.GetLength (0); + + merge_index.Add (start + len, start); + } + + private void idx_remove (UInt32 start, byte[] data) + { + UInt32 len = (UInt32)data.GetLength (0); + + merge_index.Remove (start + len); + } + + private bool idx_find (UInt32 start, out UInt32 other) + { + return merge_index.TryGetValue (start, out other); + } + + public void insert (UInt32 key, byte[] data) + { + UInt32 other; + byte[] mergedata; + + // value of the key that would come after this one + other = key; + other += (UInt32)data.GetLength (0); + + // can we merge with the next block + if (TryGetValue (other, out mergedata)) { + int oldlen = data.GetLength (0); + + // remove the next entry, we are going to merge with it + Remove (other); + + // remove its index entry as well + idx_remove (other, mergedata); + + log (string.Format ("ihex: merging {0:X}/{1} with next {2:X}/{3}\n", + key, data.GetLength (0), + other, mergedata.GetLength (0)), 1); + + // resize the data array and append data from the next block + Array.Resize (ref data, data.GetLength (0) + mergedata.GetLength (0)); + Array.Copy (mergedata, 0, data, oldlen, mergedata.GetLength (0)); + } + + // look up a possible adjacent preceding block in the merge index + if (idx_find (key, out other)) { + + mergedata = this [other]; + int oldlen = mergedata.GetLength (0); + Remove (other); + idx_remove (other, mergedata); + + log (string.Format ("ihex: merging {0:X}/{1} with prev {2:X}/{3}\n", + key, data.GetLength (0), + other, mergedata.GetLength (0)), 1); + + Array.Resize (ref mergedata, data.GetLength (0) + mergedata.GetLength (0)); + Array.Copy (data, 0, mergedata, oldlen, data.GetLength (0)); + key = other; + data = mergedata; + } + + // add the merged block + Add (key, data); + idx_record (key, data); + log (string.Format ("ihex: adding {0:X}/{1}\n", key, data.GetLength (0)), 1); + } + } +} + diff --git a/Tools/ArdupilotMegaPlanner/Radio/Uploader.cs b/Tools/ArdupilotMegaPlanner/Radio/Uploader.cs new file mode 100644 index 0000000000..2a911070bc --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Radio/Uploader.cs @@ -0,0 +1,441 @@ +using System; +using System.IO.Ports; +using System.Collections.Generic; + +namespace uploader +{ + public class Uploader + { + public event ArdupilotMega._3DRradio.LogEventHandler LogEvent; + public event ArdupilotMega._3DRradio.ProgressEventHandler ProgressEvent; + + private int bytes_to_process; + private int bytes_processed; + public SerialPort port; + + private enum Code : byte + { + // response codes + OK = 0x10, + FAILED = 0x11, + INSYNC = 0x12, + + // protocol commands + EOC = 0x20, + GET_SYNC = 0x21, + GET_DEVICE = 0x22, // returns DEVICE_ID and FREQ bytes + CHIP_ERASE = 0x23, + LOAD_ADDRESS = 0x24, + PROG_FLASH = 0x25, + READ_FLASH = 0x26, + PROG_MULTI = 0x27, + READ_MULTI = 0x28, + REBOOT = 0x30, + + // protocol constants + PROG_MULTI_MAX = 64, // maximum number of bytes in a PROG_MULTI command + READ_MULTI_MAX = 255, // largest read that can be requested + + // device IDs XXX should come with the firmware image... + DEVICE_ID_RF50 = 0x4d, + DEVICE_ID_HM_TRP= 0x4e, + + // frequency code bytes XXX should come with the firmware image... + FREQ_NONE = 0xf0, + FREQ_433 = 0x43, + FREQ_470 = 0x47, + FREQ_868 = 0x86, + FREQ_915 = 0x91, + }; + + public Uploader () + { + } + + + /// + /// Upload the specified image_data. + /// + /// + /// Image_data to be uploaded. + /// + public void upload (SerialPort on_port, IHex image_data) + { + progress (0); + + port = on_port; + + try { + connect_and_sync (); + upload_and_verify (image_data); + cmdReboot (); + } catch (Exception e) { + if (port.IsOpen) + port.Close (); + throw e; + } + } + + public void connect_and_sync () + { + // configure the port + port.ReadTimeout = 2000; // must be longer than full flash erase time (~1s) + + // synchronise with the bootloader + // + // The second sync attempt here is mostly laziness, though it does verify that we + // can send more than one packet. + // + for (int i = 0; i < 3; i++) { + if (cmdSync ()) + break; + log (string.Format ("sync({0}) failed\n", i), 1); + } + if (!cmdSync ()) { + log ("FAIL: could not synchronise with the bootloader"); + throw new Exception ("SYNC FAIL"); + } + checkDevice (); + + log ("connected to bootloader\n"); + } + + private void upload_and_verify (IHex image_data) + { + + // erase the program area first + log ("erasing program flash\n"); + cmdErase (); + + // progress fractions + bytes_to_process = 0; + foreach (byte[] bytes in image_data.Values) { + bytes_to_process += bytes.Length; + } + bytes_to_process *= 2; // once to program, once to verify + bytes_processed = 0; + + // program the flash blocks + log ("programming\n"); + foreach (KeyValuePair kvp in image_data) { + // move the program pointer to the base of this block + cmdSetAddress (kvp.Key); + log (string.Format ("prog 0x{0:X}/{1}\n", kvp.Key, kvp.Value.Length), 1); + + upload_block_multi (kvp.Value); + } + + // and read them back to verify that they were programmed + log ("verifying\n"); + foreach (KeyValuePair kvp in image_data) { + // move the program pointer to the base of this block + cmdSetAddress (kvp.Key); + log (string.Format ("verf 0x{0:X}/{1}\n", kvp.Key, kvp.Value.Length), 1); + + verify_block_multi (kvp.Value); + bytes_processed += kvp.Value.GetLength (0); + progress ((double)bytes_processed / bytes_to_process); + } + log ("Success\n"); + } + + private void upload_block (byte[] data) + { + foreach (byte b in data) { + cmdProgram (b); + progress ((double)(++bytes_processed) / bytes_to_process); + } + } + + private void upload_block_multi (byte[] data) + { + int offset = 0; + int to_send; + int length = data.GetLength (0); + + // Chunk the block in units of no more than what the bootloader + // will program. + while (offset < length) { + to_send = length - offset; + if (to_send > (int)Code.PROG_MULTI_MAX) + to_send = (int)Code.PROG_MULTI_MAX; + + log (string.Format ("multi {0}/{1}\n", offset, to_send), 1); + cmdProgramMulti (data, offset, to_send); + offset += to_send; + + bytes_processed += to_send; + progress ((double)bytes_processed / bytes_to_process); + } + } + + private void verify_block_multi (byte[] data) + { + int offset = 0; + int to_verf; + int length = data.GetLength (0); + + // Chunk the block in units of no more than what the bootloader + // will read. + while (offset < length) { + to_verf = length - offset; + if (to_verf > (int)Code.READ_MULTI_MAX) + to_verf = (int)Code.READ_MULTI_MAX; + + log (string.Format ("multi {0}/{1}\n", offset, to_verf), 1); + cmdVerifyMulti (data, offset, to_verf); + offset += to_verf; + + bytes_processed += to_verf; + progress ((double)bytes_processed / bytes_to_process); + } + + } + + /// + /// Requests a sync reply. + /// + /// + /// True if in sync, false otherwise. + /// + private bool cmdSync () + { + port.DiscardInBuffer (); + + send (Code.GET_SYNC); + send (Code.EOC); + + try { + getSync (); + } catch { + return false; + } + + return true; + } + + /// + /// Erases the device. + /// + private void cmdErase () + { + send (Code.CHIP_ERASE); + send (Code.EOC); + + getSync (); + } + + /// + /// Set the address for the next program or read operation. + /// + /// + /// Address to be set. + /// + private void cmdSetAddress (UInt32 address) + { + send (Code.LOAD_ADDRESS); + send ((UInt16)address); + send (Code.EOC); + + getSync (); + } + + /// + /// Programs a byte and advances the program address by one. + /// + /// + /// Data to program. + /// + private void cmdProgram (byte data) + { + send (Code.PROG_FLASH); + send (data); + send (Code.EOC); + + getSync (); + } + + private void cmdProgramMulti (byte[] data, int offset, int length) + { + send (Code.PROG_MULTI); + send ((byte)length); + for (int i = 0; i < length; i++) + send (data [offset + i]); + send (Code.EOC); + + getSync (); + } + + /// + /// Verifies the byte at the current program address. + /// + /// + /// Data expected to be found. + /// + /// + /// Is thrown when the verify fail. + /// + private void cmdVerify (byte data) + { + send (Code.READ_FLASH); + send (Code.EOC); + + if (recv () != data) + throw new Exception ("flash verification failed"); + + getSync (); + } + + private void cmdVerifyMulti (byte[] data, int offset, int length) + { + send (Code.READ_MULTI); + send ((byte)length); + send (Code.EOC); + + for (int i = 0; i < length; i++) { + if (recv () != data [offset + i]) { + log ("flash verification failed\n"); + throw new Exception ("VERIFY FAIL"); + } + } + + getSync (); + } + + private void cmdReboot () + { + send (Code.REBOOT); + } + + private void checkDevice () + { + Code id, freq; + + send (Code.GET_DEVICE); + send (Code.EOC); + + id = (Code)recv (); + freq = (Code)recv (); + + // XXX should be getting valid board/frequency data from firmware file + if ((id != Code.DEVICE_ID_HM_TRP) && (id != Code.DEVICE_ID_RF50)) + throw new Exception ("bootloader device ID mismatch"); + + getSync (); + } + + /// + /// Expect the two-byte synchronisation codes within the read timeout. + /// + /// + /// Is thrown if the wrong bytes are read. + /// + /// Is thrown if the read timeout expires. + /// + private void getSync () + { + try { + Code c; + + c = (Code)recv (); + if (c != Code.INSYNC) { + log (string.Format ("got {0:X} when expecting {1:X}\n", (int)c, (int)Code.INSYNC), 2); + throw new Exception ("BAD SYNC"); + } + c = (Code)recv (); + if (c != Code.OK) { + log (string.Format ("got {0:X} when expecting {1:X}\n", (int)c, (int)Code.EOC), 2); + throw new Exception ("BAD STATUS"); + } + } catch { + log ("FAIL: lost synchronisation with the bootloader\n"); + throw new Exception ("SYNC LOST"); + } + log ("in sync\n", 5); + } + + /// + /// Send the specified code to the bootloader. + /// + /// + /// Code to send. + /// + private void send (Code code) + { + byte[] b = new byte[] { (byte)code }; + + log ("send ", 5); + foreach (byte x in b) { + log (string.Format (" {0:X}", x), 5); + } + log ("\n", 5); + + port.Write (b, 0, 1); + } + + /// + /// Send the specified byte to the bootloader. + /// + /// + /// Data byte to send. + /// + private void send (byte data) + { + byte[] b = new byte[] { data }; + + log ("send ", 5); + foreach (byte x in b) { + log (string.Format (" {0:X}", x), 5); + } + log ("\n", 5); + + port.Write (b, 0, 1); + } + + /// + /// Send the specified 16-bit value, LSB first. + /// + /// + /// Data value to send. + /// + private void send (UInt16 data) + { + byte[] b = new byte[2] { (byte)(data & 0xff), (byte)(data >> 8) }; + + log ("send ", 5); + foreach (byte x in b) { + log (string.Format (" {0:X}", x), 5); + } + log ("\n", 5); + + port.Write (b, 0, 2); + } + + /// + /// Receive a byte. + /// + private byte recv () + { + byte b; + + b = (byte)port.ReadByte (); + + log (string.Format ("recv {0:X}\n", b), 5); + + return b; + } + + private void log (string message, int level = 0) + { + if (LogEvent != null) + LogEvent (message, level); + } + + private void progress (double completed) + { + if (ProgressEvent != null) + ProgressEvent (completed); + } + } +} + diff --git a/Tools/ArdupilotMegaPlanner/SerialInput.cs b/Tools/ArdupilotMegaPlanner/SerialInput.cs index d7ebd2c98d..2d9eeae5a6 100644 --- a/Tools/ArdupilotMegaPlanner/SerialInput.cs +++ b/Tools/ArdupilotMegaPlanner/SerialInput.cs @@ -64,7 +64,7 @@ namespace ArdupilotMega { alt = (100 * MainV2.cs.multiplierdist).ToString("0"); } - if (DialogResult.Cancel == Common.InputBox("Enter Alt", "Enter Alt", ref alt)) + if (DialogResult.Cancel == Common.InputBox("Enter Alt", "Enter Alt (relative to home alt)", ref alt)) return; intalt = (int)(100 * MainV2.cs.multiplierdist); diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index 6d7a0423c2a7195963ce35c1a1747614427e326a..d969b49684f3b567212b4086c7e1e54b09373df7 100644 GIT binary patch delta 271307 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

_WTM$3)P*tWBte=0WhD^bZ?p7F&axanIOpP2h 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 Bt-}BS From 24345d4f43e967e2307b1e8de82b773cd1dfd14d Mon Sep 17 00:00:00 2001 From: Jason Short Date: Thu, 23 Feb 2012 22:01:44 -0800 Subject: [PATCH 026/122] Loiter updates --- ArduCopter/navigation.pde | 89 ++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 39 deletions(-) diff --git a/ArduCopter/navigation.pde b/ArduCopter/navigation.pde index ef534425fc..a95d16ce9f 100644 --- a/ArduCopter/navigation.pde +++ b/ArduCopter/navigation.pde @@ -101,33 +101,37 @@ static void calc_location_error(struct Location *next_loc) #define NAV_ERR_MAX 600 static void calc_loiter(int x_error, int y_error) { - // East/West - int16_t x_target_speed = g.pi_loiter_lon.get_p(x_error); - x_target_speed = constrain(x_error, -250, 250); + int16_t x_target_speed, y_target_speed; + int16_t x_iterm, y_iterm; + + // East / West + x_target_speed = g.pi_loiter_lon.get_p(x_error); // not contstrained yet + x_target_speed = constrain(x_target_speed, -250, 250); // limit to 2.5m/s travel speed + x_rate_error = x_target_speed - x_actual_speed; // calc the speed error + nav_lon = g.pid_loiter_rate_lon.get_pid(x_rate_error, dTnav); + nav_lon = constrain(nav_lon, -3000, 3000); // 30° + + // North / South + y_target_speed = g.pi_loiter_lat.get_p(y_error); + y_target_speed = constrain(y_target_speed, -250, 250); + y_rate_error = y_target_speed - y_actual_speed; + nav_lat = g.pid_loiter_rate_lat.get_pid(y_rate_error, dTnav); + nav_lat = constrain(nav_lat, -3000, 3000); // 30° + + // copy over I term to Nav_Rate + g.pid_nav_lon.set_integrator(g.pid_loiter_rate_lon.get_integrator()); + g.pid_nav_lat.set_integrator(g.pid_loiter_rate_lat.get_integrator()); + + // Wind I term based on location error, // limit windup - x_error = constrain(x_error, -NAV_ERR_MAX, NAV_ERR_MAX); - int16_t x_iterm = g.pi_loiter_lon.get_i(x_error, dTnav); - x_rate_error = x_target_speed - x_actual_speed; - - // North/South - int16_t y_target_speed = g.pi_loiter_lat.get_p(y_error); - y_target_speed = constrain(y_error, -250, 250); - // limit windup - y_error = constrain(y_error, -NAV_ERR_MAX, NAV_ERR_MAX); - int16_t y_iterm = g.pi_loiter_lat.get_i(y_error, dTnav); - y_rate_error = y_target_speed - y_actual_speed; - - //nav_lon = g.pid_loiter_rate_lon.get_pid(x_rate_error, dTnav); - //nav_lat = g.pid_loiter_rate_lat.get_pid(y_rate_error, dTnav); - nav_lon = g.pid_nav_lon.get_pid(x_rate_error, dTnav); - nav_lat = g.pid_nav_lat.get_pid(y_rate_error, dTnav); - nav_lon = constrain(nav_lon, -3000, 3000); - nav_lat = constrain(nav_lat, -3000, 3000); - - nav_lat = nav_lat + y_iterm; - nav_lon = nav_lon + x_iterm; - - + /* + x_error = constrain(x_error, -NAV_ERR_MAX, NAV_ERR_MAX); + y_error = constrain(y_error, -NAV_ERR_MAX, NAV_ERR_MAX); + x_iterm = g.pi_loiter_lon.get_i(x_error, dTnav); + y_iterm = g.pi_loiter_lat.get_i(y_error, dTnav); + nav_lat = nav_lat + y_iterm; + nav_lon = nav_lon + x_iterm; + */ /* int8_t ttt = 1.0/dTnav; @@ -170,24 +174,31 @@ static void calc_nav_rate(int max_speed) update_crosstrack(); // nav_bearing includes crosstrack - float temp = (9000l - nav_bearing) * RADX100; + float temp = (9000l - nav_bearing) * RADX100; - x_rate_error = (cos(temp) * max_speed) - x_actual_speed; // 413 - x_rate_error = constrain(x_rate_error, -1000, 1000); - int16_t x_iterm = g.pi_loiter_lon.get_i(x_rate_error, dTnav); + // East / West + x_rate_error = (cos(temp) * max_speed) - x_actual_speed; // 413 + x_rate_error = constrain(x_rate_error, -1000, 1000); + nav_lon = g.pid_nav_lon.get_pid(x_rate_error, dTnav); + nav_lon = constrain(nav_lon, -3000, 3000); - y_rate_error = (sin(temp) * max_speed) - y_actual_speed; // 413 - y_rate_error = constrain(y_rate_error, -1000, 1000); // added a rate error limit to keep pitching down to a minimum - int16_t y_iterm = g.pi_loiter_lat.get_i(y_rate_error, dTnav); + // North / South + y_rate_error = (sin(temp) * max_speed) - y_actual_speed; // 413 + y_rate_error = constrain(y_rate_error, -1000, 1000); // added a rate error limit to keep pitching down to a minimum + nav_lat = g.pid_nav_lat.get_pid(y_rate_error, dTnav); + nav_lat = constrain(nav_lat, -3000, 3000); - nav_lon = g.pid_nav_lon.get_pid(x_rate_error, dTnav); - nav_lat = g.pid_nav_lat.get_pid(y_rate_error, dTnav); + // copy over I term to Loiter_Rate + g.pid_loiter_rate_lon.set_integrator(g.pid_nav_lon.get_integrator()); + g.pid_loiter_rate_lat.set_integrator(g.pid_nav_lat.get_integrator()); + + //int16_t x_iterm = g.pi_loiter_lon.get_i(x_rate_error, dTnav); + //int16_t y_iterm = g.pi_loiter_lat.get_i(y_rate_error, dTnav); + + //nav_lon = nav_lon + x_iterm; + //nav_lat = nav_lat + y_iterm; - nav_lon = constrain(nav_lon, -3000, 3000); - nav_lat = constrain(nav_lat, -3000, 3000); - nav_lon = nav_lon + x_iterm; - nav_lat = nav_lat + y_iterm; /* Serial.printf("max_sp %d,\t x_sp %d, y_sp %d,\t x_re: %d, y_re: %d, \tnav_lon: %d, nav_lat: %d, Xi:%d, Yi:%d, \t XE %d \n", From 385828824d94a1a22a8ce788021e012f25c1bb51 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Thu, 23 Feb 2012 22:02:23 -0800 Subject: [PATCH 027/122] updated Gains for Marco's loiter test --- ArduCopter/config.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 6d79563a19..319a47c7e9 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -651,7 +651,7 @@ // Loiter control gains // #ifndef LOITER_P -# define LOITER_P .2 // was .25 in previous +# define LOITER_P .8 #endif #ifndef LOITER_I # define LOITER_I 0.0 @@ -664,26 +664,26 @@ // Loiter Navigation control gains // #ifndef LOITER_RATE_P -# define LOITER_RATE_P 3.0 // +# define LOITER_RATE_P 3.5 // #endif #ifndef LOITER_RATE_I -# define LOITER_RATE_I 0.1 // Wind control +# define LOITER_RATE_I 0.2 // Wind control #endif #ifndef LOITER_RATE_D -# define LOITER_RATE_D 0.00 // +# define LOITER_RATE_D 0.00 // #endif #ifndef LOITER_RATE_IMAX -# define LOITER_RATE_IMAX 30 // degrees +# define LOITER_RATE_IMAX 30 // degrees #endif ////////////////////////////////////////////////////////////////////////////// // WP Navigation control gains // #ifndef NAV_P -# define NAV_P 3.0 // +# define NAV_P 3.5 // #endif #ifndef NAV_I -# define NAV_I 0.1 // Wind control +# define NAV_I 0.2 // Wind control #endif #ifndef NAV_D # define NAV_D 0.00 // From 57e5eee8c8e2d146a6100b79793c87cdeb1af733 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Fri, 24 Feb 2012 20:18:40 +0900 Subject: [PATCH 028/122] TradHeli - increase max yaw input to 45 degrees --- ArduCopter/Attitude.pde | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ArduCopter/Attitude.pde b/ArduCopter/Attitude.pde index 5b3c3c024c..793bbbdd73 100644 --- a/ArduCopter/Attitude.pde +++ b/ArduCopter/Attitude.pde @@ -62,8 +62,13 @@ get_stabilize_yaw(int32_t target_angle) // angle error target_angle = wrap_180(target_angle - dcm.yaw_sensor); +#if FRAME_CONFIG == HELI_FRAME // cannot use rate control for helicopters + // limit the error we're feeding to the PID + target_angle = constrain(target_angle, -4500, 4500); +#else // limit the error we're feeding to the PID target_angle = constrain(target_angle, -2000, 2000); +#endif // conver to desired Rate: int32_t target_rate = g.pi_stabilize_yaw.get_p(target_angle); From 23cc9c6132be24a32a343f196bd979ec1fa2ae7f Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Fri, 24 Feb 2012 19:39:02 +0800 Subject: [PATCH 029/122] APM Planner 1.1.41 fix mono ssl issue modify log download fix param dl on arduplane 2.28 (2x nulls in param list) fix connect cancel mono - add more comports more error checking on radio --- Tools/ArdupilotMegaPlanner/Common.cs | 18 +- Tools/ArdupilotMegaPlanner/Log.cs | 14 +- Tools/ArdupilotMegaPlanner/MAVLink.cs | 27 +- Tools/ArdupilotMegaPlanner/MainV2.Designer.cs | 1 + Tools/ArdupilotMegaPlanner/MainV2.cs | 13 + Tools/ArdupilotMegaPlanner/Program.cs | 2 +- .../Properties/AssemblyInfo.cs | 2 +- .../Radio/3DRradio.Designer.cs | 113 +++-- Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs | 387 +++++++++++------- Tools/ArdupilotMegaPlanner/Radio/Uploader.cs | 10 +- .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 937472 -> 941568 bytes 11 files changed, 387 insertions(+), 200 deletions(-) diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs index 79c64e275f..bb2beb1726 100644 --- a/Tools/ArdupilotMegaPlanner/Common.cs +++ b/Tools/ArdupilotMegaPlanner/Common.cs @@ -12,6 +12,8 @@ using GMap.NET; using GMap.NET.WindowsForms; using GMap.NET.WindowsForms.Markers; +using System.Security.Cryptography.X509Certificates; + using System.Net; using System.Net.Sockets; using System.Xml; // config file @@ -267,6 +269,15 @@ namespace ArdupilotMega } } + class NoCheckCertificatePolicy : ICertificatePolicy + { + public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) + { + return true; + } + } + + public class Common { public enum distances @@ -490,10 +501,15 @@ namespace ArdupilotMega return true; } #endif + + public static bool getFilefromNet(string url,string saveto) { try { + // this is for mono to a ssl server + ServicePointManager.CertificatePolicy = new NoCheckCertificatePolicy(); + // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create(url); request.Timeout = 5000; @@ -535,7 +551,7 @@ namespace ArdupilotMega return true; } - catch { return false; } + catch (Exception ex) { Console.WriteLine("getFilefromNet(): " + ex.ToString()); return false; } } public static Type getModes() diff --git a/Tools/ArdupilotMegaPlanner/Log.cs b/Tools/ArdupilotMegaPlanner/Log.cs index cb5addc411..6d75642413 100644 --- a/Tools/ArdupilotMegaPlanner/Log.cs +++ b/Tools/ArdupilotMegaPlanner/Log.cs @@ -83,11 +83,11 @@ namespace ArdupilotMega threadrun = true; - System.Threading.Thread.Sleep(4000); + System.Threading.Thread.Sleep(2000); try { - comPort.Write("\n\n\n\n"); + comPort.Write("\n\n\n\n"); // more in "connecting" } catch { } @@ -187,8 +187,14 @@ namespace ArdupilotMega { case serialstatus.Connecting: - if (line.Contains("reset to FLY") || line.Contains("interactive setup") || line.Contains("CLI:") || line.Contains("Ardu")) + if (line.Contains("ENTER") || line.Contains("GROUND START") || line.Contains("reset to FLY") || line.Contains("interactive setup") || line.Contains("CLI") || line.Contains("Ardu")) { + try + { + comPort.Write("\n\n\n\n"); + } + catch { } + comPort.Write("logs\r"); status = serialstatus.Done; } @@ -276,7 +282,7 @@ namespace ArdupilotMega Console.Write(line); - TXT_seriallog.AppendText(line); + TXT_seriallog.AppendText(line.Replace((char)0x0,' ')); // auto scroll if (TXT_seriallog.TextLength >= 10000) diff --git a/Tools/ArdupilotMegaPlanner/MAVLink.cs b/Tools/ArdupilotMegaPlanner/MAVLink.cs index bcf6f63d50..bb707e072c 100644 --- a/Tools/ArdupilotMegaPlanner/MAVLink.cs +++ b/Tools/ArdupilotMegaPlanner/MAVLink.cs @@ -285,6 +285,14 @@ namespace ArdupilotMega if (getparams) getParamListBG(); + + if (frmProgressReporter.doWorkArgs.CancelAcknowledged == true) + { + MainV2.givecomport = false; + if (BaseStream.IsOpen) + BaseStream.Close(); + return; + } } catch (Exception e) { @@ -592,7 +600,7 @@ namespace ArdupilotMega private Hashtable getParamListBG() { MainV2.givecomport = true; - List missed = new List(); + List got = new List(); // clear old param = new Hashtable(); @@ -611,8 +619,8 @@ namespace ArdupilotMega DateTime start = DateTime.Now; DateTime restart = DateTime.Now; - - while (param_count < param_total) + + while (got.Count < param_total) { if (frmProgressReporter.doWorkArgs.CancelRequested) @@ -634,7 +642,7 @@ namespace ArdupilotMega continue; } MainV2.givecomport = false; - throw new Exception("Timeout on read - getParamList"); + throw new Exception("Timeout on read - getParamList " + param_count +" "+ param_total); } byte[] buffer = readPacket(); @@ -662,7 +670,9 @@ namespace ArdupilotMega } // check if we already have it - if (param.ContainsKey(paramID)) { + if (got.Contains(par.param_index)) + { + //Console.WriteLine("Already got '"+paramID+"'"); continue; } @@ -671,10 +681,11 @@ namespace ArdupilotMega modifyParamForDisplay(true, paramID, ref par.param_value); param[paramID] = (par.param_value); param_count++; + got.Add(par.param_index); // if (Progress != null) // Progress((param.Count * 100) / param_total, "Got param " + paramID); - this.frmProgressReporter.UpdateProgressAndStatus((param.Count * 100) / param_total, "Got param " + paramID); + this.frmProgressReporter.UpdateProgressAndStatus((got.Count * 100) / param_total, "Got param " + paramID); } else { @@ -685,11 +696,11 @@ namespace ArdupilotMega } } - if (param.Count != param_total) + if (got.Count != param_total) { if (retrys > 0) { - this.frmProgressReporter.UpdateProgressAndStatus((param.Count * 100) / param_total, "Getting missed params"); + this.frmProgressReporter.UpdateProgressAndStatus((got.Count * 100) / param_total, "Getting missed params"); retrys--; goto goagain; } diff --git a/Tools/ArdupilotMegaPlanner/MainV2.Designer.cs b/Tools/ArdupilotMegaPlanner/MainV2.Designer.cs index 72bec1db1e..c4d10ef9de 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.Designer.cs @@ -134,6 +134,7 @@ this.CMB_serialport.Name = "CMB_serialport"; this.CMB_serialport.Size = new System.Drawing.Size(150, 76); this.CMB_serialport.SelectedIndexChanged += new System.EventHandler(this.CMB_serialport_SelectedIndexChanged); + this.CMB_serialport.Enter += new System.EventHandler(this.CMB_serialport_Enter); this.CMB_serialport.Click += new System.EventHandler(this.CMB_serialport_Click); // // MainMenu diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index 0756eadced..97252906cc 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -249,10 +249,18 @@ namespace ArdupilotMega { string[] devs = new string[0]; + + Console.WriteLine("Get Comports"); + if (MONO) { if (Directory.Exists("/dev/")) + { + if (Directory.Exists("/dev/serial/by-id/")) + devs = Directory.GetFiles("/dev/serial/by-id/","*usb*"); devs = Directory.GetFiles("/dev/", "*ACM*"); + devs = Directory.GetFiles("/dev/", "ttyUSB*"); + } } string[] ports = SerialPort.GetPortNames(); @@ -2137,5 +2145,10 @@ namespace ArdupilotMega } catch (Exception) { } } + + private void CMB_serialport_Enter(object sender, EventArgs e) + { + CMB_serialport_Click(sender, e); + } } } \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Program.cs b/Tools/ArdupilotMegaPlanner/Program.cs index 58c39688c0..334e01a41f 100644 --- a/Tools/ArdupilotMegaPlanner/Program.cs +++ b/Tools/ArdupilotMegaPlanner/Program.cs @@ -71,7 +71,7 @@ namespace ArdupilotMega MessageBox.Show("You are missing some DLL's. Please extract the zip file somewhere. OR Use the update feature from the menu"); return; } - DialogResult dr = MessageBox.Show("An error has occurred\nReport this Error??? "+ex.ToString(), "Send Error", MessageBoxButtons.YesNo); + DialogResult dr = MessageBox.Show("An error has occurred\n"+ex.ToString() + "\n\nReport this Error???", "Send Error", MessageBoxButtons.YesNo); if (DialogResult.Yes == dr) { try diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index e8a4d66854..8d587ae932 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.1.41")] +[assembly: AssemblyFileVersion("1.1.42")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs index bdf1a242d2..18605e5c01 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs @@ -64,15 +64,18 @@ this.label12 = new System.Windows.Forms.Label(); this.BUT_savesettings = new ArdupilotMega.MyButton(); this.BUT_getcurrent = new ArdupilotMega.MyButton(); - this.lbl_status = new ArdupilotMega.MyLabel(); + this.lbl_status = new System.Windows.Forms.Label(); this.BUT_upload = new ArdupilotMega.MyButton(); + this.BUT_syncS2 = new ArdupilotMega.MyButton(); + this.BUT_syncS3 = new ArdupilotMega.MyButton(); + this.BUT_syncS5 = new ArdupilotMega.MyButton(); this.SuspendLayout(); // // Progressbar // this.Progressbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.Progressbar.Location = new System.Drawing.Point(12, 368); + this.Progressbar.Location = new System.Drawing.Point(12, 402); this.Progressbar.Name = "Progressbar"; this.Progressbar.Size = new System.Drawing.Size(294, 36); this.Progressbar.TabIndex = 2; @@ -90,7 +93,7 @@ "4", "2", "1"}); - this.S1.Location = new System.Drawing.Point(87, 103); + this.S1.Location = new System.Drawing.Point(87, 141); this.S1.Name = "S1"; this.S1.Size = new System.Drawing.Size(80, 21); this.S1.TabIndex = 4; @@ -99,7 +102,7 @@ // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(15, 111); + this.label1.Location = new System.Drawing.Point(15, 149); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(32, 13); this.label1.TabIndex = 5; @@ -107,7 +110,7 @@ // // S0 // - this.S0.Location = new System.Drawing.Point(87, 77); + this.S0.Location = new System.Drawing.Point(87, 115); this.S0.Name = "S0"; this.S0.ReadOnly = true; this.S0.Size = new System.Drawing.Size(80, 20); @@ -116,7 +119,7 @@ // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(15, 84); + this.label2.Location = new System.Drawing.Point(15, 122); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(39, 13); this.label2.TabIndex = 8; @@ -125,7 +128,7 @@ // label3 // this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(15, 138); + this.label3.Location = new System.Drawing.Point(15, 176); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(53, 13); this.label3.TabIndex = 10; @@ -142,7 +145,7 @@ "64", "32", "16"}); - this.S2.Location = new System.Drawing.Point(87, 130); + this.S2.Location = new System.Drawing.Point(87, 168); this.S2.Name = "S2"; this.S2.Size = new System.Drawing.Size(80, 21); this.S2.TabIndex = 9; @@ -151,7 +154,7 @@ // label4 // this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(15, 165); + this.label4.Location = new System.Drawing.Point(15, 203); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(38, 13); this.label4.TabIndex = 12; @@ -191,7 +194,7 @@ "28", "29", "30"}); - this.S3.Location = new System.Drawing.Point(87, 157); + this.S3.Location = new System.Drawing.Point(87, 195); this.S3.Name = "S3"; this.S3.Size = new System.Drawing.Size(80, 21); this.S3.TabIndex = 11; @@ -200,7 +203,7 @@ // label5 // this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(15, 192); + this.label5.Location = new System.Drawing.Point(15, 230); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(52, 13); this.label5.TabIndex = 14; @@ -231,7 +234,7 @@ "18", "19", "20"}); - this.S4.Location = new System.Drawing.Point(87, 184); + this.S4.Location = new System.Drawing.Point(87, 222); this.S4.Name = "S4"; this.S4.Size = new System.Drawing.Size(80, 21); this.S4.TabIndex = 13; @@ -240,7 +243,7 @@ // label6 // this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(15, 219); + this.label6.Location = new System.Drawing.Point(15, 257); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(28, 13); this.label6.TabIndex = 16; @@ -248,7 +251,7 @@ // // S5 // - this.S5.Location = new System.Drawing.Point(87, 211); + this.S5.Location = new System.Drawing.Point(87, 249); this.S5.Name = "S5"; this.S5.Size = new System.Drawing.Size(80, 21); this.S5.TabIndex = 15; @@ -257,7 +260,7 @@ // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(15, 246); + this.label7.Location = new System.Drawing.Point(15, 284); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(44, 13); this.label7.TabIndex = 18; @@ -265,7 +268,7 @@ // // S6 // - this.S6.Location = new System.Drawing.Point(87, 238); + this.S6.Location = new System.Drawing.Point(87, 276); this.S6.Name = "S6"; this.S6.Size = new System.Drawing.Size(80, 21); this.S6.TabIndex = 17; @@ -274,7 +277,7 @@ // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(15, 273); + this.label8.Location = new System.Drawing.Point(15, 311); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(68, 13); this.label8.TabIndex = 20; @@ -282,7 +285,7 @@ // // S7 // - this.S7.Location = new System.Drawing.Point(87, 265); + this.S7.Location = new System.Drawing.Point(87, 303); this.S7.Name = "S7"; this.S7.Size = new System.Drawing.Size(80, 21); this.S7.TabIndex = 19; @@ -290,7 +293,7 @@ // // RS7 // - this.RS7.Location = new System.Drawing.Point(201, 265); + this.RS7.Location = new System.Drawing.Point(201, 303); this.RS7.Name = "RS7"; this.RS7.Size = new System.Drawing.Size(80, 21); this.RS7.TabIndex = 29; @@ -298,7 +301,7 @@ // // RS6 // - this.RS6.Location = new System.Drawing.Point(201, 238); + this.RS6.Location = new System.Drawing.Point(201, 276); this.RS6.Name = "RS6"; this.RS6.Size = new System.Drawing.Size(80, 21); this.RS6.TabIndex = 28; @@ -306,7 +309,7 @@ // // RS5 // - this.RS5.Location = new System.Drawing.Point(201, 211); + this.RS5.Location = new System.Drawing.Point(201, 249); this.RS5.Name = "RS5"; this.RS5.Size = new System.Drawing.Size(80, 21); this.RS5.TabIndex = 27; @@ -337,7 +340,7 @@ "18", "19", "20"}); - this.RS4.Location = new System.Drawing.Point(201, 184); + this.RS4.Location = new System.Drawing.Point(201, 222); this.RS4.Name = "RS4"; this.RS4.Size = new System.Drawing.Size(80, 21); this.RS4.TabIndex = 26; @@ -377,7 +380,7 @@ "28", "29", "30"}); - this.RS3.Location = new System.Drawing.Point(201, 157); + this.RS3.Location = new System.Drawing.Point(201, 195); this.RS3.Name = "RS3"; this.RS3.Size = new System.Drawing.Size(80, 21); this.RS3.TabIndex = 25; @@ -394,7 +397,7 @@ "64", "32", "16"}); - this.RS2.Location = new System.Drawing.Point(201, 130); + this.RS2.Location = new System.Drawing.Point(201, 168); this.RS2.Name = "RS2"; this.RS2.Size = new System.Drawing.Size(80, 21); this.RS2.TabIndex = 24; @@ -413,7 +416,7 @@ "4", "2", "1"}); - this.RS1.Location = new System.Drawing.Point(201, 103); + this.RS1.Location = new System.Drawing.Point(201, 141); this.RS1.Name = "RS1"; this.RS1.Size = new System.Drawing.Size(80, 21); this.RS1.TabIndex = 22; @@ -421,7 +424,7 @@ // // RS0 // - this.RS0.Location = new System.Drawing.Point(201, 77); + this.RS0.Location = new System.Drawing.Point(201, 115); this.RS0.Name = "RS0"; this.RS0.ReadOnly = true; this.RS0.Size = new System.Drawing.Size(80, 20); @@ -464,9 +467,10 @@ // RSSI // this.RSSI.Location = new System.Drawing.Point(87, 51); + this.RSSI.Multiline = true; this.RSSI.Name = "RSSI"; this.RSSI.ReadOnly = true; - this.RSSI.Size = new System.Drawing.Size(194, 20); + this.RSSI.Size = new System.Drawing.Size(194, 58); this.RSSI.TabIndex = 34; // // label11 @@ -489,7 +493,7 @@ // // BUT_savesettings // - this.BUT_savesettings.Location = new System.Drawing.Point(99, 292); + this.BUT_savesettings.Location = new System.Drawing.Point(99, 330); this.BUT_savesettings.Name = "BUT_savesettings"; this.BUT_savesettings.Size = new System.Drawing.Size(75, 39); this.BUT_savesettings.TabIndex = 21; @@ -499,7 +503,7 @@ // // BUT_getcurrent // - this.BUT_getcurrent.Location = new System.Drawing.Point(18, 292); + this.BUT_getcurrent.Location = new System.Drawing.Point(18, 330); this.BUT_getcurrent.Name = "BUT_getcurrent"; this.BUT_getcurrent.Size = new System.Drawing.Size(75, 39); this.BUT_getcurrent.TabIndex = 6; @@ -511,16 +515,15 @@ // this.lbl_status.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.lbl_status.BackColor = System.Drawing.SystemColors.ActiveCaption; - this.lbl_status.Location = new System.Drawing.Point(12, 340); + this.lbl_status.BackColor = System.Drawing.Color.Transparent; + this.lbl_status.Location = new System.Drawing.Point(12, 374); this.lbl_status.Name = "lbl_status"; - this.lbl_status.resize = false; this.lbl_status.Size = new System.Drawing.Size(294, 22); this.lbl_status.TabIndex = 3; // // BUT_upload // - this.BUT_upload.Location = new System.Drawing.Point(180, 292); + this.BUT_upload.Location = new System.Drawing.Point(180, 330); this.BUT_upload.Name = "BUT_upload"; this.BUT_upload.Size = new System.Drawing.Size(127, 39); this.BUT_upload.TabIndex = 0; @@ -528,11 +531,44 @@ this.BUT_upload.UseVisualStyleBackColor = true; this.BUT_upload.Click += new System.EventHandler(this.BUT_upload_Click); // + // BUT_syncS2 + // + this.BUT_syncS2.Location = new System.Drawing.Point(173, 168); + this.BUT_syncS2.Name = "BUT_syncS2"; + this.BUT_syncS2.Size = new System.Drawing.Size(22, 23); + this.BUT_syncS2.TabIndex = 38; + this.BUT_syncS2.Text = ">"; + this.BUT_syncS2.UseVisualStyleBackColor = true; + this.BUT_syncS2.Click += new System.EventHandler(this.BUT_syncS2_Click); + // + // BUT_syncS3 + // + this.BUT_syncS3.Location = new System.Drawing.Point(173, 195); + this.BUT_syncS3.Name = "BUT_syncS3"; + this.BUT_syncS3.Size = new System.Drawing.Size(22, 23); + this.BUT_syncS3.TabIndex = 39; + this.BUT_syncS3.Text = ">"; + this.BUT_syncS3.UseVisualStyleBackColor = true; + this.BUT_syncS3.Click += new System.EventHandler(this.BUT_syncS3_Click); + // + // BUT_syncS5 + // + this.BUT_syncS5.Location = new System.Drawing.Point(173, 247); + this.BUT_syncS5.Name = "BUT_syncS5"; + this.BUT_syncS5.Size = new System.Drawing.Size(22, 23); + this.BUT_syncS5.TabIndex = 40; + this.BUT_syncS5.Text = ">"; + this.BUT_syncS5.UseVisualStyleBackColor = true; + this.BUT_syncS5.Click += new System.EventHandler(this.BUT_syncS5_Click); + // // _3DRradio // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(318, 416); + this.ClientSize = new System.Drawing.Size(318, 444); + this.Controls.Add(this.BUT_syncS5); + this.Controls.Add(this.BUT_syncS3); + this.Controls.Add(this.BUT_syncS2); this.Controls.Add(this.label12); this.Controls.Add(this.label11); this.Controls.Add(this.RSSI); @@ -569,7 +605,9 @@ this.Controls.Add(this.lbl_status); this.Controls.Add(this.Progressbar); this.Controls.Add(this.BUT_upload); - this.MinimumSize = new System.Drawing.Size(334, 454); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(334, 482); this.Name = "_3DRradio"; this.Text = "3DRradio"; this.ResumeLayout(false); @@ -581,7 +619,7 @@ private MyButton BUT_upload; private System.Windows.Forms.ProgressBar Progressbar; - private MyLabel lbl_status; + private System.Windows.Forms.Label lbl_status; private System.Windows.Forms.ComboBox S1; private System.Windows.Forms.Label label1; private MyButton BUT_getcurrent; @@ -616,5 +654,8 @@ private System.Windows.Forms.TextBox RSSI; private System.Windows.Forms.Label label11; private System.Windows.Forms.Label label12; + private MyButton BUT_syncS2; + private MyButton BUT_syncS3; + private MyButton BUT_syncS5; } } \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs index 5b2f350eb9..2148da0e73 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs @@ -22,6 +22,9 @@ namespace ArdupilotMega public _3DRradio() { InitializeComponent(); + + S3.DataSource = Enumerable.Range(0, 500).ToArray(); + RS3.DataSource = S3.DataSource; } bool getFirmware() @@ -50,13 +53,21 @@ namespace ArdupilotMega uploader.Uploader uploader = new uploader.Uploader(); - comPort.PortName = MainV2.comPort.BaseStream.PortName; - comPort.BaudRate = 115200; + try + { + comPort.PortName = MainV2.comPort.BaseStream.PortName; + comPort.BaudRate = 115200; - comPort.Open(); + comPort.Open(); + + } + catch { MessageBox.Show("Invalid ComPort or in use"); return; } bool bootloadermode = false; + uploader.ProgressEvent += new ProgressEventHandler(uploader_ProgressEvent); + uploader.LogEvent += new LogEventHandler(uploader_LogEvent); + try { uploader_ProgressEvent(0); @@ -66,39 +77,17 @@ namespace ArdupilotMega uploader_LogEvent("In Bootloader Mode"); bootloadermode = true; } - catch { uploader_LogEvent("Trying Firmware Mode"); bootloadermode = false; } - - uploader.ProgressEvent += new ProgressEventHandler(uploader_ProgressEvent); - uploader.LogEvent += new LogEventHandler(uploader_LogEvent); - - if (!bootloadermode) - { - comPort.BaudRate = 57600; - // clear buffer - comPort.DiscardInBuffer(); - // setup a known enviroment - comPort.Write("\r\n"); - // wait - Sleep(1000); - // send config string - comPort.Write("+++"); - // wait - Sleep(1100); - // check for config responce "OK" - if (comPort.ReadExisting().Contains("OK")) - { - - } - - comPort.Write("\r\nATI\r\n"); - - Sleep(100); - - version = comPort.ReadExisting(); + catch { + comPort.Close(); + comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; + comPort.Open(); + uploader_LogEvent("Trying Firmware Mode"); + bootloadermode = false; } - if (version.Contains("on HM-TRP") || bootloadermode) + + if (bootloadermode || doConnect(comPort)) { if (getFirmware()) { @@ -116,20 +105,22 @@ namespace ArdupilotMega if (!bootloadermode) { - - comPort.Write("AT&UPDATE\r\n"); - string left = comPort.ReadExisting(); - Console.WriteLine(left); - Sleep(700); - comPort.BaudRate = 115200; - + try + { + comPort.Write("AT&UPDATE\r\n"); + string left = comPort.ReadExisting(); + Console.WriteLine(left); + Sleep(700); + comPort.BaudRate = 115200; + } + catch { } } try { uploader.upload(comPort, iHex); } - catch (Exception ex) { MessageBox.Show("Upload Failed " + ex.Message); goto exit; } + catch (Exception ex) { MessageBox.Show("Upload Failed " + ex.Message); } } else { @@ -144,6 +135,7 @@ namespace ArdupilotMega exit: if (comPort.IsOpen) comPort.Close(); + } void iHex_ProgressEvent(double completed) @@ -198,13 +190,19 @@ namespace ArdupilotMega { SerialPort comPort = new SerialPort(); + try { + comPort.PortName = MainV2.comPort.BaseStream.PortName; - comPort.BaudRate = 57600; + comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; comPort.ReadTimeout = 4000; comPort.Open(); + + } + catch { MessageBox.Show("Invalid ComPort or in use"); return; } + lbl_status.Text = "Connecting"; if (doConnect(comPort)) @@ -213,18 +211,16 @@ namespace ArdupilotMega lbl_status.Text = "Doing Command ATI & RTI"; - ATI.Text = doCommand(comPort, "ATI1"); + ATI.Text = doCommand(comPort, "ATI1").Trim(); - RTI.Text = doCommand(comPort, "RTI1"); + RTI.Text = doCommand(comPort, "RTI1").Trim(); - RSSI.Text = doCommand(comPort, "ATI7"); + RSSI.Text = doCommand(comPort, "ATI7").Trim(); lbl_status.Text = "Doing Command ATI5"; string answer = doCommand(comPort, "ATI5"); - Console.Write("Local\n" + answer); - string[] items = answer.Split('\n'); foreach (string item in items) @@ -253,6 +249,12 @@ namespace ArdupilotMega } // remote + foreach (Control ctl in this.Controls) + { + if (ctl.Name.StartsWith("RS") && ctl.Name != "RSSI") + ctl.ResetText(); + } + comPort.DiscardInBuffer(); @@ -260,8 +262,6 @@ namespace ArdupilotMega answer = doCommand(comPort, "RTI5"); - Console.Write("Remote\n" + answer); - items = answer.Split('\n'); foreach (string item in items) @@ -272,58 +272,120 @@ namespace ArdupilotMega if (values.Length == 3) { - Control[] controls = this.Controls.Find("R"+values[0].Trim(), false); + Control[] controls = this.Controls.Find("R" + values[0].Trim(), false); if (controls[0].GetType() == typeof(CheckBox)) { ((CheckBox)controls[0]).Checked = values[2].Trim() == "1"; } - else + else if (controls[0].GetType() == typeof(TextBox)) { - controls[0].Text = values[2].Trim(); + ((TextBox)controls[0]).Text = values[2].Trim(); } + else if (controls[0].GetType() == typeof(ComboBox)) + { + ((ComboBox)controls[0]).SelectedText = values[2].Trim(); + } + } + else + { + Console.WriteLine("Odd config line :" + item); } } } + // off hook + doCommand(comPort, "ATO"); + lbl_status.Text = "Done"; } else { + + // off hook + doCommand(comPort, "ATO"); + lbl_status.Text = "Fail"; MessageBox.Show("Failed to enter command mode"); } - comPort.WriteLine("ATZ"); - comPort.Close(); - } - string doCommand(SerialPort comPort, string cmd) + string Serial_ReadLine(SerialPort comPort) { + StringBuilder sb = new StringBuilder(); + DateTime Deadline = DateTime.Now.AddMilliseconds(comPort.ReadTimeout); + + while (DateTime.Now < Deadline) + { + if (comPort.BytesToRead > 0) + { + byte data = (byte)comPort.ReadByte(); + sb.Append((char)data); + if (data == '\n') + break; + } + } + + return sb.ToString(); + } + + string doCommand(SerialPort comPort, string cmd, int level = 0) + { + if (!comPort.IsOpen) + return ""; + + comPort.ReadTimeout = 1000; + // setup to known state + comPort.Write("\r\n"); + // alow some time to gather thoughts Sleep(100); + // ignore all existing data comPort.DiscardInBuffer(); + lbl_status.Text = "Doing Command "+cmd; + Console.WriteLine("Doing Command "+cmd); + // write command comPort.Write(cmd + "\r\n"); - string temp = comPort.ReadLine(); // echo + // read echoed line or existing data + string temp; + try + { + temp = Serial_ReadLine(comPort); + } + catch { temp = comPort.ReadExisting(); } + Console.WriteLine("cmd "+cmd + " echo "+ temp); + // delay for command Sleep(500); + // get responce string ans = ""; while (comPort.BytesToRead > 0) { - ans = ans + comPort.ReadLine() + "\n"; + try + { + ans = ans + Serial_ReadLine(comPort) +"\n"; + } + catch { ans = ans + comPort.ReadExisting() + "\n"; } Sleep(50); if (ans.Length > 500) - return ""; + { + break; + } } + Console.WriteLine("responce " +level+ " " + ans); + + // try again + if (ans == "" && level == 0) + return doCommand(comPort, cmd, 1); + return ans; } bool doConnect(SerialPort comPort) { // clear buffer - comPort.DiscardOutBuffer(); comPort.DiscardInBuffer(); // setup a known enviroment comPort.Write("\r\n"); @@ -334,7 +396,10 @@ namespace ArdupilotMega // wait Sleep(1100); // check for config responce "OK" - if (comPort.ReadExisting().Contains("OK")) + Console.WriteLine("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); + string conn = comPort.ReadExisting(); + Console.WriteLine("Connect first responce "+conn + " " + conn.Length); + if (conn.Contains("OK")) { //return true; } @@ -346,7 +411,7 @@ namespace ArdupilotMega string version = doCommand(comPort, "ATI"); - Console.Write("Connect Version: "+version); + Console.Write("Connect Version: " + version.Trim() + "\n"); if (version.Contains("on HM-TRP")) { @@ -360,13 +425,18 @@ namespace ArdupilotMega { SerialPort comPort = new SerialPort(); + try { comPort.PortName = MainV2.comPort.BaseStream.PortName; - comPort.BaudRate = 57600; + comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; comPort.ReadTimeout = 4000; comPort.Open(); + + } + catch { MessageBox.Show("Invalid ComPort or in use"); return; } + lbl_status.Text = "Connecting"; if (doConnect(comPort)) @@ -375,148 +445,169 @@ namespace ArdupilotMega lbl_status.Text = "Doing Command"; - // remote - string answer = doCommand(comPort, "RTI5"); - - Console.Write("Remote\n"+answer); - - string[] items = answer.Split('\n'); - - foreach (string item in items) + if (RTI.Text != "") { - if (item.StartsWith("S")) + + // remote + string answer = doCommand(comPort, "RTI5"); + + string[] items = answer.Split('\n'); + + foreach (string item in items) { - string[] values = item.Split(':', '='); - - if (values.Length == 3) + if (item.StartsWith("S")) { - Control[] controls = this.Controls.Find("R"+values[0].Trim(), false); + string[] values = item.Split(':', '='); - if (controls.Length > 0) + if (values.Length == 3) { - if (controls[0].GetType() == typeof(CheckBox)) + Control[] controls = this.Controls.Find("R" + values[0].Trim(), false); + + if (controls.Length > 0) { - string value = ((CheckBox)controls[0]).Checked ? "1" : "0"; - - if (value != values[2].Trim()) + if (controls[0].GetType() == typeof(CheckBox)) { - string cmdanswer = doCommand(comPort, "RT" + values[0].Trim() + "=" + value + "\r"); + string value = ((CheckBox)controls[0]).Checked ? "1" : "0"; - if (cmdanswer.Contains("OK")) + if (value != values[2].Trim()) { + string cmdanswer = doCommand(comPort, "RT" + values[0].Trim() + "=" + value + "\r"); - } - else - { - MessageBox.Show("Set Command error"); + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } } } - } - else - { - if (controls[0].Text != values[2].Trim()) + else { - string cmdanswer = doCommand(comPort, "RT" + values[0].Trim() + "=" + controls[0].Text + "\r"); - - if (cmdanswer.Contains("OK")) + if (controls[0].Text != values[2].Trim() && controls[0].Text != "") { + string cmdanswer = doCommand(comPort, "RT" + values[0].Trim() + "=" + controls[0].Text + "\r"); - } - else - { - MessageBox.Show("Set Command error"); + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } } } } } } } + + // write it + doCommand(comPort, "RT&W"); + + // return to normal mode + doCommand(comPort, "RTZ"); + + Sleep(100); } - // write it - doCommand(comPort, "RT&W"); - - // return to normal mode - comPort.WriteLine("RTZ"); - - comPort.Write("\r\n"); - - Sleep(100); - comPort.DiscardInBuffer(); - //local - answer = doCommand(comPort, "ATI5"); - - Console.Write("Local\n" + answer); - - items = answer.Split('\n'); - - foreach (string item in items) { - if (item.StartsWith("S")) + //local + string answer = doCommand(comPort, "ATI5"); + + string[] items = answer.Split('\n'); + + foreach (string item in items) { - string[] values = item.Split(':', '='); - - if (values.Length == 3) + if (item.StartsWith("S")) { - Control[] controls = this.Controls.Find(values[0].Trim(), false); + string[] values = item.Split(':', '='); - if (controls.Length > 0) + if (values.Length == 3) { - if (controls[0].GetType() == typeof(CheckBox)) + Control[] controls = this.Controls.Find(values[0].Trim(), false); + + if (controls.Length > 0) { - string value = ((CheckBox)controls[0]).Checked ? "1" : "0"; - - if (value != values[2].Trim()) + if (controls[0].GetType() == typeof(CheckBox)) { - string cmdanswer = doCommand(comPort, "AT" + values[0].Trim() + "=" + value + "\r"); + string value = ((CheckBox)controls[0]).Checked ? "1" : "0"; - if (cmdanswer.Contains("OK")) + if (value != values[2].Trim()) { + string cmdanswer = doCommand(comPort, "AT" + values[0].Trim() + "=" + value + "\r"); - } - else - { - MessageBox.Show("Set Command error"); + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } } } - } - else - { - if (controls[0].Text != values[2].Trim()) + else { - string cmdanswer = doCommand(comPort, "AT" + values[0].Trim() + "=" + controls[0].Text + "\r"); - - if (cmdanswer.Contains("OK")) + if (controls[0].Text != values[2].Trim()) { + string cmdanswer = doCommand(comPort, "AT" + values[0].Trim() + "=" + controls[0].Text + "\r"); - } - else - { - MessageBox.Show("Set Command error"); + if (cmdanswer.Contains("OK")) + { + + } + else + { + MessageBox.Show("Set Command error"); + } } } } } } } - } - // write it - doCommand(comPort, "AT&W"); + // write it + doCommand(comPort, "AT&W"); + + + // return to normal mode + doCommand(comPort, "ATZ"); + } lbl_status.Text = "Done"; } else { + + // return to normal mode + doCommand(comPort, "ATZ"); + lbl_status.Text = "Fail"; MessageBox.Show("Failed to enter command mode"); } - // return to normal mode - comPort.WriteLine("ATZ"); comPort.Close(); } + + private void BUT_syncS2_Click(object sender, EventArgs e) + { + RS2.Text = S2.Text; + } + + private void BUT_syncS3_Click(object sender, EventArgs e) + { + RS3.Text = S3.Text; + } + + private void BUT_syncS5_Click(object sender, EventArgs e) + { + RS5.Checked = S5.Checked; + } } } \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Radio/Uploader.cs b/Tools/ArdupilotMegaPlanner/Radio/Uploader.cs index 2a911070bc..0ec56dfc8a 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/Uploader.cs +++ b/Tools/ArdupilotMegaPlanner/Radio/Uploader.cs @@ -417,7 +417,15 @@ namespace uploader private byte recv () { byte b; - + + DateTime Deadline = DateTime.Now.AddMilliseconds(port.ReadTimeout); + + while (DateTime.Now < Deadline && port.BytesToRead == 0) + { + } + if (port.BytesToRead == 0) + throw new Exception("Timeout"); + b = (byte)port.ReadByte (); log (string.Format ("recv {0:X}\n", b), 5); diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index d969b49684f3b567212b4086c7e1e54b09373df7..87d6b9dc89ed1bf8bacbd4617c21b4322abf6945 100644 GIT binary patch delta 209007 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 DYn0|# delta 209924 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 From 1e254cbca0a4605784d546637dec57694283ee52 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Fri, 24 Feb 2012 12:10:58 -0800 Subject: [PATCH 030/122] Compass heading added to ATT log --- ArduCopter/Log.pde | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ArduCopter/Log.pde b/ArduCopter/Log.pde index 4866b15a9d..c05be04cac 100644 --- a/ArduCopter/Log.pde +++ b/ArduCopter/Log.pde @@ -701,6 +701,7 @@ static void Log_Write_Attitude() DataFlash.WriteInt((int)dcm.pitch_sensor); // 4 DataFlash.WriteInt(g.rc_4.control_in); // 5 DataFlash.WriteInt((uint16_t)dcm.yaw_sensor); // 6 + DataFlash.WriteInt((uint16_t)compass.heading); // 6 DataFlash.WriteByte(END_BYTE); } @@ -714,15 +715,18 @@ static void Log_Read_Attitude() int16_t temp4 = DataFlash.ReadInt(); int16_t temp5 = DataFlash.ReadInt(); uint16_t temp6 = DataFlash.ReadInt(); + uint16_t temp7 = DataFlash.ReadInt(); + temp7 = wrap_360(temp7); - // 1 2 3 4 5 6 - Serial.printf_P(PSTR("ATT, %d, %d, %d, %d, %d, %u\n"), + // 1 2 3 4 5 6 7 + Serial.printf_P(PSTR("ATT, %d, %d, %d, %d, %d, %u, %u\n"), temp1, temp2, temp3, temp4, temp5, - temp6); + temp6, + temp7); } // Write a mode packet. Total length : 7 bytes From ab8cc3d47851ebda7ceef10614b25398c3f5b9bd Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 11:30:09 +1100 Subject: [PATCH 031/122] DCM: use rotation_matrix_from_euler() to calculate initial yaw When we first get a compass reading or we first start motion we need to setup the DCM matrix with the right yaw. This uses rotation_matrix_from_euler() to get a DCM matrix corresponding to our current roll/pitch, but with the correct yaw --- libraries/AP_DCM/AP_DCM.cpp | 47 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 9fd4f06c78..ee5c87552b 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -361,7 +361,6 @@ AP_DCM::drift_correction(void) //static float scaled_omega_P[3]; //static float scaled_omega_I[3]; static bool in_motion = false; - Matrix3f rot_mat; //*****Roll and Pitch*************** @@ -391,10 +390,25 @@ AP_DCM::drift_correction(void) //*****YAW*************** if (_compass && _compass->healthy) { - // We make the gyro YAW drift correction based on compass magnetic heading - error_course = (_dcm_matrix.a.x * _compass->heading_y) - (_dcm_matrix.b.x * _compass->heading_x); // Equation 23, Calculating YAW error + if (in_motion) { + // Equation 23, Calculating YAW error + // We make the gyro YAW drift correction based + // on compass magnetic heading + error_course = (_dcm_matrix.a.x * _compass->heading_y) - (_dcm_matrix.b.x * _compass->heading_x); + } else { + // this is our first estimate of the yaw, + // construct a DCM matrix based on the current + // roll/pitch and the compass heading, but - } else if (_gps) { + // first ensure the compass heading has been + // calculated + _compass->calculate(_dcm_matrix); + + // now construct a new DCM matrix + rotation_matrix_from_euler(_dcm_matrix, roll, pitch, _compass->heading); + in_motion = true; + } + } else if (_gps && _gps->status() == GPS::GPS_OK) { // Use GPS Ground course to correct yaw gyro drift if (_gps->ground_speed >= SPEEDFILT) { @@ -404,26 +418,11 @@ AP_DCM::drift_correction(void) if(in_motion) { error_course = (_dcm_matrix.a.x * _course_over_ground_y) - (_dcm_matrix.b.x * _course_over_ground_x); // Equation 23, Calculating YAW error } else { - float cos_psi_err, sin_psi_err; - // This is the case for when we first start moving and reset the DCM so that yaw matches the gps ground course - // This is just to get a reasonable estimate faster - yaw = atan2(_dcm_matrix.b.x, _dcm_matrix.a.x); - cos_psi_err = cos(ToRad(_gps->ground_course/100.0) - yaw); - sin_psi_err = sin(ToRad(_gps->ground_course/100.0) - yaw); - // Rxx = cos psi err, Rxy = - sin psi err, Rxz = 0 - // Ryx = sin psi err, Ryy = cos psi err, Ryz = 0 - // Rzx = Rzy = 0, Rzz = 1 - rot_mat.a.x = cos_psi_err; - rot_mat.a.y = -sin_psi_err; - rot_mat.b.x = sin_psi_err; - rot_mat.b.y = cos_psi_err; - rot_mat.a.z = 0; - rot_mat.b.z = 0; - rot_mat.c.x = 0; - rot_mat.c.y = 0; - rot_mat.c.z = 1.0; - - _dcm_matrix = rot_mat * _dcm_matrix; + // when we first start moving, set the + // DCM matrix to the current + // roll/pitch values, but with yaw + // from the GPS + rotation_matrix_from_euler(_dcm_matrix, roll, pitch, ToRad(_gps->ground_course)); in_motion = true; error_course = 0; } From 55e33c33591cad52518fed9d5ea11fd94199e82c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 11:44:21 +1100 Subject: [PATCH 032/122] DCM: tidy up use of error_course and in_motion in_motion is not a good name now it is also used for the compass The error_course and heading component values don't need to be part of the DCM object, they can be on the stack to reduce the memory usage a bit --- libraries/AP_DCM/AP_DCM.cpp | 31 +++++++++++++++++-------------- libraries/AP_DCM/AP_DCM.h | 7 +------ 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index ee5c87552b..eb29654f11 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -208,8 +208,6 @@ AP_DCM::matrix_reset(bool recover_eulers) _omega_integ_corr = _omega_I; _omega = _omega_I; _error_roll_pitch = _omega_I; - _error_yaw = _omega_I; - _errorCourse = 0; // if the caller wants us to try to recover to the current // attitude then calculate the dcm matrix from the current @@ -358,9 +356,9 @@ AP_DCM::drift_correction(void) float accel_magnitude; float accel_weight; float integrator_magnitude; + Vector3f error_yaw; //static float scaled_omega_P[3]; //static float scaled_omega_I[3]; - static bool in_motion = false; //*****Roll and Pitch*************** @@ -390,7 +388,7 @@ AP_DCM::drift_correction(void) //*****YAW*************** if (_compass && _compass->healthy) { - if (in_motion) { + if (_have_initial_yaw) { // Equation 23, Calculating YAW error // We make the gyro YAW drift correction based // on compass magnetic heading @@ -406,37 +404,42 @@ AP_DCM::drift_correction(void) // now construct a new DCM matrix rotation_matrix_from_euler(_dcm_matrix, roll, pitch, _compass->heading); - in_motion = true; + _have_initial_yaw = true; } } else if (_gps && _gps->status() == GPS::GPS_OK) { // Use GPS Ground course to correct yaw gyro drift if (_gps->ground_speed >= SPEEDFILT) { - _course_over_ground_x = cos(ToRad(_gps->ground_course/100.0)); - _course_over_ground_y = sin(ToRad(_gps->ground_course/100.0)); - if(in_motion) { - error_course = (_dcm_matrix.a.x * _course_over_ground_y) - (_dcm_matrix.b.x * _course_over_ground_x); // Equation 23, Calculating YAW error + if (_have_initial_yaw) { + float course_over_ground_x = cos(ToRad(_gps->ground_course/100.0)); + float course_over_ground_y = sin(ToRad(_gps->ground_course/100.0)); + // Equation 23, Calculating YAW error + error_course = (_dcm_matrix.a.x * course_over_ground_y) - (_dcm_matrix.b.x * course_over_ground_x); } else { // when we first start moving, set the // DCM matrix to the current // roll/pitch values, but with yaw // from the GPS rotation_matrix_from_euler(_dcm_matrix, roll, pitch, ToRad(_gps->ground_course)); - in_motion = true; + _have_initial_yaw = true; error_course = 0; } } else { + // we are moving very slowly. Stop doing + // course correction with the GPS, and instead + // grab the next GPS course value once we + // start moving again. error_course = 0; - in_motion = false; + _have_initial_yaw = false; } } - _error_yaw = _dcm_matrix.c * error_course; // Equation 24, Applys the yaw correction to the XYZ rotation of the aircraft, depeding the position. + error_yaw = _dcm_matrix.c * error_course; // Equation 24, Applys the yaw correction to the XYZ rotation of the aircraft, depeding the position. - _omega_P += _error_yaw * _kp_yaw; // Adding yaw correction to proportional correction vector. - _omega_I += _error_yaw * _ki_yaw; // adding yaw correction to integrator correction vector. + _omega_P += error_yaw * _kp_yaw; // Adding yaw correction to proportional correction vector. + _omega_I += error_yaw * _ki_yaw; // adding yaw correction to integrator correction vector. // Here we will place a limit on the integrator so that the integrator cannot ever exceed ~30 degrees/second integrator_magnitude = _omega_I.length(); diff --git a/libraries/AP_DCM/AP_DCM.h b/libraries/AP_DCM/AP_DCM.h index cf7be518aa..ca2c30b657 100644 --- a/libraries/AP_DCM/AP_DCM.h +++ b/libraries/AP_DCM/AP_DCM.h @@ -31,8 +31,6 @@ public: _dcm_matrix(1, 0, 0, 0, 1, 0, 0, 0, 1), - _course_over_ground_x(0), - _course_over_ground_y(1), _health(1.), _kp_roll_pitch(0.05967), _ki_roll_pitch(0.00001278), @@ -94,6 +92,7 @@ private: float _ki_roll_pitch; float _kp_yaw; float _ki_yaw; + bool _have_initial_yaw; // Methods void read_adc_raw(void); @@ -128,10 +127,6 @@ private: Vector3f _omega_integ_corr; // Partially corrected Gyro_Vector data - used for centrepetal correction Vector3f _omega; // Corrected Gyro_Vector data Vector3f _error_roll_pitch; - Vector3f _error_yaw; - float _errorCourse; - float _course_over_ground_x; // Course overground X axis - float _course_over_ground_y; // Course overground Y axis float _health; bool _centripetal; uint8_t _toggle; From 57971e0ddff75fefd14b01feb544d3a259b36181 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 14:14:58 +1100 Subject: [PATCH 033/122] autotest: fixed xAccel calculation in fakepos.py --- Tools/autotest/fakepos.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/autotest/fakepos.py b/Tools/autotest/fakepos.py index e33dcfdafb..d99ac42c80 100755 --- a/Tools/autotest/fakepos.py +++ b/Tools/autotest/fakepos.py @@ -77,7 +77,7 @@ if True: while True: - xAccel = sin(radians(pitchDeg)) * cos(radians(rollDeg)) + xAccel = sin(radians(pitchDeg)) yAccel = -sin(radians(rollDeg)) * cos(radians(pitchDeg)) zAccel = -cos(radians(rollDeg)) * cos(radians(pitchDeg)) scale = 9.81 / sqrt((xAccel*xAccel)+(yAccel*yAccel)+(zAccel*zAccel)) From 185ab5aea910297967835c9861c4f078ee88961c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 14:31:24 +1100 Subject: [PATCH 034/122] libs: removed unusued library GCS_SIMPLE --- libraries/GCS_SIMPLE/GCS_SIMPLE.cpp | 153 ---------------------------- libraries/GCS_SIMPLE/GCS_SIMPLE.h | 81 --------------- 2 files changed, 234 deletions(-) delete mode 100644 libraries/GCS_SIMPLE/GCS_SIMPLE.cpp delete mode 100644 libraries/GCS_SIMPLE/GCS_SIMPLE.h diff --git a/libraries/GCS_SIMPLE/GCS_SIMPLE.cpp b/libraries/GCS_SIMPLE/GCS_SIMPLE.cpp deleted file mode 100644 index 81e0913f96..0000000000 --- a/libraries/GCS_SIMPLE/GCS_SIMPLE.cpp +++ /dev/null @@ -1,153 +0,0 @@ -// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: t -*- -// -// DIYDrones Custom Mediatek GPS driver for ArduPilot and ArduPilotMega. -// Code by Michael Smith, Jordi Munoz and Jose Julio, DIYDrones.com -// -// This library is free software; you can redistribute it and / or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// GPS configuration : Custom protocol per "DIYDrones Custom Binary Sentence Specification V1.1" -// - -#include "GCS_SIMPLE.h" -#include - -// Public Methods ////////////////////////////////////////////////////////////// -GCS_SIMPLE::GCS_SIMPLE(Stream *s) : _port(s) -{ -} - -// Process bytes available from the stream -// -// The stream is assumed to contain only our custom message. If it -// contains other messages, and those messages contain the preamble bytes, -// it is possible for this code to become de-synchronised. Without -// buffering the entire message and re-processing it from the top, -// this is unavoidable. -// -// The lack of a standard header length field makes it impossible to skip -// unrecognised messages. -// - -void -GCS_SIMPLE::ack(void) -{ - buff_pointer = 0; - flush(1); -} - -bool -GCS_SIMPLE::read(void) -{ - uint8_t data; - int numc; - bool parsed = false; - - numc = _port->available(); - - for (int i = 0; i < numc; i++){ - // Process bytes received - - // read the next byte - data = _port->read(); - - //_port->write(data); - - restart: - switch(_step){ - case 0: - if(52 == data){ - _step++; - _payload_counter = 0; - } - break; - - case 1: - if (68 == data) { - _step++; - break; - } - _step = 0; - goto restart; - - case 2: - _length = data; - _step++; - break; - - case 3: - _id = data; - _step++; - break; - - case 4: - _buffer.bytes[_payload_counter++] = data; - if (_payload_counter == sizeof(_buffer)){ - _step = 0; - parsed = true; - } - - index = _buffer.msg.index; - id = _buffer.msg.id; - p1 = _buffer.msg.p1; - altitude = _buffer.msg.altitude; - latitude = _buffer.msg.latitude; - longitude = _buffer.msg.longitude; - break; - } - } - return parsed; -} - - -// Add binary values to the buffer -void -GCS_SIMPLE::write_byte(uint8_t val) -{ - mess_buffer[buff_pointer++] = val; -} - -void -GCS_SIMPLE::write_int(int val ) -{ - int_out.value = val; - mess_buffer[buff_pointer++] = int_out.bytes[0]; - mess_buffer[buff_pointer++] = int_out.bytes[1]; -} - -void -GCS_SIMPLE::write_float(float val) -{ - double_out.float_value = val; - mess_buffer[buff_pointer++] = double_out.bytes[0]; - mess_buffer[buff_pointer++] = double_out.bytes[1]; - mess_buffer[buff_pointer++] = double_out.bytes[2]; - mess_buffer[buff_pointer++] = double_out.bytes[3]; -} - -void -GCS_SIMPLE::write_long(long val) -{ - double_out.long_value = val; - mess_buffer[buff_pointer++] = double_out.bytes[0]; - mess_buffer[buff_pointer++] = double_out.bytes[1]; - mess_buffer[buff_pointer++] = double_out.bytes[2]; - mess_buffer[buff_pointer++] = double_out.bytes[3]; -} - -void -GCS_SIMPLE::flush(uint8_t msg_id) -{ - _port->print("4D"); // This is the message preamble - _port->write(buff_pointer); // Length - _port->write(msg_id); // id - - for (uint8_t i = 0; i < buff_pointer; i++) { - _port->write(mess_buffer[i]); - } - - buff_pointer = 0; -} - diff --git a/libraries/GCS_SIMPLE/GCS_SIMPLE.h b/libraries/GCS_SIMPLE/GCS_SIMPLE.h deleted file mode 100644 index 3de255e2a6..0000000000 --- a/libraries/GCS_SIMPLE/GCS_SIMPLE.h +++ /dev/null @@ -1,81 +0,0 @@ -// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: t -*- -// -// DIYDrones Custom Mediatek GPS driver for ArduPilot and ArduPilotMega. -// Code by Michael Smith, Jordi Munoz and Jose Julio, DIYDrones.com -// -// This library is free software; you can redistribute it and / or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// GPS configuration : Custom protocol per "DIYDrones Custom Binary Sentence Specification V1.1" -// -// Note - see GCS_SIMPLE16.h for firmware 1.6 and later. -// -#ifndef GCS_SIMPLE_h -#define GCS_SIMPLE_h - -#include // MAVLink GCS definitions - -class GCS_SIMPLE { -public: - GCS_SIMPLE(Stream *s); - bool read(void); - void ack(void); - void write_byte(uint8_t val); - void write_int(int val); - void write_float(float val); - void write_long(long val); - void flush(uint8_t msg_id); - - Stream *_port; ///< port the GPS is attached to - - int8_t index; - int8_t id; - int8_t p1; - int32_t altitude; - int32_t latitude; - int32_t longitude; - -#pragma pack(1) - struct diyd_mtk_msg { - int8_t index; - int8_t id; - int8_t p1; - int32_t altitude; - int32_t latitude; - int32_t longitude; - }; -#pragma pack(pop) - - // Receive buffer - union { - diyd_mtk_msg msg; - uint8_t bytes[]; - } _buffer; - -private: - // State machine state - // incoming - uint8_t _step; - uint8_t _payload_counter; - uint8_t _length; - uint8_t _id; - - // outgoing - union d_out{ - uint8_t bytes[4]; - int32_t long_value; - float float_value; - } double_out; - - union i_out { - uint8_t bytes[2]; - int16_t value; - } int_out; - - uint8_t mess_buffer[50]; - uint8_t buff_pointer; -}; - -#endif // GCS_SIMPLE_H From 54aa8297aff39886444c6e21021b2a60040cbd27 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 14:31:40 +1100 Subject: [PATCH 035/122] libs: removed unused library GPS_IMU --- libraries/GPS_IMU/GPS_IMU.cpp | 283 ------------------ libraries/GPS_IMU/GPS_IMU.h | 69 ----- .../examples/GPS_IMU_test/GPS_IMU_test.pde | 44 --- libraries/GPS_IMU/keywords.txt | 16 - 4 files changed, 412 deletions(-) delete mode 100755 libraries/GPS_IMU/GPS_IMU.cpp delete mode 100755 libraries/GPS_IMU/GPS_IMU.h delete mode 100755 libraries/GPS_IMU/examples/GPS_IMU_test/GPS_IMU_test.pde delete mode 100755 libraries/GPS_IMU/keywords.txt diff --git a/libraries/GPS_IMU/GPS_IMU.cpp b/libraries/GPS_IMU/GPS_IMU.cpp deleted file mode 100755 index 62ef39b968..0000000000 --- a/libraries/GPS_IMU/GPS_IMU.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/* - GPS_IMU.cpp - IMU/X-Plane GPS library for Arduino -*/ - -#include "GPS_IMU.h" -#include -#if defined(ARDUINO) && ARDUINO >= 100 - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - - -// Constructors //////////////////////////////////////////////////////////////// -GPS_IMU_Class::GPS_IMU_Class() -{ -} - - -// Public Methods ////////////////////////////////////////////////////////////// -void GPS_IMU_Class::Init(void) -{ - ck_a = 0; - ck_b = 0; - IMU_step = 0; - NewData = 0; - Fix = 0; - PrintErrors = 0; - - IMU_timer = millis(); //Restarting timer... - // Initialize serial port - #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - Serial1.begin(38400); // Serial port 1 on ATMega1280/2560 - #else - Serial.begin(38400); - #endif -} - -// optimization : This code don´t wait for data, only proccess the data available -// We can call this function on the main loop (50Hz loop) -// If we get a complete packet this function calls parse_IMU_gps() to parse and update the GPS info. -void GPS_IMU_Class::Read(void) -{ - static unsigned long GPS_timer = 0; - byte data; - int numc = 0; - static byte message_num = 0; - - #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) // If AtMega1280/2560 then Serial port 1... - numc = Serial.available(); - #else - numc = Serial.available(); - #endif - - if (numc > 0){ - for (int i=0;i 28){ - IMU_step = 0; //Bad data, so restart to IMU_step zero and try again. - payload_counter = 0; - ck_a = 0; - ck_b = 0; - //payload_error_count++; - } - break; - - case 5: - message_num = data; - checksum(data); - IMU_step++; - break; - - case 6: // Payload data read... - // We stay in this state until we reach the payload_length - buffer[payload_counter] = data; - checksum(data); - payload_counter++; - if (payload_counter >= payload_length) { - IMU_step++; - } - break; - - case 7: - IMU_ck_a = data; // First checksum byte - IMU_step++; - break; - - case 8: - IMU_ck_b = data; // Second checksum byte - - // We end the IMU/GPS read... - // Verify the received checksum with the generated checksum.. - if((ck_a == IMU_ck_a) && (ck_b == IMU_ck_b)) { - if (message_num == 0x02) { - IMU_join_data(); - IMU_timer = millis(); - } else if (message_num == 0x03) { - GPS_join_data(); - GPS_timer = millis(); - } else if (message_num == 0x04) { - IMU2_join_data(); - IMU_timer = millis(); - } else if (message_num == 0x0a) { - //PERF_join_data(); - } else { - Serial.print("Invalid message number = "); - Serial.println(message_num,DEC); - } - } else { - Serial.println("XXX Checksum error"); //bad checksum - //imu_checksum_error_count++; - } - // Variable initialization - IMU_step = 0; - payload_counter = 0; - ck_a = 0; - ck_b = 0; - IMU_timer = millis(); //Restarting timer... - break; - } - }// End for... - } - // If we don't receive GPS packets in 2 seconds => Bad FIX state - if ((millis() - GPS_timer) > 3000){ - Fix = 0; - } - if (PrintErrors){ - Serial.println("ERR:GPS_TIMEOUT!!"); - } -} - -/**************************************************************** - * - ****************************************************************/ - -void GPS_IMU_Class::IMU_join_data(void) -{ - int j; - - - //Verifing if we are in class 1, you can change this "IF" for a "Switch" in case you want to use other IMU classes.. - //In this case all the message im using are in class 1, to know more about classes check PAGE 60 of DataSheet. - - //Storing IMU roll - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - roll_sensor = intUnion.word; - - //Storing IMU pitch - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - pitch_sensor = intUnion.word; - - //Storing IMU heading (yaw) - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - Ground_Course = intUnion.word; - imu_ok = true; -} - -void GPS_IMU_Class::IMU2_join_data() -{ - int j=0; - - //Storing IMU roll - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - roll_sensor = intUnion.word; - - //Storing IMU pitch - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - pitch_sensor = intUnion.word; - - //Storing IMU heading (yaw) - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - Ground_Course = (unsigned int)intUnion.word; - - //Storing airspeed - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - airspeed = intUnion.word; - - imu_ok = true; - -} - -void GPS_IMU_Class::GPS_join_data(void) -{ - //gps_messages_received++; - int j = 0; - - Longitude = join_4_bytes(&buffer[j]); // Lat and Lon * 10**7 - j += 4; - - Lattitude = join_4_bytes(&buffer[j]); - j += 4; - - //Storing GPS Height above the sea level - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - Altitude = (long)intUnion.word * 10; // Altitude in meters * 100 - - //Storing Speed (3-D) - intUnion.byte[0] = buffer[j++]; - intUnion.byte[1] = buffer[j++]; - Speed_3d = Ground_Speed = (float)intUnion.word; // Speed in M/S * 100 - - //We skip the gps ground course because we use yaw value from the IMU for ground course - j += 2; - Time = join_4_bytes(&buffer[j]); // Time of Week in milliseconds - j +=4; - imu_health = buffer[j++]; - - NewData = 1; - Fix = 1; - -} - - -/**************************************************************** - * - ****************************************************************/ - // Join 4 bytes into a long -long GPS_IMU_Class::join_4_bytes(unsigned char Buffer[]) -{ - longUnion.byte[0] = *Buffer; - longUnion.byte[1] = *(Buffer+1); - longUnion.byte[2] = *(Buffer+2); - longUnion.byte[3] = *(Buffer+3); - return(longUnion.dword); -} - - -/**************************************************************** - * - ****************************************************************/ -// checksum algorithm -void GPS_IMU_Class::checksum(byte IMU_data) -{ - ck_a+=IMU_data; - ck_b+=ck_a; -} - -GPS_IMU_Class GPS; diff --git a/libraries/GPS_IMU/GPS_IMU.h b/libraries/GPS_IMU/GPS_IMU.h deleted file mode 100755 index c2ac6b7931..0000000000 --- a/libraries/GPS_IMU/GPS_IMU.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef GPS_IMU_h -#define GPS_IMU_h - -#include - -#define IMU_MAXPAYLOAD 32 - -class GPS_IMU_Class -{ - private: - // Internal variables - union int_union { - int16_t word; - uint8_t byte[2]; - } intUnion; - - union long_union { - int32_t dword; - uint8_t byte[4]; - } longUnion; - - uint8_t ck_a; // Packet checksum - uint8_t ck_b; - uint8_t IMU_ck_a; - uint8_t IMU_ck_b; - uint8_t IMU_step; - uint8_t IMU_class; - uint8_t message_num; - uint8_t payload_length; - uint8_t payload_counter; - uint8_t buffer[IMU_MAXPAYLOAD]; - - long IMU_timer; - long IMU_ecefVZ; - void IMU_join_data(); - void IMU2_join_data(); - void GPS_join_data(); - void checksum(unsigned char IMU_data); - long join_4_bytes(unsigned char Buffer[]); - - public: - // Methods - GPS_IMU_Class(); - void Init(); - void Read(); - - // Properties - long roll_sensor; // how much we're turning in deg * 100 - long pitch_sensor; // our angle of attack in deg * 100 - int airspeed; - float imu_health; - uint8_t imu_ok; - - long Time; //GPS Millisecond Time of Week - long Lattitude; // Geographic coordinates - long Longitude; - long Altitude; - long Ground_Speed; - long Ground_Course; - long Speed_3d; - - uint8_t NumSats; // Number of visible satelites - uint8_t Fix; // 1:GPS FIX 0:No FIX (normal logic) - uint8_t NewData; // 1:New GPS Data - uint8_t PrintErrors; // 1: To Print GPS Errors (for debug) -}; - -extern GPS_IMU_Class GPS; -#endif \ No newline at end of file diff --git a/libraries/GPS_IMU/examples/GPS_IMU_test/GPS_IMU_test.pde b/libraries/GPS_IMU/examples/GPS_IMU_test/GPS_IMU_test.pde deleted file mode 100755 index 6bc870168f..0000000000 --- a/libraries/GPS_IMU/examples/GPS_IMU_test/GPS_IMU_test.pde +++ /dev/null @@ -1,44 +0,0 @@ -/* - Example of GPS IMU library. - Code by Jordi Munoz, Jose Julio and, Jason Short . DIYDrones.com - - Works with Ardupilot Mega Hardware (GPS on Serial Port1) - and with standard ATMega168 and ATMega328 on Serial Port 0 -*/ - -#include // GPS Library - -void setup() -{ - Serial.begin(38400); - Serial.println("GPS IMU library test"); - GPS.Init(); // GPS Initialization - delay(1000); -} -void loop() -{ - GPS.Read(); - if (1){ // New GPS data? - - Serial.print("GPS:"); - Serial.print(" Lat:"); - Serial.print(GPS.Lattitude); - Serial.print(" Lon:"); - Serial.print(GPS.Longitude); - Serial.print(" Alt:"); - Serial.print((float)GPS.Altitude/100.0); - Serial.print(" GSP:"); - Serial.print((float)GPS.Ground_Speed/100.0); - Serial.print(" COG:"); - Serial.print(GPS.Ground_Course/1000000); - Serial.print(" SAT:"); - Serial.print((int)GPS.NumSats); - Serial.print(" FIX:"); - Serial.print((int)GPS.Fix); - Serial.print(" TIM:"); - Serial.print(GPS.Time); - Serial.println(); - GPS.NewData = 0; // We have read the data - } - delay(20); -} diff --git a/libraries/GPS_IMU/keywords.txt b/libraries/GPS_IMU/keywords.txt deleted file mode 100755 index 57d40a967c..0000000000 --- a/libraries/GPS_IMU/keywords.txt +++ /dev/null @@ -1,16 +0,0 @@ -GPS KEYWORD1 -GPS_IMU KEYWORD1 -Init KEYWORD2 -Read KEYWORD2 -Time KEYWORD2 -Lattitude KEYWORD2 -Longitude KEYWORD2 -Altitude KEYWORD2 -Ground_Speed KETWORD2 -Ground_Course KEYWORD2 -Speed_3d KEYWORD2 -NumSats KEYWORD2 -Fix KEYWORD2 -NewData KEYWORD2 - - From d6bfceef7c893ae48b80a1cb8c98f657bc65b71d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 17:22:02 +1100 Subject: [PATCH 036/122] SITL: added -C option to desktop mode this allows running APM to stdout, which is useful for test sketches --- libraries/Desktop/support/FastSerial.cpp | 22 +++++++++++++++++++++- libraries/Desktop/support/desktop.h | 1 + libraries/Desktop/support/main.cpp | 6 +++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/libraries/Desktop/support/FastSerial.cpp b/libraries/Desktop/support/FastSerial.cpp index 9bce61874f..332103967b 100644 --- a/libraries/Desktop/support/FastSerial.cpp +++ b/libraries/Desktop/support/FastSerial.cpp @@ -70,6 +70,7 @@ static struct tcp_state { int listen_fd; // socket we are listening on int fd; // data socket int serial_port; + bool console; } tcp_state[FS_MAX_PORTS]; @@ -85,6 +86,17 @@ static void tcp_start_connection(unsigned int serial_port, bool wait_for_connect struct sockaddr_in sockaddr; int ret; + if (desktop_state.console_mode) { + // hack for console access + s->connected = true; + s->listen_fd = -1; + s->fd = 1; + s->serial_port = serial_port; + s->console = true; + set_nonblocking(0); + return; + } + s->serial_port = serial_port; memset(&sockaddr,0,sizeof(sockaddr)); @@ -291,6 +303,10 @@ int FastSerial::read(void) return -1; } + if (s->console) { + return ::read(0, &c, 1); + } + int n = recv(s->fd, &c, 1, MSG_DONTWAIT | MSG_NOSIGNAL); if (n <= 0) { // the socket has reached EOF @@ -326,7 +342,11 @@ void FastSerial::write(uint8_t c) if (!desktop_state.slider) { flags |= MSG_DONTWAIT; } - send(s->fd, &c, 1, flags); + if (s->console) { + ::write(s->fd, &c, 1); + } else { + send(s->fd, &c, 1, flags); + } } // Buffer management /////////////////////////////////////////////////////////// diff --git a/libraries/Desktop/support/desktop.h b/libraries/Desktop/support/desktop.h index d3ac289e3d..710980599e 100644 --- a/libraries/Desktop/support/desktop.h +++ b/libraries/Desktop/support/desktop.h @@ -10,6 +10,7 @@ struct desktop_info { bool quadcopter; // use quadcopter outputs unsigned framerate; float initial_height; + bool console_mode; }; extern struct desktop_info desktop_state; diff --git a/libraries/Desktop/support/main.cpp b/libraries/Desktop/support/main.cpp index 49528f542b..6207bdd38b 100644 --- a/libraries/Desktop/support/main.cpp +++ b/libraries/Desktop/support/main.cpp @@ -29,6 +29,7 @@ static void usage(void) printf("\t-w wipe eeprom and dataflash\n"); printf("\t-r RATE set SITL framerate\n"); printf("\t-H HEIGHT initial barometric height\n"); + printf("\t-C use console instead of TCP ports\n"); } int main(int argc, char * const argv[]) @@ -40,7 +41,7 @@ int main(int argc, char * const argv[]) signal(SIGFPE, sig_fpe); - while ((opt = getopt(argc, argv, "swhr:H:")) != -1) { + while ((opt = getopt(argc, argv, "swhr:H:C")) != -1) { switch (opt) { case 's': desktop_state.slider = true; @@ -55,6 +56,9 @@ int main(int argc, char * const argv[]) case 'H': desktop_state.initial_height = atof(optarg); break; + case 'C': + desktop_state.console_mode = true; + break; default: usage(); exit(1); From 2e9105c68af54a57da47156bc6ba69680f2c4f6a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 14:19:00 +1100 Subject: [PATCH 037/122] AP_Param: added special handling for Vector3f We would like to be able to use Vector3f as a parameter while exposing the individual elements of the vector as MAVLink parameters. This change to AP_Param makes that possible, by giving AP_Vector3f a dual personality --- ArduCopter/GCS_Mavlink.pde | 18 ++-- libraries/AP_Common/AP_Param.cpp | 146 ++++++++++++++++++++++++++----- libraries/AP_Common/AP_Param.h | 10 ++- 3 files changed, 138 insertions(+), 36 deletions(-) diff --git a/ArduCopter/GCS_Mavlink.pde b/ArduCopter/GCS_Mavlink.pde index 995ebaa9e4..aca9d9922c 100644 --- a/ArduCopter/GCS_Mavlink.pde +++ b/ArduCopter/GCS_Mavlink.pde @@ -1647,18 +1647,18 @@ GCS_MAVLINK::queued_param_send() value = vp->cast_to_float(_queued_parameter_type); char param_name[ONBOARD_PARAM_NAME_LENGTH]; - vp->copy_name(param_name, sizeof(param_name)); + vp->copy_name(param_name, sizeof(param_name)); - mavlink_msg_param_value_send( - chan, - (int8_t*)param_name, - value, - _queued_parameter_count, - _queued_parameter_index); + mavlink_msg_param_value_send( + chan, + (int8_t*)param_name, + value, + _queued_parameter_count, + _queued_parameter_index); _queued_parameter = AP_Param::next_scalar(&_queued_parameter_token, &_queued_parameter_type); - _queued_parameter_index++; - } + _queued_parameter_index++; +} /** * @brief Send the next pending waypoint, called from deferred message diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index 7d07f227da..8d607b18fc 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -280,13 +280,15 @@ const struct AP_Param::Info *AP_Param::find_var_info_group(const struct GroupInf uint8_t group_base, uint8_t group_shift, uint8_t *group_element, - const struct GroupInfo **group_ret) + const struct GroupInfo **group_ret, + uint8_t *idx) { uintptr_t base = PGM_POINTER(&_var_info[vindex].ptr); uint8_t type; for (uint8_t i=0; (type=PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; i++) { + uintptr_t ofs = PGM_POINTER(&group_info[i].offset); if (type == AP_PARAM_GROUP) { const struct GroupInfo *ginfo = (const struct GroupInfo *)PGM_POINTER(&group_info[i].group_info); // a nested group @@ -300,11 +302,21 @@ const struct AP_Param::Info *AP_Param::find_var_info_group(const struct GroupInf GROUP_ID(group_info, group_base, i, group_shift), group_shift + _group_level_shift, group_element, - group_ret); + group_ret, + idx); if (info != NULL) { return info; } - } else if ((uintptr_t)this == base + PGM_POINTER(&group_info[i].offset)) { + } else if ((uintptr_t)this == base + ofs) { + *group_element = GROUP_ID(group_info, group_base, i, group_shift); + *group_ret = &group_info[i]; + *idx = 0; + return &_var_info[vindex]; + } else if (type == AP_PARAM_VECTOR3F && + (base+ofs+sizeof(float) == (uintptr_t)this || + base+ofs+2*sizeof(float) == (uintptr_t)this)) { + // we are inside a Vector3f + *idx = (((uintptr_t)this) - (base+ofs))/sizeof(float); *group_element = GROUP_ID(group_info, group_base, i, group_shift); *group_ret = &group_info[i]; return &_var_info[vindex]; @@ -315,7 +327,8 @@ const struct AP_Param::Info *AP_Param::find_var_info_group(const struct GroupInf // find the info structure for a variable const struct AP_Param::Info *AP_Param::find_var_info(uint8_t *group_element, - const struct GroupInfo **group_ret) + const struct GroupInfo **group_ret, + uint8_t *idx) { for (uint8_t i=0; i<_num_vars; i++) { uint8_t type = PGM_UINT8(&_var_info[i].type); @@ -323,11 +336,20 @@ const struct AP_Param::Info *AP_Param::find_var_info(uint8_t *group_element, if (type == AP_PARAM_GROUP) { const struct GroupInfo *group_info = (const struct GroupInfo *)PGM_POINTER(&_var_info[i].group_info); const struct AP_Param::Info *info; - info = find_var_info_group(group_info, i, 0, 0, group_element, group_ret); + info = find_var_info_group(group_info, i, 0, 0, group_element, group_ret, idx); if (info != NULL) { return info; } } else if (base == (uintptr_t)this) { + *group_element = 0; + *group_ret = NULL; + *idx = 0; + return &_var_info[i]; + } else if (type == AP_PARAM_VECTOR3F && + (base+sizeof(float) == (uintptr_t)this || + base+2*sizeof(float) == (uintptr_t)this)) { + // we are inside a Vector3f + *idx = (((uintptr_t)this) - base)/sizeof(float); *group_element = 0; *group_ret = NULL; return &_var_info[i]; @@ -395,15 +417,34 @@ bool AP_Param::scan(const AP_Param::Param_header *target, uint16_t *pofs) return false; } +// add a X,Y,Z suffix to the name of a Vector3f element +void AP_Param::add_vector3f_suffix(char *buffer, size_t buffer_size, uint8_t idx) +{ + uint8_t len = strnlen(buffer, buffer_size); + if ((size_t)(len+3) >= buffer_size) { + return; + } + buffer[len] = '_'; + if (idx == 0) { + buffer[len+1] = 'X'; + } else if (idx == 1) { + buffer[len+1] = 'Y'; + } else if (idx == 2) { + buffer[len+1] = 'Z'; + } + buffer[len+2] = 0; +} + // Copy the variable's whole name to the supplied buffer. // // If the variable is a group member, prepend the group name. // -void AP_Param::copy_name(char *buffer, size_t buffer_size) +void AP_Param::copy_name(char *buffer, size_t buffer_size, bool force_scalar) { uint8_t group_element; const struct GroupInfo *ginfo; - const struct AP_Param::Info *info = find_var_info(&group_element, &ginfo); + uint8_t idx; + const struct AP_Param::Info *info = find_var_info(&group_element, &ginfo, &idx); if (info == NULL) { *buffer = 0; serialDebug("no info found"); @@ -415,6 +456,12 @@ void AP_Param::copy_name(char *buffer, size_t buffer_size) if (len < buffer_size) { strncpy_P(&buffer[len], ginfo->name, buffer_size-len); } + if ((force_scalar || idx != 0) && AP_PARAM_VECTOR3F == PGM_UINT8(&ginfo->type)) { + // the caller wants a specific element in a Vector3f + add_vector3f_suffix(buffer, buffer_size, idx); + } + } else if ((force_scalar || idx != 0) && AP_PARAM_VECTOR3F == PGM_UINT8(&info->type)) { + add_vector3f_suffix(buffer, buffer_size, idx); } } @@ -436,6 +483,25 @@ AP_Param::find_group(const char *name, uint8_t vindex, const struct GroupInfo *g uintptr_t p = PGM_POINTER(&_var_info[vindex].ptr); *ptype = (enum ap_var_type)type; return (AP_Param *)(p + PGM_POINTER(&group_info[i].offset)); + } else if (type == AP_PARAM_VECTOR3F) { + // special case for finding Vector3f elements + uint8_t suffix_len = strlen_P(group_info[i].name); + if (strncmp_P(name, group_info[i].name, suffix_len) == 0 && + name[suffix_len] == '_' && + name[suffix_len+1] != 0 && + name[suffix_len+2] == 0) { + uintptr_t p = PGM_POINTER(&_var_info[vindex].ptr); + AP_Float *v = (AP_Float *)(p + PGM_POINTER(&group_info[i].offset)); + *ptype = AP_PARAM_FLOAT; + switch (name[suffix_len+1]) { + case 'X': + return (AP_Float *)&v[0]; + case 'Y': + return (AP_Float *)&v[1]; + case 'Z': + return (AP_Float *)&v[2]; + } + } } } return NULL; @@ -470,7 +536,9 @@ bool AP_Param::save(void) { uint8_t group_element = 0; const struct GroupInfo *ginfo; - const struct AP_Param::Info *info = find_var_info(&group_element, &ginfo); + uint8_t idx; + const struct AP_Param::Info *info = find_var_info(&group_element, &ginfo, &idx); + const AP_Param *ap; if (info == NULL) { // we don't have any info on how to store it @@ -488,11 +556,20 @@ bool AP_Param::save(void) phdr.key = PGM_UINT8(&info->key); phdr.group_element = group_element; + ap = this; + if (phdr.type != AP_PARAM_VECTOR3F && idx != 0) { + // only vector3f can have non-zero idx for now + return false; + } + if (idx != 0) { + ap = (const AP_Param *)((uintptr_t)ap) - (idx*sizeof(float)); + } + // scan EEPROM to find the right location uint16_t ofs; if (scan(&phdr, &ofs)) { // found an existing copy of the variable - eeprom_write_check(this, ofs+sizeof(phdr), type_size((enum ap_var_type)phdr.type)); + eeprom_write_check(ap, ofs+sizeof(phdr), type_size((enum ap_var_type)phdr.type)); return true; } if (ofs == (uint16_t)~0) { @@ -501,7 +578,7 @@ bool AP_Param::save(void) // write a new sentinal, then the data, then the header write_sentinal(ofs + sizeof(phdr) + type_size((enum ap_var_type)phdr.type)); - eeprom_write_check(this, ofs+sizeof(phdr), type_size((enum ap_var_type)phdr.type)); + eeprom_write_check(ap, ofs+sizeof(phdr), type_size((enum ap_var_type)phdr.type)); eeprom_write_check(&phdr, ofs, sizeof(phdr)); return true; } @@ -512,7 +589,8 @@ bool AP_Param::load(void) { uint8_t group_element = 0; const struct GroupInfo *ginfo; - const struct AP_Param::Info *info = find_var_info(&group_element, &ginfo); + uint8_t idx; + const struct AP_Param::Info *info = find_var_info(&group_element, &ginfo, &idx); if (info == NULL) { // we don't have any info on how to load it return false; @@ -579,6 +657,7 @@ AP_Param *AP_Param::first(ParamToken *token, enum ap_var_type *ptype) { token->key = 0; token->group_element = 0; + token->idx = 0; if (_num_vars == 0) { return NULL; } @@ -597,9 +676,9 @@ AP_Param *AP_Param::next_group(uint8_t vindex, const struct GroupInfo *group_inf ParamToken *token, enum ap_var_type *ptype) { - uint8_t type; + enum ap_var_type type; for (uint8_t i=0; - (type=PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; + (type=(enum ap_var_type)PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; i++) { if (type == AP_PARAM_GROUP) { // a nested group @@ -615,13 +694,25 @@ AP_Param *AP_Param::next_group(uint8_t vindex, const struct GroupInfo *group_inf // got a new one token->key = vindex; token->group_element = GROUP_ID(group_info, group_base, i, group_shift); + token->idx = 0; if (ptype != NULL) { - *ptype = (enum ap_var_type)type; + *ptype = type; } return (AP_Param*)(PGM_POINTER(&_var_info[vindex].ptr) + PGM_UINT16(&group_info[i].offset)); } if (GROUP_ID(group_info, group_base, i, group_shift) == token->group_element) { *found_current = true; + if (type == AP_PARAM_VECTOR3F && token->idx < 3) { + // return the next element of the vector as a + // float + token->idx++; + if (ptype != NULL) { + *ptype = AP_PARAM_FLOAT; + } + uintptr_t ofs = (uintptr_t)PGM_POINTER(&_var_info[vindex].ptr) + PGM_UINT16(&group_info[i].offset); + ofs += sizeof(float)*(token->idx-1); + return (AP_Param *)ofs; + } } } } @@ -638,13 +729,24 @@ AP_Param *AP_Param::next(ParamToken *token, enum ap_var_type *ptype) // illegal token return NULL; } - uint8_t type = PGM_UINT8(&_var_info[i].type); + enum ap_var_type type = (enum ap_var_type)PGM_UINT8(&_var_info[i].type); + + // allow Vector3f to be seen as 3 variables. First as a vector, + // then as 3 separate floats + if (type == AP_PARAM_VECTOR3F && token->idx < 3) { + token->idx++; + if (ptype != NULL) { + *ptype = AP_PARAM_FLOAT; + } + return (AP_Param *)(((token->idx-1)*sizeof(float))+(uintptr_t)PGM_POINTER(&_var_info[i].ptr)); + } + if (type != AP_PARAM_GROUP) { i++; found_current = true; } for (; i<_num_vars; i++) { - type = PGM_UINT8(&_var_info[i].type); + type = (enum ap_var_type)PGM_UINT8(&_var_info[i].type); if (type == AP_PARAM_GROUP) { const struct GroupInfo *group_info = (const struct GroupInfo *)PGM_POINTER(&_var_info[i].group_info); AP_Param *ap = next_group(i, group_info, &found_current, 0, 0, token, ptype); @@ -655,8 +757,9 @@ AP_Param *AP_Param::next(ParamToken *token, enum ap_var_type *ptype) // found the next one token->key = i; token->group_element = 0; + token->idx = 0; if (ptype != NULL) { - *ptype = (enum ap_var_type)type; + *ptype = type; } return (AP_Param *)(PGM_POINTER(&_var_info[i].ptr)); } @@ -705,9 +808,9 @@ void AP_Param::show_all(void) for (ap=AP_Param::first(&token, &type); ap; - ap=AP_Param::next(&token, &type)) { + ap=AP_Param::next_scalar(&token, &type)) { char s[AP_MAX_NAME_SIZE+1]; - ap->copy_name(s, sizeof(s)); + ap->copy_name(s, sizeof(s), true); s[AP_MAX_NAME_SIZE] = 0; switch (type) { @@ -723,11 +826,6 @@ void AP_Param::show_all(void) case AP_PARAM_FLOAT: Serial.printf_P(PSTR("%s: %f\n"), s, ((AP_Float *)ap)->get()); break; - case AP_PARAM_VECTOR3F: { - Vector3f v = ((AP_Vector3f *)ap)->get(); - Serial.printf_P(PSTR("%s: %f %f %f\n"), s, v.x, v.y, v.z); - break; - } default: break; } diff --git a/libraries/AP_Common/AP_Param.h b/libraries/AP_Common/AP_Param.h index 82e234a42f..c3f72fefac 100644 --- a/libraries/AP_Common/AP_Param.h +++ b/libraries/AP_Common/AP_Param.h @@ -78,6 +78,7 @@ public: typedef struct { uint8_t key; uint8_t group_element; + uint8_t idx; // offset into array types } ParamToken; // called once at startup to setup the _var_info[] table. This @@ -98,7 +99,7 @@ public: /// @param buffer The destination buffer /// @param bufferSize Total size of the destination buffer. /// - void copy_name(char *buffer, size_t bufferSize); + void copy_name(char *buffer, size_t bufferSize, bool force_scalar=false); /// Find a variable by name. /// @@ -191,15 +192,18 @@ private: uint8_t group_base, uint8_t group_shift, uint8_t *group_element, - const struct GroupInfo **group_ret); + const struct GroupInfo **group_ret, + uint8_t *idx); const struct Info *find_var_info(uint8_t *group_element, - const struct GroupInfo **group_ret); + const struct GroupInfo **group_ret, + uint8_t *idx); static const struct Info *find_by_header_group(struct Param_header phdr, void **ptr, uint8_t vindex, const struct GroupInfo *group_info, uint8_t group_base, uint8_t group_shift); static const struct Info *find_by_header(struct Param_header phdr, void **ptr); + void add_vector3f_suffix(char *buffer, size_t buffer_size, uint8_t idx); static AP_Param *find_group(const char *name, uint8_t vindex, const struct GroupInfo *group_info, enum ap_var_type *ptype); static void write_sentinal(uint16_t ofs); bool scan(const struct Param_header *phdr, uint16_t *pofs); From 690dc9052a51e9010f675869468de140b306de9b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 17:23:08 +1100 Subject: [PATCH 038/122] GCS: force scalar type in copy_name() this enables access to compass offsets over MAVLink --- ArduCopter/GCS_Mavlink.pde | 2 +- ArduPlane/GCS_Mavlink.pde | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ArduCopter/GCS_Mavlink.pde b/ArduCopter/GCS_Mavlink.pde index aca9d9922c..4a45b181b2 100644 --- a/ArduCopter/GCS_Mavlink.pde +++ b/ArduCopter/GCS_Mavlink.pde @@ -1647,7 +1647,7 @@ GCS_MAVLINK::queued_param_send() value = vp->cast_to_float(_queued_parameter_type); char param_name[ONBOARD_PARAM_NAME_LENGTH]; - vp->copy_name(param_name, sizeof(param_name)); + vp->copy_name(param_name, sizeof(param_name), true); mavlink_msg_param_value_send( chan, diff --git a/ArduPlane/GCS_Mavlink.pde b/ArduPlane/GCS_Mavlink.pde index a301b9fa2c..312144a886 100644 --- a/ArduPlane/GCS_Mavlink.pde +++ b/ArduPlane/GCS_Mavlink.pde @@ -2000,7 +2000,7 @@ GCS_MAVLINK::queued_param_send() value = vp->cast_to_float(_queued_parameter_type); char param_name[ONBOARD_PARAM_NAME_LENGTH]; - vp->copy_name(param_name, sizeof(param_name)); + vp->copy_name(param_name, sizeof(param_name), true); mavlink_msg_param_value_send( chan, From 9d6ac9032e3bf8bb490e049a8dcaaecd74253ac0 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 24 Feb 2012 17:23:47 +1100 Subject: [PATCH 039/122] test: updated VARTest for new AP_Param vector3f handling --- Tools/VARTest/VARTest.pde | 42 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/Tools/VARTest/VARTest.pde b/Tools/VARTest/VARTest.pde index 1778b73a81..fb05d54114 100644 --- a/Tools/VARTest/VARTest.pde +++ b/Tools/VARTest/VARTest.pde @@ -104,6 +104,10 @@ void setup() { ofs.z += 1.3; compass.set_offsets(ofs); compass.save_offsets(); + Serial.printf_P(PSTR("Compass: %f %f %f\n"), + ofs.x, ofs.y, ofs.z); + + test_vector3f(); // full testing of all variables AP_Param::ParamToken token; @@ -122,15 +126,47 @@ void loop() { } +// test vector3f handling +void test_vector3f(void) +{ + enum ap_var_type type; + + AP_Float *f; + AP_Vector3f *v; + Vector3f vec; + + v = (AP_Vector3f *)AP_Param::find("COMPASS_OFS", &type); + + f = (AP_Float *)AP_Param::find("COMPASS_OFS_X", &type); + f->set_and_save(10); + f = (AP_Float *)AP_Param::find("COMPASS_OFS_Y", &type); + f->set_and_save(11); + f = (AP_Float *)AP_Param::find("COMPASS_OFS_Z", &type); + f->set_and_save(12); + + v->load(); + + vec = *v; + Serial.printf_P(PSTR("vec %f %f %f\n"), + vec.x, vec.y, vec.z); + + if (vec.x != 10 || + vec.y != 11 || + vec.z != 12) { + Serial.printf_P(PSTR("wrong value for compass vector\n")); + } +} + + // test all interfaces for a variable void test_variable(AP_Param *ap, enum ap_var_type type) { - static uint8_t value; + static int8_t value; char s[AP_MAX_NAME_SIZE+1]; value++; - ap->copy_name(s, sizeof(s)); + ap->copy_name(s, sizeof(s), type==AP_PARAM_FLOAT); Serial.printf_P(PSTR("Testing variable '%s' of type %u\n"), s, type); enum ap_var_type type2; @@ -156,7 +192,7 @@ void test_variable(AP_Param *ap, enum ap_var_type type) Debug("failed load"); } if (v->get() != value) { - Debug("wrong value %u %u", (unsigned)v->get(), value); + Debug("wrong value %d %d", (int)v->get(), (int)value); } if (!v->set_and_save(value+1)) { Debug("failed set_and_save"); From 5e2fbdb6cf461ee4e477afb14174735499a24ecd Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 11:30:59 +1100 Subject: [PATCH 040/122] DCM: don't reset _have_initial_yaw for GPS heading unless very slow wait till we reach 1m/s before we reset _have_initial_yaw. This prevents us continually resetting the DCM matrix if our ground speed is close to 3m/s. --- libraries/AP_DCM/AP_DCM.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index eb29654f11..3e2dacded3 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -32,9 +32,13 @@ //#define Kp_YAW 0.8 // Yaw Drift Correction Porportional Gain //#define Ki_YAW 0.00004 // Yaw Drift CorrectionIntegrator Gain -#define SPEEDFILT 300 // centimeters/second -#define ADC_CONSTRAINT 900 +// this is the speed in cm/s above which we first get a yaw lock with +// the GPS +#define GPS_SPEED_MIN 300 +// this is the speed in cm/s at which we stop using drift correction +// from the GPS and wait for the ground speed to get above GPS_SPEED_MIN +#define GPS_SPEED_RESET 100 void AP_DCM::set_compass(Compass *compass) @@ -409,8 +413,7 @@ AP_DCM::drift_correction(void) } else if (_gps && _gps->status() == GPS::GPS_OK) { // Use GPS Ground course to correct yaw gyro drift - if (_gps->ground_speed >= SPEEDFILT) { - + if (_gps->ground_speed >= GPS_SPEED_MIN) { if (_have_initial_yaw) { float course_over_ground_x = cos(ToRad(_gps->ground_course/100.0)); float course_over_ground_y = sin(ToRad(_gps->ground_course/100.0)); @@ -425,12 +428,17 @@ AP_DCM::drift_correction(void) _have_initial_yaw = true; error_course = 0; } - + } else if (_gps->ground_speed >= GPS_SPEED_RESET) { + // we are not going fast enough to use GPS for + // course correction, but we won't reset + // _have_initial_yaw yet, instead we just let + // the gyro handle yaw + error_course = 0; } else { - // we are moving very slowly. Stop doing - // course correction with the GPS, and instead - // grab the next GPS course value once we - // start moving again. + // we are moving very slowly. Reset + // _have_initial_yaw and adjust our heading + // rapidly next time we get a good GPS ground + // speed error_course = 0; _have_initial_yaw = false; } From f10097a6d5f4581c4055b5ef5513d222722dc519 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 11:37:15 +1100 Subject: [PATCH 041/122] AP_Param: added some comments on AP_Vector3f handling --- libraries/AP_Common/AP_Param.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index 8d607b18fc..32081f92f7 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -41,8 +41,17 @@ // elements. #define GROUP_ID(grpinfo, base, i, shift) ((base)+(((uint16_t)PGM_UINT8(&grpinfo[i].idx))<<(shift))) +// Note about AP_Vector3f handling. +// The code has special cases for AP_Vector3f to allow it to be viewed +// as both a single 3 element vector and as a set of 3 AP_Float +// variables. This is done to make it possible for MAVLink to see +// vectors as parameters, which allows users to save their compass +// offsets in MAVLink parameter files. The code involves quite a few +// special cases which could be generalised to any vector/matrix type +// if we end up needing this behaviour for other than AP_Vector3f -// Static member variables for AP_Param. + +// static member variables for AP_Param. // // max EEPROM write size. This is usually less than the physical @@ -315,7 +324,8 @@ const struct AP_Param::Info *AP_Param::find_var_info_group(const struct GroupInf } else if (type == AP_PARAM_VECTOR3F && (base+ofs+sizeof(float) == (uintptr_t)this || base+ofs+2*sizeof(float) == (uintptr_t)this)) { - // we are inside a Vector3f + // we are inside a Vector3f. We need to work out which + // element of the vector the current object refers to. *idx = (((uintptr_t)this) - (base+ofs))/sizeof(float); *group_element = GROUP_ID(group_info, group_base, i, group_shift); *group_ret = &group_info[i]; @@ -348,7 +358,8 @@ const struct AP_Param::Info *AP_Param::find_var_info(uint8_t *group_element, } else if (type == AP_PARAM_VECTOR3F && (base+sizeof(float) == (uintptr_t)this || base+2*sizeof(float) == (uintptr_t)this)) { - // we are inside a Vector3f + // we are inside a Vector3f. Work out which element we are + // referring to. *idx = (((uintptr_t)this) - base)/sizeof(float); *group_element = 0; *group_ret = NULL; @@ -422,6 +433,7 @@ void AP_Param::add_vector3f_suffix(char *buffer, size_t buffer_size, uint8_t idx { uint8_t len = strnlen(buffer, buffer_size); if ((size_t)(len+3) >= buffer_size) { + // the suffix doesn't fit return; } buffer[len] = '_'; From 698749dd923f54d650201746cd0424050a646c58 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 14:08:24 +1100 Subject: [PATCH 042/122] ACM: don't pass a gps pointer to DCM after discussion with Randy, we don't want ArduCopter to fall back to GPS for yaw when the compass becomes unhealthy. So we shouldn't pass the gps object to the DCM code at all. --- ArduCopter/ArduCopter.pde | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index 83bdaf692f..2a1684062b 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -220,7 +220,8 @@ AP_InertialSensor_MPU6000 ins( CONFIG_MPU6000_CHIP_SELECT_PIN ); AP_InertialSensor_Oilpan ins(&adc); #endif AP_IMU_INS imu(&ins); -AP_DCM dcm(&imu, g_gps); +// we don't want to use gps for yaw correction on ArduCopter +AP_DCM dcm(&imu, NULL); AP_TimerProcess timer_scheduler; #elif HIL_MODE == HIL_MODE_SENSORS From 864ed1a87fefc1a2919b5da9ce0c66e90f05e0e2 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 14:09:12 +1100 Subject: [PATCH 043/122] ACM: check the return of compass.init() if the compass fails to initialise then don't pass it to DCM, or we will get no yaw control. Report the init failure to the user. --- ArduCopter/sensors.pde | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ArduCopter/sensors.pde b/ArduCopter/sensors.pde index 2e1ed8ecd5..c00c0c54fd 100644 --- a/ArduCopter/sensors.pde +++ b/ArduCopter/sensors.pde @@ -78,10 +78,14 @@ static int32_t read_barometer(void) static void init_compass() { compass.set_orientation(MAG_ORIENTATION); // set compass's orientation on aircraft - dcm.set_compass(&compass); - compass.init(); - compass.get_offsets(); // load offsets to account for airframe magnetic interference - compass.null_offsets_enable(); + if (!compass.init()) { + // make sure we don't pass a broken compass to DCM + Serial.println_P(PSTR("COMPASS INIT ERROR")); + return; + } + dcm.set_compass(&compass); + compass.get_offsets(); // load offsets to account for airframe magnetic interference + compass.null_offsets_enable(); } static void init_optflow() From 664622523ddcfdba31ca3ca4f8aace85e31d5bcf Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 14:11:07 +1100 Subject: [PATCH 044/122] Compass: added COMPASS_LEARN and COMPASS_USE parameters these allow you to control if the compass should be used for yaw and if it should learn its offsets. This is useful for locking in compass offsets once they are confirmed to be good, and for learning offsets without using them in flights. The default is to behave the same as previously, which is COMPASS_LEARN=1 and COMPASS_USE=1 --- libraries/AP_Compass/AP_Compass_HMC5843.cpp | 3 +++ libraries/AP_Compass/Compass.cpp | 20 ++++++++++++++++---- libraries/AP_Compass/Compass.h | 4 ++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.cpp b/libraries/AP_Compass/AP_Compass_HMC5843.cpp index 12809d74a8..080eaad0ab 100644 --- a/libraries/AP_Compass/AP_Compass_HMC5843.cpp +++ b/libraries/AP_Compass/AP_Compass_HMC5843.cpp @@ -138,6 +138,9 @@ AP_Compass_HMC5843::init() uint16_t expected_yz = 715; float gain_multiple = 1.0; + // call the parent class init for common code + Compass::init(); + delay(10); // determine if we are using 5843 or 5883L diff --git a/libraries/AP_Compass/Compass.cpp b/libraries/AP_Compass/Compass.cpp index ea9586b49d..c9d4a4e7be 100644 --- a/libraries/AP_Compass/Compass.cpp +++ b/libraries/AP_Compass/Compass.cpp @@ -5,6 +5,8 @@ const AP_Param::GroupInfo Compass::var_info[] PROGMEM = { AP_GROUPINFO("ORIENT", 0, Compass, _orientation_matrix), AP_GROUPINFO("OFS", 1, Compass, _offset), AP_GROUPINFO("DEC", 2, Compass, _declination), + AP_GROUPINFO("LEARN", 3, Compass, _learn), // true if learning calibration + AP_GROUPINFO("USE", 4, Compass, _use_for_yaw), // true if used for DCM yaw AP_GROUPEND }; @@ -30,6 +32,14 @@ Compass::Compass(void) : bool Compass::init() { + // enable learning by default + if (!_learn.load()) { + _learn.set(1); + } + // enable use for yaw calculation by default + if (!_use_for_yaw.load()) { + _use_for_yaw.set(1); + } return true; } @@ -166,15 +176,18 @@ Compass::calculate(const Matrix3f &dcm_matrix) void Compass::null_offsets(const Matrix3f &dcm_matrix) { + if (_null_enable == false || _learn == 0) { + // auto-calibration is disabled + return; + } + // Update our estimate of the offsets in the magnetometer - Vector3f calc(0.0, 0.0, 0.0); // XXX should be safe to remove explicit init here as the default ctor should do the right thing + Vector3f calc; Matrix3f dcm_new_from_last; float weight; Vector3f mag_body_new = Vector3f(mag_x,mag_y,mag_z); - if(_null_enable == false) return; - if(_null_init_done) { dcm_new_from_last = dcm_matrix.transposed() * _last_dcm_matrix; // Note 11/20/2010: transpose() is not working, transposed() is. @@ -192,7 +205,6 @@ Compass::null_offsets(const Matrix3f &dcm_matrix) } _mag_body_last = mag_body_new - calc; _last_dcm_matrix = dcm_matrix; - } diff --git a/libraries/AP_Compass/Compass.h b/libraries/AP_Compass/Compass.h index a047ef0717..cc3bc5e704 100644 --- a/libraries/AP_Compass/Compass.h +++ b/libraries/AP_Compass/Compass.h @@ -124,6 +124,8 @@ public: /// void null_offsets_disable(void); + /// return true if the compass should be used for yaw calculations + bool use_for_yaw(void) { return healthy && _use_for_yaw; } /// Sets the local magnetic field declination. /// @@ -138,6 +140,8 @@ protected: AP_Matrix3f _orientation_matrix; AP_Vector3f _offset; AP_Float _declination; + AP_Int8 _learn; /// Date: Sat, 25 Feb 2012 14:11:31 +1100 Subject: [PATCH 045/122] DCM: use the new use_for_yaw() compass method --- libraries/AP_DCM/AP_DCM.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 3e2dacded3..8d591ff4d3 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -391,7 +391,7 @@ AP_DCM::drift_correction(void) //*****YAW*************** - if (_compass && _compass->healthy) { + if (_compass && _compass->use_for_yaw()) { if (_have_initial_yaw) { // Equation 23, Calculating YAW error // We make the gyro YAW drift correction based From 0248b48d308ca67434df0c8b4960fd86bca8fd68 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 14:26:54 +1100 Subject: [PATCH 046/122] allow MAG_ENABLE to be changed in flight this disables the compass in DCM if MAG_ENABLE is changed in flight. Without this we would use a fixed yaw once the compass is disabled This also makes sure we don't pass the compass to DCM till we have done a read. This ensures we have a good compass fix for the initial DCM heading --- ArduCopter/sensors.pde | 2 +- ArduPlane/ArduPlane.pde | 3 +++ ArduPlane/system.pde | 3 +-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ArduCopter/sensors.pde b/ArduCopter/sensors.pde index c00c0c54fd..4c901b6357 100644 --- a/ArduCopter/sensors.pde +++ b/ArduCopter/sensors.pde @@ -78,7 +78,7 @@ static int32_t read_barometer(void) static void init_compass() { compass.set_orientation(MAG_ORIENTATION); // set compass's orientation on aircraft - if (!compass.init()) { + if (!compass.init() || !compass.read()) { // make sure we don't pass a broken compass to DCM Serial.println_P(PSTR("COMPASS INIT ERROR")); return; diff --git a/ArduPlane/ArduPlane.pde b/ArduPlane/ArduPlane.pde index 41b092d130..edc7963f3b 100644 --- a/ArduPlane/ArduPlane.pde +++ b/ArduPlane/ArduPlane.pde @@ -769,8 +769,11 @@ static void medium_loop() #if HIL_MODE != HIL_MODE_ATTITUDE if (g.compass_enabled && compass.read()) { + dcm.set_compass(&compass); compass.calculate(dcm.get_dcm_matrix()); // Calculate heading compass.null_offsets(dcm.get_dcm_matrix()); + } else { + dcm.set_compass(NULL); } #endif /*{ diff --git a/ArduPlane/system.pde b/ArduPlane/system.pde index 2224508ee5..39017f4248 100644 --- a/ArduPlane/system.pde +++ b/ArduPlane/system.pde @@ -175,12 +175,11 @@ static void init_ardupilot() if (g.compass_enabled==true) { compass.set_orientation(MAG_ORIENTATION); // set compass's orientation on aircraft - if (!compass.init()) { + if (!compass.init() || !compass.read()) { Serial.println_P(PSTR("Compass initialisation failed!")); g.compass_enabled = false; } else { dcm.set_compass(&compass); - compass.get_offsets(); // load offsets to account for airframe magnetic interference compass.null_offsets_enable(); } } From f59297d7a7f62f1ac986c539fbb0f852a7904feb Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 14:38:52 +1100 Subject: [PATCH 047/122] Compass: catch the case of a user enabling a compass mid-flight if a compass has not been initialised at startup we can't enable it mid-flight, as we don't have the orientation --- libraries/AP_Compass/AP_Compass_HMC5843.cpp | 8 ++++++++ libraries/AP_Compass/AP_Compass_HMC5843.h | 1 + 2 files changed, 9 insertions(+) diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.cpp b/libraries/AP_Compass/AP_Compass_HMC5843.cpp index 080eaad0ab..adcf941a73 100644 --- a/libraries/AP_Compass/AP_Compass_HMC5843.cpp +++ b/libraries/AP_Compass/AP_Compass_HMC5843.cpp @@ -247,12 +247,20 @@ AP_Compass_HMC5843::init() return false; } + _initialised = true; + return success; } // Read Sensor data bool AP_Compass_HMC5843::read() { + if (!_initialised) { + // someone has tried to enable a compass for the first time + // mid-flight .... we can't do that yet (especially as we won't + // have the right orientation!) + return false; + } if (!healthy) { if (millis() < _retry_time) { return false; diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.h b/libraries/AP_Compass/AP_Compass_HMC5843.h index d5ef7e967d..d419686f08 100644 --- a/libraries/AP_Compass/AP_Compass_HMC5843.h +++ b/libraries/AP_Compass/AP_Compass_HMC5843.h @@ -48,6 +48,7 @@ class AP_Compass_HMC5843 : public Compass { private: float calibration[3]; + bool _initialised; virtual bool read_raw(void); uint8_t _base_config; virtual bool re_initialise(void); From e2bbc795ad7bd97ac58ae5f81adaaa57df42d060 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 15:08:42 +1100 Subject: [PATCH 048/122] ACM: use a NULL gps pointer in DCM init current DCM API does need a GPS reference passed in, but it can be NULL --- ArduCopter/ArduCopter.pde | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index 2a1684062b..e37b3a16d4 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -220,8 +220,10 @@ AP_InertialSensor_MPU6000 ins( CONFIG_MPU6000_CHIP_SELECT_PIN ); AP_InertialSensor_Oilpan ins(&adc); #endif AP_IMU_INS imu(&ins); -// we don't want to use gps for yaw correction on ArduCopter -AP_DCM dcm(&imu, NULL); +// we don't want to use gps for yaw correction on ArduCopter, so pass +// a NULL GPS object pointer +static GPS *g_gps_null; +AP_DCM dcm(&imu, g_gps_null); AP_TimerProcess timer_scheduler; #elif HIL_MODE == HIL_MODE_SENSORS From 900388a85a76327e745edaba526630542bc0ed55 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 16:02:20 +1100 Subject: [PATCH 049/122] DCM: disable compass null offsets when setting initial yaw we need to ensure the compass null offsets code doesn't see a sudden yaw change, or it will change the offsets by a large amount very suddenly --- libraries/AP_DCM/AP_DCM.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index 8d591ff4d3..d82124aa3d 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -407,7 +407,9 @@ AP_DCM::drift_correction(void) _compass->calculate(_dcm_matrix); // now construct a new DCM matrix + _compass->null_offsets_disable(); rotation_matrix_from_euler(_dcm_matrix, roll, pitch, _compass->heading); + _compass->null_offsets_enable(); _have_initial_yaw = true; } } else if (_gps && _gps->status() == GPS::GPS_OK) { @@ -424,7 +426,13 @@ AP_DCM::drift_correction(void) // DCM matrix to the current // roll/pitch values, but with yaw // from the GPS + if (!_compass) { + _compass->null_offsets_disable(); + } rotation_matrix_from_euler(_dcm_matrix, roll, pitch, ToRad(_gps->ground_course)); + if (!_compass) { + _compass->null_offsets_enable(); + } _have_initial_yaw = true; error_course = 0; } From d0a6359b37e067f0bde847b92d8d4841c100e5fe Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Feb 2012 17:34:33 +1100 Subject: [PATCH 050/122] Compass: use constructor to set initial values for _learn and _use_for_yaw this ensures they are set if you have MAG_ENABLE==0 --- libraries/AP_Compass/AP_Compass_HMC5843.cpp | 3 --- libraries/AP_Compass/Compass.cpp | 12 ++---------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.cpp b/libraries/AP_Compass/AP_Compass_HMC5843.cpp index adcf941a73..dc452baad7 100644 --- a/libraries/AP_Compass/AP_Compass_HMC5843.cpp +++ b/libraries/AP_Compass/AP_Compass_HMC5843.cpp @@ -138,9 +138,6 @@ AP_Compass_HMC5843::init() uint16_t expected_yz = 715; float gain_multiple = 1.0; - // call the parent class init for common code - Compass::init(); - delay(10); // determine if we are using 5843 or 5883L diff --git a/libraries/AP_Compass/Compass.cpp b/libraries/AP_Compass/Compass.cpp index c9d4a4e7be..9a9ef77569 100644 --- a/libraries/AP_Compass/Compass.cpp +++ b/libraries/AP_Compass/Compass.cpp @@ -18,6 +18,8 @@ Compass::Compass(void) : _declination (0.0), _null_init_done(false), _null_enable(false), + _learn(1), + _use_for_yaw(1), product_id(AP_COMPASS_TYPE_UNKNOWN) { // Default the orientation matrix to none - will be overridden at group load time @@ -25,21 +27,11 @@ Compass::Compass(void) : _orientation_matrix.set(ROTATION_NONE); } -//_group - // Default init method, just returns success. // bool Compass::init() { - // enable learning by default - if (!_learn.load()) { - _learn.set(1); - } - // enable use for yaw calculation by default - if (!_use_for_yaw.load()) { - _use_for_yaw.set(1); - } return true; } From a924c3685ededcc9d8e949dc9ac3bebe42c3baa3 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sat, 25 Feb 2012 13:21:48 -0800 Subject: [PATCH 051/122] Based on Jani's latest logs I've made two tweaks to alt hold. The first is to remove the filter on the throttle output for alt_hold. The second was to open up the constraint on climb rate. This is to deal with larger than expected disturbances causing altitude changes. --- ArduCopter/ArduCopter.pde | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index e37b3a16d4..e8c3188a5d 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -1515,7 +1515,7 @@ void update_simple_mode(void) g.rc_2.control_in = control_pitch; } -#define THROTTLE_FILTER_SIZE 4 +#define THROTTLE_FILTER_SIZE 2 // 50 hz update rate, not 250 // controls all throttle behavior @@ -1652,7 +1652,10 @@ void update_throttle_mode(void) } // light filter of output - g.rc_3.servo_out = (g.rc_3.servo_out * (THROTTLE_FILTER_SIZE - 1) + throttle_out) / THROTTLE_FILTER_SIZE; + //g.rc_3.servo_out = (g.rc_3.servo_out * (THROTTLE_FILTER_SIZE - 1) + throttle_out) / THROTTLE_FILTER_SIZE; + + // no filter + g.rc_3.servo_out = throttle_out; break; } } @@ -1918,7 +1921,7 @@ static void update_altitude() climb_rate = (climb_rate + old_climb_rate)>>1; // manage bad data - climb_rate = constrain(climb_rate, -300, 300); + climb_rate = constrain(climb_rate, -800, 800); // save for filtering old_climb_rate = climb_rate; From 1ce267f90443bd56551f75a3a075f5e526374d47 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sat, 25 Feb 2012 13:22:15 -0800 Subject: [PATCH 052/122] increased the rate error for more responsive alt hold --- ArduCopter/Attitude.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArduCopter/Attitude.pde b/ArduCopter/Attitude.pde index 793bbbdd73..a0ba5dd413 100644 --- a/ArduCopter/Attitude.pde +++ b/ArduCopter/Attitude.pde @@ -203,7 +203,7 @@ get_nav_throttle(int32_t z_error) // convert to desired Rate: rate_error = g.pi_alt_hold.get_p(z_error); - rate_error = constrain(rate_error, -100, 100); + rate_error = constrain(rate_error, -150, 150); // limit error to prevent I term wind up z_error = constrain(z_error, -400, 400); From cc5ab4aebf4aa368545e81da6f92189f15cf9087 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sat, 25 Feb 2012 13:22:42 -0800 Subject: [PATCH 053/122] increased speed of alt hold I term based on Jani's Logs --- ArduCopter/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 319a47c7e9..490ccb6bc2 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -717,7 +717,7 @@ # define ALT_HOLD_P 0.4 // #endif #ifndef ALT_HOLD_I -# define ALT_HOLD_I 0.02 +# define ALT_HOLD_I 0.04 #endif #ifndef ALT_HOLD_IMAX # define ALT_HOLD_IMAX 300 From f27e9f9ca138b24e0cd97b57b3110a80926f865f Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sat, 25 Feb 2012 13:23:30 -0800 Subject: [PATCH 054/122] added a simple rest of nav_throttle just in case --- ArduCopter/system.pde | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ArduCopter/system.pde b/ArduCopter/system.pde index 5652fdff64..d3560a4314 100644 --- a/ArduCopter/system.pde +++ b/ArduCopter/system.pde @@ -531,6 +531,9 @@ static void set_mode(byte mode) if(throttle_mode == THROTTLE_MANUAL){ // reset all of the throttle iterms update_throttle_cruise(); + + // reset auto_throttle + nav_throttle = 0; }else { // an automatic throttle init_throttle_cruise(); From 952e5d7bbcaec65a117c848039a005470fcb3059 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 15:31:56 +0900 Subject: [PATCH 055/122] AP_Mount - #include FastSerial first to allow it to compile under Arduino 1.0 --- libraries/AP_Mount/AP_Mount.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Mount/AP_Mount.h b/libraries/AP_Mount/AP_Mount.h index 89c576a729..b8333ea339 100644 --- a/libraries/AP_Mount/AP_Mount.h +++ b/libraries/AP_Mount/AP_Mount.h @@ -20,8 +20,9 @@ #ifndef AP_Mount_H #define AP_Mount_H -//#include +#include #include +#include #include #include #include From c14d7768f7237cc542b27fc21db41b4a5ea2f2b2 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 15:34:05 +0900 Subject: [PATCH 056/122] Filter - first version of filter library include ModeFilter --- libraries/Filter/Filter.h | 97 +++++++++++++++ libraries/Filter/ModeFilter.h | 123 ++++++++++++++++++++ libraries/Filter/SumFilter.h | 54 +++++++++ libraries/Filter/examples/Filter/Filter.pde | 77 ++++++++++++ libraries/Filter/examples/Filter/Makefile | 1 + libraries/Filter/keywords.txt | 8 ++ 6 files changed, 360 insertions(+) create mode 100644 libraries/Filter/Filter.h create mode 100644 libraries/Filter/ModeFilter.h create mode 100644 libraries/Filter/SumFilter.h create mode 100644 libraries/Filter/examples/Filter/Filter.pde create mode 100644 libraries/Filter/examples/Filter/Makefile create mode 100644 libraries/Filter/keywords.txt diff --git a/libraries/Filter/Filter.h b/libraries/Filter/Filter.h new file mode 100644 index 0000000000..8d47ca100f --- /dev/null +++ b/libraries/Filter/Filter.h @@ -0,0 +1,97 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- +// +// This is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 2.1 of the License, or (at +// your option) any later version. +// + +/// @file Filter.h +/// @brief A base class for apply various filters to values +/// +/// DO NOT CREATE AND DESTROY INSTANCES OF THIS CLASS BECAUSE THE ALLOC/MALLOC WILL LEAD TO MEMORY FRAGMENTATION + +#ifndef Filter_h +#define Filter_h + +#include +#include + +#define FILTER_MAX_SAMPLES 6 // max number of samples that can be added to the filter + +template +class Filter +{ + public: + Filter(uint8_t filter_size); + ~Filter(); + + // apply - Add a new raw value to the filter, retrieve the filtered result + virtual T apply(T sample); + + // reset - clear the filter + virtual void reset(); + + uint8_t filter_size; // max number of items in filter + T* samples; // buffer of samples + uint8_t sample_index; // pointer to the next empty slot in the buffer + + private: +}; + +// Typedef for convenience +typedef Filter FilterInt16; + +// Constructor +template +Filter::Filter(uint8_t filter_size) : + filter_size(filter_size), sample_index(0) +{ + // check filter size + if( Filter::filter_size > FILTER_MAX_SAMPLES ) + Filter::filter_size = FILTER_MAX_SAMPLES; + + // create array + samples = (T *)malloc(Filter::filter_size * sizeof(T)); + + // clear array + reset(); +} + +// Destructor +template +Filter::~Filter() +{ + // free up the samples array + free(samples); +} + +// reset - clear all samples +template +void Filter::reset() +{ + for( int8_t i=0; i +T Filter::apply(T sample){ + + // add sample to array + samples[sample_index++] = sample; + + // wrap index if necessary + if( sample_index >= filter_size ) + sample_index = 0; + + // base class doesn't know what filtering to do so we just return the raw sample + return sample; +} + +#endif + + + diff --git a/libraries/Filter/ModeFilter.h b/libraries/Filter/ModeFilter.h new file mode 100644 index 0000000000..b4613290ae --- /dev/null +++ b/libraries/Filter/ModeFilter.h @@ -0,0 +1,123 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- +// +// This is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 2.1 of the License, or (at +// your option) any later version. +// + +/// @file ModeFilter.h +/// @brief A class to apply a mode filter which is basically picking the median value from the last x samples +/// the filter size (i.e buffer size) should always be an odd number +/// +/// DO NOT CREATE AND DESTROY INSTANCES OF THIS CLASS BECAUSE THE ALLOC/MALLOC WILL LEAD TO MEMORY FRAGMENTATION + +#ifndef ModeFilter_h +#define ModeFilter_h + +#include +#include + +template +class ModeFilter : public Filter +{ + public: + ModeFilter(uint8_t filter_size, uint8_t return_element); + + // apply - Add a new raw value to the filter, retrieve the filtered result + virtual T apply(T sample); + + private: + // private methods + uint8_t _return_element; + void isort(T sample, bool drop_high_sample); + bool drop_high_sample; // switch to determine whether to drop the highest or lowest sample when new value arrives +}; + +// Typedef for convenience +typedef ModeFilter ModeFilterInt16; + +// Constructor ////////////////////////////////////////////////////////////// + +template +ModeFilter::ModeFilter(uint8_t filter_size, uint8_t return_element) : + Filter(filter_size), + _return_element(return_element), + drop_high_sample(true) +{ + // ensure we have a valid return_nth_element value. if not, revert to median + if( _return_element >= filter_size ) + _return_element = filter_size / 2; +}; + +// Public Methods ////////////////////////////////////////////////////////////// + +template +T ModeFilter::apply(T sample) +{ + // insert the new items into the samples buffer + isort(sample, drop_high_sample); + + // next time drop from the other end of the sample buffer + drop_high_sample = !drop_high_sample; + + // return results + if( Filter::sample_index < Filter::filter_size ) { + // middle sample if buffer is not yet full + return Filter::samples[(Filter::sample_index / 2)]; + }else{ + // return element specified by user in constructor + return Filter::samples[_return_element]; + } +} + +// +// insertion sort - takes a new sample and pushes it into the sample array +// drops either the highest or lowest sample depending on the 'drop_high_sample' parameter +// +template +void ModeFilter::isort(T new_sample, bool drop_high_sample) +{ + int8_t i; + + // if the buffer isn't full simply increase the #items in the buffer (i.e. sample_index) + // the rest is the same as dropping the high sample + if( Filter::sample_index < Filter::filter_size ) { + Filter::sample_index++; + drop_high_sample = true; + } + + if( drop_high_sample ) { // drop highest sample from the buffer to make room for our new sample + + // start from top. Note: sample_index always points to the next open space so we start from sample_index-1 + i = Filter::sample_index-1; + + // if the next element is higher than our new sample, push it up one position + while( Filter::samples[i-1] > new_sample && i > 0 ) { + Filter::samples[i] = Filter::samples[i-1]; + i--; + } + + // add our new sample to the buffer + Filter::samples[i] = new_sample; + + }else{ // drop lowest sample from the buffer to make room for our new sample + + // start from the bottom + i = 0; + + // if the element is lower than our new sample, push it down one position + while( Filter::samples[i+1] < new_sample && i < Filter::sample_index-1 ) { + Filter::samples[i] = Filter::samples[i+1]; + i++; + } + + // add our new sample to the buffer + Filter::samples[i] = new_sample; + } +} + +#endif + + + diff --git a/libraries/Filter/SumFilter.h b/libraries/Filter/SumFilter.h new file mode 100644 index 0000000000..300124d1c1 --- /dev/null +++ b/libraries/Filter/SumFilter.h @@ -0,0 +1,54 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- +// +// This is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 2.1 of the License, or (at +// your option) any later version. +// + +/// @file SumFilter.h +/// @brief A class to apply an average filter (but we save some calc time by not averaging the values but instead save one division by just adding the values up +/// +/// DO NOT CREATE AND DESTROY INSTANCES OF THIS CLASS BECAUSE THE ALLOC/MALLOC WILL LEAD TO MEMORY FRAGMENTATION + +#ifndef SumFilter_h +#define SumFilter_h + +#include +#include + +template +class SumFilter : public Filter +{ + public: + SumFilter(uint8_t filter_size) : Filter(filter_size) {}; + + // apply - Add a new raw value to the filter, retrieve the filtered result + virtual T apply(T sample); + + private: +}; + +// Typedef for convenience +typedef SumFilter SumFilterInt16; + +// Public Methods ////////////////////////////////////////////////////////////// +template +T SumFilter::apply(T sample){ + + T result = 0; + + // call parent's apply function to get the sample into the array + Filter::apply(sample); + + // get sum of all values - there is a risk of overflow here that we ignore + for(int8_t i=0; i::filter_size; i++) + result += Filter::samples[i]; + + return result; +} + +#endif + + + diff --git a/libraries/Filter/examples/Filter/Filter.pde b/libraries/Filter/examples/Filter/Filter.pde new file mode 100644 index 0000000000..88014523d4 --- /dev/null +++ b/libraries/Filter/examples/Filter/Filter.pde @@ -0,0 +1,77 @@ +/* + Example of Filter library. + Code by Randy Mackay and Jason Short. DIYDrones.com +*/ + +#include +#include +#include // ArduPilot Mega Vector/Matrix math Library +#include // Filter library +#include // ModeFilter library (inherits from Filter class) +#include + +//////////////////////////////////////////////////////////////////////////////// +// Serial ports +//////////////////////////////////////////////////////////////////////////////// +FastSerialPort0(Serial); // FTDI/console + +//typedef ModeFilter IntModeFilter; +//typedef SumFilter IntSumFilter; + +int16_t rangevalue[] = {31000, 31000, 50, 55, 60, 55, 10, 0, 31000}; + +// create a global instance of the class instead of local to avoid memory fragmentation +ModeFilterInt16 mfilter(5,2); // buffer of 5 values, result will be from buffer element 2 (ie. the 3rd element which is the middle) +//SumFilterInt16 mfilter(5); + +//Function to print contents of a filter +void printFilter(Filter& filter) +{ + for(int8_t i=0; i < filter.filter_size; i++) + { + Serial.printf("%d ",(int)filter.samples[i]); + } + Serial.println(); +} + +void setup() +{ + // Open up a serial connection + Serial.begin(115200); + + // introduction + Serial.printf("ArduPilot ModeFilter library test ver 1.0\n\n"); + + // Wait for the serial connection + delay(500); +} + +//Main loop where the action takes place +void loop() +{ + int8_t i = 0; + int16_t filtered_value; + + while( i < 9 ) { + + // output to user + Serial.printf("applying: %d\n",(int)rangevalue[i]); + + // display original + Serial.printf("before: "); + printFilter(mfilter); + + // apply new value and retrieved filtered result + filtered_value = mfilter.apply(rangevalue[i]); + + // display results + Serial.printf("after: "); + printFilter(mfilter); + Serial.printf("The filtered value is: %d\n\n",(int)filtered_value); + + i++; + } + delay(100000); +} + + diff --git a/libraries/Filter/examples/Filter/Makefile b/libraries/Filter/examples/Filter/Makefile new file mode 100644 index 0000000000..d1f40fd90f --- /dev/null +++ b/libraries/Filter/examples/Filter/Makefile @@ -0,0 +1 @@ +include ../../../AP_Common/Arduino.mk diff --git a/libraries/Filter/keywords.txt b/libraries/Filter/keywords.txt new file mode 100644 index 0000000000..4061f263dd --- /dev/null +++ b/libraries/Filter/keywords.txt @@ -0,0 +1,8 @@ +Filter KEYWORD1 +ModeFilter KEYWORD1 +SumFilter KEYWORD1 +apply KEYWORD2 +reset KEYWORD2 +max_samples KEYWORD2 +samples KEYWORD2 +sample_index KEYWORD2 From f264e29814e817c49398a44ffa19503ed3ade6d6 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 15:34:50 +0900 Subject: [PATCH 057/122] AP_RangeFinder - cut over to use new ModeFilter from Filter library --- libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp | 2 +- libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.h | 2 +- libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp | 2 +- libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.h | 2 +- libraries/AP_RangeFinder/RangeFinder.cpp | 2 +- libraries/AP_RangeFinder/RangeFinder.h | 6 +++--- .../AP_RangeFinder_test/AP_RangeFinder_test.pde | 10 +++++++++- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp index 20915092d6..e5e865e615 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp +++ b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.cpp @@ -35,7 +35,7 @@ // Constructor ////////////////////////////////////////////////////////////// -AP_RangeFinder_MaxsonarXL::AP_RangeFinder_MaxsonarXL(AP_AnalogSource *source, ModeFilter *filter): +AP_RangeFinder_MaxsonarXL::AP_RangeFinder_MaxsonarXL(AP_AnalogSource *source, FilterInt16 *filter): RangeFinder(source, filter), _scaler(AP_RANGEFINDER_MAXSONARXL_SCALER) { diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.h b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.h index 12780a6dfc..63b8065e00 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.h +++ b/libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarXL.h @@ -24,7 +24,7 @@ class AP_RangeFinder_MaxsonarXL : public RangeFinder { public: - AP_RangeFinder_MaxsonarXL(AP_AnalogSource *source, ModeFilter *filter); + AP_RangeFinder_MaxsonarXL(AP_AnalogSource *source, FilterInt16 *filter); int convert_raw_to_distance(int _raw_value) { return _raw_value * _scaler; } // read value from analog port and return distance in cm float calculate_scaler(int sonar_type, float adc_refence_voltage); diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp index 3f08bb7dc7..1e43441159 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp +++ b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.cpp @@ -35,7 +35,7 @@ // Constructor ////////////////////////////////////////////////////////////// -AP_RangeFinder_SharpGP2Y::AP_RangeFinder_SharpGP2Y(AP_AnalogSource *source, ModeFilter *filter) : +AP_RangeFinder_SharpGP2Y::AP_RangeFinder_SharpGP2Y(AP_AnalogSource *source, FilterInt16 *filter) : RangeFinder(source, filter) { max_distance = AP_RANGEFINDER_SHARPEGP2Y_MAX_DISTANCE; diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.h b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.h index 4f5a328979..b5d92f3f16 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.h +++ b/libraries/AP_RangeFinder/AP_RangeFinder_SharpGP2Y.h @@ -9,7 +9,7 @@ class AP_RangeFinder_SharpGP2Y : public RangeFinder { public: - AP_RangeFinder_SharpGP2Y(AP_AnalogSource *source, ModeFilter *filter); + AP_RangeFinder_SharpGP2Y(AP_AnalogSource *source, FilterInt16 *filter); int convert_raw_to_distance(int _raw_value) { if( _raw_value == 0 ) return max_distance; diff --git a/libraries/AP_RangeFinder/RangeFinder.cpp b/libraries/AP_RangeFinder/RangeFinder.cpp index 63945e5ab7..6b1ae09370 100644 --- a/libraries/AP_RangeFinder/RangeFinder.cpp +++ b/libraries/AP_RangeFinder/RangeFinder.cpp @@ -43,7 +43,7 @@ int RangeFinder::read() // ensure distance is within min and max temp_dist = constrain(temp_dist, min_distance, max_distance); - distance = _mode_filter->get_filtered_with_sample(temp_dist); + distance = _mode_filter->apply(temp_dist); return distance; } diff --git a/libraries/AP_RangeFinder/RangeFinder.h b/libraries/AP_RangeFinder/RangeFinder.h index 1870cd5a94..03768ba181 100644 --- a/libraries/AP_RangeFinder/RangeFinder.h +++ b/libraries/AP_RangeFinder/RangeFinder.h @@ -4,7 +4,7 @@ #include #include #include "../AP_AnalogSource/AP_AnalogSource.h" -#include "../ModeFilter/ModeFilter.h" // ArduPilot Mega RC Library +#include "../Filter/Filter.h" // Filter library /* #define AP_RANGEFINDER_ORIENTATION_FRONT 0, 10, 0 @@ -22,7 +22,7 @@ class RangeFinder { protected: - RangeFinder(AP_AnalogSource * source, ModeFilter *filter) : + RangeFinder(AP_AnalogSource * source, FilterInt16 *filter) : _analog_source(source), _mode_filter(filter) {} public: @@ -38,6 +38,6 @@ class RangeFinder virtual int read(); // read value from sensor and return distance in cm AP_AnalogSource *_analog_source; - ModeFilter *_mode_filter; + FilterInt16 *_mode_filter; }; #endif diff --git a/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde b/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde index b26d1aab44..2d5864baef 100644 --- a/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde +++ b/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde @@ -4,6 +4,9 @@ */ // includes +#include +#include +#include #include // Range finder library #include #include @@ -11,6 +14,11 @@ #include #include // mode filter +//////////////////////////////////////////////////////////////////////////////// +// Serial ports +//////////////////////////////////////////////////////////////////////////////// +FastSerialPort0(Serial); // FTDI/console + // comment out line below if using APM2 or analog pin instead of APM1's built in ADC #define USE_ADC_ADS7844 // use APM1's built in ADC and connect sonar to pitot tube @@ -24,7 +32,7 @@ // declare global instances Arduino_Mega_ISR_Registry isr_registry; -ModeFilter mode_filter; +ModeFilterInt16 mode_filter(5,2); #ifdef USE_ADC_ADS7844 AP_TimerProcess adc_scheduler; AP_ADC_ADS7844 adc; From 69132e0fe74d4c06c03f47f02e230f00d2966209 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 15:35:14 +0900 Subject: [PATCH 058/122] ArduCopter - change sonar to use new mode filter from Filter library --- ArduCopter/ArduCopter.pde | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index e8c3188a5d..d6f0b34c5f 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -78,7 +78,7 @@ http://code.google.com/p/ardupilot-mega/downloads/list #include // RC Channel Library #include // Range finder library #include // Optical Flow library -#include +#include // Mode Filter from Filter library #include // APM relay #include // MAVLink GCS definitions #include @@ -268,7 +268,7 @@ GCS_MAVLINK gcs3; // SONAR selection //////////////////////////////////////////////////////////////////////////////// // -ModeFilter sonar_mode_filter; +ModeFilterInt16 sonar_mode_filter(5,2); #if CONFIG_SONAR == ENABLED #if CONFIG_SONAR_SOURCE == SONAR_SOURCE_ADC AP_AnalogSource_ADC sonar_analog_source( &adc, CONFIG_SONAR_SOURCE_ADC_CHANNEL, 0.25); From 21d7a77009b74ce88d6c5b6e8f36f486d1d06213 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 15:35:42 +0900 Subject: [PATCH 059/122] ArduPlane - switch sonar to use new mode filter from filter library --- ArduPlane/ArduPlane.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArduPlane/ArduPlane.pde b/ArduPlane/ArduPlane.pde index edc7963f3b..1fa3643e20 100644 --- a/ArduPlane/ArduPlane.pde +++ b/ArduPlane/ArduPlane.pde @@ -224,7 +224,7 @@ GCS_MAVLINK gcs3; // PITOT selection //////////////////////////////////////////////////////////////////////////////// // -ModeFilter sonar_mode_filter; +ModeFilterInt16 sonar_mode_filter(5,2); #if CONFIG_PITOT_SOURCE == PITOT_SOURCE_ADC AP_AnalogSource_ADC pitot_analog_source( &adc, From 74f7d7a1c0ecd6b49ebf6bbd8626dc0b976a953d Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 15:36:23 +0900 Subject: [PATCH 060/122] ModeFilter - remove older ModeFilter library (new library is now in Filter directory) --- libraries/ModeFilter/ModeFilter.cpp | 87 ------------------- libraries/ModeFilter/ModeFilter.h | 26 ------ .../ModeFilter/examples/ModeFilter/Makefile | 2 - .../examples/ModeFilter/ModeFilter.pde | 51 ----------- libraries/ModeFilter/keywords.txt | 8 -- 5 files changed, 174 deletions(-) delete mode 100644 libraries/ModeFilter/ModeFilter.cpp delete mode 100644 libraries/ModeFilter/ModeFilter.h delete mode 100644 libraries/ModeFilter/examples/ModeFilter/Makefile delete mode 100644 libraries/ModeFilter/examples/ModeFilter/ModeFilter.pde delete mode 100644 libraries/ModeFilter/keywords.txt diff --git a/libraries/ModeFilter/ModeFilter.cpp b/libraries/ModeFilter/ModeFilter.cpp deleted file mode 100644 index cf282d56f0..0000000000 --- a/libraries/ModeFilter/ModeFilter.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - ModeFilter.cpp - Mode Filter Library for Ardupilot Mega. Arduino - Code by Jason Short. DIYDrones.com - Adapted from code by Jason Lessels(June 6, 2011), Bill Gentles (Nov. 12, 2010) - - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - -*/ -#include "ModeFilter.h" - -#include -#if defined(ARDUINO) && ARDUINO >= 100 - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - - -// Constructors //////////////////////////////////////////////////////////////// - -ModeFilter::ModeFilter() : - _sample_index(0) -{ -} - -// Public Methods ////////////////////////////////////////////////////////////// - //Sorting function - // sort function (Author: Bill Gentles, Nov. 12, 2010) - // *a is an array pointer function - -int ModeFilter::get_filtered_with_sample(int _sample){ - _samples[_sample_index] = _sample; - - _sample_index++; - - if (_sample_index >= MOD_FILTER_SIZE) - _sample_index = 0; - - isort(); - - return mode(); -} - - -void ModeFilter::isort() -{ - for (int i = 1; i < MOD_FILTER_SIZE; ++i) { - int j = _samples[i]; - int k; - for (k = i - 1; (k >= 0) && (j < _samples[k]); k--){ - _samples[k + 1] = _samples[k]; - } - _samples[k + 1] = j; - } -} - -//Mode function, returning the mode or median. -int16_t ModeFilter::mode(){ - int fmode = 0; - byte i = 0; - byte count = 0; - byte maxCount = 0; - byte bimodal = 0; - - while(count > maxCount){ - fmode = _samples[i]; - maxCount = count; - bimodal = 0; - } - - if(count == 0) i++; - - if(count == maxCount){ //If the dataset has 2 or more modes. - bimodal = 1; - } - - if(fmode == 0 || bimodal == 1){ //Return the median if there is no mode. - fmode = _samples[(MOD_FILTER_SIZE / 2)]; - } - - return fmode; -} diff --git a/libraries/ModeFilter/ModeFilter.h b/libraries/ModeFilter/ModeFilter.h deleted file mode 100644 index 7cd93017ae..0000000000 --- a/libraries/ModeFilter/ModeFilter.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef ModeFilter_h -#define ModeFilter_h - -#define MOD_FILTER_SIZE 6 - -#include - -class ModeFilter -{ - private: - public: - ModeFilter(); - - int get_filtered_with_sample(int _sample); - int16_t _samples[MOD_FILTER_SIZE]; - - private: - void isort(); - int16_t mode(); - int8_t _sample_index; -}; - -#endif - - - diff --git a/libraries/ModeFilter/examples/ModeFilter/Makefile b/libraries/ModeFilter/examples/ModeFilter/Makefile deleted file mode 100644 index 85b4d8856b..0000000000 --- a/libraries/ModeFilter/examples/ModeFilter/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -BOARD = mega -include ../../../AP_Common/Arduino.mk diff --git a/libraries/ModeFilter/examples/ModeFilter/ModeFilter.pde b/libraries/ModeFilter/examples/ModeFilter/ModeFilter.pde deleted file mode 100644 index f07b442184..0000000000 --- a/libraries/ModeFilter/examples/ModeFilter/ModeFilter.pde +++ /dev/null @@ -1,51 +0,0 @@ -/* - Example of APM_RC library. - Code by Jordi MuÃ’oz and Jose Julio. DIYDrones.com - - Print Input values and send Output to the servos - (Works with last PPM_encoder firmware) -*/ - -#include // ArduPilot Mega RC Library - -int rangevalue[] = {31000, 31000, 50, 55, 60, 55, 10, 0, 31000}; - -ModeFilter mfilter; -byte i = 0; - -void setup() -{ - //Open up a serial connection - Serial.begin(115200); - //Wait for the serial connection - delay(500); -} - -//Main loop where the action takes place -void loop() -{ - while(i < 9){ - printArray(mfilter._samples, 6); - int modE = mfilter.get_filtered_with_sample(rangevalue[i]); - i++; - - Serial.print("The mode/median is: "); - Serial.print(modE); - Serial.println(); - } - delay(100000); -} - -/*-----------Functions------------*/ -//Function to print the arrays. -void printArray(int *a, int n) -{ - for (int i = 0; i < n; i++) - { - Serial.print(a[i], DEC); - Serial.print(' '); - } - - Serial.println(); -} - diff --git a/libraries/ModeFilter/keywords.txt b/libraries/ModeFilter/keywords.txt deleted file mode 100644 index 3efcc0fa52..0000000000 --- a/libraries/ModeFilter/keywords.txt +++ /dev/null @@ -1,8 +0,0 @@ -APM_RC KEYWORD1 -begin KEYWORD2 -InputCh KEYWORD2 -OutputCh KEYWORD2 -GetState KEYWORD2 -Force_Out0_Out1 KEYWORD2 -Force_Out2_Out3 KEYWORD2 -Force_Out6_Out7 KEYWORD2 From 8193c786ef08a55b9efad5541ebe30c8f3db7233 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 17:05:41 +0900 Subject: [PATCH 061/122] ArduCopter - added #include to unbreak the build! --- ArduCopter/ArduCopter.pde | 1 + 1 file changed, 1 insertion(+) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index d6f0b34c5f..bca0a82125 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -78,6 +78,7 @@ http://code.google.com/p/ardupilot-mega/downloads/list #include // RC Channel Library #include // Range finder library #include // Optical Flow library +#include // Filter library #include // Mode Filter from Filter library #include // APM relay #include // MAVLink GCS definitions From e1114bf7f757435cf4f884b4c6c20bbd7a9ef37a Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 17:05:56 +0900 Subject: [PATCH 062/122] ArduPlane - added Filter.h to unbreak the build! --- ArduPlane/ArduPlane.pde | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ArduPlane/ArduPlane.pde b/ArduPlane/ArduPlane.pde index 1fa3643e20..d93670297f 100644 --- a/ArduPlane/ArduPlane.pde +++ b/ArduPlane/ArduPlane.pde @@ -44,7 +44,8 @@ version 2.1 of the License, or (at your option) any later version. #include // PID library #include // RC Channel Library #include // Range finder library -#include +#include // Filter library +#include // Mode Filter from Filter library #include // APM relay #include // Camera/Antenna mount #include // MAVLink GCS definitions From f53ff8de97f5c40cd2d8e11d6c96120d4e3129aa Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 17:17:46 +0900 Subject: [PATCH 063/122] Filter - removed shadowing of variables in constructors for Filter, ModeFilter and SumFilter (sorry tridge!) increased maximum sample buffer size from 6 to 10 --- libraries/Filter/Filter.h | 10 +++++----- libraries/Filter/ModeFilter.h | 10 +++++----- libraries/Filter/SumFilter.h | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/libraries/Filter/Filter.h b/libraries/Filter/Filter.h index 8d47ca100f..77ee3c9834 100644 --- a/libraries/Filter/Filter.h +++ b/libraries/Filter/Filter.h @@ -17,13 +17,13 @@ #include #include -#define FILTER_MAX_SAMPLES 6 // max number of samples that can be added to the filter +#define FILTER_MAX_SAMPLES 10 // maximum size of the sample buffer (normally older values will be overwritten as new appear) template class Filter { public: - Filter(uint8_t filter_size); + Filter(uint8_t requested_size); ~Filter(); // apply - Add a new raw value to the filter, retrieve the filtered result @@ -44,8 +44,8 @@ typedef Filter FilterInt16; // Constructor template -Filter::Filter(uint8_t filter_size) : - filter_size(filter_size), sample_index(0) +Filter::Filter(uint8_t requested_size) : + filter_size(requested_size), sample_index(0) { // check filter size if( Filter::filter_size > FILTER_MAX_SAMPLES ) @@ -58,7 +58,7 @@ Filter::Filter(uint8_t filter_size) : reset(); } -// Destructor +// Destructor - THIS SHOULD NEVER BE CALLED OR IT COULD LEAD TO MEMORY FRAGMENTATION template Filter::~Filter() { diff --git a/libraries/Filter/ModeFilter.h b/libraries/Filter/ModeFilter.h index b4613290ae..00137b652e 100644 --- a/libraries/Filter/ModeFilter.h +++ b/libraries/Filter/ModeFilter.h @@ -22,7 +22,7 @@ template class ModeFilter : public Filter { public: - ModeFilter(uint8_t filter_size, uint8_t return_element); + ModeFilter(uint8_t requested_size, uint8_t return_element); // apply - Add a new raw value to the filter, retrieve the filtered result virtual T apply(T sample); @@ -40,14 +40,14 @@ typedef ModeFilter ModeFilterInt16; // Constructor ////////////////////////////////////////////////////////////// template -ModeFilter::ModeFilter(uint8_t filter_size, uint8_t return_element) : - Filter(filter_size), +ModeFilter::ModeFilter(uint8_t requested_size, uint8_t return_element) : + Filter(requested_size), _return_element(return_element), drop_high_sample(true) { // ensure we have a valid return_nth_element value. if not, revert to median - if( _return_element >= filter_size ) - _return_element = filter_size / 2; + if( _return_element >= Filter::filter_size ) + _return_element = Filter::filter_size / 2; }; // Public Methods ////////////////////////////////////////////////////////////// diff --git a/libraries/Filter/SumFilter.h b/libraries/Filter/SumFilter.h index 300124d1c1..cbbbcb6d89 100644 --- a/libraries/Filter/SumFilter.h +++ b/libraries/Filter/SumFilter.h @@ -21,7 +21,7 @@ template class SumFilter : public Filter { public: - SumFilter(uint8_t filter_size) : Filter(filter_size) {}; + SumFilter(uint8_t requested_size) : Filter(requested_size) {}; // apply - Add a new raw value to the filter, retrieve the filtered result virtual T apply(T sample); From b9b88ba23732749bd2b1444103b027b9c2943d44 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 17:34:36 +0900 Subject: [PATCH 064/122] Filter - added AverageFilter - this will be used in place of SumFilter because it removes the possibility of overflows --- libraries/Filter/AverageFilter.h | 82 ++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 libraries/Filter/AverageFilter.h diff --git a/libraries/Filter/AverageFilter.h b/libraries/Filter/AverageFilter.h new file mode 100644 index 0000000000..df9305a745 --- /dev/null +++ b/libraries/Filter/AverageFilter.h @@ -0,0 +1,82 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- +// +// This is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 2.1 of the License, or (at +// your option) any later version. +// + +/// @file AverageFilter.h +/// @brief A class to provide the average of a number of samples +/// +/// DO NOT CREATE AND DESTROY INSTANCES OF THIS CLASS BECAUSE THE ALLOC/MALLOC WILL LEAD TO MEMORY FRAGMENTATION + +#ifndef AverageFilter_h +#define AverageFilter_h + +#include +#include + +// 1st parameter is the type of data being filtered. +// 2nd parameter is a larger data type used during summation to prevent overflows +template +class AverageFilter : public Filter +{ + public: + AverageFilter(uint8_t requested_size) : Filter(requested_size) {}; + + // apply - Add a new raw value to the filter, retrieve the filtered result + virtual T apply(T sample); + + // reset - clear the filter + virtual void reset(); + + private: + uint8_t _num_samples; +}; + +// Typedef for convenience (1st argument is the data size, 2nd argument is a datasize that's bigger to handle overflows) +typedef AverageFilter AverageFilterInt8; +typedef AverageFilter AverageFilterUInt8; +typedef AverageFilter AverageFilterInt16; +typedef AverageFilter AverageFilterUInt16; +typedef AverageFilter AverageFilterInt32; +typedef AverageFilter AverageFilterUInt32; + +// Public Methods ////////////////////////////////////////////////////////////// + +template +T AverageFilter::apply(T sample) +{ + U result = 0; + + // call parent's apply function to get the sample into the array + Filter::apply(sample); + + // increment the number of samples so far + _num_samples++; + if( _num_samples > Filter::filter_size || _num_samples == 0 ) + _num_samples = Filter::filter_size; + + // get sum of all values - there is a risk of overflow here that we ignore + for(int8_t i=0; i::filter_size; i++) + result += Filter::samples[i]; + + return (T)(result / _num_samples); +} + +// reset - clear all samples +template +void AverageFilter::reset() +{ + // call parent's apply function to get the sample into the array + Filter::reset(); + + // clear our variable + _num_samples = 0; +} + +#endif + + + From 297d2ae45776800196037f6eddf786ecb6ea144b Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Sun, 26 Feb 2012 17:57:28 +0900 Subject: [PATCH 065/122] ModeFilter - corrected shadowed variable compiler warning for drop_high_sample --- libraries/Filter/ModeFilter.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/Filter/ModeFilter.h b/libraries/Filter/ModeFilter.h index 00137b652e..b9a76b293a 100644 --- a/libraries/Filter/ModeFilter.h +++ b/libraries/Filter/ModeFilter.h @@ -76,7 +76,7 @@ T ModeFilter::apply(T sample) // drops either the highest or lowest sample depending on the 'drop_high_sample' parameter // template -void ModeFilter::isort(T new_sample, bool drop_high_sample) +void ModeFilter::isort(T new_sample, bool drop_high) { int8_t i; @@ -84,10 +84,10 @@ void ModeFilter::isort(T new_sample, bool drop_high_sample) // the rest is the same as dropping the high sample if( Filter::sample_index < Filter::filter_size ) { Filter::sample_index++; - drop_high_sample = true; + drop_high = true; } - if( drop_high_sample ) { // drop highest sample from the buffer to make room for our new sample + if( drop_high ) { // drop highest sample from the buffer to make room for our new sample // start from top. Note: sample_index always points to the next open space so we start from sample_index-1 i = Filter::sample_index-1; From 71b73a669c19b24f751a06bc75bb0dd3fdfd0778 Mon Sep 17 00:00:00 2001 From: Hazy Date: Sun, 26 Feb 2012 19:14:08 +0800 Subject: [PATCH 066/122] APM Planner fix CAPM update firmware error --- .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 1 + .../GCSViews/Configuration.cs | 53 +++++++-------- Tools/ArdupilotMegaPlanner/MainV2.cs | 42 +----------- Tools/ArdupilotMegaPlanner/Utility.cs | 64 +++++++++++++++++++ 4 files changed, 91 insertions(+), 69 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/Utility.cs diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index a74e89b886..082b9bd929 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -445,6 +445,7 @@ temp.cs + ProgressReporterDialogue.cs diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs index 2ce3b57beb..2a10e2a59e 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs @@ -173,26 +173,20 @@ namespace ArdupilotMega.GCSViews CultureInfo ci = null; foreach (string name in new string[] { "en-US", "zh-Hans", "zh-TW", "ru-RU", "Fr", "Pl", "it-IT", "es-ES" }) { - ci = MainV2.getcultureinfo(name); + ci = CultureInfoEx.GetCultureInfo(name); if (ci != null) languages.Add(ci); } CMB_language.DisplayMember = "DisplayName"; CMB_language.DataSource = languages; - bool match = false; - for (int i = 0; i < languages.Count && !match; i++) + ci = Thread.CurrentThread.CurrentUICulture; + for (int i = 0; i < languages.Count; i++) { - ci = Thread.CurrentThread.CurrentUICulture; - while (!ci.Equals(CultureInfo.InvariantCulture)) + if (ci.IsChildOf(languages[i])) { - if (ci.Equals(languages[i])) - { - CMB_language.SelectedIndex = i; - match = true; - break; - } - ci = ci.Parent; + CMB_language.SelectedIndex = i; + break; } } CMB_language.SelectedIndexChanged += CMB_language_SelectedIndexChanged; @@ -555,23 +549,23 @@ namespace ArdupilotMega.GCSViews if (text.Length > 0) { if (text[0].GetType() == typeof(NumericUpDown)) - { - decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((NumericUpDown)text[0]).Value = option; - ((NumericUpDown)text[0]).BackColor = Color.Green; - } + { + decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((NumericUpDown)text[0]).Value = option; + ((NumericUpDown)text[0]).BackColor = Color.Green; + } else if (text[0].GetType() == typeof(ComboBox)) - { - int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((ComboBox)text[0]).SelectedIndex = option; - ((ComboBox)text[0]).BackColor = Color.Green; - } + { + int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((ComboBox)text[0]).SelectedIndex = option; + ((ComboBox)text[0]).BackColor = Color.Green; + } } } catch { ((Control)text[0]).BackColor = Color.Red; } Params.Focus(); - } + } private void BUT_load_Click(object sender, EventArgs e) { @@ -599,12 +593,12 @@ namespace ArdupilotMega.GCSViews continue; if (index2 != -1) - line = line.Replace(',','.'); + line = line.Replace(',', '.'); string name = line.Substring(0, index); float value = float.Parse(line.Substring(index + 1), new System.Globalization.CultureInfo("en-US")); - MAVLink.modifyParamForDisplay(true,name,ref value); + MAVLink.modifyParamForDisplay(true, name, ref value); // set param table as well foreach (DataGridViewRow row in Params.Rows) @@ -813,9 +807,10 @@ namespace ArdupilotMega.GCSViews { DsError.ThrowExceptionForHR(hr); } - catch (Exception ex) { - MessageBox.Show("Can not add video source\n" + ex.ToString()); - return; + catch (Exception ex) + { + MessageBox.Show("Can not add video source\n" + ex.ToString()); + return; } // Find the stream config interface @@ -940,7 +935,7 @@ namespace ArdupilotMega.GCSViews - + } catch { MessageBox.Show("Error: getting param list"); } diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index 97252906cc..7d23d49e9c 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -138,7 +138,7 @@ namespace ArdupilotMega xmlconfig(false); if (config.ContainsKey("language") && !string.IsNullOrEmpty((string)config["language"])) - changelanguage(getcultureinfo((string)config["language"])); + changelanguage(CultureInfoEx.GetCultureInfo((string)config["language"])); if (!MONO) // windows only { @@ -2011,51 +2011,13 @@ namespace ArdupilotMega { ComponentResourceManager rm = new ComponentResourceManager(view.GetType()); foreach (Control ctrl in view.Controls) - applyresource(rm, ctrl); + rm.ApplyResource(ctrl); rm.ApplyResources(view, "$this"); } } } } - private void applyresource(ComponentResourceManager rm, Control ctrl) - { - rm.ApplyResources(ctrl, ctrl.Name); - foreach (Control subctrl in ctrl.Controls) - applyresource(rm, subctrl); - - if (ctrl.ContextMenu != null) - applyresource(rm, ctrl.ContextMenu); - - - if (ctrl is DataGridView) - { - foreach (DataGridViewColumn col in (ctrl as DataGridView).Columns) - rm.ApplyResources(col, col.Name); - } - - - } - - private void applyresource(ComponentResourceManager rm, Menu menu) - { - rm.ApplyResources(menu, menu.Name); - foreach (MenuItem submenu in menu.MenuItems) - applyresource(rm, submenu); - } - - public static CultureInfo getcultureinfo(string name) - { - try - { - return new CultureInfo(name); - } - catch (Exception) - { - return null; - } - } - private void MainV2_FormClosing(object sender, FormClosingEventArgs e) { config["MainHeight"] = this.Height; diff --git a/Tools/ArdupilotMegaPlanner/Utility.cs b/Tools/ArdupilotMegaPlanner/Utility.cs new file mode 100644 index 0000000000..4c807daf90 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Utility.cs @@ -0,0 +1,64 @@ +//this file contains some simple extension methods + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Globalization; +using System.ComponentModel; +using System.Windows.Forms; + +namespace ArdupilotMega +{ + static class CultureInfoEx + { + public static CultureInfo GetCultureInfo(string name) + { + try { return new CultureInfo(name); } + catch (Exception) { return null; } + } + + public static bool IsChildOf(this CultureInfo cX, CultureInfo cY) + { + + if (cX == null || cY == null) + return false; + + CultureInfo c = cX; + while (!c.Equals(CultureInfo.InvariantCulture)) + { + if (c.Equals(cY)) + return true; + c = c.Parent; + } + return false; + } + } + + static class ComponentResourceManagerEx + { + public static void ApplyResource(this ComponentResourceManager rm, Control ctrl) + { + rm.ApplyResources(ctrl, ctrl.Name); + foreach (Control subctrl in ctrl.Controls) + ApplyResource(rm, subctrl); + + if (ctrl.ContextMenu != null) + ApplyResource(rm, ctrl.ContextMenu); + + + if (ctrl is DataGridView) + { + foreach (DataGridViewColumn col in (ctrl as DataGridView).Columns) + rm.ApplyResources(col, col.Name); + } + } + + public static void ApplyResource(this ComponentResourceManager rm, Menu menu) + { + rm.ApplyResources(menu, menu.Name); + foreach (MenuItem submenu in menu.MenuItems) + ApplyResource(rm, submenu); + } + } +} From eb35e0e8acf6c7ba310eeba49893a494d0f4117f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 26 Feb 2012 22:23:29 +1100 Subject: [PATCH 067/122] DCM: fixed the sense of the compass GPS test in initial yaw we were only disabling null offsets when we didn't have a compass, which doesn't make much sense! --- libraries/AP_DCM/AP_DCM.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.cpp b/libraries/AP_DCM/AP_DCM.cpp index d82124aa3d..b90e48161b 100644 --- a/libraries/AP_DCM/AP_DCM.cpp +++ b/libraries/AP_DCM/AP_DCM.cpp @@ -426,11 +426,11 @@ AP_DCM::drift_correction(void) // DCM matrix to the current // roll/pitch values, but with yaw // from the GPS - if (!_compass) { + if (_compass) { _compass->null_offsets_disable(); } rotation_matrix_from_euler(_dcm_matrix, roll, pitch, ToRad(_gps->ground_course)); - if (!_compass) { + if (_compass) { _compass->null_offsets_enable(); } _have_initial_yaw = true; From eac77504a3ae2a8eafa0a76d57892fb96b20b864 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sun, 26 Feb 2012 11:13:28 -0800 Subject: [PATCH 068/122] Added more Logging for PIDs. --- ArduCopter/system.pde | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ArduCopter/system.pde b/ArduCopter/system.pde index d3560a4314..db35cae76c 100644 --- a/ArduCopter/system.pde +++ b/ArduCopter/system.pde @@ -343,6 +343,10 @@ static void init_ardupilot() Log_Write_Data(20, (float)g.pid_nav_lon.kD()); Log_Write_Data(21, (int32_t)g.auto_slew_rate.get()); + + Log_Write_Data(22, (float)g.pid_loiter_rate_lon.kP()); + Log_Write_Data(23, (float)g.pid_loiter_rate_lon.kI()); + Log_Write_Data(24, (float)g.pid_loiter_rate_lon.kD()); #endif SendDebug("\nReady to FLY "); From 0ce0c7c2627a349d95e9e2aac3bed6f201cefe70 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sun, 26 Feb 2012 11:14:46 -0800 Subject: [PATCH 069/122] Added Loiter_rate_tuning --- ArduCopter/defines.h | 1 + 1 file changed, 1 insertion(+) diff --git a/ArduCopter/defines.h b/ArduCopter/defines.h index e40d8426af..3a22e84eb6 100644 --- a/ArduCopter/defines.h +++ b/ArduCopter/defines.h @@ -168,6 +168,7 @@ #define CH6_OPTFLOW_KD 19 #define CH6_NAV_I 20 +#define CH6_LOITER_RATE_P 22 // nav byte mask From 517172ba20be703d13403a90ce04e5b7d34e423e Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sun, 26 Feb 2012 11:15:13 -0800 Subject: [PATCH 070/122] Added Loiter Rate Tuning --- ArduCopter/ArduCopter.pde | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index bca0a82125..10337c505c 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -2021,6 +2021,11 @@ static void tuning(){ g.pid_nav_lon.kP(tuning_value); break; + case CH6_LOITER_RATE_P: + g.pid_loiter_rate_lon.kP(tuning_value); + g.pid_loiter_rate_lat.kP(tuning_value); + break; + case CH6_NAV_I: g.pid_nav_lat.kI(tuning_value); g.pid_nav_lon.kI(tuning_value); From 6e53949c2a81a5653277e4134540098d8bcaeef6 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sun, 26 Feb 2012 11:15:47 -0800 Subject: [PATCH 071/122] removed Constraint that caused JLN's horizontal drift. --- ArduCopter/navigation.pde | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ArduCopter/navigation.pde b/ArduCopter/navigation.pde index a95d16ce9f..49bc0a29f0 100644 --- a/ArduCopter/navigation.pde +++ b/ArduCopter/navigation.pde @@ -66,7 +66,7 @@ static void calc_XY_velocity(){ /* // Ryan Beall's forward estimator: - int16_t x_speed_new = (float)(g_gps->longitude - last_longitude) * tmp; + int16_t x_speed_new = (float)(g_gps->longitude - last_longitude) * scaleLongDown* tmp; int16_t y_speed_new = (float)(g_gps->latitude - last_latitude) * tmp; x_actual_speed = x_speed_new + (x_speed_new - x_speed_old); @@ -101,19 +101,20 @@ static void calc_location_error(struct Location *next_loc) #define NAV_ERR_MAX 600 static void calc_loiter(int x_error, int y_error) { + #if LOITER_RATE == 1 int16_t x_target_speed, y_target_speed; int16_t x_iterm, y_iterm; // East / West x_target_speed = g.pi_loiter_lon.get_p(x_error); // not contstrained yet - x_target_speed = constrain(x_target_speed, -250, 250); // limit to 2.5m/s travel speed + //x_target_speed = constrain(x_target_speed, -250, 250); // limit to 2.5m/s travel speed x_rate_error = x_target_speed - x_actual_speed; // calc the speed error nav_lon = g.pid_loiter_rate_lon.get_pid(x_rate_error, dTnav); nav_lon = constrain(nav_lon, -3000, 3000); // 30° // North / South y_target_speed = g.pi_loiter_lat.get_p(y_error); - y_target_speed = constrain(y_target_speed, -250, 250); + //y_target_speed = constrain(y_target_speed, -250, 250); y_rate_error = y_target_speed - y_actual_speed; nav_lat = g.pid_loiter_rate_lat.get_pid(y_rate_error, dTnav); nav_lat = constrain(nav_lat, -3000, 3000); // 30° @@ -122,6 +123,18 @@ static void calc_loiter(int x_error, int y_error) g.pid_nav_lon.set_integrator(g.pid_loiter_rate_lon.get_integrator()); g.pid_nav_lat.set_integrator(g.pid_loiter_rate_lat.get_integrator()); + #else + + // no rate control on Loiter + nav_lon = g.pid_loiter_rate_lon.get_pid(x_error, dTnav); + nav_lat = g.pid_loiter_rate_lat.get_pid(y_error, dTnav); + + nav_lon = constrain(nav_lon, -3000, 3000); // 30° + nav_lat = constrain(nav_lat, -3000, 3000); // 30° + + #endif + + // Wind I term based on location error, // limit windup /* From e06d8142c19867fc653485b0956b9f6cdb814230 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sun, 26 Feb 2012 11:33:02 -0800 Subject: [PATCH 072/122] Added OPtion for non-rate based loiter --- ArduCopter/config.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 490ccb6bc2..6b0bbcc87f 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -663,6 +663,10 @@ ////////////////////////////////////////////////////////////////////////////// // Loiter Navigation control gains // +#ifndef LOITER_RATE +# define LOITER_RATE 0 +#endif + #ifndef LOITER_RATE_P # define LOITER_RATE_P 3.5 // #endif @@ -670,7 +674,7 @@ # define LOITER_RATE_I 0.2 // Wind control #endif #ifndef LOITER_RATE_D -# define LOITER_RATE_D 0.00 // +# define LOITER_RATE_D 0.0 // try 2 or 3 for LOITER_RATE 1 #endif #ifndef LOITER_RATE_IMAX # define LOITER_RATE_IMAX 30 // degrees From ba68d6d8a162605ff3395ad7829d1d1bfa8ef896 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Sun, 26 Feb 2012 12:29:28 -0800 Subject: [PATCH 073/122] Set loiter rate enabled by default --- ArduCopter/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 6b0bbcc87f..32cdd18337 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -664,7 +664,7 @@ // Loiter Navigation control gains // #ifndef LOITER_RATE -# define LOITER_RATE 0 +# define LOITER_RATE 1 #endif #ifndef LOITER_RATE_P From 57ed9fc62b3c9a23d75f25efdc2a3cc20d360792 Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Mon, 27 Feb 2012 07:13:23 +0800 Subject: [PATCH 074/122] APM Planner 1.1.43 Add logging system - re andrew radford move libs add tlog support to georef images. experimental antenna tracking - pololu maestro tweak "follow me" mode, better error checking update dataflashlog format for ac2 lang change mod - re hazy remove arduinocpp project --- .../Antenna/ITrackerOutput.cs | 30 + Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs | 146 + .../Antenna/Tracker.Designer.cs | 269 ++ Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs | 124 + .../ArdupilotMegaPlanner/Antenna/Tracker.resx | 197 + Tools/ArdupilotMegaPlanner/ArduinoDetect.cs | 46 +- Tools/ArdupilotMegaPlanner/ArduinoSTK.cs | 19 +- Tools/ArdupilotMegaPlanner/ArduinoSTKv2.cs | 13 +- .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 17 +- .../ArdupilotMega.csproj.user | 2 +- Tools/ArdupilotMegaPlanner/ArdupilotMega.sln | 14 - Tools/ArdupilotMegaPlanner/Camera.Designer.cs | 174 +- Tools/ArdupilotMegaPlanner/Camera.resx | 824 ++++ Tools/ArdupilotMegaPlanner/Common.cs | 72 +- Tools/ArdupilotMegaPlanner/CommsSerialPort.cs | 6 + Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs | 7 +- Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs | 24 +- Tools/ArdupilotMegaPlanner/CurrentState.cs | 5 +- .../GCSViews/Configuration.Designer.cs | 59 +- .../GCSViews/Configuration.cs | 60 +- .../GCSViews/Configuration.resx | 4222 ++++++++++++++--- .../ArdupilotMegaPlanner/GCSViews/Firmware.cs | 71 +- .../GCSViews/FlightData.Designer.cs | 2 +- .../GCSViews/FlightData.cs | 22 +- .../GCSViews/FlightData.resx | 2 +- .../GCSViews/FlightPlanner.cs | 24 +- Tools/ArdupilotMegaPlanner/GCSViews/Help.cs | 2 +- .../GCSViews/Simulation.cs | 23 +- Tools/ArdupilotMegaPlanner/HIL/QuadCopter.cs | 3 + Tools/ArdupilotMegaPlanner/HUD.cs | 24 +- Tools/ArdupilotMegaPlanner/Joystick.cs | 12 +- Tools/ArdupilotMegaPlanner/LangUtility.cs | 64 + Tools/ArdupilotMegaPlanner/Log.cs | 29 +- Tools/ArdupilotMegaPlanner/LogBrowse.cs | 9 +- Tools/ArdupilotMegaPlanner/MAVLink.cs | 119 +- Tools/ArdupilotMegaPlanner/MainV2.cs | 198 +- .../Mavlink/MavlinkUtil.cs | 10 +- Tools/ArdupilotMegaPlanner/Program.cs | 22 +- .../Properties/AssemblyInfo.cs | 2 +- .../Properties/Resources.Designer.cs | 15 + .../Properties/Resources.resx | 5 +- Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs | 475 +- Tools/ArdupilotMegaPlanner/Script.cs | 3 - .../SerialInput.Designer.cs | 5 +- Tools/ArdupilotMegaPlanner/SerialInput.cs | 51 +- Tools/ArdupilotMegaPlanner/app.config | 27 + .../Release/ArdupilotMegaPlanner.exe.config | 27 + .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 941568 -> 964096 bytes .../bin/Release/dataflashlog.xml | 1 + Tools/ArdupilotMegaPlanner/dataflashlog.xml | 1 + Tools/ArdupilotMegaPlanner/georefimage.cs | 70 +- Tools/ArdupilotMegaPlanner/temp.Designer.cs | 15 +- Tools/ArdupilotMegaPlanner/temp.cs | 66 +- 53 files changed, 6149 insertions(+), 1580 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/Antenna/ITrackerOutput.cs create mode 100644 Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs create mode 100644 Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs create mode 100644 Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs create mode 100644 Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx create mode 100644 Tools/ArdupilotMegaPlanner/LangUtility.cs diff --git a/Tools/ArdupilotMegaPlanner/Antenna/ITrackerOutput.cs b/Tools/ArdupilotMegaPlanner/Antenna/ITrackerOutput.cs new file mode 100644 index 0000000000..deb5e84f42 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Antenna/ITrackerOutput.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ArdupilotMega.Antenna +{ + interface ITrackerOutput + { + SerialPort ComPort { get; set; } + + double TrimPan { get; set; } + double TrimTilt { get; set; } + + int PanStartRange { get; set; } + int TiltStartRange { get; set; } + int PanEndRange { get; set; } + int TiltEndRange { get; set; } + + bool PanReverse { get; set; } + bool TiltReverse { get; set; } + + bool Init(); + bool Setup(); + bool Pan(double Angle); + bool Tilt(double Angle); + bool PanAndTilt(double Pan,double Tilt); + bool Close(); + } +} diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs new file mode 100644 index 0000000000..172853c1fe --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs @@ -0,0 +1,146 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ArdupilotMega.Antenna +{ + class Maestro : ITrackerOutput + { + public SerialPort ComPort { get; set; } + ///

+ /// 0-360 + /// + public double TrimPan { get; set; } + /// + /// -90 - 90 + /// + public double TrimTilt { get; set; } + + public int PanStartRange { get; set; } + public int TiltStartRange { get; set; } + public int PanEndRange { get; set; } + public int TiltEndRange { get; set; } + + public bool PanReverse { get { return _panreverse == -1; } set { _panreverse = value == true ? -1 : 1 ; } } + public bool TiltReverse { get { return _tiltreverse == -1; } set { _tiltreverse = value == true ? -1 : 1; } } + + int _panreverse = 1; + int _tiltreverse = 1; + + byte PanAddress = 0; + byte TiltAddress = 1; + + public bool Init() + { + + if ((PanStartRange - PanEndRange) == 0) + { + System.Windows.Forms.MessageBox.Show("Invalid Pan Range", "Error"); + return false; + } + + if ((TiltStartRange - TiltEndRange) == 0) + { + System.Windows.Forms.MessageBox.Show("Invalid Tilt Range", "Error"); + return false; + } + + try + { + ComPort.Open(); + } + catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Connect failed " + ex.Message,"Error"); return false; } + + return true; + } + public bool Setup() + { + int target = 100; + // speed + var buffer = new byte[] { 0x87, PanAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) }; + ComPort.Write(buffer, 0, buffer.Length); + + buffer = new byte[] { 0x87, TiltAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) }; + ComPort.Write(buffer, 0, buffer.Length); + + // accel + target = 3; + buffer = new byte[] { 0x89, PanAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) }; + ComPort.Write(buffer, 0, buffer.Length); + + buffer = new byte[] { 0x89, TiltAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) }; + ComPort.Write(buffer, 0, buffer.Length); + + return true; + } + + double wrap_180(double input) + { + if (input > 180) + return input - 360; + if (input < -180) + return input + 360; + return input; + } + + public bool Pan(double Angle) + { + // using a byte so it will autowrap + + double range = Math.Abs(PanStartRange - PanEndRange); + + double centerrange = (range / 2) - TrimPan; + + short PointAtAngle = Constrain(wrap_180(Angle - TrimPan), PanStartRange, PanEndRange); + + byte target = (byte)((((PointAtAngle / range) * 2.0) * 127 + 127) * _panreverse); + + Console.WriteLine("P " + Angle + " " + target + " " + PointAtAngle); + + var buffer = new byte[] { 0xff,PanAddress,target}; + ComPort.Write(buffer, 0, buffer.Length); + + return true; + } + + public bool Tilt(double Angle) + { + double range = Math.Abs(TiltStartRange - TiltEndRange); + + short PointAtAngle = Constrain((Angle - TrimTilt), TiltStartRange - TrimTilt, TiltEndRange - TrimTilt); + + byte target = (byte)((((PointAtAngle / range ) * 2) * 127 + 127) * _tiltreverse); + + Console.WriteLine("T " + Angle + " " + target + " " + PointAtAngle); + + var buffer = new byte[] { 0xff, TiltAddress, target }; + ComPort.Write(buffer, 0, buffer.Length); + + return true; + } + + public bool PanAndTilt(double pan, double tilt) + { + if (Tilt(tilt) && Pan(pan)) + return true; + + return false; + } + + public bool Close() + { + ComPort.Close(); + return true; + } + + short Constrain(double input, double min, double max) + { + if (input < min) + return (short)min; + if (input > max) + return (short)max; + return (short)input; + } + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs new file mode 100644 index 0000000000..b81d0f868e --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs @@ -0,0 +1,269 @@ +namespace ArdupilotMega.Antenna +{ + partial class Tracker + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Tracker)); + this.CMB_interface = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.CMB_baudrate = new System.Windows.Forms.ComboBox(); + this.CMB_serialport = new System.Windows.Forms.ComboBox(); + this.BUT_connect = new ArdupilotMega.MyButton(); + this.TRK_pantrim = new System.Windows.Forms.TrackBar(); + this.TXT_panstart = new System.Windows.Forms.TextBox(); + this.TXT_panstop = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.TXT_tiltstop = new System.Windows.Forms.TextBox(); + this.TXT_tiltstart = new System.Windows.Forms.TextBox(); + this.TRK_tilttrim = new System.Windows.Forms.TrackBar(); + ((System.ComponentModel.ISupportInitialize)(this.TRK_pantrim)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.TRK_tilttrim)).BeginInit(); + this.SuspendLayout(); + // + // CMB_interface + // + this.CMB_interface.FormattingEnabled = true; + this.CMB_interface.Items.AddRange(new object[] { + "Maestro"}); + this.CMB_interface.Location = new System.Drawing.Point(83, 10); + this.CMB_interface.Name = "CMB_interface"; + this.CMB_interface.Size = new System.Drawing.Size(121, 21); + this.CMB_interface.TabIndex = 0; + this.CMB_interface.Text = "Maestro"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(13, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(49, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Interface"; + // + // CMB_baudrate + // + this.CMB_baudrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CMB_baudrate.FormattingEnabled = true; + this.CMB_baudrate.Items.AddRange(new object[] { + "4800", + "9600", + "14400", + "19200", + "28800", + "38400", + "57600", + "115200"}); + this.CMB_baudrate.Location = new System.Drawing.Point(337, 9); + this.CMB_baudrate.Name = "CMB_baudrate"; + this.CMB_baudrate.Size = new System.Drawing.Size(121, 21); + this.CMB_baudrate.TabIndex = 5; + // + // CMB_serialport + // + this.CMB_serialport.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CMB_serialport.FormattingEnabled = true; + this.CMB_serialport.Location = new System.Drawing.Point(210, 10); + this.CMB_serialport.Name = "CMB_serialport"; + this.CMB_serialport.Size = new System.Drawing.Size(121, 21); + this.CMB_serialport.TabIndex = 3; + // + // BUT_connect + // + this.BUT_connect.Location = new System.Drawing.Point(476, 9); + this.BUT_connect.Name = "BUT_connect"; + this.BUT_connect.Size = new System.Drawing.Size(75, 23); + this.BUT_connect.TabIndex = 4; + this.BUT_connect.Text = "Connect"; + this.BUT_connect.UseVisualStyleBackColor = true; + this.BUT_connect.Click += new System.EventHandler(this.BUT_connect_Click); + // + // TRK_pantrim + // + this.TRK_pantrim.Location = new System.Drawing.Point(83, 65); + this.TRK_pantrim.Maximum = 180; + this.TRK_pantrim.Minimum = -180; + this.TRK_pantrim.Name = "TRK_pantrim"; + this.TRK_pantrim.Size = new System.Drawing.Size(375, 45); + this.TRK_pantrim.TabIndex = 6; + this.TRK_pantrim.Scroll += new System.EventHandler(this.TRK_pantrim_Scroll); + // + // TXT_panstart + // + this.TXT_panstart.Location = new System.Drawing.Point(13, 65); + this.TXT_panstart.Name = "TXT_panstart"; + this.TXT_panstart.Size = new System.Drawing.Size(64, 20); + this.TXT_panstart.TabIndex = 7; + this.TXT_panstart.Text = "-90"; + // + // TXT_panstop + // + this.TXT_panstop.Location = new System.Drawing.Point(464, 65); + this.TXT_panstop.Name = "TXT_panstop"; + this.TXT_panstop.Size = new System.Drawing.Size(64, 20); + this.TXT_panstop.TabIndex = 8; + this.TXT_panstop.Text = "90"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(461, 49); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(32, 13); + this.label2.TabIndex = 9; + this.label2.Text = "Right"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(261, 49); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(38, 13); + this.label3.TabIndex = 10; + this.label3.Text = "Center"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(13, 49); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(25, 13); + this.label4.TabIndex = 11; + this.label4.Text = "Left"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(13, 125); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(35, 13); + this.label5.TabIndex = 17; + this.label5.Text = "Down"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(261, 125); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(38, 13); + this.label6.TabIndex = 16; + this.label6.Text = "Center"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(461, 125); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(21, 13); + this.label7.TabIndex = 15; + this.label7.Text = "Up"; + // + // TXT_tiltstop + // + this.TXT_tiltstop.Location = new System.Drawing.Point(464, 141); + this.TXT_tiltstop.Name = "TXT_tiltstop"; + this.TXT_tiltstop.Size = new System.Drawing.Size(64, 20); + this.TXT_tiltstop.TabIndex = 14; + this.TXT_tiltstop.Text = "90"; + // + // TXT_tiltstart + // + this.TXT_tiltstart.Location = new System.Drawing.Point(13, 141); + this.TXT_tiltstart.Name = "TXT_tiltstart"; + this.TXT_tiltstart.Size = new System.Drawing.Size(64, 20); + this.TXT_tiltstart.TabIndex = 13; + this.TXT_tiltstart.Text = "0"; + // + // TRK_tilttrim + // + this.TRK_tilttrim.Location = new System.Drawing.Point(83, 141); + this.TRK_tilttrim.Maximum = 90; + this.TRK_tilttrim.Minimum = -90; + this.TRK_tilttrim.Name = "TRK_tilttrim"; + this.TRK_tilttrim.Size = new System.Drawing.Size(375, 45); + this.TRK_tilttrim.TabIndex = 12; + this.TRK_tilttrim.Value = 45; + this.TRK_tilttrim.Scroll += new System.EventHandler(this.TRK_tilttrim_Scroll); + // + // Tracker + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(569, 195); + this.Controls.Add(this.label5); + this.Controls.Add(this.label6); + this.Controls.Add(this.label7); + this.Controls.Add(this.TXT_tiltstop); + this.Controls.Add(this.TXT_tiltstart); + this.Controls.Add(this.TRK_tilttrim); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.TXT_panstop); + this.Controls.Add(this.TXT_panstart); + this.Controls.Add(this.TRK_pantrim); + this.Controls.Add(this.CMB_baudrate); + this.Controls.Add(this.BUT_connect); + this.Controls.Add(this.CMB_serialport); + this.Controls.Add(this.label1); + this.Controls.Add(this.CMB_interface); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Tracker"; + this.Text = "Tracker"; + ((System.ComponentModel.ISupportInitialize)(this.TRK_pantrim)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.TRK_tilttrim)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ComboBox CMB_interface; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox CMB_baudrate; + private MyButton BUT_connect; + private System.Windows.Forms.ComboBox CMB_serialport; + private System.Windows.Forms.TrackBar TRK_pantrim; + private System.Windows.Forms.TextBox TXT_panstart; + private System.Windows.Forms.TextBox TXT_panstop; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox TXT_tiltstop; + private System.Windows.Forms.TextBox TXT_tiltstart; + private System.Windows.Forms.TrackBar TRK_tilttrim; + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs new file mode 100644 index 0000000000..5f5635c41e --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ArdupilotMega.Antenna +{ + public partial class Tracker : Form + { + System.Threading.Thread t12; + static bool threadrun = false; + static ITrackerOutput tracker; + + public Tracker() + { + InitializeComponent(); + + MainV2.fixtheme(this); + + CMB_serialport.DataSource = SerialPort.GetPortNames(); + + if (threadrun) + { + BUT_connect.Text = "Disconnect"; + } + } + + private void BUT_connect_Click(object sender, EventArgs e) + { + if (threadrun) + { + threadrun = false; + BUT_connect.Text = "Connect"; + tracker.Close(); + return; + } + + tracker = new ArdupilotMega.Antenna.Maestro(); + + try + { + tracker.ComPort = new SerialPort() + { + PortName = CMB_serialport.Text, + BaudRate = int.Parse(CMB_baudrate.Text) + }; + } + catch (Exception ex) { MessageBox.Show("Bad Port settings " + ex.Message); return; } + + try + { + tracker.PanStartRange = int.Parse(TXT_panstart.Text); + tracker.PanEndRange = int.Parse(TXT_panstop.Text); + tracker.TrimPan = TRK_pantrim.Value; + + tracker.TiltStartRange = int.Parse(TXT_tiltstart.Text); + tracker.TiltEndRange = int.Parse(TXT_tiltstop.Text); + tracker.TrimTilt = TRK_tilttrim.Value; + + } + catch (Exception ex) { MessageBox.Show("Bad User input " + ex.Message); return; } + + if (tracker.Init()) + { + if (tracker.Setup()) + { + tracker.PanAndTilt(0, 0); + + t12 = new System.Threading.Thread(new System.Threading.ThreadStart(mainloop)) + { + IsBackground = true, + Name = "Antenna Tracker" + }; + t12.Start(); + + /* + for (int a = ting.PanStartRange; a < ting.PanEndRange; a++) + { + System.Threading.Thread.Sleep(100); + ting.Pan(a); + } + + for (int a = ting.TiltStartRange; a < ting.TiltEndRange; a++) + { + System.Threading.Thread.Sleep(100); + ting.Tilt(a); + } + */ + } + } + } + + void mainloop() + { + threadrun = true; + while (threadrun) + { + try + { + // 10 hz - position updates default to 3 hz on the stream rate + tracker.PanAndTilt(MainV2.cs.AZToMAV, MainV2.cs.ELToMAV); + System.Threading.Thread.Sleep(100); + } + catch { } + } + } + + private void TRK_pantrim_Scroll(object sender, EventArgs e) + { + if (tracker != null) + tracker.TrimPan = TRK_pantrim.Value; + } + + private void TRK_tilttrim_Scroll(object sender, EventArgs e) + { + if (tracker != null) + tracker.TrimTilt = TRK_tilttrim.Value; + } + } +} diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx new file mode 100644 index 0000000000..222a74addf --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABILAAASCwAAAAAAAAAA + AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOxkjAtnoOAKpJ4vyiK + c+8nh3D/J4Zv/yeHcP8oi3PvKpJ4vy6fg4AzsZIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjGo2AyspPfLZ+D/yiQ + d/8hlXj/G6F9/xeqg/8XqYL/GKqD/xuhfv8ilnn/KZB3/y2fhP8yspPfN8ajYAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvRrDA1vpzfL6uN/yel + hP8XvJD/DMyY/wfQl/8FzJP/A8qS/wPJkf8EypL/BsyU/wnRmP8PzZn/Gb2R/yemhP8tqoz/Mb2a3zbQ + qkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAA4y6ZgMbWV/yin + iP8WwZP/Btqf/wDPlf8AyI7/A8aP/yfNnv9T2LP/UNax/03XsP8506b/G8ya/wHKkf8F0Zf/CNuf/xLB + kv8fpYT/J7KQ/y7IomAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAANcajny+w + kf8hqoj/CNSd/wDRlf8Axor/Hcyd/3Lhwf+p7Nj/o+vV/57m0/+X5dD/k+TN/4/jzf+K5Mz/fuHH/0PW + rf8HzJT/ANCT/wDRlv8OpX//HayI/yrFn58AAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAADDC + nmAtro7/H62J/wPWmv8Ay47/AMaO/3XhxP+e6tT/mObP/5Pjy/+Q4sr/jODJ/4ffx/+C3MT/f9vC/3nb + wf9y2r7/adq7/2DauP8ZzZv/Fdae/8T/9/9WxKj/HKuI/y7IomAAAAAAAAAAAAAAAAD///8AAAAAAAAA + AAAiuZMwKKyM/x6ohf8C1Zr/AMmL/wHGjv+49OL///////////9+3ML/f9zD/4Dcwv9+28L/e9rA/3bZ + vv9w1rr/Z9S4/17Rs/9Qz63/Qcyn/3LewP////////////n///8MpH7/JbKP/zXQqUAAAAAAAAAAAP// + /wAAAAAAAAAAABymhN8dnn//BNGa/wDKjP8AxY3/sfHf/////////////////2nXt/9w1rv/c9e8/3TX + vP9x17z/a9W5/2TTtf9Y0K//SMyp/zXFoP9i07X/////////////////f/LR/wDQlf8epYT/Mb2a3wAA + AAAAAAAA////AAAAAAADlnJgFZR1/wq4iv8AzpH/AMCD/4rmzf//////////////////////WdGv/2PU + tf9p1rf/atS4/2nUtv9i0rT/Vc+u/0fKpv8zxZz/Ws+w//////////////////////8GyJL/ANCS/xLB + kv8tq4z/OMajYAAAAAD///8AAAAAAACHZt8NkW//ANKV/wDChP9i27r//////////////////////9Dx + 6P9MzKn/Vc+v/17Rsv9g0rP/XNCx/1XNrv9Fyaf/McSd/1fPr///////////////////////QM2m/ynK + oP8JzJX/C9yh/ymmhf80spPfAAAAAP///wAAcUwwAHtc/wCrfP8AyIv/AMKK//////////////////// + /////////////5Dgyv9Gyqb/TMyq/07Nq/9MzKn/Qcmj/y/Fnf9Wzq3//////////////////////57k + 0v8av5T/Lceg/yzOo/8M05v/Hr6T/zCghf80spIw////AABoRYAAclT/AL2H/wDBhf9R1rL///////// + ////////4vfw//////////////////H8+P9KzKn/Ocah/zTFnv8qwpj/Us2t//////////////////// + ////////DLqM/yDBlv8wxp//OM6m/xPPm/8Xz53/LZF5/y+fg4////8AAGNAvwB7Wf8Aw4j/ALyC/4bj + yP+g5tL/g93E/2HSsv9Pzqz/Us6s//////////////////////9Yzq//Gr2S/0jLp/////////////// + /////////////yrDm/8SvI//JMGY/zDHn/81zKT/Is2e/xTUnf8nl3v/LJJ5v////wAAXz3vAIlg/wDA + hf8AuoD/quzZ/5Hjyv9628D/ada2/1jRsP9Jy6f/a9a4//////////////////////+Y4s7///////// + //////////////////+c4tD/AbaH/xW8kf8jwZj/LcWd/y/Jn/8kzJ3/E9Ca/yGjgf8ri3Tv////AABd + PP8Ak2b/AL6D/w/Ekv+m6tf/j+HJ/3vawP9p1rf/W9Gx/0rNqf85yJ//Nsaf//////////////////// + /////////////////////////////wCwe/8AtoT/ELqP/xu+k/8jwZj/KMeb/yHKm/8QzZf/HqyG/ymI + cf////8AAF07/wCSZP8AvYL/GMWU/6Dn1P+K38f/ddi+/27Wuf+E3MX/leHN/6fm1f+l5tX/neLQ//// + ////////////////////////////////////////j9/J/27Vuv9Tzq7/JsKY/xa/kv8aw5T/FcaW/wvL + lf8aqoT/J4dw/////wAAXTv/AJFk/wC9gP8GwY3/mObQ/5rkz/+26dv/y/Hl/8Dt3/+06tz/pebV/5bg + zP+g5NL//////////////v///f7+//7+/v//////7fn2////////////tOnb/6Ll0v+v6Nj/jeDI/zXK + o/8IxJD/BMqS/xaqgv8lh2//////AABeO+8AgVf/AL1//wDBif/R9uv/1PPq/8Tv5P+36t3/rujY/6Lk + 0v+U4cv/jt7J//j8+///////+/38//f8+//2+/r/+Pz7//3+/v/m9/P/9Pv6//D6+P9/28L/jd7J/5jj + z/+h5dL/qOvX/4Hmyf8f1J//E596/yOJcO////8AAGA8vwB3U/8p06P/hufM/8Ty5f/D7+T/s+vb/6bm + 1P+c4c//j9/K/4vcyP/t+fb///7///j8/P/0+/r/8vr5//P7+f/1+/r/+/39///////i9fL/ZNO1/3HW + vP992sH/htzG/4vhyv+S5dD/mO7W/6X74v80noT/Io90v////wAAZkCAAHla/33ny/945cb/nunV/7Xr + 3v+l5tT/luDN/4ndxv992cL/1vLq//v9/P/1+/n/8vv4//L69//z+/j/9Pv5/7Xo2//x+vn///////// + //+y59n/aNS3/3LWvP932r//fNzD/4Ljyf+J7ND/l/bd/yORdf8knH6A////AABuRzAAdlT/Xc6x/23o + xv9s4MH/qurZ/5jiz/+I3cb/edjA/8ju5f/3/Pv/8vv4//H6+P/y+/j/6/f0/7np3v/7/fz//v7+/6fk + 1f+56tz///////////9h0bT/aNW4/23Wu/9v3L//dOLG/37w0f9m1rn/Hpt8/ymujTD///8AAAAAAACD + X98po4X/Z+7K/1vgvP+A4sf/jOHK/3rZwv+r59f/9Pv6/+/69//v+vf/8vr4/9fy6/9n0rf/VM6t/6Di + 0v/N7+f/adO4/1PMrf9t1Lr/i9zI/1/Rs/9h0rX/ZNe4/2bbvf9s5sb/ePfV/z2ylf8lrozfAAAAAP// + /wAAAAAAAJNsYAWQbf9U1rP/Vee//0rYsf993sb/pebV//P7+v/s+Pb/6/f1/+749v+s5tj/Vc2u/1jP + r/9ZzrD/btW5/1bOr/9Wza//Vs6v/1fOr/9Z0LD/WdCy/1vTtP9d1rX/Xt+8/2btyP9k4L//IaaF/y7D + nmAAAAAA////AAAAAAAAAAAAD6J9zyCjgv9S68L/P9+0/2Pevv/5////7/v6/+v59//j9/L/gtvF/1PN + r/9Wz7D/Wc+x/1nQsf9Zz7H/WM6w/1fPsP9UzrD/VM+w/1TPrv9U0a//U9Oy/1Tatv9Z5sD/Y/LL/zSx + lP8qupbPAAAAAAAAAAD///8AAAAAAAAAAAAYto4wGaeE/y23lP8+5rn/6/////j////w//3/ve/i/2bV + uP9Tzq7/Vc+v/1jPsP9Z0LL/WM+w/1fOsf9Wz7D/Us2w/1HOrf9Qzq3/T9Cu/0zSr/9M2LP/TeC5/1bt + xP9HxaX/KLKQ/zTPqDAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAkvpdgG6iF/y++m//e/////P///3rl + yf9G0K3/VdKy/1bPsf9Wz7H/Vs6w/1bPsP9Sza//Ucyu/0/Nrf9NzKz/S82s/0fOrP9G0a7/QdWv/0Le + tP9I6L7/Q8Ok/yitjP8yyKJgAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAmwJlgG6iF/yK3 + kP8k3q7/H9el/x7Pn/8tzKT/Q9Cs/1HQsP9Q0K7/TM6u/0nMrf9Hzaz/RMyp/0LNqf8+zqn/ONGo/zTV + qf833rD/O+S4/zvCof8orIv/MMSfYAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAkvpdgG6iE/xukgv8gy53/HNql/xzRn/8czJz/HcmZ/yXJnP8qyp7/Lcqg/yzLn/8nypz/JMqc/yTO + n/8l1KT/KN2r/y3Tpv8nq4n/JaqJ/yzAm2AAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAato8wFKN/zxCScv8RnHn/DbqM/wjIlP8GyZT/BsaS/wbFkf8GxZH/B8WR/wfH + k/8IypX/DMmV/xG3jP8WoX3/Fph2/xqkgs8ft5EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVvYACGZM8Aelr/AHlZ/wCFX/8AiWL/AJlr/wCb + bP8AlGf/AI5k/wB/W/8AeFj/AHtb/wCHZd8ClXBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwSzAAaESAAGI/vwBf + Pd8AXTz/AF08/wBdPP8AXz3fAGJAvwBoRIAAcUswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A/+AD//+AAP/+AAA//AAAH/gAAA/wAAAH4AAAA+AAAAPAAAABwAAAAYAA + AACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAcAAAAHgAAAD4AAAA/AA + AAf4AAAP/AAAH/4AAD//gAD//+AD//////8= + + + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs b/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs index 82d49c690b..62e86d3639 100644 --- a/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs +++ b/Tools/ArdupilotMegaPlanner/ArduinoDetect.cs @@ -1,15 +1,15 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Reflection; using System.Management; using System.Windows.Forms; using System.Threading; +using log4net; namespace ArdupilotMega { class ArduinoDetect { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); /// /// detects STK version 1 or 2 /// @@ -27,7 +27,7 @@ namespace ArdupilotMega serialPort.BaudRate = 57600; serialPort.Open(); - System.Threading.Thread.Sleep(100); + Thread.Sleep(100); int a = 0; while (a < 20) // 20 * 50 = 1 sec @@ -36,7 +36,7 @@ namespace ArdupilotMega serialPort.DiscardInBuffer(); serialPort.Write(new byte[] { (byte)'0', (byte)' ' }, 0, 2); a++; - System.Threading.Thread.Sleep(50); + Thread.Sleep(50); //Console.WriteLine("btr {0}", serialPort.BytesToRead); if (serialPort.BytesToRead >= 2) @@ -53,15 +53,15 @@ namespace ArdupilotMega serialPort.Close(); - Console.WriteLine("Not a 1280"); + log.Warn("Not a 1280"); - System.Threading.Thread.Sleep(500); + Thread.Sleep(500); serialPort.DtrEnable = true; serialPort.BaudRate = 115200; serialPort.Open(); - System.Threading.Thread.Sleep(100); + Thread.Sleep(100); a = 0; while (a < 4) @@ -69,7 +69,7 @@ namespace ArdupilotMega byte[] temp = new byte[] { 0x6, 0, 0, 0, 0 }; temp = ArduinoDetect.genstkv2packet(serialPort, temp); a++; - System.Threading.Thread.Sleep(50); + Thread.Sleep(50); try { @@ -81,11 +81,13 @@ namespace ArdupilotMega } } - catch { } + catch + { + } } serialPort.Close(); - Console.WriteLine("Not a 2560"); + log.Warn("Not a 2560"); return ""; } @@ -106,7 +108,7 @@ namespace ArdupilotMega serialPort.BaudRate = 57600; serialPort.Open(); - System.Threading.Thread.Sleep(100); + Thread.Sleep(100); int a = 0; while (a < 20) // 20 * 50 = 1 sec @@ -115,7 +117,7 @@ namespace ArdupilotMega serialPort.DiscardInBuffer(); serialPort.Write(new byte[] { (byte)'0', (byte)' ' }, 0, 2); a++; - System.Threading.Thread.Sleep(50); + Thread.Sleep(50); //Console.WriteLine("btr {0}", serialPort.BytesToRead); if (serialPort.BytesToRead >= 2) @@ -132,15 +134,15 @@ namespace ArdupilotMega serialPort.Close(); - Console.WriteLine("Not a 1280"); + log.Warn("Not a 1280"); - System.Threading.Thread.Sleep(500); + Thread.Sleep(500); serialPort.DtrEnable = true; serialPort.BaudRate = 115200; serialPort.Open(); - System.Threading.Thread.Sleep(100); + Thread.Sleep(100); a = 0; while (a < 4) @@ -148,7 +150,7 @@ namespace ArdupilotMega byte[] temp = new byte[] { 0x6, 0, 0, 0, 0 }; temp = ArduinoDetect.genstkv2packet(serialPort, temp); a++; - System.Threading.Thread.Sleep(50); + Thread.Sleep(50); try { @@ -192,7 +194,7 @@ namespace ArdupilotMega } serialPort.Close(); - Console.WriteLine("Not a 2560"); + log.Warn("Not a 2560"); return ""; } @@ -281,11 +283,11 @@ namespace ArdupilotMega key = buffer[pos]; pos++; - Console.Write("{0:X4}: key {1} size {2}\n ", pos - 2, key, size + 1); + log.InfoFormat("{0:X4}: key {1} size {2}\n ", pos - 2, key, size + 1); if (key == 0xff) { - Console.WriteLine("end sentinal at {0}", pos - 2); + log.InfoFormat("end sentinal at {0}", pos - 2); break; } @@ -301,7 +303,6 @@ namespace ArdupilotMega Console.Write(" {0:X2}", buffer[pos]); pos++; } - Console.WriteLine(); } } @@ -325,7 +326,7 @@ namespace ArdupilotMega if (key == 0xff) { - Console.WriteLine("end sentinal at {0}", pos - 2); + log.InfoFormat("end sentinal at {0}", pos - 2); break; } @@ -341,7 +342,6 @@ namespace ArdupilotMega Console.Write(" {0:X2}", buffer[pos]); pos++; } - Console.WriteLine(); } } } diff --git a/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs b/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs index 04e4189f27..372cf568c8 100644 --- a/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs +++ b/Tools/ArdupilotMegaPlanner/ArduinoSTK.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; +using System.Reflection; using System.Text; using System.IO.Ports; using System.Threading; +using log4net; // Written by Michael Oborne @@ -10,6 +12,7 @@ namespace ArdupilotMega { class ArduinoSTK : SerialPort, ArduinoComms { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public event ProgressEventHandler Progress; public new void Open() @@ -48,7 +51,7 @@ namespace ArdupilotMega a++; Thread.Sleep(50); - Console.WriteLine("btr {0}", this.BytesToRead); + log.InfoFormat("btr {0}", this.BytesToRead); if (this.BytesToRead >= 2) { byte b1 = (byte)this.ReadByte(); @@ -96,14 +99,14 @@ namespace ArdupilotMega { byte b1 = (byte)this.ReadByte(); byte b2 = (byte)this.ReadByte(); - Console.WriteLine("bytes {0:X} {1:X}", b1, b2); + log.DebugFormat("bytes {0:X} {1:X}", b1, b2); if (b1 == 0x14 && b2 == 0x10) { return true; } } - Console.WriteLine("btr {0}", this.BytesToRead); + log.DebugFormat("btr {0}", this.BytesToRead); Thread.Sleep(10); a++; } @@ -210,7 +213,7 @@ namespace ArdupilotMega byte[] command = new byte[] { (byte)'d', (byte)(sending >> 8), (byte)(sending & 0xff), (byte)'F' }; this.Write(command, 0, command.Length); - Console.WriteLine((startfrom + (length - totalleft)) + " - " + sending); + log.Info((startfrom + (length - totalleft)) + " - " + sending); this.Write(data, startfrom + (length - totalleft), sending); command = new byte[] { (byte)' ' }; this.Write(command, 0, command.Length); @@ -223,7 +226,7 @@ namespace ArdupilotMega if (!sync()) { - Console.WriteLine("No Sync"); + log.Info("No Sync"); return false; } } @@ -247,7 +250,7 @@ namespace ArdupilotMega throw new Exception("Address must be an even number"); } - Console.WriteLine("Sending address " + ((ushort)(address / 2))); + log.Info("Sending address " + ((ushort)(address / 2))); address /= 2; address = (ushort)address; @@ -295,7 +298,7 @@ namespace ArdupilotMega byte[] command = new byte[] { (byte)'d', (byte)(sending >> 8), (byte)(sending & 0xff), (byte)'E' }; this.Write(command, 0, command.Length); - Console.WriteLine((startfrom + (length - totalleft)) + " - " + sending); + log.Info((startfrom + (length - totalleft)) + " - " + sending); this.Write(data, startfrom + (length - totalleft), sending); command = new byte[] { (byte)' ' }; this.Write(command, 0, command.Length); @@ -304,7 +307,7 @@ namespace ArdupilotMega if (!sync()) { - Console.WriteLine("No Sync"); + log.Info("No Sync"); return false; } } diff --git a/Tools/ArdupilotMegaPlanner/ArduinoSTKv2.cs b/Tools/ArdupilotMegaPlanner/ArduinoSTKv2.cs index 3483695ff3..746a6f0e10 100644 --- a/Tools/ArdupilotMegaPlanner/ArduinoSTKv2.cs +++ b/Tools/ArdupilotMegaPlanner/ArduinoSTKv2.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; +using System.Reflection; using System.Text; using System.IO.Ports; using System.Threading; +using log4net; // Written by Michael Oborne @@ -10,6 +12,7 @@ namespace ArdupilotMega { class ArduinoSTKv2 : SerialPort,ArduinoComms { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public event ProgressEventHandler Progress; public new void Open() @@ -250,7 +253,7 @@ namespace ArdupilotMega byte[] command = new byte[] { (byte)0x13, (byte)(sending >> 8), (byte)(sending & 0xff) }; - Console.WriteLine((startfrom + (length - totalleft)) + " - " + sending); + log.InfoFormat((startfrom + (length - totalleft)) + " - " + sending); Array.Resize(ref command, sending + 10); // sending + head @@ -266,7 +269,7 @@ namespace ArdupilotMega if (command[1] != 0) { - Console.WriteLine("No Sync"); + log.InfoFormat("No Sync"); return false; } } @@ -290,7 +293,7 @@ namespace ArdupilotMega throw new Exception("Address must be an even number"); } - Console.WriteLine("Sending address " + ((address / 2))); + log.InfoFormat("Sending address " + ((address / 2))); int tempstart = address / 2; // words byte[] temp = new byte[] { 0x6, (byte)((tempstart >> 24) & 0xff), (byte)((tempstart >> 16) & 0xff), (byte)((tempstart >> 8) & 0xff), (byte)((tempstart >> 0) & 0xff) }; @@ -342,7 +345,7 @@ namespace ArdupilotMega byte[] command = new byte[] { (byte)0x15, (byte)(sending >> 8), (byte)(sending & 0xff) }; - Console.WriteLine((startfrom + (length - totalleft)) + " - " + sending); + log.InfoFormat((startfrom + (length - totalleft)) + " - " + sending); Array.Resize(ref command, sending + 10); // sending + head @@ -358,7 +361,7 @@ namespace ArdupilotMega if (command[1] != 0) { - Console.WriteLine("No Sync"); + log.InfoFormat("No Sync"); return false; } } diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 082b9bd929..46560d91e3 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -147,6 +147,10 @@ ..\..\..\..\..\Desktop\DIYDrones\kml-library\KmlTestbed\bin\Release\KMLib.dll + + False + Lib\log4net.dll + ..\..\..\..\..\Desktop\DIYDrones\myquad\MetaDataExtractorCSharp240d\bin\Release\MetaDataExtractor.dll @@ -225,6 +229,14 @@ + + + + Form + + + Tracker.cs + Form @@ -445,7 +457,10 @@ temp.cs - + + + Tracker.cs + ProgressReporterDialogue.cs diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj.user b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj.user index a4d8cafb2b..496c214467 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj.user +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj.user @@ -11,6 +11,6 @@ - C:\Users\hog\Desktop\DIYDrones\myquad\greatmaps_e1bb830a18a3\Demo.WindowsForms\bin\Debug\;C:\Users\hog\Desktop\DIYDrones\myquad\sharpkml\SharpKml\bin\Release\;C:\Users\hog\Desktop\DIYDrones\myquad\MetaDataExtractorCSharp240d\bin\Release\ + C:\Users\hog\Desktop\DIYDrones\myquad\greatmaps_e1bb830a18a3\Demo.WindowsForms\bin\Debug\;C:\Users\hog\Desktop\DIYDrones\myquad\sharpkml\SharpKml\bin\Release\;C:\Users\hog\Desktop\DIYDrones\myquad\MetaDataExtractorCSharp240d\bin\Release\;C:\Users\hog\Documents\Visual Studio 2010\Projects\ArdupilotMega\ArdupilotMega\Lib\ \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln b/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln index be5d5ee4df..8c86aa7b2d 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln @@ -5,8 +5,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArdupilotMega", "ArdupilotM EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Updater", "Updater\Updater.csproj", "{E64A1A41-A5B0-458E-8284-BB63705354DA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArduinoCPP", "..\..\ArduinoCPP\ArduinoCPP.csproj", "{C38A02C5-3179-4047-8DC3-945341008A74}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -43,18 +41,6 @@ Global {E64A1A41-A5B0-458E-8284-BB63705354DA}.Release|Win32.ActiveCfg = Release|x86 {E64A1A41-A5B0-458E-8284-BB63705354DA}.Release|x86.ActiveCfg = Release|x86 {E64A1A41-A5B0-458E-8284-BB63705354DA}.Release|x86.Build.0 = Release|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Debug|Win32.ActiveCfg = Debug|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Debug|x86.ActiveCfg = Debug|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Debug|x86.Build.0 = Debug|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Release|Any CPU.ActiveCfg = Release|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Release|Mixed Platforms.Build.0 = Release|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Release|Win32.ActiveCfg = Release|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Release|x86.ActiveCfg = Release|x86 - {C38A02C5-3179-4047-8DC3-945341008A74}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tools/ArdupilotMegaPlanner/Camera.Designer.cs b/Tools/ArdupilotMegaPlanner/Camera.Designer.cs index abf69d3313..3e6eb16e5d 100644 --- a/Tools/ArdupilotMegaPlanner/Camera.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/Camera.Designer.cs @@ -28,6 +28,7 @@ ///

IbI}scEC#I_ywOO9!ZaESHj%bL~{4@(+k^`EWIBdTXAEwcWoN-d!P1$;vLlF z6MTDN7x=G-Qr}OMc=`3v>ZzY7e*REU*{Arb#^;dz8A|IvRT}AkhSurg>1VF_id1gh z+m5-E^cgm%aw%Xsg`X)+^&WUGWA_JaUm#e{DOV_-EGa&hA)}5v@s)%FpD9uLOb3_8 z<6J6K@ZMMK4t$j11xse{9OqK|9ZITx*%5??m|XL9q+Rsh4kg*Q8|m-d&`baYy5JB- zy`74#*vYA3De6Qx_Dql8oz+9r8eK1u5_kDyOd3z8+d9amZqvd+L#(iF zMoU`)S?~!axc=m=}RS2&y2V|+j;!XW3qmi!<(~>&j1}pLu~dH8tqh;(UiS- z%X0H!mzPF;rMN{Ni6fpE<6XU7RP`0Uj)J`k_kSV*dP7bMT7UCqW2<9Y&1QzM@b2ejW$!pnf6e{K0KjI9D(nb1kAVU1N>Hf1o`ml zYgE8dwPUB5Uv%O|7NAU|GR`TU`9R4yE*mZf&RBp7L4nfg`%$e+_9}k;4J%@93EZOs zv~Dko{xh^X<$L8ZA$M*_>-Q^_n%Q%OG@oi7!B;`X{GdD|-)LC<#}7)1kiQA9 zjz6H>6!L!}tK$!`Pi%B`kDruXvSwySNE4|4bbNKDS&cGJM#|o(QTmqg=PdchUzFtE z7+`-Q=AeL@gz*aK1`GvCfF-~yz&F4dAgmEMKyRQ3SOUBPYz6iMmjGWf1|1+DCL+10mGf~UA*$2)G+sp$n~7d^xRKsO3a+gvNd=q`UXUL1>jZi50_>B{zotK zRNj2b{8>%rBPMR;4;u2b+DKFWumV!jQS5cko8eJu)z7N^^3{CW$susU!~OanbPNn^nPyzrj9@3eXy?&tGaG`*+c&l z=Nnw}sbdY|FGu|C|D^FXY6{k-3yynIwGLMFhbeH?l}%@B)XduGl8zv{SGlSEY37bD z{OpUSNk`N)YnDEro@LH!;H+?PV(I7+&{?_(jdqhoD@!k#SnN zPHW7Mi17GUV@@x4e+!q_@qL~e+V(I$YXn)nt8y!<(CA4J}}6w(?gsQQv#LP7|Ba8t41T^C|e4n(V=;68GurGPOOXHqmiW zTL>KB2yMHB>>i;CKU(V%5|@oT%&j8m=rPq_8^E@uM`%q~9CwX9j{J_eaeIP~P~jUv zF>yyxj^!AO1Tr!6W?cd~@keO-apdWpTXo)CQigX7Z9T54`Zi&j7#=-%@^gfKIIi9) z=2OxM)F{rHxYHDTqDF0`rzs|rYm~M8V!osHi{l-&U(9#ZAgO&v?HA*_5XQTFzwj3m z%`Ys8U#R0rH3CjxpQj;BI;n=}J1za35>EUt_^Kj|`l^#^hUXXKwcq*l#YrRzXGq*V zT=d6DB&r8i%XTw^)sT*w&8)F;X?!xJiE(LsGNt?!+SF0=n-!^sH-EFjm1bV@#~Qbe zQdC#EabJP4xbig4Z!G#5$3VhPtNys7j{aLXdFGU9MdNDsnU0d^;EsUyVW-s?I9qy% z2p8A+QK~R~)}2-pAiyh}7#vTdF(0MCog&ouwj^&CK*Je>k#xq;(9ygbY2NL<1A8@W zc%knMO71BA8}cY;lE%+4yBk(NTn=V%an{snI)Srj4s+dRnQrtheY~YtKfWM?-rIlDB>I*m>37ErF3|!M|V(-{H*x z)&5WvxtuE^PC)_}7w?#aOv|GSzc z!|nUK8m>$ZRw(8$rmAOtz!veM-(grvYL%Oo@K8eAgl=9|GxVjF7TXdXGcD0EYpuoy9FLhFNm}*?di*iMsx^T&;X7!$ zr@omoZdPnJj$zJ?PbHmUS+pgy4bU;t{xnQs|36U%Pa*-&TMW|ABICC(Msxo&QV4kwWI-9lx3UNk5K& z4fP4U2cjm>l4CgV*x|Yw4yFCCtI1I(9K~&$Sgz?4RFN;t?|Gh}D!#;O5Wai)lFi=< zg1L>1#Vk1+#^@UIyvfeGRbwZ3h)dQ7g_$M7W{V%ko*C%aq*$O8&>JWM z<^j(DZv(r5NoVk15T-h5Kprp#m;<6v@e$0zn z0lk3|U=gqy*aRF*uTE;9?h}=>Vbpw|V#&1y%gDT&l=7(>FT?Hokask_`l&h*>$3Wv zsp;+yAuqj2ojy}j^wOK=f|PqA&n(-T_Pnjbp0_nE(D^>FoO{^7gHt=lY)i&>5ZW4F zga&W)>{|Slc38)8@^dU|O>S2gj3dnQ`Ob^kxjhXFkG`@-QeG z{_dq^rY;=79)a&WxrMPbjN+Wx9cK(un`fk6NG;5hN2^ouRAA0dHBT6I*0}4T^Si5*vJq?C@2*Pxh2&v`he5oIH68?=--t4O z6Rbm5$@`Yt%9^OGr|xgT3~Yel=vA8fmTEuuSWoL%PzAyHtMr{y(C}>tHbQXyDs_6> zq3Qt$Qee;B$~9|)ptNx6gmG+16}=p$G!m7=b1~%_T`R}i1_$590dVg%%32`zwq6%r zPd(p(MSB}sVr?zs3-6slfn1SZo9K1m_}>91+2+hFoJx7QcAme6Vwc3GJZ&8C>Y}{MYx_2?fY)L!ch3!7^KI-<;yQ)8=rNd~KNEGsc z8cu1|kS^JTrcg>3#tVB9yq;!NBd%)1wcd!Ug}&ZO7LQzr1c#z(sxeC_eh&&(y^A%0 zZxjA2cn{ABpLtL9Q#&Z7*B?@Ra{p=c;d_W{$$KD_Y*K?7Vzb52!Fmb+*6E>j??K;c z$m#HVwX6U2^y?<1WD`;C?MLA`5{BES9HPyVQ+E4Y?Q_}m0`8~vZ?{&KCeXOkRy>2!F9@IJQt!V!H7-Eew zc;$W7-@uu%xug4b?1(g#|@v&Ybz^8wZ~t*GY*YJ1gu z0=8bFo4s)0el-HR-$$a-Z_vgM)Rg%28&+?%5(T?jTew{d>BAj}-?tgDIRyg?%~EI6 z(uQ(2BepiwbF&%~=VT2Vjko@%j;q~7Z$k?* zfSU~Ex*aa)Bh{~&om@y!<^Z1kkvddCmo+uN0)~RlY2NK&eumK}g!BmI6vB*N|41#7 z(O;%+RV%fNe{r?&SykhMEQ#CHc{1A33)|H9WmMhp|Ee#^D7Tw%%lL1!@vj6J1S41s zlmpKIYk}>+LEsYLYYIaNv;%qrMZg?j8So0Q88{4F0TP>m2aEyc0Ly^af$hLSK+5D; z@#kgF)T2;iGB~IHpkgCA(3<2jM#B*S|xWh7;11atqNbuKf-OC~2DV`JCDZ{%dL7G-P%? z1PcSsGZXk2bO{7+Lhw<5I+Qp2^Tl;RosT-+H4z4w%gSQ(i-SBeiue`Iq?X5fjunE~Sg z2Y;<-)eNynL%NJkT4Wxn&YLOnG^EJz%QhdrubPQ-1>2CyzdE71&wz0k|6Nf2WHUK+-!_6xKi!nV+^o&NUdljuEb+(98a8Z5d zY!Sncr;Uluocl#s_c5S+V|Rh9u`{O`gk1pEAx>M)latl(I}bbrfB8GJ?&7K9 zMP&Wx{k3&8nwrc(O%y`;g745r=LoxwM$?llxfhackW|k>?;TB-*>5cT_QEgW0S9~J z1CSI!vLBMiosv&jG7gfTA^FWI$(#$xcu0;xa`#+^wiPUy0Lhr|gXp8VC>6f=d9G-v z7k_UzL~{@xO7A^byS5)qJs%Xweef|N_d<&&6%@{zVa?bITv!AEjZi4I+?dJ1ZwJ73 zc=7+%e*^kG6QTbVBq(*BNYZhE24n6s@_0JK_@fq7{uw?sJ%j(MMFN}!?XY9Mb{@V@ zJ%iqvCsOry9MSNsZ3dm4=g3CRd_*$|(HulHoga}KQptQ_KU)}0&$IYGi0|DWM4!zU zNg6JURNzh2mqciAF`5Uj9XMe#Nq-36>X}J7rqll+#Q%iFXHt+sdIHj@nWAp?Fb&@P z>75WmybYnC<0J>xelR2Bi4aemW>Qia8thE!Xgb5-#5q+>oZWlk)cfi-OlMMs$y`^4 z&j&TO)baelXQ;y~kob64negj<9I{|r)(cH>WI2ieA0T(%`y(1$xoD!}!Yl%)0aKbq zTgpX5+$>R-CHpg@ysf~cK8r4ti|*E=pV8ED0d!7*PS=4Tny^4*X5zxoX;1lP{~yXY z*<8-EY1@L@BTu7AEQGSDP&NR{nl3~FadBG$@2A3r*u1*mq0=sNPTc)eu~77^O5p<_3 zf6L$;YW)b#&X`+eqiOyl2ss@gM;|moHlf{*h!)m!Q8rt)Q67VMVY!eV-T*Pa)|UOK z=&iseRhK;~f`!5c=BdZTe1+{v{l~>Hg^kFqPlDoT(c{9Wu;DOF`i940(%D!TcL({7 z4a9Gci*<$>cySTJqWcmqqA2VM7;Uo;3LLgIW@05zh!PDw$4Jd%=3n@^{)AYqpqEs? zxEPPW6mB*Dd=eVDs(URJYZR`g-aRTIp~+@57(UKzhO z#=n)o6fE~bL;5rbNgOLHq2gU$%fF-~yz$Rc1a0Uo! zAxViqJ75qn8CV3YZXqR0J8*Fr;P+A^0e<Q{M^r#u(hG6T~G9P{toa znNuvneBVIctG=m+p1e>mg5E3^_J;V^bf_3Qz6Ga$eR59}ZS?*Y*N*eHZ)bi@D<*>f z9r!cr(}&n1v1X&33jC`*DpwIqA(KR3`OVi9f2d=RPr1?p2>MCW|(j z85e&KFK03g%e={$oz1K-(~EE5i72LU_yF2u5!r?RWIg}F9aFXQC`lCywM3vBFajt6 z76EI4?Et^z>cgV4aqEh}IX=$nX^Ru+YO$cyQy9AV0=pL-Y0p{w>6ay+x@xyD_$;fZ z9k}tJIL_u`kLEL1vK#O1xO)`S@XuWK=0;mu!GaDDj4GxNKXcie8*S+Z3+{kmb}^;w zaD*t_0YNSVYl>;{4*XG*H5}Ox_o_p2)Pf5 z*y)OIvagn_=*1Z8HUM!busVOVAFA2qs?+f+>*xd>=Zh(1mn+Yj0=A{WyCCQcLG(l{ zC|r&7XzS1A*`{_FRe_=>Ti&*n9cCQ=j_+|^g%^0beI#?ya4cZDlG z;Pnxo6utDh%dd>G?-F;r{Mu|IUjpA4HBO55-tB6op_Gh1pJOftSM7EU)y#YfDc&@2 z{x4j;W#ntr7p@E$*;xFAt8_r3*Jwk=xsF^kiUOb*mk2XYSrmjHg9xG~TU zC;*Cqa$q&E3E0!7DzMSoMZ6-1c}ih)KZP+)y&}gcd~xR$xtHA&UuVV)Fus7`<12Dz zIxdh6UVAJ0VYtn3lL+@m%ik{T2S_hOwV7|Hmr~(XeBWv&6iJ7I=pR>Qdr4JFU$A5r zByLFlbV}M^gJd=&!H~T9WKctV>`M0QxU*7V8kcVPIG}9rviv`kod;l5MHctpeZ2+p zAdo@=2}rM@32cCbqJVViQW7cByDK0_;-b<8MFtQM6qG0`C~iPeL6N0|jtB@6iVBEy zUBCd}@7()ta&dS4zAyUc+&AZ(X?JGs)H7q%F|>lupjA06r?d)OyAuBg#&1j~dH2NG z_9xY>KTw^3YRd;yw~4Ch^gmQ9=c76i)r<#Jhv%beI{gn-wmg&zPC|8xMKxMQ-^GHN z>GVHTC*CE8o<(&rIrP?Dd*u)hf0a22_fVLO!Y3#^de5E^;^D6pMvP@ULGC?!&@%6t7R|?;V!b}tzqi{tO zc=#)YfgTiQq0keBmpv%(@Lv@A8?&I&_(^+j9(i9CDa`__J_gbMosG=XVNYyN4IJNZ z6r*K0(gKQY)zLuYO_>Ml>i-BRHQY6@1~i9&=KndMzZ(IqA&?+CB5%q(7*P1UyqO}? zh{C!563|=%dY}CH(C(WMG(+TKmI51Q0!NC5<%h~c@ z0-H}@TAqE)PNm>wl@H582}o9z_>O2}h6Fv1a= zunk|UAtXNI_+MVmpL{k8a{hnu`Bi*wh|l{X93>J4Ah09sGmigvpUpTgEn&n|qGbLp zz~`>`Jgf+DmaU$Hfe7IEUwn>!ut1q{ZlF39;XL+hcs9nG)8j^s%;2T!vrzc!ENS>{ z$~>6UfAZUm^-Ct)uCJ?~Ua3CiC z|0$4F|0R&c1ajIM$i(`3AaX``G?0{-{09RGFRPf1(RBoC0qI_TSd3+rsA7(Ihx92w z{Fq;Di#h80=onH|=zpuM{@55_R?Jbp7$cDBBzs7Dta>ocyTgpigFOei$vz zbhFgU;!LN>aLyBF=^EV^XX*0jTO~S1;VfO5QBgQc7e#m8BF^+X)G2YMM`1YEDuJ`~ z8#*IkF_q@`bKh5@-4H>du+sET7dk#92OKB8+?;=3sX9%nlfrTPKGo|*4fbO5PH@Xjrv79#OY74Qq+0km_1lECEaIPWe((`$UVv43NXbWVzW-?d=)`47b4%mpOM79=a1=7I;Fb}K&+rSAR z7j8zT5HM%~dV}#`HdqC=ffL{sh-};z!Nv%J-e5eK2iAZs;3&8SBAbv}kP3Q(@nAMs z1vZ1j;8K(IX^pgneFKS}0W4(gtKzcG6tqzpjW|a#5YF`~YGxycIU&$S?d%&U=N<&( zb`^EKZ=h`Gb`{qHje8Gu`jFckh_z7z`yu}n^4+Vdx%~p>{?0b)fG`Hb=v!6QNO2T0 z8mGe;0^@j9wZzKEhT$0s<8)P*syWqfjvm{n5*errgLAd2YLXEsjO`R*42SXWs_J-S zOEP{G#t0Y@)l`uuNk&99BN^t*^&EBWJcq&{JJ~@#M`b-35F*xG)m1sLHb-qWoK71= z>#qyw7JNrH)dkY}2P%d<)eVo$A@Lj)k?JUwFvl`ItMC4(E#C)Y{+M9;2cijKXa7K2 z_*$VhDl~xPk0r_-Yr6Dxukhqm8=TD9iY^qreO1)*PR_U_4oJv$bz3HskB*Hk=2`Jj zHrr;(QpI%j&454|J1_WyW{$X6_I+j+w=?|HT?FiA%cK`- zV-s9vEc8{V_$Kx)WC`sxepiPoXkF-HD23d%1eykY9oh!E6xtEG4B8#K9NGu^1~kN6 zLI|twAr{(8=*HG<>b-%1>UPSI9@kX}6}Oeq(@P>Jii z(C9E_50?JB9#rB?>tOo;K6OIB#^aGNeH8jJ?j4|?KnFtq34Ip2QDqGZG__McB{s!B z!?_YyxJz3}J+(>k>~PT^8xn@ZL#Qlwe5TencSPGMq@q`B8_uC{DnySm+V`nITxdsF zd>53SjxARuwQv-lD%brQrBt&umn9+or~e&5TvBroDzQEU?F~H)9RWQ8T@C#X z`Z@F{bQkm(^c?hi=pE=us1HAXfXWKQDJa%fp0wrhPzi@KQ0DJ!XQ3^j=b+P}KSFmy ze}Z~gYT!&&W^<@yv)sLXf!{AdFG6=ge}S?U-gXJv40=UP85|g8?^sh^9vq09ijh-2 z_pn>4Td2VdC^W$qVT;!7=G-K%UT~r*|M1rXIC+i%wLmM74kmzkU@h1N^1v++l}d98 zT7h&h0n7tyz?M`l8$QazRp3pVpEh#gi;hG$+3qgAUR8L}QPxp^PZW`&wOlhuz{u zW;onx!c2~c4tP?Q6lMCf(=11Vx}4;4tF|*7<}s+|YT^t>x#ExDWwDP8uWaMSkL^Et zqH5ZxV2ZrCI*F9~QKU+Jq}V%NHdHDsEiIjt%5BC;j-vWw;gyZsEIWS24mKJmUM}ME zXL5>W!dX9ejfdT(G;UK{agVjC$<-dxrm+SJ`iz7gYhppKqBvb3i=lr!b-&2pHgZ=0*+*(ARe z$*-ED_Syqw)#TZZV6mz>Mvj^N)#q&LgG!E)YKJ$#o<$_o^wwf?z!9hs-o-1g-fU&1 zvQiA<=5SLz@44?B#~`2aIyKuGV=*Uh4ksOpeWd!%b=0?)`Y31NT*upXJ8@_--!Zn) zIjPqCNpCnYjVcT}g26yq$wgot*a7muEfCp^Zb!5EX(bodcO(W^(de(VoDz#ukJNY6 zh?OIJW-KS*xgnz2J~8aqt*Gx97>bvWjjGcYKPTYlMg2JZAe3J?tS{+s96r|*<#`I1 zw{YPC^44m@Sq!w^!nq=o^zO$_h0B~}*T7Z0T|il8!O#X@4iK(ZS6}o@R$cabCNZ15 zZ?C7adkES+PN{o)J?3|Muxh*y8!AI#^gN{o?ZYxn&#?DWNTmtQH7wJt+lOVET*ETW ze&boctFu;hjTvYRqiE+!H^ZB74<|xlPSx z8ygNwzR)-!o3-CluGkDq6r=>>{d4KAk_)S1Z+8EFb~NGOuj(kRAHuc|cBqlloh4Pu z0c^$$BPEOTRQm&-3Zcb$Mn*|h#uwWjeOrGKHZ|CIiMAd@;BcO5^BvnfbJ5lIsD!iF zdD)|`9U#Jcly=$^ov;FFx-qt~c<}sb!$XO##A}Zn?Gnk;hr*I8kSq-+c&4zFOC}QZ z6I?esSRFg);p#sk**Gkr`t0PWLYYIJkk53AQ!8Z`Z`(tjNNukXi$pwG0i-w4%HlUk zuiCi@HAmxz=mJ4+{TNo*cK8l5Rj}BHn4^t9G5VbL9)$@n3 zrZXliFC{^`GyBx~IoR~vr#hWw8}Ze{mj`>p8RBZ{F?Kh!J?QbO)Ngf> z1IG{_eS)L!>EBX__Nk0knsEqZpPKTmr%dRlbA=Hj0|`h!uD=CeLzgW)$;o}{Y`l*oT*Le>lH~R?59Z7QQ{-h2b@s#z|4a;Mc^%U9P zyS>Xi=RR1q{*Ko+3gNC{A*Jo&~H0-dR$<s?!@1KRq^DRNr6#Kt-;>Mk3x!dV zL?1E^?PoT3vm^O?;+$X+ko-O*sWVPA9+DJt%K8N5^^h1>;AZj@sEo6yNNFTclBu3M z;VBZz3iBj&@;OCMj83c*y%#Ndl0Anci51oU>h@Zsv;0ZYIhJ(#E~@q?sd>JOg;7Tu zJv&C65*kkT=AFMY0K)D}B%qIV0#E8XU7W49d@I<Hbz)3R(>#Qs1fr zBu)EP-g5N9JgU*GOKSPIm;tMG#1p9^_fTe2#JS3^YOgqtK2mVPaIjjIN3QadBl>P zM~s-`6){f`V||e{-7+fcZ_$#rj!2yGR1Mj$6nZ8F>&Sz3KkE!>d78A;xT4-Yj z@I8OW{}EU1YF1CWe8F?%>xirB&QVWUm2wVmj~1p+EjotZgU`{*j<`$I@_A%Ggr{9x7lY2OV31WosCa6dZ zpAXB+E0tP*OlAE3rc)*r0CIZq5G;l=73>hgJyc}RD#YIp(0 zvoO}(P)}a4Fy4m|P<9^P$d{;a;e?DjE zeGitCeHTADj?IUKZtqq5{GyS+p0_HMuC^!3R@jVn330^a4Cl-i*Y-cNl-v63!$ z(mSr=IjKdw(=?y)qU4}o=rmi0@``%v`i!@r*=DG%YiO}+MS2I=$=1D*94}ZG>5aFO zmHephAe&T&_3X5vg|9cYl;jk76{Z_`p4W^~EZ73hfqW3zoJm2D3VMLyU>aBfHi8r2 zCWvams2H>Wy}@L#0IUN$ztJ}0@|eW&jhd(Yyd~WRSgUMh4*bEMX zTOjgLnj_E_jDA!M_npxePV*xG_t*|MzUF?+gCYYUAHH;jwPE->v4p;4c!2X5=O%*K9oRsfd*v6NyPd zD)$Wz4;_8Mk7c#66x}B|I2?c6#Z?>mS}l(>gJLDH-&Ag}$av9T+?`9@E;d(_Ui4Q8 zT@0&9n;~D@`)rDImU2n+!Q)yUrH8?z7~g=Lb46>V)qxa(82kbkBJG&Na5&|n%bPII zuFqG=VMALw6A0EQ-#4OsON8|(uYJiM8QL9|lB(&{Ly;St8?ANla``FNFo#d=zFB=Prcs@rsbdu_K`J>8EzFH(QIrP@2)UpC@) zSX8`VgH~g*HGK$on;S>VcB|GiP}qw?$|Gv*41a})6lN3t$tMoYMIcVqrc!u{OhtGr50#m@4VO2FEO-WK6vGYvpVcFKE|nHd6p ziRlINbxF@r5BM=M>;PQ%KGMIfmAW&F;<7C)De0Fe-eP*fUq;1ubreAx!u(j$nhqp5@ zEG&U>A8L1ckEvWEr`?vDzDuafDPDK%ZA*a|F>qW#CAqCm&tc0CCzXOZK6~)rj`At;7)pxQs!-z=^v?!;wZB4W%?&eE)3?p zjr!XmZ$fdIZ8ZPt;7JTZe;n1CHZU3t@mCUPUWBoRaw2~+iEaK7tb3{%_S0&V7K|-R zsda=l67YBwMA#H)M9CM$pl;nLm>ix@HC*z%EyKG6%y7+B{2nT8r>nS!6$1D7#Bgdo zSBcPCypEy`l4%tjspF>)dLI{~$_-npL zUKd%V<}PATp83ArsYX|KIcqY6(T$O_?So|wJwvf3UzT~bav;9IYP`%tN*-Pr9EeSh zL0F0tO9GiP0Y^s@S_*}@0)?fx8=0fodh7R7OqI#`1e_BQFAt?E$^LR1&zVx6Dnc7V ztJ!RGIzdJLaVTp#nO(xayFpoZ)Q!Khj*`hwf{mf!tPf3s%CoG*h&!p%X+w!tP+v8X zY>=$xpnq(vq+XiQD5%Ud0X>G%EVyaWQ}f7ka+HFm*(9f>u*ygCu)GWYlEUhe5K%7& z#m)8*l*HI7*=$*;%ca4Y5^hy!4=4%Dlnq@hUg?WGl$PhG^BdVr$v0k`Sa_c*uQc;( z99V0~+y^C>GEYHy8@knc$qDRg+axFApe!|HR)D5L>qFC^&7jSoJ)w_4M?xQka;n5e zq%vnhseqaDp>3dVLLY;Eto5X~#KSfm+CgQ#r9Jc@ltrJ+W6+M!b5LGa<}c9BP}(#b zuPyT~v;GY`dAL8y{W|icPFqhNE>X!N{N+4LVYE5zR8NfXnnR!~wGM7{hM$#RadHTUUONMRc@UiJ7F4b+Mr>y4rQyeh`ym zs0*X;WF?*?oh2dvaup_|-Do&(!f6WUnbDSjKM~Gba5}>|HQJxx;(?Yb`8{kX$Bgj@ z`4}b1PTrI;esdLRi5fD-U#{LNw04THyt~e$#%GKdgIk;fq?eMy_bMA_lP~=%5u2>G zj-fYpGOQ-fqCQ!1)n}Q|xv;bJm857)mY^TgmMHcTm-DP9ys_ul+A@x<^XtZv-~7@; zH+^SIxI}g1TVgeI0Le%R+Sj%H@6rpQC-L38W9+aQvUylMJ>rx>Ho2 zKeL~yZLobhd(MBbC)UF&B|QD7s7)kg5_3uE z6x9xPgf-ohRMI$q_3-X2sdnb)h?c=7HSdjIxU+5l)BaRnDZLu#hp(D4P_6cNf2u?3 z7RMmkIrOUZcYkFEl|}vXcmF1bR0jQo#Fl6Lb$wI-y_x>NuoM$H!N1la<@w7A{>t{I zXVvA8sT9tM{&=5WP?3GcIBAtK(LdTjc~c)w#8W9K!zTHAI(WZ1|C;2F(5CK}Pal7S z!30{7*ARk21XjTHLpa&QYrh`>rGuRK#18GxZKrPS;q=N}y0ay!m0L$O{ z_V0%~Sh<{e>P+9Z#wJxESF2!$w$IguhH7jooaGY5?P_PP){c&lZY#6e9@HL3t@9@J z$R4eNuX9*D4)aXdXPmx=ds)xladPVYh~2B!A`)JPl(5XVC3!%27x!q*?08gTuQoHT zWQ-9_X_E6K(tIRhK;3rwLHePdME5xQgMDkN3PYKU>|4{=oMP6xxhi9*r(w8cST~kP zSO}}ByF9U>f7y+$#ttZxiriRpa;PV|n7I(|#i=b}4sSO(v=6wtI)VTzVghbLJ&f

private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Camera)); this.num_agl = new System.Windows.Forms.NumericUpDown(); this.label2 = new System.Windows.Forms.Label(); this.num_focallength = new System.Windows.Forms.NumericUpDown(); @@ -74,15 +75,13 @@ 0, 0, 0}); - this.num_agl.Location = new System.Drawing.Point(12, 38); + resources.ApplyResources(this.num_agl, "num_agl"); this.num_agl.Maximum = new decimal(new int[] { 10000, 0, 0, 0}); this.num_agl.Name = "num_agl"; - this.num_agl.Size = new System.Drawing.Size(64, 20); - this.num_agl.TabIndex = 1; this.num_agl.Value = new decimal(new int[] { 200, 0, @@ -92,12 +91,8 @@ // // label2 // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(82, 40); + resources.ApplyResources(this.label2, "label2"); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(72, 13); - this.label2.TabIndex = 4; - this.label2.Text = "Height m (agl)"; // // num_focallength // @@ -107,7 +102,7 @@ 0, 0, 65536}); - this.num_focallength.Location = new System.Drawing.Point(12, 64); + resources.ApplyResources(this.num_focallength, "num_focallength"); this.num_focallength.Maximum = new decimal(new int[] { 180, 0, @@ -119,8 +114,6 @@ 0, 0}); this.num_focallength.Name = "num_focallength"; - this.num_focallength.Size = new System.Drawing.Size(64, 20); - this.num_focallength.TabIndex = 6; this.num_focallength.Value = new decimal(new int[] { 5, 0, @@ -130,181 +123,113 @@ // // TXT_fovH // - this.TXT_fovH.Location = new System.Drawing.Point(361, 12); + resources.ApplyResources(this.TXT_fovH, "TXT_fovH"); this.TXT_fovH.Name = "TXT_fovH"; - this.TXT_fovH.Size = new System.Drawing.Size(100, 20); - this.TXT_fovH.TabIndex = 10; // // TXT_fovV // - this.TXT_fovV.Location = new System.Drawing.Point(361, 39); + resources.ApplyResources(this.TXT_fovV, "TXT_fovV"); this.TXT_fovV.Name = "TXT_fovV"; - this.TXT_fovV.Size = new System.Drawing.Size(100, 20); - this.TXT_fovV.TabIndex = 11; // // TXT_fovAV // - this.TXT_fovAV.Location = new System.Drawing.Point(361, 92); + resources.ApplyResources(this.TXT_fovAV, "TXT_fovAV"); this.TXT_fovAV.Name = "TXT_fovAV"; - this.TXT_fovAV.Size = new System.Drawing.Size(100, 20); - this.TXT_fovAV.TabIndex = 14; // // TXT_fovAH // - this.TXT_fovAH.Location = new System.Drawing.Point(361, 65); + resources.ApplyResources(this.TXT_fovAH, "TXT_fovAH"); this.TXT_fovAH.Name = "TXT_fovAH"; - this.TXT_fovAH.Size = new System.Drawing.Size(100, 20); - this.TXT_fovAH.TabIndex = 13; // // TXT_cmpixel // - this.TXT_cmpixel.Location = new System.Drawing.Point(361, 118); + resources.ApplyResources(this.TXT_cmpixel, "TXT_cmpixel"); this.TXT_cmpixel.Name = "TXT_cmpixel"; - this.TXT_cmpixel.Size = new System.Drawing.Size(100, 20); - this.TXT_cmpixel.TabIndex = 16; // // TXT_imgwidth // - this.TXT_imgwidth.Location = new System.Drawing.Point(12, 90); + resources.ApplyResources(this.TXT_imgwidth, "TXT_imgwidth"); this.TXT_imgwidth.Name = "TXT_imgwidth"; - this.TXT_imgwidth.Size = new System.Drawing.Size(64, 20); - this.TXT_imgwidth.TabIndex = 17; - this.TXT_imgwidth.Text = "4608"; this.TXT_imgwidth.TextChanged += new System.EventHandler(this.TXT_imgwidth_TextChanged); // // TXT_imgheight // - this.TXT_imgheight.Location = new System.Drawing.Point(12, 116); + resources.ApplyResources(this.TXT_imgheight, "TXT_imgheight"); this.TXT_imgheight.Name = "TXT_imgheight"; - this.TXT_imgheight.Size = new System.Drawing.Size(64, 20); - this.TXT_imgheight.TabIndex = 18; - this.TXT_imgheight.Text = "3456"; this.TXT_imgheight.TextChanged += new System.EventHandler(this.TXT_imgheight_TextChanged); // // label1 // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(82, 71); + resources.ApplyResources(this.label1, "label1"); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(69, 13); - this.label1.TabIndex = 19; - this.label1.Text = "Focal Length"; // // label6 // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(298, 19); + resources.ApplyResources(this.label6, "label6"); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(56, 13); - this.label6.TabIndex = 21; - this.label6.Text = "FOV H (m)"; // // label7 // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(299, 72); + resources.ApplyResources(this.label7, "label7"); this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(45, 13); - this.label7.TabIndex = 22; - this.label7.Text = "Angle H"; // // label8 // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(300, 99); + resources.ApplyResources(this.label8, "label8"); this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(44, 13); - this.label8.TabIndex = 23; - this.label8.Text = "Angle V"; // // label10 // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(299, 46); + resources.ApplyResources(this.label10, "label10"); this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(55, 13); - this.label10.TabIndex = 25; - this.label10.Text = "FOV V (m)"; // // label12 // - this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(299, 125); + resources.ApplyResources(this.label12, "label12"); this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(50, 13); - this.label12.TabIndex = 27; - this.label12.Text = "CM/Pixel"; // // label13 // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(82, 93); + resources.ApplyResources(this.label13, "label13"); this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(60, 13); - this.label13.TabIndex = 28; - this.label13.Text = "Pixel Width"; // // label14 // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(82, 119); + resources.ApplyResources(this.label14, "label14"); this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(63, 13); - this.label14.TabIndex = 29; - this.label14.Text = "Pixel Height"; // // label3 // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(82, 171); + resources.ApplyResources(this.label3, "label3"); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(74, 13); - this.label3.TabIndex = 33; - this.label3.Text = "Sensor Height"; // // label4 // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(82, 145); + resources.ApplyResources(this.label4, "label4"); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(71, 13); - this.label4.TabIndex = 32; - this.label4.Text = "Sensor Width"; // // TXT_sensheight // - this.TXT_sensheight.Location = new System.Drawing.Point(12, 168); + resources.ApplyResources(this.TXT_sensheight, "TXT_sensheight"); this.TXT_sensheight.Name = "TXT_sensheight"; - this.TXT_sensheight.Size = new System.Drawing.Size(64, 20); - this.TXT_sensheight.TabIndex = 31; - this.TXT_sensheight.Text = "4.62"; this.TXT_sensheight.TextChanged += new System.EventHandler(this.TXT_sensheight_TextChanged); // // TXT_senswidth // - this.TXT_senswidth.Location = new System.Drawing.Point(12, 142); + resources.ApplyResources(this.TXT_senswidth, "TXT_senswidth"); this.TXT_senswidth.Name = "TXT_senswidth"; - this.TXT_senswidth.Size = new System.Drawing.Size(64, 20); - this.TXT_senswidth.TabIndex = 30; - this.TXT_senswidth.Text = "6.16"; this.TXT_senswidth.TextChanged += new System.EventHandler(this.TXT_senswidth_TextChanged); // // label5 // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(82, 201); + resources.ApplyResources(this.label5, "label5"); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(44, 13); - this.label5.TabIndex = 35; - this.label5.Text = "Overlap"; // // num_overlap // this.num_overlap.DecimalPlaces = 1; - this.num_overlap.Location = new System.Drawing.Point(12, 194); + resources.ApplyResources(this.num_overlap, "num_overlap"); this.num_overlap.Name = "num_overlap"; - this.num_overlap.Size = new System.Drawing.Size(64, 20); - this.num_overlap.TabIndex = 34; this.num_overlap.Value = new decimal(new int[] { 60, 0, @@ -314,20 +239,14 @@ // // label15 // - this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(82, 227); + resources.ApplyResources(this.label15, "label15"); this.label15.Name = "label15"; - this.label15.Size = new System.Drawing.Size(42, 13); - this.label15.TabIndex = 37; - this.label15.Text = "Sidelap"; // // num_sidelap // this.num_sidelap.DecimalPlaces = 1; - this.num_sidelap.Location = new System.Drawing.Point(12, 220); + resources.ApplyResources(this.num_sidelap, "num_sidelap"); this.num_sidelap.Name = "num_sidelap"; - this.num_sidelap.Size = new System.Drawing.Size(64, 20); - this.num_sidelap.TabIndex = 36; this.num_sidelap.Value = new decimal(new int[] { 30, 0, @@ -337,73 +256,51 @@ // // CHK_camdirection // - this.CHK_camdirection.AutoSize = true; + resources.ApplyResources(this.CHK_camdirection, "CHK_camdirection"); this.CHK_camdirection.Checked = true; this.CHK_camdirection.CheckState = System.Windows.Forms.CheckState.Checked; - this.CHK_camdirection.Location = new System.Drawing.Point(13, 247); this.CHK_camdirection.Name = "CHK_camdirection"; - this.CHK_camdirection.Size = new System.Drawing.Size(150, 17); - this.CHK_camdirection.TabIndex = 38; - this.CHK_camdirection.Text = "Camera top facing forward"; this.CHK_camdirection.UseVisualStyleBackColor = true; this.CHK_camdirection.CheckedChanged += new System.EventHandler(this.CHK_camdirection_CheckedChanged); // // label9 // - this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(261, 198); + resources.ApplyResources(this.label9, "label9"); this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(86, 13); - this.label9.TabIndex = 42; - this.label9.Text = "Across Flight line"; // // label11 // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(261, 171); + resources.ApplyResources(this.label11, "label11"); this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(94, 13); - this.label11.TabIndex = 41; - this.label11.Text = "Flight line distance"; // // TXT_distacflphotos // - this.TXT_distacflphotos.Location = new System.Drawing.Point(361, 195); + resources.ApplyResources(this.TXT_distacflphotos, "TXT_distacflphotos"); this.TXT_distacflphotos.Name = "TXT_distacflphotos"; - this.TXT_distacflphotos.Size = new System.Drawing.Size(100, 20); - this.TXT_distacflphotos.TabIndex = 40; // // TXT_distflphotos // - this.TXT_distflphotos.Location = new System.Drawing.Point(361, 168); + resources.ApplyResources(this.TXT_distflphotos, "TXT_distflphotos"); this.TXT_distflphotos.Name = "TXT_distflphotos"; - this.TXT_distflphotos.Size = new System.Drawing.Size(100, 20); - this.TXT_distflphotos.TabIndex = 39; // // CMB_camera // this.CMB_camera.FormattingEnabled = true; - this.CMB_camera.Location = new System.Drawing.Point(13, 13); + resources.ApplyResources(this.CMB_camera, "CMB_camera"); this.CMB_camera.Name = "CMB_camera"; - this.CMB_camera.Size = new System.Drawing.Size(143, 21); - this.CMB_camera.TabIndex = 43; this.CMB_camera.SelectedIndexChanged += new System.EventHandler(this.CMB_camera_SelectedIndexChanged); // // BUT_save // - this.BUT_save.Location = new System.Drawing.Point(163, 10); + resources.ApplyResources(this.BUT_save, "BUT_save"); this.BUT_save.Name = "BUT_save"; - this.BUT_save.Size = new System.Drawing.Size(75, 23); - this.BUT_save.TabIndex = 44; - this.BUT_save.Text = "Save"; this.BUT_save.UseVisualStyleBackColor = true; this.BUT_save.Click += new System.EventHandler(this.BUT_save_Click); // // Camera // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(473, 275); this.Controls.Add(this.BUT_save); this.Controls.Add(this.CMB_camera); this.Controls.Add(this.label9); @@ -438,7 +335,6 @@ this.Controls.Add(this.label2); this.Controls.Add(this.num_agl); this.Name = "Camera"; - this.Text = "Camera"; this.Load += new System.EventHandler(this.Camera_Load); ((System.ComponentModel.ISupportInitialize)(this.num_agl)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.num_focallength)).EndInit(); diff --git a/Tools/ArdupilotMegaPlanner/Camera.resx b/Tools/ArdupilotMegaPlanner/Camera.resx index 7080a7d118..f9635c451b 100644 --- a/Tools/ArdupilotMegaPlanner/Camera.resx +++ b/Tools/ArdupilotMegaPlanner/Camera.resx @@ -117,4 +117,828 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 12, 38 + + + 64, 20 + + + + 1 + + + num_agl + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 32 + + + True + + + 82, 40 + + + 72, 13 + + + 4 + + + Height m (agl) + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 31 + + + 12, 64 + + + 64, 20 + + + 6 + + + num_focallength + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 30 + + + 361, 12 + + + 100, 20 + + + 10 + + + TXT_fovH + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 29 + + + 361, 39 + + + 100, 20 + + + 11 + + + TXT_fovV + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 28 + + + 361, 92 + + + 100, 20 + + + 14 + + + TXT_fovAV + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 26 + + + 361, 65 + + + 100, 20 + + + 13 + + + TXT_fovAH + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 27 + + + 361, 118 + + + 100, 20 + + + 16 + + + TXT_cmpixel + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 25 + + + 12, 90 + + + 64, 20 + + + 17 + + + 4608 + + + TXT_imgwidth + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 24 + + + 12, 116 + + + 64, 20 + + + 18 + + + 3456 + + + TXT_imgheight + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 23 + + + True + + + 82, 71 + + + 69, 13 + + + 19 + + + Focal Length + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 22 + + + True + + + 298, 19 + + + 56, 13 + + + 21 + + + FOV H (m) + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 21 + + + True + + + 299, 72 + + + 45, 13 + + + 22 + + + Angle H + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 20 + + + True + + + 300, 99 + + + 44, 13 + + + 23 + + + Angle V + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 19 + + + True + + + 299, 46 + + + 55, 13 + + + 25 + + + FOV V (m) + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 18 + + + True + + + 299, 125 + + + 50, 13 + + + 27 + + + CM/Pixel + + + label12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 17 + + + True + + + 82, 93 + + + 60, 13 + + + 28 + + + Pixel Width + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 16 + + + True + + + 82, 119 + + + 63, 13 + + + 29 + + + Pixel Height + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 15 + + + True + + + 82, 171 + + + 74, 13 + + + 33 + + + Sensor Height + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 11 + + + True + + + 82, 145 + + + 71, 13 + + + 32 + + + Sensor Width + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 12 + + + 12, 168 + + + 64, 20 + + + 31 + + + 4.62 + + + TXT_sensheight + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 13 + + + 12, 142 + + + 64, 20 + + + 30 + + + 6.16 + + + TXT_senswidth + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 14 + + + True + + + 82, 201 + + + 44, 13 + + + 35 + + + Overlap + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 9 + + + 12, 194 + + + 64, 20 + + + 34 + + + num_overlap + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 10 + + + True + + + 82, 227 + + + 42, 13 + + + 37 + + + Sidelap + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 7 + + + 12, 220 + + + 64, 20 + + + 36 + + + num_sidelap + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 8 + + + True + + + 13, 247 + + + 150, 17 + + + 38 + + + Camera top facing forward + + + CHK_camdirection + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 6 + + + True + + + 261, 198 + + + 86, 13 + + + 42 + + + Across Flight line + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + True + + + 261, 171 + + + 94, 13 + + + 41 + + + Flight line distance + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + 361, 195 + + + 100, 20 + + + 40 + + + TXT_distacflphotos + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + + + 361, 168 + + + 100, 20 + + + 39 + + + TXT_distflphotos + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 5 + + + 13, 13 + + + 143, 21 + + + 43 + + + CMB_camera + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + 163, 10 + + + 75, 23 + + + 44 + + + Save + + + BUT_save + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + $this + + + 0 + + + True + + + 6, 13 + + + 473, 275 + + + Camera + + + Camera + + + System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs index bb2beb1726..ed1c1a99c9 100644 --- a/Tools/ArdupilotMegaPlanner/Common.cs +++ b/Tools/ArdupilotMegaPlanner/Common.cs @@ -18,6 +18,7 @@ using System.Net; using System.Net.Sockets; using System.Xml; // config file using System.Runtime.InteropServices; // dll imports +using log4net; using ZedGraph; // Graphs using ArdupilotMega; using System.Reflection; @@ -213,6 +214,13 @@ namespace ArdupilotMega this.Lng = pll.Lng; } + public PointLatLngAlt(Locationwp locwp) + { + this.Lat = locwp.lat; + this.Lng = locwp.lng; + this.Alt = locwp.alt; + } + public PointLatLngAlt(PointLatLngAlt plla) { this.Lat = plla.Lat; @@ -280,6 +288,7 @@ namespace ArdupilotMega public class Common { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public enum distances { Meters, @@ -323,6 +332,57 @@ namespace ArdupilotMega OF_LOITER = 10 } + public enum ac2ch7modes + { + CH7_DO_NOTHING = 0, + CH7_SET_HOVER = 1, + CH7_FLIP = 2, + CH7_SIMPLE_MODE = 3, + CH7_RTL = 4, + CH7_AUTO_TRIM = 5, + CH7_ADC_FILTER = 6, + CH7_SAVE_WP = 7 + } + + public enum ac2ch6modes + { + // CH_6 Tuning + // ----------- + CH6_NONE = 0, + // Attitude + CH6_STABILIZE_KP = 1, + CH6_STABILIZE_KI = 2, + CH6_YAW_KP = 3, + // Rate + CH6_RATE_KP = 4, + CH6_RATE_KI = 5, + CH6_RATE_KD = 21, + CH6_YAW_RATE_KP = 6, + // Altitude rate controller + CH6_THROTTLE_KP = 7, + // Extras + CH6_TOP_BOTTOM_RATIO = 8, + CH6_RELAY = 9, + CH6_TRAVERSE_SPEED = 10, + + CH6_NAV_P = 11, + CH6_LOITER_P = 12, + CH6_HELI_EXTERNAL_GYRO = 13, + + // altitude controller + CH6_THR_HOLD_KP = 14, + CH6_Z_GAIN = 15, + CH6_DAMP = 16, + + // optical flow controller + CH6_OPTFLOW_KP = 17, + CH6_OPTFLOW_KI = 18, + CH6_OPTFLOW_KD = 19, + + CH6_NAV_I = 20 + } + + public static void linearRegression() { double[] values = { 4.8, 4.8, 4.5, 3.9, 4.4, 3.6, 3.6, 2.9, 3.5, 3.0, 2.5, 2.2, 2.6, 2.1, 2.2 }; @@ -352,9 +412,9 @@ namespace ArdupilotMega double a = v1 / v2; double b = yAvg - a * xAvg; - Console.WriteLine("y = ax + b"); - Console.WriteLine("a = {0}, the slope of the trend line.", Math.Round(a, 2)); - Console.WriteLine("b = {0}, the intercept of the trend line.", Math.Round(b, 2)); + log.Debug("y = ax + b"); + log.DebugFormat("a = {0}, the slope of the trend line.", Math.Round(a, 2)); + log.DebugFormat("b = {0}, the intercept of the trend line.", Math.Round(b, 2)); //Console.ReadLine(); } @@ -518,7 +578,7 @@ namespace ArdupilotMega // Get the response. WebResponse response = request.GetResponse(); // Display the status. - Console.WriteLine(((HttpWebResponse)response).StatusDescription); + log.Info(((HttpWebResponse)response).StatusDescription); if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK) return false; // Get the stream containing content returned by the server. @@ -536,7 +596,7 @@ namespace ArdupilotMega while (dataStream.CanRead && bytes > 0) { Application.DoEvents(); - Console.WriteLine(saveto + " " + bytes); + log.Info(saveto + " " + bytes); int len = dataStream.Read(buf1, 0, buf1.Length); bytes -= len; fs.Write(buf1, 0, len); @@ -551,7 +611,7 @@ namespace ArdupilotMega return true; } - catch (Exception ex) { Console.WriteLine("getFilefromNet(): " + ex.ToString()); return false; } + catch (Exception ex) { log.Info("getFilefromNet(): " + ex.ToString()); return false; } } public static Type getModes() diff --git a/Tools/ArdupilotMegaPlanner/CommsSerialPort.cs b/Tools/ArdupilotMegaPlanner/CommsSerialPort.cs index 8b4101039f..5b08850731 100644 --- a/Tools/ArdupilotMegaPlanner/CommsSerialPort.cs +++ b/Tools/ArdupilotMegaPlanner/CommsSerialPort.cs @@ -8,7 +8,13 @@ namespace ArdupilotMega { class SerialPort : System.IO.Ports.SerialPort,ICommsSerial { + public new void Open() + { + if (base.IsOpen) + return; + base.Open(); + } public void toggleDTR() { diff --git a/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs b/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs index 8bfe204897..b9c2fbc5b8 100644 --- a/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs +++ b/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs @@ -1,16 +1,19 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Reflection; using System.Text; using System.IO.Ports; using System.Threading; using System.Net; // dns, ip address using System.Net.Sockets; // tcplistner +using log4net; namespace System.IO.Ports { public class TcpSerial : ArdupilotMega.ICommsSerial { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); TcpClient client = new TcpClient(); IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); byte[] rbuffer = new byte[0]; @@ -73,7 +76,7 @@ namespace System.IO.Ports { if (client.Client.Connected) { - Console.WriteLine("tcpserial socket already open"); + log.Warn("tcpserial socket already open"); return; } @@ -186,7 +189,7 @@ namespace System.IO.Ports VerifyConnected(); int size = client.Available; byte[] crap = new byte[size]; - Console.WriteLine("TcpSerial DiscardInBuffer {0}",size); + log.InfoFormat("TcpSerial DiscardInBuffer {0}",size); Read(crap, 0, size); } diff --git a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs index 621e4ac277..e446c4df94 100644 --- a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs +++ b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs @@ -1,16 +1,14 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; +using System.Reflection; using System.Text; -using System.IO.Ports; -using System.Threading; using System.Net; // dns, ip address using System.Net.Sockets; // tcplistner +using log4net; namespace System.IO.Ports { public class UdpSerial : ArdupilotMega.ICommsSerial { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); UdpClient client = new UdpClient(); IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); byte[] rbuffer = new byte[0]; @@ -73,7 +71,7 @@ namespace System.IO.Ports { if (client.Client.Connected) { - Console.WriteLine("udpserial socket already open"); + log.Info("udpserial socket already open"); return; } @@ -97,12 +95,16 @@ namespace System.IO.Ports try { client.Receive(ref RemoteIpEndPoint); - Console.WriteLine("NetSerial connecting to {0} : {1}", RemoteIpEndPoint.Address, RemoteIpEndPoint.Port); + log.InfoFormat("NetSerial connecting to {0} : {1}", RemoteIpEndPoint.Address, RemoteIpEndPoint.Port); client.Connect(RemoteIpEndPoint); } - catch (Exception e) { - if (client != null && client.Client.Connected) { client.Close(); } - Console.WriteLine(e.ToString()); + catch (Exception e) + { + if (client != null && client.Client.Connected) + { + client.Close(); + } + log.Info(e.ToString()); System.Windows.Forms.MessageBox.Show("Please check your Firewall settings\nPlease try running this command\n1. Run the following command in an elevated command prompt to disable Windows Firewall temporarily:\n \nNetsh advfirewall set allprofiles state off\n \nNote: This is just for test; please turn it back on with the command 'Netsh advfirewall set allprofiles state on'.\n"); throw new Exception("The socket/serialproxy is closed " + e); } @@ -208,7 +210,7 @@ namespace System.IO.Ports VerifyConnected(); int size = client.Available; byte[] crap = new byte[size]; - Console.WriteLine("UdpSerial DiscardInBuffer {0}",size); + log.InfoFormat("UdpSerial DiscardInBuffer {0}",size); Read(crap, 0, size); } diff --git a/Tools/ArdupilotMegaPlanner/CurrentState.cs b/Tools/ArdupilotMegaPlanner/CurrentState.cs index 6912ffd17c..9f1c63087f 100644 --- a/Tools/ArdupilotMegaPlanner/CurrentState.cs +++ b/Tools/ArdupilotMegaPlanner/CurrentState.cs @@ -1,13 +1,16 @@ using System; using System.Collections.Generic; +using System.Reflection; using System.Text; using System.ComponentModel; using ArdupilotMega.Mavlink; +using log4net; namespace ArdupilotMega { public class CurrentState : ICloneable { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); // multipliers public float multiplierdist = 1; public float multiplierspeed = 1; @@ -858,7 +861,7 @@ namespace ArdupilotMega //Console.WriteLine(DateTime.Now.Millisecond + " done "); } } - catch { Console.WriteLine("CurrentState Binding error"); } + catch { log.InfoFormat("CurrentState Binding error"); } } public object Clone() diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs index 4c0332e32b..760c3222da 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.Designer.cs @@ -30,8 +30,8 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Configuration)); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); this.Params = new System.Windows.Forms.DataGridView(); this.Command = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Value = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -141,6 +141,8 @@ this.RLL2SRV_P = new System.Windows.Forms.NumericUpDown(); this.label52 = new System.Windows.Forms.Label(); this.TabAC = new System.Windows.Forms.TabPage(); + this.TUNE_LOW = new System.Windows.Forms.NumericUpDown(); + this.TUNE_HIGH = new System.Windows.Forms.NumericUpDown(); this.myLabel2 = new ArdupilotMega.MyLabel(); this.TUNE = new System.Windows.Forms.ComboBox(); this.myLabel1 = new ArdupilotMega.MyLabel(); @@ -345,6 +347,8 @@ ((System.ComponentModel.ISupportInitialize)(this.RLL2SRV_I)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.RLL2SRV_P)).BeginInit(); this.TabAC.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.TUNE_LOW)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.TUNE_HIGH)).BeginInit(); this.groupBox5.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.THR_RATE_D)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.THR_RATE_IMAX)).BeginInit(); @@ -403,14 +407,14 @@ this.Params.AllowUserToAddRows = false; this.Params.AllowUserToDeleteRows = false; resources.ApplyResources(this.Params, "Params"); - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle1.BackColor = System.Drawing.Color.Maroon; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle1.ForeColor = System.Drawing.Color.White; - dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.Params.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.Color.Maroon; + dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle3.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.Params.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3; this.Params.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.Params.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.Command, @@ -419,14 +423,14 @@ this.mavScale, this.RawValue}); this.Params.Name = "Params"; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.ActiveCaption; - dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.Params.RowHeadersDefaultCellStyle = dataGridViewCellStyle2; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.ActiveCaption; + dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.Params.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; this.Params.RowHeadersVisible = false; this.Params.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.Params_CellValueChanged); // @@ -1087,6 +1091,8 @@ // // TabAC // + this.TabAC.Controls.Add(this.TUNE_LOW); + this.TabAC.Controls.Add(this.TUNE_HIGH); this.TabAC.Controls.Add(this.myLabel2); this.TabAC.Controls.Add(this.TUNE); this.TabAC.Controls.Add(this.myLabel1); @@ -1106,6 +1112,16 @@ resources.ApplyResources(this.TabAC, "TabAC"); this.TabAC.Name = "TabAC"; // + // TUNE_LOW + // + resources.ApplyResources(this.TUNE_LOW, "TUNE_LOW"); + this.TUNE_LOW.Name = "TUNE_LOW"; + // + // TUNE_HIGH + // + resources.ApplyResources(this.TUNE_HIGH, "TUNE_HIGH"); + this.TUNE_HIGH.Name = "TUNE_HIGH"; + // // myLabel2 // resources.ApplyResources(this.myLabel2, "myLabel2"); @@ -1138,7 +1154,8 @@ resources.GetString("TUNE.Items17"), resources.GetString("TUNE.Items18"), resources.GetString("TUNE.Items19"), - resources.GetString("TUNE.Items20")}); + resources.GetString("TUNE.Items20"), + resources.GetString("TUNE.Items21")}); resources.ApplyResources(this.TUNE, "TUNE"); this.TUNE.Name = "TUNE"; // @@ -2190,6 +2207,8 @@ ((System.ComponentModel.ISupportInitialize)(this.RLL2SRV_P)).EndInit(); this.TabAC.ResumeLayout(false); this.TabAC.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.TUNE_LOW)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.TUNE_HIGH)).EndInit(); this.groupBox5.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.THR_RATE_D)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.THR_RATE_IMAX)).EndInit(); @@ -2500,5 +2519,7 @@ private System.Windows.Forms.Label label29; private System.Windows.Forms.NumericUpDown STAB_D; private System.Windows.Forms.Label lblSTAB_D; + private System.Windows.Forms.NumericUpDown TUNE_LOW; + private System.Windows.Forms.NumericUpDown TUNE_HIGH; } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs index 2a10e2a59e..ff0a1614a0 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs @@ -164,6 +164,10 @@ namespace ArdupilotMega.GCSViews // set distance/speed unit states CMB_distunits.DataSource = Enum.GetNames(typeof(Common.distances)); CMB_speedunits.DataSource = Enum.GetNames(typeof(Common.speeds)); + + CH7_OPT.DataSource = Enum.GetNames(typeof(Common.ac2ch7modes)); + TUNE.DataSource = Enum.GetNames(typeof(Common.ac2ch6modes)); + if (MainV2.config["distunits"] != null) CMB_distunits.Text = MainV2.config["distunits"].ToString(); if (MainV2.config["speedunits"] != null) @@ -180,13 +184,13 @@ namespace ArdupilotMega.GCSViews CMB_language.DisplayMember = "DisplayName"; CMB_language.DataSource = languages; - ci = Thread.CurrentThread.CurrentUICulture; + ci = Thread.CurrentThread.CurrentUICulture; for (int i = 0; i < languages.Count; i++) - { - if (ci.IsChildOf(languages[i])) { - CMB_language.SelectedIndex = i; - break; + if (ci.IsChildOf(languages[i])) + { + CMB_language.SelectedIndex = i; + break; } } CMB_language.SelectedIndexChanged += CMB_language_SelectedIndexChanged; @@ -231,7 +235,9 @@ namespace ArdupilotMega.GCSViews string data = resources.GetString("MAVParam"); if (data == null) - return; + { + data = global::ArdupilotMega.Properties.Resources.MAVParam; + } string[] tips = data.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); @@ -549,23 +555,23 @@ namespace ArdupilotMega.GCSViews if (text.Length > 0) { if (text[0].GetType() == typeof(NumericUpDown)) - { - decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((NumericUpDown)text[0]).Value = option; - ((NumericUpDown)text[0]).BackColor = Color.Green; - } + { + decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((NumericUpDown)text[0]).Value = option; + ((NumericUpDown)text[0]).BackColor = Color.Green; + } else if (text[0].GetType() == typeof(ComboBox)) - { - int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((ComboBox)text[0]).SelectedIndex = option; - ((ComboBox)text[0]).BackColor = Color.Green; - } + { + int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((ComboBox)text[0]).SelectedIndex = option; + ((ComboBox)text[0]).BackColor = Color.Green; + } } } catch { ((Control)text[0]).BackColor = Color.Red; } Params.Focus(); - } + } private void BUT_load_Click(object sender, EventArgs e) { @@ -593,12 +599,12 @@ namespace ArdupilotMega.GCSViews continue; if (index2 != -1) - line = line.Replace(',', '.'); + line = line.Replace(',','.'); string name = line.Substring(0, index); float value = float.Parse(line.Substring(index + 1), new System.Globalization.CultureInfo("en-US")); - MAVLink.modifyParamForDisplay(true, name, ref value); + MAVLink.modifyParamForDisplay(true,name,ref value); // set param table as well foreach (DataGridViewRow row in Params.Rows) @@ -753,6 +759,8 @@ namespace ArdupilotMega.GCSViews MainV2.cam.Start(); + MainV2.config["video_options"] = CMB_videoresolutions.SelectedIndex; + BUT_videostart.Enabled = false; } catch (Exception ex) { MessageBox.Show("Camera Fail: " + ex.Message); } @@ -807,10 +815,9 @@ namespace ArdupilotMega.GCSViews { DsError.ThrowExceptionForHR(hr); } - catch (Exception ex) - { - MessageBox.Show("Can not add video source\n" + ex.ToString()); - return; + catch (Exception ex) { + MessageBox.Show("Can not add video source\n" + ex.ToString()); + return; } // Find the stream config interface @@ -839,6 +846,11 @@ namespace ArdupilotMega.GCSViews DsUtils.FreeAMMediaType(media); CMB_videoresolutions.DataSource = modes; + + if (MainV2.getConfig("video_options") != "" && CMB_videosources.Text != "") + { + CMB_videoresolutions.SelectedIndex = int.Parse(MainV2.getConfig("video_options")); + } } private void CHK_hudshow_CheckedChanged(object sender, EventArgs e) @@ -935,7 +947,7 @@ namespace ArdupilotMega.GCSViews - + } catch { MessageBox.Show("Error: getting param list"); } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx index d92de5c219..0cf4249838 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.resx @@ -192,6 +192,2346 @@ Top, Bottom, Left, Right + + groupBox3 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 0 + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 1 + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 2 + + + groupBox15 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 3 + + + groupBox16 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 4 + + + groupBox14 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 5 + + + groupBox13 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 6 + + + groupBox12 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 7 + + + groupBox11 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 8 + + + groupBox10 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 9 + + + groupBox9 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 10 + + + groupBox8 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 11 + + + 4, 22 + + + 0, 0, 0, 0 + + + 722, 434 + + + 0 + + + ArduPlane + + + TabAP + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 0 + + + 543, 297 + + + 78, 20 + + + 22 + + + TUNE_LOW + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 0 + + + 627, 296 + + + 78, 20 + + + 21 + + + TUNE_HIGH + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 1 + + + 534, 270 + + + 53, 23 + + + 20 + + + Ch6 Opt + + + myLabel2 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabAC + + + 2 + + + CH6_NONE + + + CH6_STABILIZE_KP + + + CH6_STABILIZE_KI + + + CH6_YAW_KP + + + CH6_RATE_KP + + + CH6_RATE_KI + + + CH6_YAW_RATE_KP + + + CH6_THROTTLE_KP + + + CH6_TOP_BOTTOM_RATIO + + + CH6_RELAY + + + CH6_TRAVERSE_SPEED + + + CH6_NAV_P + + + CH6_LOITER_P + + + CH6_HELI_EXTERNAL_GYRO + + + CH6_THR_HOLD_KP + + + CH6_Z_GAIN + + + CH6_DAMP + + + CH6_OPTFLOW_KP + + + CH6_OPTFLOW_KI + + + CH6_OPTFLOW_KD + + + CH6_NAV_I + + + CH6_RATE_KD + + + 593, 270 + + + 112, 21 + + + 19 + + + TUNE + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 3 + + + 534, 322 + + + 53, 23 + + + 18 + + + Ch7 Opt + + + myLabel1 + + + ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabAC + + + 4 + + + Do Nothing + + + + + + + + + Simple Mode + + + RTL + + + + + + + + + Save WP + + + 593, 322 + + + 112, 21 + + + 17 + + + CH7_OPT + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 5 + + + THR_RATE_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 0 + + + label29 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 1 + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 2 + + + THR_RATE_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 3 + + + THR_RATE_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 4 + + + label20 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 5 + + + THR_RATE_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 6 + + + label25 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox5 + + + 7 + + + 6, 260 + + + 170, 110 + + + 16 + + + Throttle Rate + + + groupBox5 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 6 + + + True + + + 3, 240 + + + 154, 17 + + + 13 + + + Lock Pitch and Roll Values + + + CHK_lockrollpitch + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 7 + + + NAV_LAT_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 0 + + + label27 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 1 + + + WP_SPEED_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 2 + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 3 + + + NAV_LAT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 4 + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 5 + + + NAV_LAT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 6 + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 7 + + + NAV_LAT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 8 + + + label16 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox4 + + + 9 + + + 534, 126 + + + 170, 131 + + + 0 + + + Nav WP + + + groupBox4 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 8 + + + XTRK_GAIN_SC1 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox6 + + + 0 + + + label18 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox6 + + + 1 + + + 358, 260 + + + 170, 43 + + + 2 + + + Crosstrack Correction + + + groupBox6 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 9 + + + THR_ALT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 0 + + + label19 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 1 + + + THR_ALT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 2 + + + label21 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 3 + + + THR_ALT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 4 + + + label22 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox7 + + + 5 + + + 182, 260 + + + 170, 110 + + + 3 + + + Altitude Hold + + + groupBox7 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 10 + + + HLD_LAT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 0 + + + label28 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 1 + + + HLD_LAT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 2 + + + label30 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 3 + + + HLD_LAT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 4 + + + label31 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox19 + + + 5 + + + 531, 6 + + + 170, 95 + + + 6 + + + Loiter + + + groupBox19 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 11 + + + STB_YAW_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 0 + + + label32 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 1 + + + STB_YAW_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 2 + + + label34 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 3 + + + STB_YAW_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 4 + + + label35 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox20 + + + 5 + + + 358, 6 + + + 170, 95 + + + 7 + + + Stabilize Yaw + + + groupBox20 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 12 + + + STAB_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 0 + + + lblSTAB_D + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 1 + + + STB_PIT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 2 + + + label36 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 3 + + + STB_PIT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 4 + + + label41 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 5 + + + STB_PIT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 6 + + + label42 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox21 + + + 7 + + + 182, 6 + + + 170, 114 + + + 8 + + + Stabilize Pitch + + + groupBox21 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 13 + + + STB_RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 0 + + + label43 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 1 + + + STB_RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 2 + + + label45 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 3 + + + STB_RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 4 + + + label46 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox22 + + + 5 + + + 6, 6 + + + 170, 95 + + + 9 + + + Stabilize Roll + + + groupBox22 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 14 + + + RATE_YAW_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 0 + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 1 + + + RATE_YAW_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 2 + + + label47 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 3 + + + RATE_YAW_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 4 + + + label77 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 5 + + + RATE_YAW_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 6 + + + label82 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox23 + + + 7 + + + 358, 126 + + + 170, 108 + + + 10 + + + Rate Yaw + + + groupBox23 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 15 + + + RATE_PIT_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 0 + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 1 + + + RATE_PIT_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 2 + + + label84 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 3 + + + RATE_PIT_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 4 + + + label86 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 5 + + + RATE_PIT_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 6 + + + label87 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox24 + + + 7 + + + 182, 126 + + + 170, 108 + + + 11 + + + Rate Pitch + + + groupBox24 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 16 + + + RATE_RLL_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 0 + + + label17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 1 + + + RATE_RLL_IMAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 2 + + + label88 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 3 + + + RATE_RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 4 + + + label90 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 5 + + + RATE_RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 6 + + + label91 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox25 + + + 7 + + + 6, 126 + + + 170, 108 + + + 12 + + + Rate Roll + + + groupBox25 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAC + + + 17 + + + 4, 22 + + + 3, 3, 3, 3 + + + 722, 434 + + + 1 + + + ArduCopter + + + TabAC + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 1 + + + label26 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 0 + + + CMB_videoresolutions + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 1 + + + label12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 2 + + + CHK_GDIPlus + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 3 + + + label24 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 4 + + + CHK_loadwponconnect + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 5 + + + label23 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 6 + + + NUM_tracklength + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 7 + + + CHK_speechaltwarning + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 8 + + + label108 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 9 + + + CHK_resetapmonconnect + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 10 + + + CHK_mavdebug + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 11 + + + label107 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 12 + + + CMB_raterc + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 13 + + + label104 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 14 + + + label103 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 15 + + + label102 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 16 + + + label101 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 17 + + + CMB_ratestatus + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 18 + + + CMB_rateposition + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 19 + + + CMB_rateattitude + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 20 + + + label99 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 21 + + + label98 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 22 + + + label97 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 23 + + + CMB_speedunits + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 24 + + + CMB_distunits + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 25 + + + label96 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 26 + + + label95 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 27 + + + CHK_speechbattery + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 28 + + + CHK_speechcustom + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 29 + + + CHK_speechmode + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 30 + + + CHK_speechwaypoint + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 31 + + + label94 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 32 + + + CMB_osdcolor + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 33 + + + CMB_language + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 34 + + + label93 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 35 + + + CHK_enablespeech + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 36 + + + CHK_hudshow + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 37 + + + label92 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 38 + + + CMB_videosources + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabPlanner + + + 39 + + + BUT_Joystick + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabPlanner + + + 40 + + + BUT_videostop + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabPlanner + + + 41 + + + BUT_videostart + + + ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc + + + TabPlanner + + + 42 + + + 4, 22 + + + 3, 3, 3, 3 + + + 722, 434 + + + 2 + + + Planner + + + TabPlanner + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 2 + + + 4, 22 + + + 722, 434 + + + 3 + + + Setup + + + TabSetup + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConfigTabs + + + 3 + + + 52, 18 + + + 278, 0 + + + 0, 0, 0, 0 + + + 0, 0 + + + 730, 460 + + + 62 + + + ConfigTabs + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + THR_FS_VALUE + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 0 + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 1 + + + THR_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 2 + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 3 + + + THR_MIN + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 4 + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 5 + + + TRIM_THROTTLE + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 6 + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox3 + + + 7 + + + 405, 217 + + + 195, 108 + + + 0 + + + Throttle 0-100% + + + groupBox3 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabAP + + + 0 + 111, 82 @@ -384,29 +2724,125 @@ 7 - - 405, 217 + + ARSPD_RATIO - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + ARSPD_FBW_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + ARSPD_FBW_MIN + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + TRIM_ARSPD_CM + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + 406, 325 + + 195, 108 - - 0 + + 1 - - Throttle 0-100% + + Airspeed m/s - - groupBox3 + + groupBox1 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 0 + + 1 111, 82 @@ -600,29 +3036,101 @@ 7 - - 406, 325 + + LIM_PITCH_MIN - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + label39 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + LIM_PITCH_MAX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 2 + + + label38 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 3 + + + LIM_ROLL_CD + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 4 + + + label37 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 5 + + + 205, 325 + + 195, 108 - - 1 + + 2 - - Airspeed m/s + + Navigation Angles - - groupBox1 + + groupBox2 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 1 + + 2 111, 59 @@ -768,29 +3276,77 @@ 5 - - 205, 325 + + XTRK_ANGLE_CD - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 0 + + + label79 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 1 + + + XTRK_GAIN_SC + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 2 + + + label80 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox15 + + + 3 + + + 4, 325 + + 195, 108 - - 2 + + 3 - - Navigation Angles + + Xtrack Pids - - groupBox2 + + groupBox15 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 2 + + 3 111, 36 @@ -888,29 +3444,101 @@ 3 - - 4, 325 + + KFF_PTCH2THR - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 0 + + + label83 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 1 + + + KFF_RDDRMIX + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 2 + + + label78 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 3 + + + KFF_PTCHCOMP + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 4 + + + label81 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox16 + + + 5 + + + 205, 217 + + 195, 108 - - 3 + + 4 - - Xtrack Pids + + Other Mix's - - groupBox15 + + groupBox16 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 3 + + 4 111, 13 @@ -1056,29 +3684,125 @@ 5 - - 205, 217 + + ENRGY2THR_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 0 + + + label73 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 1 + + + ENRGY2THR_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 2 + + + label74 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 3 + + + ENRGY2THR_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 4 + + + label75 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 5 + + + ENRGY2THR_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 6 + + + label76 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox14 + + + 7 + + + 4, 217 + + 195, 108 - - 4 + + 5 - - Other Mix's + + Energy/Alt Pid - - groupBox16 + + groupBox14 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 4 + + 5 111, 82 @@ -1272,29 +3996,125 @@ 7 - - 4, 217 + + ALT2PTCH_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 0 + + + label69 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 1 + + + ALT2PTCH_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 2 + + + label70 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 3 + + + ALT2PTCH_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 4 + + + label71 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 5 + + + ALT2PTCH_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 6 + + + label72 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox13 + + + 7 + + + 406, 109 + + 195, 108 - - 5 + + 6 - - Energy/Alt Pid + + Nav Pitch Alt Pid - - groupBox14 + + groupBox13 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 5 + + 6 111, 82 @@ -1488,29 +4308,125 @@ 7 - - 406, 109 + + ARSP2PTCH_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 0 + + + label65 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 1 + + + ARSP2PTCH_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 2 + + + label66 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 3 + + + ARSP2PTCH_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 4 + + + label67 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 5 + + + ARSP2PTCH_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 6 + + + label68 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox12 + + + 7 + + + 205, 109 + + 195, 108 - - 6 + + 7 - - Nav Pitch Alt Pid + + Nav Pitch AS Pid - - groupBox13 + + groupBox12 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 6 + + 7 111, 82 @@ -1704,29 +4620,125 @@ 7 - - 205, 109 + + HDNG2RLL_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 0 + + + label61 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 1 + + + HDNG2RLL_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 2 + + + label62 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 3 + + + HDNG2RLL_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 4 + + + label63 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 5 + + + HDNG2RLL_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 6 + + + label64 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox11 + + + 7 + + + 4, 109 + + 195, 108 - - 7 + + 8 - - Nav Pitch AS Pid + + Nav Roll Pid - - groupBox12 + + groupBox11 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 7 + + 8 111, 82 @@ -1920,29 +4932,125 @@ 7 - - 4, 109 + + YW2SRV_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 0 + + + label57 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 1 + + + YW2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 2 + + + label58 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 3 + + + YW2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 4 + + + label59 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 5 + + + YW2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 6 + + + label60 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox10 + + + 7 + + + 406, 1 + + 195, 108 - - 8 + + 9 - - Nav Roll Pid + + Servo Yaw Pid - - groupBox11 + + groupBox10 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 8 + + 9 111, 82 @@ -2136,29 +5244,125 @@ 7 - - 406, 1 + + PTCH2SRV_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 0 + + + label53 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 1 + + + PTCH2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 2 + + + label54 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 3 + + + PTCH2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 4 + + + label55 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 5 + + + PTCH2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 6 + + + label56 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox9 + + + 7 + + + 205, 1 + + 195, 108 - - 9 + + 10 - - Servo Yaw Pid + + Servo Pitch Pid - - groupBox10 + + groupBox9 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 9 + + 10 111, 82 @@ -2352,29 +5556,125 @@ 7 - - 205, 1 + + RLL2SRV_IMAX - + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 0 + + + label49 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 1 + + + RLL2SRV_D + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 2 + + + label50 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 3 + + + RLL2SRV_I + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 4 + + + label51 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 5 + + + RLL2SRV_P + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 6 + + + label52 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox8 + + + 7 + + + 4, 1 + + 195, 108 - - 10 + + 11 - - Servo Pitch Pid + + Servo Roll Pid - - groupBox9 + + groupBox8 - + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + TabAP - - 10 + + 11 111, 82 @@ -2568,234 +5868,6 @@ 7 - - 4, 1 - - - 195, 108 - - - 11 - - - Servo Roll Pid - - - groupBox8 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAP - - - 11 - - - 4, 22 - - - 0, 0, 0, 0 - - - 722, 434 - - - 0 - - - ArduPlane - - - TabAP - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - - 0 - - - 358, 336 - - - 53, 23 - - - 20 - - - Ch6 Opt - - - myLabel2 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - TabAC - - - 0 - - - CH6_NONE - - - CH6_STABILIZE_KP - - - CH6_STABILIZE_KI - - - CH6_YAW_KP - - - CH6_RATE_KP - - - CH6_RATE_KI - - - CH6_YAW_RATE_KP - - - CH6_THROTTLE_KP - - - CH6_TOP_BOTTOM_RATIO - - - CH6_RELAY - - - CH6_TRAVERSE_SPEED - - - CH6_NAV_P - - - CH6_LOITER_P - - - CH6_HELI_EXTERNAL_GYRO - - - CH6_THR_HOLD_KP - - - CH6_Z_GAIN - - - CH6_DAMP - - - CH6_OPTFLOW_KP - - - CH6_OPTFLOW_KI - - - CH6_OPTFLOW_KD - - - CH6_NAV_I - - - 417, 336 - - - 112, 21 - - - 19 - - - TUNE - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 1 - - - 358, 309 - - - 53, 23 - - - 18 - - - Ch7 Opt - - - myLabel1 - - - ArdupilotMega.MyLabel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc - - - TabAC - - - 2 - - - Do Nothing - - - - - - - - - Simple Mode - - - RTL - - - - - - - - - Save WP - - - 417, 309 - - - 112, 21 - - - 17 - - - CH7_OPT - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 3 - 80, 60 @@ -2988,57 +6060,6 @@ 7 - - 6, 260 - - - 170, 110 - - - 16 - - - Throttle Rate - - - groupBox5 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 4 - - - True - - - 3, 240 - - - 154, 17 - - - 13 - - - Lock Pitch and Roll Values - - - CHK_lockrollpitch - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 5 - 80, 60 @@ -3279,30 +6300,6 @@ 9 - - 534, 126 - - - 170, 131 - - - 0 - - - Nav WP - - - groupBox4 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 6 - 80, 13 @@ -3351,30 +6348,6 @@ 1 - - 358, 260 - - - 170, 43 - - - 2 - - - Crosstrack Correction - - - groupBox6 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 7 - 80, 63 @@ -3519,30 +6492,6 @@ 5 - - 182, 260 - - - 170, 110 - - - 3 - - - Altitude Hold - - - groupBox7 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 8 - 80, 61 @@ -3687,30 +6636,6 @@ 5 - - 531, 6 - - - 170, 95 - - - 6 - - - Loiter - - - groupBox19 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 9 - 80, 63 @@ -3855,30 +6780,6 @@ 5 - - 358, 6 - - - 170, 95 - - - 7 - - - Stabilize Yaw - - - groupBox20 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 10 - 80, 88 @@ -4071,30 +6972,6 @@ 7 - - 182, 6 - - - 170, 114 - - - 8 - - - Stabilize Pitch - - - groupBox21 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 11 - 80, 63 @@ -4239,30 +7116,6 @@ 5 - - 6, 6 - - - 170, 95 - - - 9 - - - Stabilize Roll - - - groupBox22 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 12 - 80, 60 @@ -4455,30 +7308,6 @@ 7 - - 358, 126 - - - 170, 108 - - - 10 - - - Rate Yaw - - - groupBox23 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 13 - 80, 60 @@ -4671,30 +7500,6 @@ 7 - - 182, 126 - - - 170, 108 - - - 11 - - - Rate Pitch - - - groupBox24 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 14 - 80, 60 @@ -4887,57 +7692,6 @@ 7 - - 6, 126 - - - 170, 108 - - - 12 - - - Rate Roll - - - groupBox25 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - TabAC - - - 15 - - - 4, 22 - - - 3, 3, 3, 3 - - - 722, 434 - - - 1 - - - ArduCopter - - - TabAC - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - - 1 - NoControl @@ -5013,6 +7767,9 @@ 2 + + 17, 17 + NoControl @@ -5028,9 +7785,6 @@ GDI+ (old type) - - 17, 17 - OpenGL = Disabled GDI+ = Enabled @@ -6095,87 +8849,6 @@ GDI+ = Enabled
42 - - 4, 22 - - - 3, 3, 3, 3 - - - 722, 434 - - - 2 - - - Planner - - - TabPlanner - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - - 2 - - - 4, 22 - - - 722, 434 - - - 3 - - - Setup - - - TabSetup - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ConfigTabs - - - 3 - - - 52, 18 - - - 278, 0 - - - 0, 0, 0, 0 - - - 0, 0 - - - 730, 460 - - - 62 - - - ConfigTabs - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - 0, 0 @@ -6329,6 +9002,9 @@ GDI+ = Enabled
5 + + 17, 17 + Bottom, Left diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs index 94e42f21fe..b2ae277080 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs @@ -1,28 +1,24 @@ using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; +using System.Reflection; using System.Windows.Forms; -using System.Text.RegularExpressions; using System.IO.Ports; using System.IO; -using System.Runtime.InteropServices; using System.Xml; using System.Net; +using log4net; namespace ArdupilotMega.GCSViews { partial class Firmware : MyUserControl { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.C)) { - OpenFileDialog fd = new OpenFileDialog(); - fd.Filter = "Firmware (*.hex)|*.hex"; + var fd = new OpenFileDialog {Filter = "Firmware (*.hex)|*.hex"}; fd.ShowDialog(); if (File.Exists(fd.FileName)) { @@ -69,7 +65,7 @@ namespace ArdupilotMega.GCSViews internal void Firmware_Load(object sender, EventArgs e) { - Console.WriteLine("FW load"); + log.Info("FW load"); string url = ""; string url2560 = ""; @@ -141,11 +137,14 @@ namespace ArdupilotMega.GCSViews } } - List list = new List(); } - catch (Exception ex) { MessageBox.Show("Failed to get Firmware List : " + ex.Message); } - Console.WriteLine("FW load done"); + catch (Exception ex) + { + MessageBox.Show("Failed to get Firmware List : " + ex.Message); + } + log.Info("FW load done"); + } void updateDisplayName(software temp) @@ -192,7 +191,7 @@ namespace ArdupilotMega.GCSViews } else { - Console.WriteLine("No Home " + temp.name + " " + temp.url); + log.Info("No Home " + temp.name + " " + temp.url); } } @@ -354,7 +353,7 @@ namespace ArdupilotMega.GCSViews - Console.WriteLine("Detected a " + board); + log.Info("Detected a " + board); string baseurl = ""; if (board == "2560") @@ -375,7 +374,7 @@ namespace ArdupilotMega.GCSViews return; } - Console.WriteLine("Using " + baseurl); + log.Info("Using " + baseurl); // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create(baseurl); @@ -387,7 +386,7 @@ namespace ArdupilotMega.GCSViews // Get the response. WebResponse response = request.GetResponse(); // Display the status. - Console.WriteLine(((HttpWebResponse)response).StatusDescription); + log.Info(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); @@ -425,7 +424,7 @@ namespace ArdupilotMega.GCSViews progress.Value = 100; this.Refresh(); - Console.WriteLine("Downloaded"); + log.Info("Downloaded"); } catch (Exception ex) { lbl_status.Text = "Failed download"; MessageBox.Show("Failed to download new firmware : " + ex.ToString()); return; } @@ -443,9 +442,18 @@ namespace ArdupilotMega.GCSViews sr = new StreamReader(filename); FLASH = readIntelHEXv2(sr); sr.Close(); - Console.WriteLine("\n\nSize: {0}\n\n", FLASH.Length); + log.InfoFormat("\n\nSize: {0}\n\n", FLASH.Length); + } + catch (Exception ex) + { + if (sr != null) + { + sr.Dispose(); + } + lbl_status.Text = "Failed read HEX"; + MessageBox.Show("Failed to read firmware.hex : " + ex.Message); + return; } - catch (Exception ex) { if (sr != null) { sr.Dispose(); } lbl_status.Text = "Failed read HEX"; MessageBox.Show("Failed to read firmware.hex : " + ex.Message); return; } ArduinoComms port = new ArduinoSTK(); if (board == "1280") @@ -460,8 +468,10 @@ namespace ArdupilotMega.GCSViews } else if (board == "2560" || board == "2560-2") { - port = new ArduinoSTKv2(); - port.BaudRate = 115200; + port = new ArduinoSTKv2 + { + BaudRate = 115200 + }; } port.DataBits = 8; port.StopBits = StopBits.One; @@ -478,7 +488,7 @@ namespace ArdupilotMega.GCSViews if (port.connectAP()) { - Console.WriteLine("starting"); + log.Info("starting"); lbl_status.Text = "Uploading " + FLASH.Length + " bytes to APM"; progress.Value = 0; this.Refresh(); @@ -486,7 +496,7 @@ namespace ArdupilotMega.GCSViews // this is enough to make ap_var reset //port.upload(new byte[256], 0, 2, 0); - port.Progress += new ProgressEventHandler(port_Progress); + port.Progress += port_Progress; if (!port.uploadflash(FLASH, 0, FLASH.Length, 0)) { @@ -500,7 +510,7 @@ namespace ArdupilotMega.GCSViews progress.Value = 100; - Console.WriteLine("Uploaded"); + log.Info("Uploaded"); this.Refresh(); @@ -518,7 +528,7 @@ namespace ArdupilotMega.GCSViews progress.Value = (int)((start / (float)FLASH.Length) * 100); progress.Refresh(); port.setaddress(start); - Console.WriteLine("Downloading " + length + " at " + start); + log.Info("Downloading " + length + " at " + start); port.downloadflash(length).CopyTo(flashverify, start); start += length; } @@ -575,14 +585,19 @@ namespace ArdupilotMega.GCSViews progress.Value = 100; lbl_status.Text = "Done"; } - catch (Exception ex) { lbl_status.Text = "Failed upload"; MessageBox.Show("Check port settings or Port in use? " + ex.ToString()); port.Close(); } + catch (Exception ex) + { + lbl_status.Text = "Failed upload"; + MessageBox.Show("Check port settings or Port in use? " + ex); + port.Close(); + } flashing = false; MainV2.givecomport = false; } void port_Progress(int progress,string status) { - Console.WriteLine("Progress {0} ", progress); + log.InfoFormat("Progress {0} ", progress); this.progress.Value = progress; this.progress.Refresh(); } @@ -607,7 +622,7 @@ namespace ArdupilotMega.GCSViews int length = Convert.ToInt32(line.Substring(1, 2), 16); int address = Convert.ToInt32(line.Substring(3, 4), 16); int option = Convert.ToInt32(line.Substring(7, 2), 16); - Console.WriteLine("len {0} add {1} opt {2}", length, address, option); + log.InfoFormat("len {0} add {1} opt {2}", length, address, option); if (option == 0) { diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs index b125db82f4..839114ccca 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.Designer.cs @@ -55,7 +55,7 @@ this.zg1 = new ZedGraph.ZedGraphControl(); this.lbl_winddir = new ArdupilotMega.MyLabel(); this.lbl_windvel = new ArdupilotMega.MyLabel(); - this.gMapControl1 = new myGMAP(); + this.gMapControl1 = new ArdupilotMega.myGMAP(); this.panel1 = new System.Windows.Forms.Panel(); this.TXT_lat = new ArdupilotMega.MyLabel(); this.Zoomlevel = new System.Windows.Forms.NumericUpDown(); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs index 00b2a2387e..a2498585e3 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs @@ -75,12 +75,14 @@ namespace ArdupilotMega.GCSViews public static GMapControl mymap = null; - PointLatLngAlt GuidedModeWP = new PointLatLngAlt(); + public static PointLatLngAlt GuidedModeWP = new PointLatLngAlt(); AviWriter aviwriter; public SplitContainer MainHcopy = null; + public static FlightData instance; + protected override void Dispose(bool disposing) { threadrun = 0; @@ -94,6 +96,8 @@ namespace ArdupilotMega.GCSViews { InitializeComponent(); + instance = this; + mymap = gMapControl1; myhud = hud1; MainHcopy = MainH; @@ -1013,11 +1017,27 @@ namespace ArdupilotMega.GCSViews if (MainV2.comPort.logreadmode) { MainV2.comPort.logreadmode = false; + ZedGraphTimer.Stop(); } else { BUT_clear_track_Click(sender, e); MainV2.comPort.logreadmode = true; + list1.Clear(); + list2.Clear(); + list3.Clear(); + list4.Clear(); + list5.Clear(); + list6.Clear(); + list7.Clear(); + list8.Clear(); + list9.Clear(); + list10.Clear(); + tickStart = Environment.TickCount; + + zg1.GraphPane.XAxis.Scale.Min = 0; + zg1.GraphPane.XAxis.Scale.Max = 1; + ZedGraphTimer.Start(); } } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx index c5638dfb2d..896d5a711c 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.resx @@ -1391,7 +1391,7 @@ gMapControl1
- GMap.NET.WindowsForms.GMapControl, GMap.NET.WindowsForms, Version=1.5.5.5, Culture=neutral, PublicKeyToken=b85b9027b614afef + ArdupilotMega.myGMAP, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38326cb7e06851fc splitContainer1.Panel2 diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs index ff41e9046f..d6d4d55d5a 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs @@ -18,6 +18,7 @@ using System.Resources; using System.Reflection; using System.ComponentModel; using System.Threading; +using log4net; using SharpKml.Base; using SharpKml.Dom; @@ -27,6 +28,7 @@ namespace ArdupilotMega.GCSViews { partial class FlightPlanner : MyUserControl { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); int selectedrow = 0; bool quickadd = false; bool isonline = true; @@ -598,7 +600,7 @@ namespace ArdupilotMega.GCSViews void Commands_DataError(object sender, DataGridViewDataErrorEventArgs e) { - Console.WriteLine(e.Exception.ToString() + " " + e.Context + " col " + e.ColumnIndex); + log.Info(e.Exception.ToString() + " " + e.Context + " col " + e.ColumnIndex); e.Cancel = false; e.ThrowException = false; //throw new NotImplementedException(); @@ -700,7 +702,7 @@ namespace ArdupilotMega.GCSViews { try { - Console.WriteLine(Element.ToString() + " " + Element.Parent); + log.Info(Element.ToString() + " " + Element.Parent); } catch { } @@ -924,7 +926,7 @@ namespace ArdupilotMega.GCSViews drawnpolygons.Markers.Add(m); drawnpolygons.Markers.Add(mBorders); } - catch (Exception ex) { Console.WriteLine(ex.ToString()); } + catch (Exception ex) { log.Info(ex.ToString()); } } /// @@ -1052,7 +1054,7 @@ namespace ArdupilotMega.GCSViews System.Diagnostics.Debug.WriteLine(temp - System.Diagnostics.Stopwatch.GetTimestamp()); } } - catch (Exception e) { Console.WriteLine("writekml - bad wp data " + e.ToString()); } + catch (Exception e) { log.Info("writekml - bad wp data " + e.ToString()); } } if (usable > 0) @@ -1128,7 +1130,7 @@ namespace ArdupilotMega.GCSViews } catch (Exception ex) { - Console.WriteLine(ex.ToString()); + log.Info(ex.ToString()); } System.Diagnostics.Debug.WriteLine(DateTime.Now); @@ -1213,18 +1215,18 @@ namespace ArdupilotMega.GCSViews param = port.param; - Console.WriteLine("Getting WP #"); + log.Info("Getting WP #"); int cmdcount = port.getWPCount(); for (ushort a = 0; a < cmdcount; a++) { - Console.WriteLine("Getting WP" + a); + log.Info("Getting WP" + a); cmds.Add(port.getWP(a)); } port.setWPACK(); - Console.WriteLine("Done"); + log.Info("Done"); } catch (Exception ex) { error = 1; MessageBox.Show("Error : " + ex.ToString()); } try @@ -1237,7 +1239,7 @@ namespace ArdupilotMega.GCSViews { processToScreen(cmds); } - catch (Exception exx) { Console.WriteLine(exx.ToString()); } + catch (Exception exx) { log.Info(exx.ToString()); } } MainV2.givecomport = false; @@ -1248,7 +1250,7 @@ namespace ArdupilotMega.GCSViews }); } - catch (Exception exx) { Console.WriteLine(exx.ToString()); } + catch (Exception exx) { log.Info(exx.ToString()); } }); t12.IsBackground = true; t12.Name = "Read wps"; @@ -2523,7 +2525,7 @@ namespace ArdupilotMega.GCSViews double x = bottomleft.Lat - Math.Abs(fulllatdiff); double y = bottomleft.Lng - Math.Abs(fulllngdiff); - Console.WriteLine("{0} < {1} {2} < {3}", x, (topright.Lat), y, (topright.Lng)); + log.InfoFormat("{0} < {1} {2} < {3}", x, (topright.Lat), y, (topright.Lng)); while (x < (topright.Lat + Math.Abs(fulllatdiff)) && y < (topright.Lng + Math.Abs(fulllngdiff))) { diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Help.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Help.cs index fa712b5f5c..35b05584ef 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Help.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Help.cs @@ -24,7 +24,7 @@ namespace ArdupilotMega.GCSViews public void BUT_updatecheck_Click(object sender, EventArgs e) { - MainV2.doupdate(); + MainV2.DoUpdate(); } private void CHK_showconsole_CheckedChanged(object sender, EventArgs e) diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs index b805771ee8..988580f1b9 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs @@ -9,6 +9,7 @@ using System.IO.Ports; using System.IO; using System.Xml; // config file using System.Runtime.InteropServices; // dll imports +using log4net; using ZedGraph; // Graphs using ArdupilotMega; using ArdupilotMega.Mavlink; @@ -21,6 +22,7 @@ namespace ArdupilotMega.GCSViews { public partial class Simulation : MyUserControl { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); MAVLink comPort = MainV2.comPort; UdpClient XplanesSEND; UdpClient MavLink; @@ -570,7 +572,6 @@ namespace ArdupilotMega.GCSViews // re-request servo data if (!(lastdata.AddSeconds(8) > DateTime.Now)) { - Console.WriteLine("REQ streams - sim"); try { if (CHK_quad.Checked && !RAD_aerosimrc.Checked)// || chkSensor.Checked && RAD_JSBSim.Checked) @@ -610,12 +611,6 @@ namespace ArdupilotMega.GCSViews { Byte[] receiveBytes = MavLink.Receive(ref RemoteIpEndPoint); - Console.WriteLine("sending " + receiveBytes[5]); - - if (receiveBytes[5] == 39) - { - Console.WriteLine("wp no " + receiveBytes[9]); // ?? - } comPort.BaseStream.Write(receiveBytes, 0, receiveBytes.Length); } @@ -633,7 +628,7 @@ namespace ArdupilotMega.GCSViews processArduPilot(); } } - catch (Exception ex) { Console.WriteLine("SIM Main loop exception " + ex.ToString()); } + catch (Exception ex) { log.Info("SIM Main loop exception " + ex.ToString()); } if (hzcounttime.Second != DateTime.Now.Second) { @@ -689,7 +684,7 @@ namespace ArdupilotMega.GCSViews JSBSimSEND.Client.Send(System.Text.Encoding.ASCII.GetBytes("resume\r\n")); } - catch { Console.WriteLine("JSB console fail"); } + catch { log.Info("JSB console fail"); } } private void SetupUDPXplanes() @@ -1348,7 +1343,7 @@ namespace ArdupilotMega.GCSViews quad.update(ref m, lastfdmdata); } - catch (Exception e) { Console.WriteLine("Quad hill error " + e.ToString()); } + catch (Exception e) { log.Info("Quad hill error " + e.ToString()); } byte[] FlightGear = new byte[8 * 11];// StructureToByteArray(fg); @@ -1385,7 +1380,7 @@ namespace ArdupilotMega.GCSViews { XplanesSEND.Send(FlightGear, FlightGear.Length); } - catch (Exception) { Console.WriteLine("Socket Write failed, FG closed?"); } + catch (Exception) { log.Info("Socket Write failed, FG closed?"); } updateScreenDisplay(lastfdmdata.latitude, lastfdmdata.longitude, lastfdmdata.altitude * .3048, lastfdmdata.phi, lastfdmdata.theta, lastfdmdata.psi, lastfdmdata.psi, m[0], m[1], m[2], m[3]); @@ -1491,7 +1486,7 @@ namespace ArdupilotMega.GCSViews } } } - catch (Exception e) { Console.WriteLine("Error updateing screen stuff " + e.ToString()); } + catch (Exception e) { log.Info("Error updateing screen stuff " + e.ToString()); } packetssent++; @@ -1580,7 +1575,7 @@ namespace ArdupilotMega.GCSViews { XplanesSEND.Send(FlightGear, FlightGear.Length); } - catch (Exception) { Console.WriteLine("Socket Write failed, FG closed?"); } + catch (Exception) { log.Info("Socket Write failed, FG closed?"); } } @@ -1661,7 +1656,7 @@ namespace ArdupilotMega.GCSViews XplanesSEND.Send(Xplane, Xplane.Length); } - catch (Exception e) { Console.WriteLine("Xplanes udp send error " + e.Message); } + catch (Exception e) { log.Info("Xplanes udp send error " + e.Message); } } } diff --git a/Tools/ArdupilotMegaPlanner/HIL/QuadCopter.cs b/Tools/ArdupilotMegaPlanner/HIL/QuadCopter.cs index 7b998af76d..16414cbbb5 100644 --- a/Tools/ArdupilotMegaPlanner/HIL/QuadCopter.cs +++ b/Tools/ArdupilotMegaPlanner/HIL/QuadCopter.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; +using log4net; using YLScsDrawing.Drawing3d; using ArdupilotMega.HIL; @@ -101,6 +103,7 @@ namespace ArdupilotMega.HIL public class QuadCopter : Aircraft { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); QuadCopter self; int framecount = 0; diff --git a/Tools/ArdupilotMegaPlanner/HUD.cs b/Tools/ArdupilotMegaPlanner/HUD.cs index 299db6ed42..df2536e459 100644 --- a/Tools/ArdupilotMegaPlanner/HUD.cs +++ b/Tools/ArdupilotMegaPlanner/HUD.cs @@ -11,7 +11,7 @@ using System.Drawing.Imaging; using System.Threading; using System.Drawing.Drawing2D; - +using log4net; using OpenTK; using OpenTK.Graphics.OpenGL; using OpenTK.Graphics; @@ -24,6 +24,8 @@ namespace hud { public class HUD : GLControl { + private static readonly ILog log = LogManager.GetLogger( + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); object paintlock = new object(); object streamlock = new object(); MemoryStream _streamjpg = new MemoryStream(); @@ -189,10 +191,10 @@ namespace hud { GraphicsMode test = this.GraphicsMode; - Console.WriteLine(test.ToString()); - Console.WriteLine("Vendor: " + GL.GetString(StringName.Vendor)); - Console.WriteLine("Version: " + GL.GetString(StringName.Version)); - Console.WriteLine("Device: " + GL.GetString(StringName.Renderer)); + log.Info(test.ToString()); + log.Info("Vendor: " + GL.GetString(StringName.Vendor)); + log.Info("Version: " + GL.GetString(StringName.Version)); + log.Info("Device: " + GL.GetString(StringName.Renderer)); //Console.WriteLine("Extensions: " + GL.GetString(StringName.Extensions)); int[] viewPort = new int[4]; @@ -212,7 +214,7 @@ namespace hud GL.Enable(EnableCap.Blend); } - catch (Exception ex) { Console.WriteLine("HUD opengl onload " + ex.ToString()); } + catch (Exception ex) { log.Info("HUD opengl onload " + ex.ToString()); } try { @@ -266,7 +268,7 @@ namespace hud if (inOnPaint) { - Console.WriteLine("Was in onpaint Hud th:" + System.Threading.Thread.CurrentThread.Name + " in " + otherthread); + log.Info("Was in onpaint Hud th:" + System.Threading.Thread.CurrentThread.Name + " in " + otherthread); return; } @@ -295,7 +297,7 @@ namespace hud } } - catch (Exception ex) { Console.WriteLine(ex.ToString()); } + catch (Exception ex) { log.Info(ex.ToString()); } inOnPaint = false; @@ -1323,7 +1325,7 @@ namespace hud } catch (Exception ex) { - Console.WriteLine("hud error "+ex.ToString()); + log.Info("hud error "+ex.ToString()); } } @@ -1531,7 +1533,7 @@ namespace hud base.OnHandleCreated(e); } } - catch (Exception ex) { Console.WriteLine(ex.ToString()); opengl = false; } // macs fail here + catch (Exception ex) { log.Info(ex.ToString()); opengl = false; } // macs fail here } protected override void OnHandleDestroyed(EventArgs e) @@ -1543,7 +1545,7 @@ namespace hud base.OnHandleDestroyed(e); } } - catch (Exception ex) { Console.WriteLine(ex.ToString()); opengl = false; } + catch (Exception ex) { log.Info(ex.ToString()); opengl = false; } } protected override void OnResize(EventArgs e) diff --git a/Tools/ArdupilotMegaPlanner/Joystick.cs b/Tools/ArdupilotMegaPlanner/Joystick.cs index 189de315f4..40ea6ce81d 100644 --- a/Tools/ArdupilotMegaPlanner/Joystick.cs +++ b/Tools/ArdupilotMegaPlanner/Joystick.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; +using log4net; using Microsoft.DirectX.DirectInput; using System.Reflection; @@ -10,6 +11,7 @@ namespace ArdupilotMega { public class Joystick { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); Device joystick; JoystickState state; public bool enabled = false; @@ -148,12 +150,12 @@ namespace ArdupilotMega { //Console.WriteLine("Name: " + property.Name + ", Value: " + property.GetValue(obj, null)); - Console.WriteLine("test name {0} old {1} new {2} ", property.Name, values[property.Name], int.Parse(property.GetValue(nextstate, null).ToString())); - Console.WriteLine("{0} {1}", (int)values[property.Name], (int.Parse(property.GetValue(nextstate, null).ToString()) + threshold)); + log.InfoFormat("test name {0} old {1} new {2} ", property.Name, values[property.Name], int.Parse(property.GetValue(nextstate, null).ToString())); + log.InfoFormat("{0} {1}", (int)values[property.Name], (int.Parse(property.GetValue(nextstate, null).ToString()) + threshold)); if ((int)values[property.Name] > (int.Parse(property.GetValue(nextstate, null).ToString()) + threshold) || (int)values[property.Name] < (int.Parse(property.GetValue(nextstate, null).ToString()) - threshold)) { - Console.WriteLine("{0}", property.Name); + log.Info(property.Name); joystick.Unacquire(); return (joystickaxis)Enum.Parse(typeof(joystickaxis), property.Name); } @@ -337,7 +339,7 @@ namespace ArdupilotMega //Console.WriteLine("{0} {1} {2} {3}", MainV2.cs.rcoverridech1, MainV2.cs.rcoverridech2, MainV2.cs.rcoverridech3, MainV2.cs.rcoverridech4); } - catch (Exception ex) { Console.WriteLine("Joystick thread error "+ex.ToString()); } // so we cant fall out + catch (Exception ex) { log.Info("Joystick thread error "+ex.ToString()); } // so we cant fall out } } @@ -484,7 +486,7 @@ namespace ArdupilotMega state = joystick.CurrentJoystickState; ushort ans = pickchannel(channel, JoyChannels[channel].axis, JoyChannels[channel].reverse, JoyChannels[channel].expo); - Console.WriteLine("{0} = {1} = {2}",channel,ans, state.X); + log.DebugFormat("{0} = {1} = {2}",channel,ans, state.X); return ans; } diff --git a/Tools/ArdupilotMegaPlanner/LangUtility.cs b/Tools/ArdupilotMegaPlanner/LangUtility.cs new file mode 100644 index 0000000000..9fa34a9f7f --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/LangUtility.cs @@ -0,0 +1,64 @@ +//this file contains some simple extension methods + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Globalization; +using System.ComponentModel; +using System.Windows.Forms; + +namespace ArdupilotMega +{ + static class CultureInfoEx + { + public static CultureInfo GetCultureInfo(string name) + { + try { return new CultureInfo(name); } + catch (Exception) { return null; } + } + + public static bool IsChildOf(this CultureInfo cX, CultureInfo cY) + { + + if (cX == null || cY == null) + return false; + + CultureInfo c = cX; + while (!c.Equals(CultureInfo.InvariantCulture)) + { + if (c.Equals(cY)) + return true; + c = c.Parent; + } + return false; + } + } + + static class ComponentResourceManagerEx + { + public static void ApplyResource(this ComponentResourceManager rm, Control ctrl) + { + rm.ApplyResources(ctrl, ctrl.Name); + foreach (Control subctrl in ctrl.Controls) + ApplyResource(rm, subctrl); + + if (ctrl.ContextMenu != null) + ApplyResource(rm, ctrl.ContextMenu); + + + if (ctrl is DataGridView) + { + foreach (DataGridViewColumn col in (ctrl as DataGridView).Columns) + rm.ApplyResources(col, col.Name); + } + } + + public static void ApplyResource(this ComponentResourceManager rm, Menu menu) + { + rm.ApplyResources(menu, menu.Name); + foreach (MenuItem submenu in menu.MenuItems) + ApplyResource(rm, submenu); + } + } +} diff --git a/Tools/ArdupilotMegaPlanner/Log.cs b/Tools/ArdupilotMegaPlanner/Log.cs index 6d75642413..17f5c72f74 100644 --- a/Tools/ArdupilotMegaPlanner/Log.cs +++ b/Tools/ArdupilotMegaPlanner/Log.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; +using System.Reflection; using System.Text; using System.Windows.Forms; using System.IO.Ports; @@ -15,16 +16,17 @@ using Core.Geometry; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZipLib.Core; +using log4net; namespace ArdupilotMega { public partial class Log : Form { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); ICommsSerial comPort; int logcount = 0; serialstatus status = serialstatus.Connecting; - byte[] buffer = new byte[4000]; StreamWriter sw; int currentlog = 0; bool threadrun = true; @@ -72,14 +74,15 @@ namespace ArdupilotMega comPort.toggleDTR(); //comPort.Open(); } - catch (Exception) + catch (Exception ex) { + log.Error("Error opening comport", ex); MessageBox.Show("Error opening comport"); } - System.Threading.Thread t11 = new System.Threading.Thread(delegate() + var t11 = new System.Threading.Thread(delegate() { - DateTime start = DateTime.Now; + var start = DateTime.Now; threadrun = true; @@ -89,7 +92,9 @@ namespace ArdupilotMega { comPort.Write("\n\n\n\n"); // more in "connecting" } - catch { } + catch + { + } while (threadrun) { @@ -105,11 +110,13 @@ namespace ArdupilotMega comPort_DataReceived((object)null, (SerialDataReceivedEventArgs)null); } } - catch (Exception ex) { Console.WriteLine("crash in comport reader " + ex.ToString()); } // cant exit unless told to + catch (Exception ex) + { + log.Error("crash in comport reader " + ex); + } // cant exit unless told to } - Console.WriteLine("Comport thread close"); - }); - t11.Name = "comport reader"; + log.Info("Comport thread close"); + }) {Name = "comport reader"}; t11.Start(); MainV2.threads.Add(t11); @@ -303,7 +310,7 @@ namespace ArdupilotMega } } - Console.WriteLine("exit while"); + log.Info("exit while"); } catch (Exception ex) { MessageBox.Show("Error reading data" + ex.ToString()); } } @@ -532,7 +539,7 @@ namespace ArdupilotMega Style style2 = new Style(); Color color = Color.FromArgb(0xff, (stylecode >> 16) & 0xff, (stylecode >> 8) & 0xff, (stylecode >> 0) & 0xff); - Console.WriteLine("colour " + color.ToArgb().ToString("X") + " " + color.ToKnownColor().ToString()); + log.Info("colour " + color.ToArgb().ToString("X") + " " + color.ToKnownColor().ToString()); style2.Add(new LineStyle(color, 4)); diff --git a/Tools/ArdupilotMegaPlanner/LogBrowse.cs b/Tools/ArdupilotMegaPlanner/LogBrowse.cs index ebab445894..df1f7e349c 100644 --- a/Tools/ArdupilotMegaPlanner/LogBrowse.cs +++ b/Tools/ArdupilotMegaPlanner/LogBrowse.cs @@ -3,9 +3,11 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; +using System.Reflection; using System.Text; using System.Windows.Forms; using System.IO; +using log4net; using ZedGraph; // Graphs using System.Xml; @@ -13,6 +15,7 @@ namespace ArdupilotMega { public partial class LogBrowse : Form { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); int m_iColumnCount = 0; DataTable m_dtCSV = new DataTable(); @@ -180,7 +183,7 @@ namespace ArdupilotMega if (inner.Name.StartsWith("F")) { dataGridView1.Columns[a].HeaderText = inner.ReadString(); - Console.WriteLine(a + " " + dataGridView1.Columns[a].HeaderText); + log.Info(a + " " + dataGridView1.Columns[a].HeaderText); a++; } @@ -194,7 +197,7 @@ namespace ArdupilotMega } } - catch { Console.WriteLine("DGV logbrowse error"); } + catch { log.Info("DGV logbrowse error"); } } public void CreateChart(ZedGraphControl zgc) @@ -308,7 +311,7 @@ namespace ArdupilotMega break; } } - catch { error++; Console.WriteLine("Bad Data : " + type + " " + col + " " + a); if (error >= 500) { MessageBox.Show("There is to much bad data - failing"); break; } } + catch { error++; log.Info("Bad Data : " + type + " " + col + " " + a); if (error >= 500) { MessageBox.Show("There is to much bad data - failing"); break; } } } a++; } diff --git a/Tools/ArdupilotMegaPlanner/MAVLink.cs b/Tools/ArdupilotMegaPlanner/MAVLink.cs index bb707e072c..0256f119ea 100644 --- a/Tools/ArdupilotMegaPlanner/MAVLink.cs +++ b/Tools/ArdupilotMegaPlanner/MAVLink.cs @@ -13,11 +13,13 @@ using System.Threading; using ArdupilotMega.Controls; using ArdupilotMega.Mavlink; using System.ComponentModel; +using log4net; namespace ArdupilotMega { public partial class MAVLink { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public ICommsSerial BaseStream = new SerialPort(); private const double CONNECT_TIMEOUT_SECONDS = 30; @@ -220,7 +222,7 @@ namespace ArdupilotMega // incase we are in setup mode BaseStream.WriteLine("planner\rgcs\r"); - Console.WriteLine(DateTime.Now.Millisecond + " start "); + log.Info(DateTime.Now.Millisecond + " start "); if (lastbad[0] == '!' && lastbad[1] == 'G' || lastbad[0] == 'G' && lastbad[1] == '!') // waiting for gps lock { @@ -255,7 +257,7 @@ namespace ArdupilotMega try { - Console.WriteLine("MAv Data: len " + buffer.Length + " btr " + BaseStream.BytesToRead); + log.Info("MAv Data: len " + buffer.Length + " btr " + BaseStream.BytesToRead); } catch { } @@ -271,7 +273,7 @@ namespace ArdupilotMega sysid = buffer[3]; compid = buffer[4]; recvpacketcount = buffer[2]; - Console.WriteLine("ID sys {0} comp {1} ver{2}", sysid, compid, mavlinkversion); + log.InfoFormat("ID sys {0} comp {1} ver{2}", sysid, compid, mavlinkversion); break; } @@ -311,7 +313,7 @@ namespace ArdupilotMega //frmProgressReporter.Close(); MainV2.givecomport = false; frmProgressReporter.UpdateProgressAndStatus(100, "Done."); - Console.WriteLine("Done open " + sysid + " " + compid); + log.Info("Done open " + sysid + " " + compid); packetslost = 0; } @@ -349,7 +351,7 @@ namespace ArdupilotMega } if (!run) { - Console.WriteLine("Mavlink : NOT VALID PACKET sendPacket() " + indata.GetType().ToString()); + log.Info("Mavlink : NOT VALID PACKET sendPacket() " + indata.GetType().ToString()); } } @@ -484,7 +486,7 @@ namespace ArdupilotMega { if (!param.ContainsKey(paramname)) { - Console.WriteLine("Param doesnt exist " + paramname); + log.Info("Param doesnt exist " + paramname); return false; } @@ -507,7 +509,7 @@ namespace ArdupilotMega generatePacket(MAVLINK_MSG_ID_PARAM_SET, req); - Console.WriteLine("setParam '{0}' = '{1}' sysid {2} compid {3}", paramname, req.param_value, sysid, compid); + log.InfoFormat("setParam '{0}' = '{1}' sysid {2} compid {3}", paramname, req.param_value, sysid, compid); DateTime start = DateTime.Now; int retrys = 3; @@ -518,7 +520,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("setParam Retry " + retrys); + log.Info("setParam Retry " + retrys); generatePacket(MAVLINK_MSG_ID_PARAM_SET, req); start = DateTime.Now; retrys--; @@ -546,7 +548,7 @@ namespace ArdupilotMega if (st != paramname) { - Console.WriteLine("MAVLINK bad param responce - {0} vs {1}", paramname, st); + log.InfoFormat("MAVLINK bad param responce - {0} vs {1}", paramname, st); continue; } @@ -635,7 +637,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("getParamList Retry {0} sys {1} comp {2}", retrys, sysid, compid); + log.InfoFormat("getParamList Retry {0} sys {1} comp {2}", retrys, sysid, compid); generatePacket(MAVLINK_MSG_ID_PARAM_REQUEST_LIST, req); start = DateTime.Now; retrys--; @@ -676,7 +678,7 @@ namespace ArdupilotMega continue; } - Console.WriteLine(DateTime.Now.Millisecond + " got param " + (par.param_index) + " of " + (param_total - 1) + " name: " + paramID); + log.Info(DateTime.Now.Millisecond + " got param " + (par.param_index) + " of " + (param_total - 1) + " name: " + paramID); modifyParamForDisplay(true, paramID, ref par.param_value); param[paramID] = (par.param_value); @@ -753,7 +755,7 @@ namespace ArdupilotMega generatePacket(MAVLINK_MSG_ID_REQUEST_DATA_STREAM, req); System.Threading.Thread.Sleep(20); generatePacket(MAVLINK_MSG_ID_REQUEST_DATA_STREAM, req); - Console.WriteLine("Stopall Done"); + log.Info("Stopall Done"); } catch { } @@ -801,7 +803,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("setWPCurrent Retry " + retrys); + log.Info("setWPCurrent Retry " + retrys); generatePacket(MAVLINK_MSG_ID_MISSION_SET_CURRENT, req); start = DateTime.Now; retrys--; @@ -864,7 +866,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("doAction Retry " + retrys); + log.Info("doAction Retry " + retrys); generatePacket(MAVLINK_MSG_ID_COMMAND_LONG, req); start = DateTime.Now; retrys--; @@ -918,7 +920,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("setWPCurrent Retry " + retrys); + log.Info("setWPCurrent Retry " + retrys); generatePacket(MAVLINK_MSG_ID_WAYPOINT_SET_CURRENT, req); start = DateTime.Now; retrys--; @@ -976,7 +978,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("doAction Retry " + retrys); + log.Info("doAction Retry " + retrys); generatePacket(MAVLINK_MSG_ID_ACTION, req); start = DateTime.Now; retrys--; @@ -1092,7 +1094,7 @@ namespace ArdupilotMega return; } - Console.WriteLine("Request stream {0} at {1} hz : currently {2}", Enum.Parse(typeof(MAV_DATA_STREAM), id.ToString()), hzrate, pps); + log.InfoFormat("Request stream {0} at {1} hz : currently {2}", Enum.Parse(typeof(MAV_DATA_STREAM), id.ToString()), hzrate, pps); getDatastream(id, hzrate); } @@ -1165,7 +1167,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("getWPCount Retry " + retrys + " - giv com " + MainV2.givecomport); + log.Info("getWPCount Retry " + retrys + " - giv com " + MainV2.givecomport); generatePacket(MAVLINK_MSG_ID_MISSION_REQUEST_LIST, req); start = DateTime.Now; retrys--; @@ -1187,13 +1189,13 @@ namespace ArdupilotMega var count = buffer.ByteArrayToStructure<__mavlink_mission_count_t>(6); - Console.WriteLine("wpcount: " + count.count); + log.Info("wpcount: " + count.count); MainV2.givecomport = false; return (byte)count.count; // should be ushort, but apm has limited wp count < byte } else { - Console.WriteLine(DateTime.Now + " PC wpcount " + buffer[5] + " need " + MAVLINK_MSG_ID_MISSION_COUNT + " " + this.BaseStream.BytesToRead); + log.Info(DateTime.Now + " PC wpcount " + buffer[5] + " need " + MAVLINK_MSG_ID_MISSION_COUNT + " " + this.BaseStream.BytesToRead); } } } @@ -1216,7 +1218,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("getWPCount Retry " + retrys + " - giv com " + MainV2.givecomport); + log.Info("getWPCount Retry " + retrys + " - giv com " + MainV2.givecomport); generatePacket(MAVLINK_MSG_ID_WAYPOINT_REQUEST_LIST, req); start = DateTime.Now; retrys--; @@ -1233,13 +1235,13 @@ namespace ArdupilotMega if (buffer[5] == MAVLINK_MSG_ID_WAYPOINT_COUNT) { - Console.WriteLine("wpcount: " + buffer[9]); + log.Info("wpcount: " + buffer[9]); MainV2.givecomport = false; return buffer[9]; // should be ushort, but apm has limited wp count < byte } else { - Console.WriteLine(DateTime.Now + " PC wpcount " + buffer[5] + " need " + MAVLINK_MSG_ID_WAYPOINT_COUNT + " " + this.BaseStream.BytesToRead); + log.Info(DateTime.Now + " PC wpcount " + buffer[5] + " need " + MAVLINK_MSG_ID_WAYPOINT_COUNT + " " + this.BaseStream.BytesToRead); } } } @@ -1277,7 +1279,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("getWP Retry " + retrys); + log.Info("getWP Retry " + retrys); generatePacket(MAVLINK_MSG_ID_MISSION_REQUEST, req); start = DateTime.Now; retrys--; @@ -1324,7 +1326,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("getWP Retry " + retrys); + log.Info("getWP Retry " + retrys); generatePacket(MAVLINK_MSG_ID_WAYPOINT_REQUEST, req); start = DateTime.Now; retrys--; @@ -1419,13 +1421,13 @@ namespace ArdupilotMega } } */ - Console.WriteLine("getWP {0} {1} {2} {3} {4} opt {5}", loc.id, loc.p1, loc.alt, loc.lat, loc.lng, loc.options); + log.InfoFormat("getWP {0} {1} {2} {3} {4} opt {5}", loc.id, loc.p1, loc.alt, loc.lat, loc.lng, loc.options); break; } else { - Console.WriteLine(DateTime.Now + " PC getwp " + buffer[5]); + log.Info(DateTime.Now + " PC getwp " + buffer[5]); } } } @@ -1529,7 +1531,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("setWPTotal Retry " + retrys); + log.Info("setWPTotal Retry " + retrys); generatePacket(MAVLINK_MSG_ID_MISSION_COUNT, req); start = DateTime.Now; retrys--; @@ -1584,7 +1586,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("setWPTotal Retry " + retrys); + log.Info("setWPTotal Retry " + retrys); generatePacket(MAVLINK_MSG_ID_WAYPOINT_COUNT, req); start = DateTime.Now; retrys--; @@ -1707,7 +1709,7 @@ namespace ArdupilotMega */ req.seq = index; - Console.WriteLine("setWP {6} frame {0} cmd {1} p1 {2} x {3} y {4} z {5}", req.frame, req.command, req.param1, req.x, req.y, req.z, index); + log.InfoFormat("setWP {6} frame {0} cmd {1} p1 {2} x {3} y {4} z {5}", req.frame, req.command, req.param1, req.x, req.y, req.z, index); // request #if MAVLINK10 @@ -1725,7 +1727,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("setWP Retry " + retrys); + log.Info("setWP Retry " + retrys); #if MAVLINK10 generatePacket(MAVLINK_MSG_ID_MISSION_ITEM, req); #else @@ -1749,7 +1751,7 @@ namespace ArdupilotMega var ans = buffer.ByteArrayToStructure<__mavlink_mission_ack_t>(6); - Console.WriteLine("set wp " + index + " ACK 47 : " + buffer[5] + " ans " + Enum.Parse(typeof(MAV_MISSION_RESULT), ans.type.ToString())); + log.Info("set wp " + index + " ACK 47 : " + buffer[5] + " ans " + Enum.Parse(typeof(MAV_MISSION_RESULT), ans.type.ToString())); break; } else if (buffer[5] == MAVLINK_MSG_ID_MISSION_REQUEST) @@ -1761,13 +1763,13 @@ namespace ArdupilotMega if (ans.seq == (index + 1)) { - Console.WriteLine("set wp doing " + index + " req " + ans.seq + " REQ 40 : " + buffer[5]); + log.Info("set wp doing " + index + " req " + ans.seq + " REQ 40 : " + buffer[5]); MainV2.givecomport = false; break; } else { - Console.WriteLine("set wp fail doing " + index + " req " + ans.seq + " ACK 47 or REQ 40 : " + buffer[5] + " seq {0} ts {1} tc {2}", req.seq, req.target_system, req.target_component); + log.Info("set wp fail doing " + index + " req " + ans.seq + " ACK 47 or REQ 40 : " + buffer[5] + " seq {0} ts {1} tc {2}", req.seq, req.target_system, req.target_component); //break; } } @@ -1778,7 +1780,7 @@ namespace ArdupilotMega #else if (buffer[5] == MAVLINK_MSG_ID_WAYPOINT_ACK) { //__mavlink_waypoint_request_t - Console.WriteLine("set wp " + index + " ACK 47 : " + buffer[5]); + log.Info("set wp " + index + " ACK 47 : " + buffer[5]); break; } else if (buffer[5] == MAVLINK_MSG_ID_WAYPOINT_REQUEST) @@ -1787,13 +1789,13 @@ namespace ArdupilotMega if (ans.seq == (index + 1)) { - Console.WriteLine("set wp doing " + index + " req " + ans.seq + " REQ 40 : " + buffer[5]); + log.Info("set wp doing " + index + " req " + ans.seq + " REQ 40 : " + buffer[5]); MainV2.givecomport = false; break; } else { - Console.WriteLine("set wp fail doing " + index + " req " + ans.seq + " ACK 47 or REQ 40 : " + buffer[5] + " seq {0} ts {1} tc {2}", req.seq, req.target_system, req.target_component); + log.InfoFormat("set wp fail doing " + index + " req " + ans.seq + " ACK 47 or REQ 40 : " + buffer[5] + " seq {0} ts {1} tc {2}", req.seq, req.target_system, req.target_component); //break; } } @@ -1914,7 +1916,7 @@ namespace ArdupilotMega { if (readcount > 300) { - Console.WriteLine("MAVLink readpacket No valid mavlink packets"); + log.Info("MAVLink readpacket No valid mavlink packets"); break; } readcount++; @@ -1949,27 +1951,22 @@ namespace ArdupilotMega { MainV2.cs.datetime = DateTime.Now; - int to = 0; + DateTime to = DateTime.Now.AddMilliseconds(BaseStream.ReadTimeout); while (BaseStream.BytesToRead <= 0) { - if (to > BaseStream.ReadTimeout) + if (DateTime.Now > to) { - Console.WriteLine("MAVLINK: wait time out btr {0} len {1}", BaseStream.BytesToRead, length); + log.InfoFormat("MAVLINK: S wait time out btr {0} len {1}", BaseStream.BytesToRead, length); throw new Exception("Timeout"); } System.Threading.Thread.Sleep(1); -// if (!MainV2.instance.InvokeRequired) -// { -// System.Windows.Forms.Application.DoEvents(); // when connecting this is in the main thread -// } - to++; } if (BaseStream.IsOpen) temp[count] = (byte)BaseStream.ReadByte(); } } - catch (Exception e) { Console.WriteLine("MAVLink readpacket read error: " + e.Message); break; } + catch (Exception e) { log.Info("MAVLink readpacket read error: " + e.Message); break; } if (temp[0] != 254 && temp[0] != 'U' || lastbad[0] == 'I' && lastbad[1] == 'M' || lastbad[1] == 'G' || lastbad[1] == 'A') // out of sync "AUTO" "GUIDED" "IMU" { @@ -1996,7 +1993,7 @@ namespace ArdupilotMega { if (sysid != temp[3] || compid != temp[4]) { - Console.WriteLine("Mavlink Bad Packet (not addressed to this MAV) got {0} {1} vs {2} {3}", temp[3], temp[4], sysid, compid); + log.InfoFormat("Mavlink Bad Packet (not addressed to this MAV) got {0} {1} vs {2} {3}", temp[3], temp[4], sysid, compid); return new byte[0]; } } @@ -2009,21 +2006,15 @@ namespace ArdupilotMega } else { - int to = 0; + DateTime to = DateTime.Now.AddMilliseconds(BaseStream.ReadTimeout); + while (BaseStream.BytesToRead < (length - 4)) { - if (to > 1000) + if (DateTime.Now > to) { - Console.WriteLine("MAVLINK: wait time out btr {0} len {1}", BaseStream.BytesToRead, length); + log.InfoFormat("MAVLINK: L wait time out btr {0} len {1}", BaseStream.BytesToRead, length); break; } - System.Threading.Thread.Sleep(1); - if (!MainV2.instance.InvokeRequired) - { - System.Windows.Forms.Application.DoEvents(); // when connecting this is in the main thread - } - to++; - //Console.WriteLine("data " + 0 + " " + length + " aval " + BaseStream.BytesToRead); } if (BaseStream.IsOpen) @@ -2083,7 +2074,7 @@ namespace ArdupilotMega if (temp.Length > 5 && temp[1] != MAVLINK_MESSAGE_LENGTHS[temp[5]]) { - Console.WriteLine("Mavlink Bad Packet (Len Fail) len {0} pkno {1}", temp.Length, temp[5]); + log.InfoFormat("Mavlink Bad Packet (Len Fail) len {0} pkno {1}", temp.Length, temp[5]); #if MAVLINK10 if (temp.Length == 11 && temp[0] == 'U' && temp[5] == 0) throw new Exception("Mavlink 0.9 Heartbeat, Please upgrade your AP, This planner is for Mavlink 1.0\n\n"); @@ -2098,7 +2089,7 @@ namespace ArdupilotMega { packetno = temp[5]; } - Console.WriteLine("Mavlink Bad Packet (crc fail) len {0} crc {1} pkno {2}", temp.Length, crc, packetno); + log.InfoFormat("Mavlink Bad Packet (crc fail) len {0} crc {1} pkno {2}", temp.Length, crc, packetno); return new byte[0]; } @@ -2120,7 +2111,7 @@ namespace ArdupilotMega packetslost += temp[2] - recvpacketcount; } - Console.WriteLine("lost {0} pkts {1}", temp[2], (int)packetslost); + log.InfoFormat("lost {0} pkts {1}", temp[2], (int)packetslost); } packetsnotlost++; @@ -2155,7 +2146,7 @@ namespace ArdupilotMega int ind = logdata.IndexOf('\0'); if (ind != -1) logdata = logdata.Substring(0, ind); - Console.WriteLine(DateTime.Now + " " + logdata); + log.Info(DateTime.Now + " " + logdata); if (MainV2.talk != null && MainV2.config["speechenable"] != null && MainV2.config["speechenable"].ToString() == "True") { @@ -2250,7 +2241,7 @@ namespace ArdupilotMega { if (retrys > 0) { - Console.WriteLine("getFencePoint Retry " + retrys + " - giv com " + MainV2.givecomport); + log.Info("getFencePoint Retry " + retrys + " - giv com " + MainV2.givecomport); generatePacket(MAVLINK_MSG_ID_FENCE_FETCH_POINT, req); start = DateTime.Now; retrys--; @@ -2386,7 +2377,7 @@ namespace ArdupilotMega temp[a] = (byte)logplaybackfile.ReadByte(); if (temp[0] != 'U' && temp[0] != 254) { - Console.WriteLine("lost sync byte {0} pos {1}", temp[0], logplaybackfile.BaseStream.Position); + log.InfoFormat("lost sync byte {0} pos {1}", temp[0], logplaybackfile.BaseStream.Position); a = 0; continue; } diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index 7d23d49e9c..bbd83439a3 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Configuration; using System.Data; using System.Drawing; using System.Linq; @@ -20,11 +21,14 @@ using System.Globalization; using System.Threading; using System.Net.Sockets; using IronPython.Hosting; +using log4net; namespace ArdupilotMega { public partial class MainV2 : Form { + private static readonly ILog log = + LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); [DllImport("user32.dll")] public static extern int FindWindow(string szClass, string szTitle); [DllImport("user32.dll")] @@ -250,7 +254,7 @@ namespace ArdupilotMega string[] devs = new string[0]; - Console.WriteLine("Get Comports"); + log.Debug("Geting Comports"); if (MONO) { @@ -775,7 +779,7 @@ namespace ArdupilotMega if ((buffer[0] == 'A' || buffer[0] == 'P') && (buffer[1] == 'A' || buffer[1] == 'P')) // this is the apvar header { - Console.WriteLine("Valid eeprom contents"); + log.Info("Valid eeprom contents"); } else { @@ -961,11 +965,11 @@ namespace ArdupilotMega break; } } - catch (Exception ee) { Console.WriteLine(ee.Message); } // silent fail on bad entry + catch (Exception ee) { log.Info(ee.Message); } // silent fail on bad entry } } } - catch (Exception ex) { Console.WriteLine("Bad Config File: " + ex.ToString()); } // bad config file + catch (Exception ex) { log.Info("Bad Config File: " + ex.ToString()); } // bad config file } } @@ -1179,7 +1183,7 @@ namespace ArdupilotMega } catch (Exception e) { - Console.WriteLine("Serial Reader fail :" + e.Message); + log.Info("Serial Reader fail :" + e.Message); try { comPort.Close(); @@ -1247,7 +1251,7 @@ namespace ArdupilotMega try { listener = new TcpListener(IPAddress.Any, 56781); - System.Threading.Thread t13 = new System.Threading.Thread(new System.Threading.ThreadStart(listernforclients)) + var t13 = new Thread(listernforclients) { Name = "motion jpg stream", IsBackground = true @@ -1257,10 +1261,11 @@ namespace ArdupilotMega } catch (Exception ex) { + log.Error("Error starting TCP listener thread: ", ex); MessageBox.Show(ex.ToString()); } - System.Threading.Thread t12 = new System.Threading.Thread(new ThreadStart(joysticksend)) + var t12 = new Thread(new ThreadStart(joysticksend)) { IsBackground = true, Priority = ThreadPriority.AboveNormal, @@ -1268,18 +1273,28 @@ namespace ArdupilotMega }; t12.Start(); - System.Threading.Thread t11 = new System.Threading.Thread(new ThreadStart(SerialReader)) + var t11 = new Thread(SerialReader) { IsBackground = true, Name = "Main Serial reader" }; t11.Start(); + if (Debugger.IsAttached) + { + log.Info("Skipping update test as it appears we are debugging"); + } + else + { try { - checkForUpdate(); + CheckForUpdate(); + } + catch (Exception ex) + { + log.Error("Update check failed", ex); + } } - catch { Console.WriteLine("update check failed"); } } public static String ComputeWebSocketHandshakeSecurityHash09(String secWebSocketKey) @@ -1310,7 +1325,7 @@ namespace ArdupilotMega { listener.Start(); } - catch { Console.WriteLine("do you have the planner open already"); return; } // in use + catch { log.Info("do you have the planner open already"); return; } // in use // Enter the listening loop. while (true) { @@ -1318,10 +1333,10 @@ namespace ArdupilotMega // You could also user server.AcceptSocket() here. try { - Console.WriteLine("Listening for client - 1 client at a time"); + log.Info("Listening for client - 1 client at a time"); TcpClient client = listener.AcceptTcpClient(); // Get a stream object for reading and writing - Console.WriteLine("Accepted Client " + client.Client.RemoteEndPoint.ToString()); + log.Info("Accepted Client " + client.Client.RemoteEndPoint.ToString()); //client.SendBufferSize = 100 * 1024; // 100kb //client.LingerState.Enabled = true; //client.NoDelay = true; @@ -1344,7 +1359,7 @@ namespace ArdupilotMega int len = stream.Read(request, 0, request.Length); string head = System.Text.ASCIIEncoding.ASCII.GetString(request, 0, len); - Console.WriteLine(head); + log.Info(head); int index = head.IndexOf('\n'); @@ -1380,7 +1395,7 @@ namespace ArdupilotMega while (client.Connected) { System.Threading.Thread.Sleep(200); - Console.WriteLine(stream.DataAvailable + " " + client.Available); + log.Info(stream.DataAvailable + " " + client.Available); while (client.Available > 0) { @@ -1563,7 +1578,7 @@ namespace ArdupilotMega } stream.Close(); } - catch (Exception ee) { Console.WriteLine("Failed mjpg " + ee.Message); } + catch (Exception ee) { log.Info("Failed mjpg " + ee.Message); } } } @@ -1575,8 +1590,8 @@ namespace ArdupilotMega private void MainV2_Resize(object sender, EventArgs e) { - Console.WriteLine("myview width " + MyView.Width + " height " + MyView.Height); - Console.WriteLine("this width " + this.Width + " height " + this.Height); + log.Info("myview width " + MyView.Width + " height " + MyView.Height); + log.Info("this width " + this.Width + " height " + this.Height); } private void MenuHelp_Click(object sender, EventArgs e) @@ -1598,49 +1613,58 @@ namespace ArdupilotMega temp.BackColor = Color.FromArgb(0x26, 0x27, 0x28); } - static string baseurl = "http://ardupilot-mega.googlecode.com/git/Tools/ArdupilotMegaPlanner/bin/Release/"; public static void updatecheck(Label loadinglabel) { + var baseurl = ConfigurationManager.AppSettings["UpdateLocation"]; try { bool update = updatecheck(loadinglabel, baseurl, ""); - System.Diagnostics.Process P = new System.Diagnostics.Process(); + var process = new Process(); + string exePath = Path.GetDirectoryName(Application.ExecutablePath); if (MONO) { - P.StartInfo.FileName = "mono"; - P.StartInfo.Arguments = " \"" + Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "Updater.exe\""; + process.StartInfo.FileName = "mono"; + process.StartInfo.Arguments = " \"" + exePath + Path.DirectorySeparatorChar + "Updater.exe\""; } else { - P.StartInfo.FileName = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "Updater.exe"; - P.StartInfo.Arguments = ""; + process.StartInfo.FileName = exePath + Path.DirectorySeparatorChar + "Updater.exe"; + process.StartInfo.Arguments = ""; try { - foreach (string newupdater in Directory.GetFiles(Path.GetDirectoryName(Application.ExecutablePath), "Updater.exe*.new")) + foreach (string newupdater in Directory.GetFiles(exePath, "Updater.exe*.new")) { File.Copy(newupdater, newupdater.Remove(newupdater.Length - 4), true); File.Delete(newupdater); } } - catch (Exception) + catch (Exception ex) { + log.Error("Exception during update", ex); } } if (loadinglabel != null) - updatelabel(loadinglabel,"Starting Updater"); - Console.WriteLine("Start " + P.StartInfo.FileName + " with " + P.StartInfo.Arguments); - P.Start(); + UpdateLabel(loadinglabel,"Starting Updater"); + log.Info("Starting new process: " + process.StartInfo.FileName + " with " + process.StartInfo.Arguments); + process.Start(); + log.Info("Quitting existing process"); try { Application.Exit(); } - catch { } + catch + { + } + } + catch (Exception ex) + { + log.Error("Update Failed", ex); + MessageBox.Show("Update Failed " + ex.Message); } - catch (Exception ex) { MessageBox.Show("Update Failed " + ex.Message); } } - private static void updatelabel(Label loadinglabel, string text) + private static void UpdateLabel(Label loadinglabel, string text) { MainV2.instance.Invoke((MethodInvoker)delegate { @@ -1650,59 +1674,64 @@ namespace ArdupilotMega }); } - private static void checkForUpdate() + private static void CheckForUpdate() { + var baseurl = ConfigurationManager.AppSettings["UpdateLocation"]; string path = Path.GetFileNameWithoutExtension(Application.ExecutablePath) + ".exe"; // Create a request using a URL that can receive a post. - WebRequest request = WebRequest.Create(baseurl + path); - request.Timeout = 5000; - Console.Write(baseurl + path + " "); - // Set the Method property of the request to POST. - request.Method = "HEAD"; + string requestUriString = baseurl + path; + log.Debug("Checking for update at: " + requestUriString); + var webRequest = WebRequest.Create(requestUriString); + webRequest.Timeout = 5000; - ((HttpWebRequest)request).IfModifiedSince = File.GetLastWriteTimeUtc(path); + // Set the Method property of the request to POST. + webRequest.Method = "HEAD"; + + ((HttpWebRequest)webRequest).IfModifiedSince = File.GetLastWriteTimeUtc(path); // Get the response. - WebResponse response = request.GetResponse(); + var response = webRequest.GetResponse(); // Display the status. - Console.WriteLine(((HttpWebResponse)response).StatusDescription); + log.Debug("Response status: " + ((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. //dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. - bool getfile = false; + bool shouldGetFile = false; if (File.Exists(path)) { - FileInfo fi = new FileInfo(path); + var fi = new FileInfo(path); - Console.WriteLine(response.Headers[HttpResponseHeader.ETag]); + log.Info(response.Headers[HttpResponseHeader.ETag]); if (fi.Length != response.ContentLength) // && response.Headers[HttpResponseHeader.ETag] != "0") { - StreamWriter sw = new StreamWriter(path + ".etag"); + using (var sw = new StreamWriter(path + ".etag")) + { sw.WriteLine(response.Headers[HttpResponseHeader.ETag]); sw.Close(); - getfile = true; - Console.WriteLine("NEW FILE " + path); + } + shouldGetFile = true; + log.Info("Newer file found: " + path); } } else { - getfile = true; - Console.WriteLine("NEW FILE " + path); + shouldGetFile = true; + log.Info("Newer file found: " + path); // get it } response.Close(); - if (getfile) + if (shouldGetFile) { - DialogResult dr = MessageBox.Show("Update Found\n\nDo you wish to update now?", "Update Now", MessageBoxButtons.YesNo); + var dr = MessageBox.Show("Update Found\n\nDo you wish to update now?", "Update Now", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { - doupdate(); + DoUpdate(); } else { @@ -1711,32 +1740,41 @@ namespace ArdupilotMega } } - public static void doupdate() + public static void DoUpdate() { - //System.Threading.Thread t12 = new System.Threading.Thread(delegate() + var loading = new Form { - Form loading = new Form(); - loading.Width = 400; - loading.Height = 150; - loading.StartPosition = FormStartPosition.CenterScreen; - loading.TopMost = true; - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainV2)); - loading.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + Width = 400, + Height = 150, + StartPosition = FormStartPosition.CenterScreen, + TopMost = true, + MinimizeBox = false, + MaximizeBox = false + }; + var resources = new ComponentResourceManager(typeof(MainV2)); + loading.Icon = ((Icon)(resources.GetObject("$this.Icon"))); - Label loadinglabel = new Label(); - loadinglabel.Location = new System.Drawing.Point(50, 40); - loadinglabel.Name = "load"; - loadinglabel.AutoSize = true; - loadinglabel.Text = "Checking..."; - loadinglabel.Size = new System.Drawing.Size(100, 20); + var loadinglabel = new Label + { + Location = new System.Drawing.Point(50, 40), + Name = "load", + AutoSize = true, + Text = "Checking...", + Size = new System.Drawing.Size(100, 20) + }; loading.Controls.Add(loadinglabel); loading.Show(); - try { MainV2.updatecheck(loadinglabel); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } - + try + { + MainV2.updatecheck(loadinglabel); } + catch (Exception ex) + { + log.Error("Error in updatecheck", ex); + } //); //t12.Name = "Update check thread"; //t12.Start(); @@ -1749,7 +1787,7 @@ namespace ArdupilotMega List files = new List(); // Create a request using a URL that can receive a post. - Console.WriteLine(baseurl); + log.Info(baseurl); WebRequest request = WebRequest.Create(baseurl); request.Timeout = 10000; // Set the Method property of the request to POST. @@ -1759,7 +1797,7 @@ namespace ArdupilotMega // Get the response. WebResponse response = request.GetResponse(); // Display the status. - Console.WriteLine(((HttpWebResponse)response).StatusDescription); + log.Info(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. @@ -1802,7 +1840,7 @@ namespace ArdupilotMega continue; } if (loadinglabel != null) - updatelabel(loadinglabel, "Checking " + file); + UpdateLabel(loadinglabel, "Checking " + file); string path = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + subdir + file; @@ -1818,7 +1856,7 @@ namespace ArdupilotMega // Get the response. response = request.GetResponse(); // Display the status. - Console.WriteLine(((HttpWebResponse)response).StatusDescription); + log.Info(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. //dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. @@ -1829,7 +1867,7 @@ namespace ArdupilotMega { FileInfo fi = new FileInfo(path); - Console.WriteLine(response.Headers[HttpResponseHeader.ETag]); + log.Info(response.Headers[HttpResponseHeader.ETag]); if (fi.Length != response.ContentLength) // && response.Headers[HttpResponseHeader.ETag] != "0") { @@ -1837,13 +1875,13 @@ namespace ArdupilotMega sw.WriteLine(response.Headers[HttpResponseHeader.ETag]); sw.Close(); getfile = true; - Console.WriteLine("NEW FILE " + file); + log.Info("NEW FILE " + file); } } else { getfile = true; - Console.WriteLine("NEW FILE " + file); + log.Info("NEW FILE " + file); // get it } @@ -1866,7 +1904,7 @@ namespace ArdupilotMega } } if (loadinglabel != null) - updatelabel(loadinglabel, "Getting " + file); + UpdateLabel(loadinglabel, "Getting " + file); // from head long bytes = response.ContentLength; @@ -1878,7 +1916,7 @@ namespace ArdupilotMega // Get the response. response = request.GetResponse(); // Display the status. - Console.WriteLine(((HttpWebResponse)response).StatusDescription); + log.Info(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); @@ -1899,12 +1937,12 @@ namespace ArdupilotMega if (dt.Second != DateTime.Now.Second) { if (loadinglabel != null) - updatelabel(loadinglabel, "Getting " + file + ": " + (((double)(contlen - bytes) / (double)contlen) * 100).ToString("0.0") + "%"); //+ Math.Abs(bytes) + " bytes"); + UpdateLabel(loadinglabel, "Getting " + file + ": " + (((double)(contlen - bytes) / (double)contlen) * 100).ToString("0.0") + "%"); //+ Math.Abs(bytes) + " bytes"); dt = DateTime.Now; } } catch { } - Console.WriteLine(file + " " + bytes); + log.Info(file + " " + bytes); int len = dataStream.Read(buf1, 0, 1024); if (len == 0) break; diff --git a/Tools/ArdupilotMegaPlanner/Mavlink/MavlinkUtil.cs b/Tools/ArdupilotMegaPlanner/Mavlink/MavlinkUtil.cs index 0be0d7c635..6d52ec3f3e 100644 --- a/Tools/ArdupilotMegaPlanner/Mavlink/MavlinkUtil.cs +++ b/Tools/ArdupilotMegaPlanner/Mavlink/MavlinkUtil.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; +using log4net; namespace ArdupilotMega.Mavlink { @@ -11,6 +12,8 @@ namespace ArdupilotMega.Mavlink /// public static class MavlinkUtil { + private static readonly ILog log = + LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); /// /// Create a new mavlink packet object from a byte array as recieved over mavlink /// Endianess will be detetected using packet inspection @@ -55,7 +58,7 @@ namespace ArdupilotMega.Mavlink } catch (Exception ex) { - Console.WriteLine("ByteArrayToStructure FAIL: error " + ex); + log.Error("ByteArrayToStructure FAIL", ex); } obj = Marshal.PtrToStructure(i, obj.GetType()); @@ -105,7 +108,10 @@ namespace ArdupilotMega.Mavlink // copy byte array to ptr Marshal.Copy(temparray, startoffset, i, len); } - catch (Exception ex) { Console.WriteLine("ByteArrayToStructure FAIL: error " + ex.ToString()); } + catch (Exception ex) + { + log.Error("ByteArrayToStructure FAIL", ex); + } obj = Marshal.PtrToStructure(i, obj.GetType()); diff --git a/Tools/ArdupilotMegaPlanner/Program.cs b/Tools/ArdupilotMegaPlanner/Program.cs index 334e01a41f..a5e6e44931 100644 --- a/Tools/ArdupilotMegaPlanner/Program.cs +++ b/Tools/ArdupilotMegaPlanner/Program.cs @@ -5,12 +5,15 @@ using System.Net; using System.IO; using System.Text; using System.Threading; +using log4net; +using log4net.Config; namespace ArdupilotMega { static class Program { + private static readonly ILog log = LogManager.GetLogger("Program"); /// /// The main entry point for the application. @@ -21,23 +24,29 @@ namespace ArdupilotMega //System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); //System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); - Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); + Application.ThreadException += Application_ThreadException; - Application.Idle += new EventHandler(Application_Idle); + Application.Idle += Application_Idle; //MessageBox.Show("NOTE: This version may break advanced mission scripting"); //Common.linearRegression(); Application.EnableVisualStyles(); + XmlConfigurator.Configure(); + log.Info("******************* Logging Configured *******************"); Application.SetCompatibleTextRenderingDefault(false); try { - System.Threading.Thread.CurrentThread.Name = "Base Thread"; + Thread.CurrentThread.Name = "Base Thread"; Application.Run(new MainV2()); } - catch (Exception ex) { Console.WriteLine(ex.ToString()); } + catch (Exception ex) + { + log.Fatal("Fatal app exception",ex); + Console.WriteLine(ex.ToString()); + } } static void Application_Idle(object sender, EventArgs e) @@ -111,7 +120,10 @@ namespace ArdupilotMega dataStream.Close(); response.Close(); } - catch { MessageBox.Show("Error sending Error report!! Youre most likerly are not on the internet"); } + catch + { + MessageBox.Show("Error sending Error report!! Youre most likerly are not on the internet"); + } } } } diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index 8d587ae932..30ef544ee3 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.1.42")] +[assembly: AssemblyFileVersion("1.1.43")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs b/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs index d218a1ae09..3b135b9e1e 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/Resources.Designer.cs @@ -228,6 +228,21 @@ namespace ArdupilotMega.Properties { } } + /// + /// Looks up a localized string similar to == MAVLink Parameters == (this is a copy fo the wiki page FYI) + /// + ///This is a list of all the user-modifiable MAVLink parameters and what they do. You can modify them via the MAVLink parameters window in any compatible GCS, such as the Mission Planner, HK GCS or !QGroundControl. + /// + ///It includes both fixed wing (APM) and rotary wing (!ArduCopter) parameters. Some may only be relevant for one platform or another. + /// + ///|| *EEPROM variable name* || *Min* || *Max* || *Default* || *Multiplier* || *Enabled (0 = no, 1 = yes)* [rest of string was truncated]";. + /// + public static string MAVParam { + get { + return ResourceManager.GetString("MAVParam", resourceCulture); + } + } + public static System.Drawing.Bitmap octo { get { object obj = ResourceManager.GetObject("octo", resourceCulture); diff --git a/Tools/ArdupilotMegaPlanner/Properties/Resources.resx b/Tools/ArdupilotMegaPlanner/Properties/Resources.resx index bfe114553b..8601c8c688 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/Resources.resx +++ b/Tools/ArdupilotMegaPlanner/Properties/Resources.resx @@ -1222,8 +1222,11 @@ ..\Resources\iconWarning48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\y6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\MAVParam.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs index 2148da0e73..b0bb0a8a93 100644 --- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs +++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs @@ -49,8 +49,6 @@ namespace ArdupilotMega { ArduinoSTK comPort = new ArduinoSTK(); - string version = ""; - uploader.Uploader uploader = new uploader.Uploader(); try @@ -186,244 +184,9 @@ namespace ArdupilotMega catch { } } - private void BUT_getcurrent_Click(object sender, EventArgs e) - { - SerialPort comPort = new SerialPort(); - - try { - - comPort.PortName = MainV2.comPort.BaseStream.PortName; - comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; - - comPort.ReadTimeout = 4000; - - comPort.Open(); - - - } - catch { MessageBox.Show("Invalid ComPort or in use"); return; } - - lbl_status.Text = "Connecting"; - - if (doConnect(comPort)) - { - comPort.DiscardInBuffer(); - - lbl_status.Text = "Doing Command ATI & RTI"; - - ATI.Text = doCommand(comPort, "ATI1").Trim(); - - RTI.Text = doCommand(comPort, "RTI1").Trim(); - - RSSI.Text = doCommand(comPort, "ATI7").Trim(); - - lbl_status.Text = "Doing Command ATI5"; - - string answer = doCommand(comPort, "ATI5"); - - string[] items = answer.Split('\n'); - - foreach (string item in items) - { - if (item.StartsWith("S")) - { - string[] values = item.Split(':', '='); - - if (values.Length == 3) - { - Control[] controls = this.Controls.Find(values[0].Trim(), false); - - if (controls.Length > 0) - { - if (controls[0].GetType() == typeof(CheckBox)) - { - ((CheckBox)controls[0]).Checked = values[2].Trim() == "1"; - } - else - { - controls[0].Text = values[2].Trim(); - } - } - } - } - } - - // remote - foreach (Control ctl in this.Controls) - { - if (ctl.Name.StartsWith("RS") && ctl.Name != "RSSI") - ctl.ResetText(); - } - - - comPort.DiscardInBuffer(); - - lbl_status.Text = "Doing Command RTI5"; - - answer = doCommand(comPort, "RTI5"); - - items = answer.Split('\n'); - - foreach (string item in items) - { - if (item.StartsWith("S")) - { - string[] values = item.Split(':', '='); - - if (values.Length == 3) - { - Control[] controls = this.Controls.Find("R" + values[0].Trim(), false); - - if (controls[0].GetType() == typeof(CheckBox)) - { - ((CheckBox)controls[0]).Checked = values[2].Trim() == "1"; - } - else if (controls[0].GetType() == typeof(TextBox)) - { - ((TextBox)controls[0]).Text = values[2].Trim(); - } - else if (controls[0].GetType() == typeof(ComboBox)) - { - ((ComboBox)controls[0]).SelectedText = values[2].Trim(); - } - } - else - { - Console.WriteLine("Odd config line :" + item); - } - } - } - - // off hook - doCommand(comPort, "ATO"); - - lbl_status.Text = "Done"; - } - else - { - - // off hook - doCommand(comPort, "ATO"); - - lbl_status.Text = "Fail"; - MessageBox.Show("Failed to enter command mode"); - } - - comPort.Close(); - } - - string Serial_ReadLine(SerialPort comPort) - { - StringBuilder sb = new StringBuilder(); - DateTime Deadline = DateTime.Now.AddMilliseconds(comPort.ReadTimeout); - - while (DateTime.Now < Deadline) - { - if (comPort.BytesToRead > 0) - { - byte data = (byte)comPort.ReadByte(); - sb.Append((char)data); - if (data == '\n') - break; - } - } - - return sb.ToString(); - } - - string doCommand(SerialPort comPort, string cmd, int level = 0) - { - if (!comPort.IsOpen) - return ""; - - comPort.ReadTimeout = 1000; - // setup to known state - comPort.Write("\r\n"); - // alow some time to gather thoughts - Sleep(100); - // ignore all existing data - comPort.DiscardInBuffer(); - lbl_status.Text = "Doing Command "+cmd; - Console.WriteLine("Doing Command "+cmd); - // write command - comPort.Write(cmd + "\r\n"); - // read echoed line or existing data - string temp; - try - { - temp = Serial_ReadLine(comPort); - } - catch { temp = comPort.ReadExisting(); } - Console.WriteLine("cmd "+cmd + " echo "+ temp); - // delay for command - Sleep(500); - // get responce - string ans = ""; - while (comPort.BytesToRead > 0) - { - try - { - ans = ans + Serial_ReadLine(comPort) +"\n"; - } - catch { ans = ans + comPort.ReadExisting() + "\n"; } - Sleep(50); - - if (ans.Length > 500) - { - break; - } - } - - Console.WriteLine("responce " +level+ " " + ans); - - // try again - if (ans == "" && level == 0) - return doCommand(comPort, cmd, 1); - - return ans; - } - - bool doConnect(SerialPort comPort) - { - // clear buffer - comPort.DiscardInBuffer(); - // setup a known enviroment - comPort.Write("\r\n"); - // wait - Sleep(1100); - // send config string - comPort.Write("+++"); - // wait - Sleep(1100); - // check for config responce "OK" - Console.WriteLine("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); - string conn = comPort.ReadExisting(); - Console.WriteLine("Connect first responce "+conn + " " + conn.Length); - if (conn.Contains("OK")) - { - //return true; - } - else - { - // cleanup incase we are already in cmd mode - comPort.Write("\r\n"); - } - - string version = doCommand(comPort, "ATI"); - - Console.Write("Connect Version: " + version.Trim() + "\n"); - - if (version.Contains("on HM-TRP")) - { - return true; - } - - return false; - } - private void BUT_savesettings_Click(object sender, EventArgs e) { - SerialPort comPort = new SerialPort(); + ArdupilotMega.ICommsSerial comPort = new SerialPort(); try { comPort.PortName = MainV2.comPort.BaseStream.PortName; @@ -595,6 +358,242 @@ namespace ArdupilotMega comPort.Close(); } + + private void BUT_getcurrent_Click(object sender, EventArgs e) + { + ArdupilotMega.ICommsSerial comPort = new SerialPort(); + + try + { + comPort.PortName = MainV2.comPort.BaseStream.PortName; + comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; + + comPort.ReadTimeout = 4000; + + comPort.Open(); + + + } + catch { MessageBox.Show("Invalid ComPort or in use"); return; } + + lbl_status.Text = "Connecting"; + + if (doConnect(comPort)) + { + comPort.DiscardInBuffer(); + + lbl_status.Text = "Doing Command ATI & RTI"; + + ATI.Text = doCommand(comPort, "ATI1").Trim(); + + RTI.Text = doCommand(comPort, "RTI1").Trim(); + + RSSI.Text = doCommand(comPort, "ATI7").Trim(); + + lbl_status.Text = "Doing Command ATI5"; + + string answer = doCommand(comPort, "ATI5"); + + string[] items = answer.Split('\n'); + + foreach (string item in items) + { + if (item.StartsWith("S")) + { + string[] values = item.Split(':', '='); + + if (values.Length == 3) + { + Control[] controls = this.Controls.Find(values[0].Trim(), false); + + if (controls.Length > 0) + { + if (controls[0].GetType() == typeof(CheckBox)) + { + ((CheckBox)controls[0]).Checked = values[2].Trim() == "1"; + } + else + { + controls[0].Text = values[2].Trim(); + } + } + } + } + } + + // remote + foreach (Control ctl in this.Controls) + { + if (ctl.Name.StartsWith("RS") && ctl.Name != "RSSI") + ctl.ResetText(); + } + + + comPort.DiscardInBuffer(); + + lbl_status.Text = "Doing Command RTI5"; + + answer = doCommand(comPort, "RTI5"); + + items = answer.Split('\n'); + + foreach (string item in items) + { + if (item.StartsWith("S")) + { + string[] values = item.Split(':', '='); + + if (values.Length == 3) + { + Control[] controls = this.Controls.Find("R" + values[0].Trim(), false); + + if (controls[0].GetType() == typeof(CheckBox)) + { + ((CheckBox)controls[0]).Checked = values[2].Trim() == "1"; + } + else if (controls[0].GetType() == typeof(TextBox)) + { + ((TextBox)controls[0]).Text = values[2].Trim(); + } + else if (controls[0].GetType() == typeof(ComboBox)) + { + ((ComboBox)controls[0]).SelectedText = values[2].Trim(); + } + } + else + { + Console.WriteLine("Odd config line :" + item); + } + } + } + + // off hook + doCommand(comPort, "ATO"); + + lbl_status.Text = "Done"; + } + else + { + + // off hook + doCommand(comPort, "ATO"); + + lbl_status.Text = "Fail"; + MessageBox.Show("Failed to enter command mode"); + } + + comPort.Close(); + } + + string Serial_ReadLine(ArdupilotMega.ICommsSerial comPort) + { + StringBuilder sb = new StringBuilder(); + DateTime Deadline = DateTime.Now.AddMilliseconds(comPort.ReadTimeout); + + while (DateTime.Now < Deadline) + { + if (comPort.BytesToRead > 0) + { + byte data = (byte)comPort.ReadByte(); + sb.Append((char)data); + if (data == '\n') + break; + } + } + + return sb.ToString(); + } + + string doCommand(ArdupilotMega.ICommsSerial comPort, string cmd, int level = 0) + { + if (!comPort.IsOpen) + return ""; + + comPort.ReadTimeout = 1000; + // setup to known state + comPort.Write("\r\n"); + // alow some time to gather thoughts + Sleep(100); + // ignore all existing data + comPort.DiscardInBuffer(); + lbl_status.Text = "Doing Command " + cmd; + Console.WriteLine("Doing Command " + cmd); + // write command + comPort.Write(cmd + "\r\n"); + // read echoed line or existing data + string temp; + try + { + temp = Serial_ReadLine(comPort); + } + catch { temp = comPort.ReadExisting(); } + Console.WriteLine("cmd " + cmd + " echo " + temp); + // delay for command + Sleep(500); + // get responce + string ans = ""; + while (comPort.BytesToRead > 0) + { + try + { + ans = ans + Serial_ReadLine(comPort) + "\n"; + } + catch { ans = ans + comPort.ReadExisting() + "\n"; } + Sleep(50); + + if (ans.Length > 500) + { + break; + } + } + + Console.WriteLine("responce " + level + " " + ans.Replace('\0',' ')); + + // try again + if (ans == "" && level == 0) + return doCommand(comPort, cmd, 1); + + return ans; + } + + bool doConnect(ArdupilotMega.ICommsSerial comPort) + { + // clear buffer + comPort.DiscardInBuffer(); + // setup a known enviroment + comPort.Write("\r\n"); + // wait + Sleep(1100); + // send config string + comPort.Write("+++"); + // wait + Sleep(1100); + // check for config responce "OK" + Console.WriteLine("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); + string conn = comPort.ReadExisting(); + Console.WriteLine("Connect first responce " + conn.Replace('\0',' ') + " " + conn.Length); + if (conn.Contains("OK")) + { + //return true; + } + else + { + // cleanup incase we are already in cmd mode + comPort.Write("\r\n"); + } + + string version = doCommand(comPort, "ATI"); + + Console.Write("Connect Version: " + version.Trim() + "\n"); + + if (version.Contains("on HM-TRP")) + { + return true; + } + + return false; + } + private void BUT_syncS2_Click(object sender, EventArgs e) { RS2.Text = S2.Text; diff --git a/Tools/ArdupilotMegaPlanner/Script.cs b/Tools/ArdupilotMegaPlanner/Script.cs index df94c21309..617c49ef31 100644 --- a/Tools/ArdupilotMegaPlanner/Script.cs +++ b/Tools/ArdupilotMegaPlanner/Script.cs @@ -30,11 +30,8 @@ namespace ArdupilotMega scope.SetVariable("cs", MainV2.cs); scope.SetVariable("Script", this); - Console.WriteLine(DateTime.Now.Millisecond); engine.CreateScriptSourceFromString("print 'hello world from python'").Execute(scope); - Console.WriteLine(DateTime.Now.Millisecond); engine.CreateScriptSourceFromString("print cs.roll").Execute(scope); - Console.WriteLine(DateTime.Now.Millisecond); object thisBoxed = MainV2.cs; diff --git a/Tools/ArdupilotMegaPlanner/SerialInput.Designer.cs b/Tools/ArdupilotMegaPlanner/SerialInput.Designer.cs index 62d2900dd9..babfd7e315 100644 --- a/Tools/ArdupilotMegaPlanner/SerialInput.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/SerialInput.Designer.cs @@ -85,11 +85,10 @@ // // LBL_location // - this.LBL_location.AutoSize = true; this.LBL_location.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.LBL_location.Location = new System.Drawing.Point(9, 78); + this.LBL_location.Location = new System.Drawing.Point(3, 64); this.LBL_location.Name = "LBL_location"; - this.LBL_location.Size = new System.Drawing.Size(50, 24); + this.LBL_location.Size = new System.Drawing.Size(365, 59); this.LBL_location.TabIndex = 4; this.LBL_location.Text = "0,0,0"; // diff --git a/Tools/ArdupilotMegaPlanner/SerialInput.cs b/Tools/ArdupilotMegaPlanner/SerialInput.cs index 2d9eeae5a6..ba9c84fbd3 100644 --- a/Tools/ArdupilotMegaPlanner/SerialInput.cs +++ b/Tools/ArdupilotMegaPlanner/SerialInput.cs @@ -87,54 +87,56 @@ namespace ArdupilotMega void mainloop() { - + DateTime nextsend = DateTime.Now; threadrun = true; - int counter = 0; while (threadrun) { try { string line = comPort.ReadLine(); - //string line = string.Format("$GP{0},{1:HHmmss},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},", "GGA", DateTime.Now.ToUniversalTime(), Math.Abs(lat * 100), MainV2.cs.lat < 0 ? "S" : "N", Math.Abs(lng * 100), MainV2.cs.lng < 0 ? "W" : "E", MainV2.cs.gpsstatus, MainV2.cs.satcount, MainV2.cs.gpshdop, MainV2.cs.alt, "M", 0, "M", ""); if (line.StartsWith("$GPGGA")) // { - int c1 = line.IndexOf(',',0)+ 1; - int c2 = line.IndexOf(',', c1) + 1; - int c3 = line.IndexOf(',', c2) + 1; - int c4 = line.IndexOf(',', c3 ) + 1; - int c5 = line.IndexOf(',', c4 ) + 1; - int c6 = line.IndexOf(',', c5 ) + 1; - int c7 = line.IndexOf(',', c6 ) + 1; - int c8 = line.IndexOf(',', c7 ) + 1; - int c9 = line.IndexOf(',', c8 ) + 1; - int c10 = line.IndexOf(',', c9 ) + 1; - int c11 = line.IndexOf(',', c10 ) + 1; - int c12 = line.IndexOf(',', c11) + 1; + string[] items = line.Trim().Split(',','*'); - gotolocation.Lat = double.Parse(line.Substring(c2, c3 - c2 - 1)) / 100.0; + if (items[15] != GetChecksum(line.Trim())) + { + Console.WriteLine("Bad Nmea line " + items[15] + " vs " + GetChecksum(line.Trim())); + continue; + } + + if (items[6] == "0") + { + Console.WriteLine("No Fix"); + continue; + } + + gotolocation.Lat = double.Parse(items[2]) / 100.0; gotolocation.Lat = (int)gotolocation.Lat + ((gotolocation.Lat - (int)gotolocation.Lat) / 0.60); - if (line.Substring(c3, c4 - c3 - 1) == "S") + if (items[3] == "S") gotolocation.Lat *= -1; - gotolocation.Lng = double.Parse(line.Substring(c4, c5 - c4 - 1)) / 100.0; + gotolocation.Lng = double.Parse(items[4]) / 100.0; gotolocation.Lng = (int)gotolocation.Lng + ((gotolocation.Lng - (int)gotolocation.Lng) / 0.60); - if (line.Substring(c5, c6 - c5 - 1) == "W") + if (items[5] == "W") gotolocation.Lng *= -1; gotolocation.Alt = intalt; // double.Parse(line.Substring(c9, c10 - c9 - 1)) + + gotolocation.Tag = "Sats "+ items[7] + " hdop " + items[8] ; + } - if (counter % 10 == 0 && gotolocation.Lat != 0 && gotolocation.Lng != 0 && gotolocation.Alt != 0) // 200 * 10 = 2 sec /// lastgotolocation != gotolocation && + if (DateTime.Now > nextsend && gotolocation.Lat != 0 && gotolocation.Lng != 0 && gotolocation.Alt != 0) // 200 * 10 = 2 sec /// lastgotolocation != gotolocation && { + nextsend = DateTime.Now.AddSeconds(2); Console.WriteLine("Sending follow wp " +DateTime.Now.ToString("h:MM:ss")+" "+ gotolocation.Lat + " " + gotolocation.Lng + " " +gotolocation.Alt); lastgotolocation = new PointLatLngAlt(gotolocation); @@ -159,14 +161,13 @@ namespace ArdupilotMega MainV2.comPort.setWP(gotohere, 0, MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL_RELATIVE_ALT, (byte)2); + GCSViews.FlightData.GuidedModeWP = new PointLatLngAlt(gotohere); + MainV2.givecomport = false; } catch { MainV2.givecomport = false; } } } - - System.Threading.Thread.Sleep(200); - counter++; } catch { System.Threading.Thread.Sleep(2000); } } @@ -176,7 +177,7 @@ namespace ArdupilotMega { this.BeginInvoke((MethodInvoker)delegate { - LBL_location.Text = gotolocation.Lat + " " + gotolocation.Lng + " " + gotolocation.Alt; + LBL_location.Text = gotolocation.Lat + " " + gotolocation.Lng + " " + gotolocation.Alt +" "+ gotolocation.Tag; } ); @@ -200,7 +201,7 @@ namespace ArdupilotMega break; case '*': // Stop processing before the asterisk - continue; + return Checksum.ToString("X2"); default: // Is this the first value for the checksum? if (Checksum == 0) diff --git a/Tools/ArdupilotMegaPlanner/app.config b/Tools/ArdupilotMegaPlanner/app.config index f524c8fa5c..6368d93fef 100644 --- a/Tools/ArdupilotMegaPlanner/app.config +++ b/Tools/ArdupilotMegaPlanner/app.config @@ -1,7 +1,34 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.exe.config b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.exe.config index f524c8fa5c..6368d93fef 100644 --- a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.exe.config +++ b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.exe.config @@ -1,7 +1,34 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index 87d6b9dc89ed1bf8bacbd4617c21b4322abf6945..74eff8d1e24c53f28a6e6207ca6c18239d9d80db 100644 GIT binary patch literal 964096 zcmeF42YeLO-iCMSUAiGBFW#)Mq=&s!m~|1o?|8YKRfxp zr| zzuY`Lp~Xah?81~DXJ%@geW4Ck{uh4!-osmVCe%5ya?+hc4)s5A_NC;R8RKB(f7PPX z>pytGq{okR*>KfOPc{#X9nZ{EIeS7Kto&cqFFI_~#^@RQhnN54`2F{PdG@5>nH|$$ z<^S^Qj_hB5)zp%G_Qt;V_=dL%+W#}8SOhEozpgj_iOE~PA6R+6g z{#hT)VCDbZcLv^j@4y9(*L;7&_HCPMj63TS_6$jYVC8?e3QKNmQ|YN^#|&Fms#m9u zADki4KkI`Tto-kO&J$mM{chJ?snZ`_xNFa_`_B4=Jwp;8Soz;_$dlV|OZ(xq>-`Tb zE7$6gp=U_+&-!2nEC2hfd}G5k->td)kLiteZ`qOX*;${kXGj7BEC28R`mU|-KJme` zUB2G^;|(pJFS!4AmgRrgfvr0q>^7m|v!1VR9e?|_g7x3CEdT%2u;?pEqwje5`NfPt}VF#bA}YGVC8?G(Oar~ z@MChdDl=~1IMwUhrUcip+Q_LSK^<-(t9p7jZPh9p3+ z@_#}6OGREO-F?V_kuPoP(|Aw8^WSG#{>P?0_jL8BD_<<}Rf`jIOH~Md_o^NT-jZM$||-TC#;`h-105+GRlUwimX=e8}pZ2j@pZ~w7zU#;C|Nc7M8 zUp&T1Rpex=?+*XHG4 z!SVc+0>R4vkA}oe?OXTr;x)$jFM7S@EuZACSQdmPuM`MY{;%wL#h79#SAO5W+LyhW zzuo9~Uj7vv&tEAJto-j@=bA%P%9p(C_Xb05y!?^sL-JQF3qq4u3Ir?vhqWpGY3plm zy5*Iz^In)6H~yu({3|$~zfvGr`TthLkfE*Ol9CQRKL6mI4HtZozhYSsn!HjVSoz;@ zZq>Dq&iJ!AXxdo{Lmd03zd86$?aq2 z#FQysu|xifWkG22N`YYIf02uBD0xTcmGviG{>=6_c9r-gFaHXT=dTn9R{p;hUFGMF z>!#P~pFZ`qZPAnJ<*!&4geI>P2v+{zb#hVK;K%3qeklCfjkAuuQ#mjH3XbQm6bM%S zzx`<44Y7x-y)g04RgGGHyt!cgFMnloo}md={&%l7?DB-(GnzLmS2A^`_s9=IRq>Jj~BY;X3vAa9v?8J!NFH|T)ixR#j+qYd8I(G@_)m%^P+!m^2(vi z35TBD9rI!7y!R4v&r9s= zUFM24zjS-X|5LkrQj_xXui$w8N`YYIeDdt>SAYxmrL-|}V&mDAT0eE&bM1kY#3gO&fsA}@aGjv*1B9;vtTrGYP8IzOL9 zvmiKmq(HFp|DxU3ZHu4u-lWDWy7}I&@K?d}-+82Wemfkj{O|PU`WmYn-TJz(*+>8S zyxh45@>@I$!jpRn1S|g+Ea<)L^QdzdYhiXUqq(Q{tG z_rLQ<@BDT+Sowd^>*GJ|Rqfrn4JTc2tlArUf6Z_4EC^5TDG;pukKS0jy>prIrdKOz7-tJZz&M0{2zZs>mMSXc;l&Qo1a;*W^$v5{1(rG@Z_EX!OH)SJky_^ zb+l&BH%I<7D16kedvf=!;AnnJfneqTGk5QaUO2J+@OP7%@4stVzk=WY$Zr{)M|gsj z{}YRMSa&?`oK6*Qnltc=1|Ofy!@GjR`78y3mH%x|RIc5z)He^!9p3wcX-U7-$Y;?k z2u>a;5Ul)PJn!qt%^v$b?$&axE6iN5`29S*D>$6bQXp9QUnX+-)jK9O>o>D(&!68| z5?=89cRtJKyn+*~{Es_vIBrV&R+rs2Y2^zWFMYD${hz!NJf9s8R{nodV*kevzWnF! z8()1bDy+*j4f0tu3xbnJ3Ir?v_kMianoI88GP>-H0iX{t{7L5P$T~6m7pkU>H{k04KxNpWgYhqFsWPZK8T$kK^ zD>$0pQXp9QKQv}q`L9!UZ1}2}clORF)9=e~@hk{W?kNzg{4ZB`bg|txUw`kGX}gy` z6fv#f_g`{P?tFJNSo#02xC0-&_t?&#ZaB8E%c4<*j^(?E76d5Q6bM%SPuSMuc=G;R zqL=?xbmjDtQFC(jtl(h2OaU*UDg=e0C=>(zfL{qH38g>_I%S|Nl!J4iJm^KAicksk z(MLV_T@~~Lu+^YC=w@I|s0I2kKy5f5!k`Y+1${8IK4{^vAvA)<&;*)7GiVMiARJmk zD`*XEpe?k63!pvd1H}3f@=nkhG$8E?-Jm=4fS%9`^srJS^nt$65BkFZ7zoiY2nK^* zY#j>2Ko2>LfRQi?M#C5w3*+EI7!MQRBA5u1U^2wO6o`d5@WE7whiQ-i(_scAftHcl z4>!P#umo;`o8cB%3b(>CxDA%W?QjR&2`gYF+y!^TD!2z$!@aNu*1~;oKdgfX;6Zo@ z9)|Vs2yB3j@F+Y6kHaQ-0ye{wumzrit?)EF1JA;9@H}jT7vM#B3AV!yco|-SSK&2y z9d^NP*aL6CUf2h3!dtK(-hp@F0K5n9!w2vod;}lECvXrxh0ow~I0XNKFW^h~3ciMK z;9EEh-@*6r0~~=L;V1YRj>0eSEBpq>;CJ`~{)FT37o32T;PLW56oSG~1d2j2C=Ml{ zB$R^EPzK6EIXDN(Lj|Y^m7p?IfvRvWRDgXYiz!l5O!hBnX^+Q9|T9y&lr=medi3v`8U&>ea}Pv`{^5D8Jx8~Q+B=m-5_ z01SjdFc^lwP#6ZoVFZkXQ7{_Dz*rau7s7a$02jeTm;{p{2BttP#DNc{!Zb*L=`aHl zAqkQp1ybQ+NP~39fJ~SPvtTyNfw^!ATnd-Li^Z0!!gmSO&Mj?QjR&2`gYF+y$%P9#{?c!Wvi$_rd+J4jzC9;URb! z*25#P0XD*;@EAM}o8Sr93{S!qcnY?{)9?&D3(vvxunk^-7vUw?4m;pwcm;OCtMD4U z4!dAC?1496FYJRi;Vsw?Z^JwAE*yaO;C=W2K7^0pWB3FP!l&>#9D;wr7w{!~1z*EA z@GTsM@8Em*0gk|r@DuzDN8uOv6@G(b@H_kgf5LJ23r@gEP)F{CLQoirKv5_L#i0b0 zgi=r%%0O8t2j@U}r~nnA5>$pNP!-OFYET_&KuxFx=Rs{aAHtvx)P;Ib9~wYIXatR+ z2{eUf&>UJoIJAUT&>Gr6TWALtKzrx_9ibC+hAz+*xB;Df0U57Qt4 zro#+Kgd|9Y6i9`OAq~ha4B2{m%|m{hj}m`u7m|}6)c3SVG&#d z*TQwM7_NsK;6_*iH^I$t3oM0OVHw;8%i(so1MY+suoCWqyI~dF1FPX)SOaU}KDZy& z!2|FhJOmHJdUymj!lUpQJPw=S3D^uz!WMW6w!+i!3_J_Z!Sk>UUVsU^nc6H()R9gE!$V*bi^RJMbb{?!Ow6Met}=%H#i2r!yoV`9EZQ)1e^p7+PzQ+3PTYn3dNu} zlz@^@3Q9v6C=2D_94HSJpdwU)%1{NW!nsflszVK^3ANxns14^s7}SBfP!H-u184}1 zpfNOorqB$ULkkFpme2}XLmOxd?cf4v4;`Q*bb`*%1-e2v=ng%gC-i~{h=eHU4Siq` z42B^v6o$cY7y%<;42*?wa3PF`32+figh?$#k|70B z;bKUGbjW~AmT@CNLK zeefo{1^eM`cn98v1MnWa4YU^I+@ zu`muUgz+#LVqglyLLB&DD#XJyNPy`u0}>$#k|70B;bKUGbjW~Am_H}EYShVS5e_yLZIXs0;O=J~V)a&2CjwcU@=?|H^7as1a5+x;TBj5x56^G4VJ_0a0lE8D_|wu z1$V!hLW*tb+&OL3jurhV}3WY=DjMC_Dy_!zOqFHp7#!1)hSf@H9LF z&%$%?JZys(;6-=|w!;p18D4>%@G86pufs0b4SV1X*bDpMO?V6T!`tuOIKL1`!hWuY9L1LdItRD?=U8LB{4I2Woxb*KR~ zp%$D6wc&gSgE~+b>Op;I01crLG=?V76q-SEXaV8S5?VoPXajAb9b5qIp#yY;PS6>; zKv(Dn-Ju8cgkBHH^VKk6mErOa2qU#+u;tl z6IQ@VxC`!vRd5fihI?TRtcCmFepm+&z=QA*JPhmM5!e75;Zb-D9*0fv1Z;*UVGBG3 zTj6PV2A+lI;Ca{vFTjiN5^RSZ@G`stJKzJC)NvFfx}8a-btqk~7j$64NIPnlmyjCU!CW}j&GmyE{=ShTMkn}YrB4{?OG`>f zj!6tb9O7fsXIg$_xcmrmJVvA@#-vXRkMgA_#3%bgQJ&ImAL3j-1UU|Yyr62!fnsUz|h_LC96&ho&SXXSB7_CCCLu#XU9a>OoHRcwb7IZ)!qP zOuR1y$)4ltK@NMMALx^imNY9S%@@kXGtfCtHJ-T}hakr+F!CFlk~TCkGd+|M3yl9} zr=+FIuMoy-WaLnymY$Lrio%u=n@U{F#e1i3(>>)O|y@0uFkVC7fP(pIbh>-(B zP^mTj;o|8TGeXdoMrNj^G1D875t9*$G7@WFKHXeC$mt$vkwzpWWhUCg(kRzJILM_Z z&?cp4c^AUk8;D(C4)ni>TVOKuzld2sUt($~8{0sRO_N9eix~AuOo*SBF*GqIS<}7$ zMTSkad}J1A`53}Dx<-s4jF)TZ7{a)W@TDchB=%2E&CCcvlg)A$S5Gik4|1y)nUa*0 zZbx8fN?ItwA1fd1NTfPG1UU}9W+seDO9;(`HD+eQtiZK{9ByYlC-}>P&N5E$=Xrs# z?VvdknHd=&S-1&|X_Mwm3HTA@ly_R6364e%j|@S@bsC=uj>e|NhGNWRR)DQla$kD- zaGz?KFD;5jBPBjFBm*(yr?q^JpJ|StaV|fDoMXL`GknR(F%zuC^w4&OF^*T(iaK6} zu;&Pj%Ch(L!EX@)W0&k5eDGTct*4C2NJvZ%L50$4N~XDXkjqzOOp-4xCIo?w4O}?L zAs!yXZL|raQWH~R;zF`kn`U{C>GB}RG05;Gg>=AfT|b1i*Sdc2>#DhIkW)J}i?g9w zmF=DAn`zC!>D8ttgk;6ZXS|>jGhPHa#ZzOrZO!l(4e9b`Hh)4`-iQ0rd&eb&VvdmJ zOZPcf4ssrhh)qjK4MmXC0~Zc*h_l87X0bZ>O-$Bsz~x7fjZifbc43o72 zJF`s)Mg&=Fu=eGHobFEOqkI`WSrfY8#|5q*$Y?4;N?OQn@XmByKFFoX^te%>yANTy z-Vo+NVAUvTPTxVjhK8U`a;+J~C&gILs0BMGtjSQ@sNvSECjJB1($&O%p)%ZDJxA<$O2?$HH*a1j_Cxo*t`f0Ut?saHZ;Y+B6J zP;}E;EQxVlKFB#?-8UE&mumOcAt+4NZG+6XRQt|>JP2|Ooca)gpgZ*-1Yr)8f0|U+ zLyaNq9s+fNCf4O+2zv`>1Qo(KIYX%s#v$8`JopV%&dUe6W(4}{L38vRzq1>Hib9#P zACga+qo?|v-4N6pSB#=#ruahf0JtkIiN=c{=gV+w4AQ@!Z*~as!XAGlOtUW@{NHw1wz<6 z*op5f5QMOg$o^JM2qTpJ^_u@dj6%>lnK*=?Z?Mai{q#-gas|fLP7}3S|ES&eD=ic zd2Dc>z7F*Fc|L^V_B_br8Qn__VHWD9Y6wFgm_^!8omeZr!5@$XW{&nFC)Pr5@W*6< zxL8mBhAw{m8 zVzaIsuyS794t`Ir)u9kQ5N|FV_pgULZtk3kgwpDyJ zs+j%JCfCudKkw+o7sfi<`}%d1S~sT z3RhZ7zPtthX*<-z{?ewt_87+B^I>F9zGikVU+6lIuMEM>{Jo+VU%x8Hm*3zo{yq}P z7rUbPve-F%oepwtONqzN@NrkZUe+zUYl(Jz-4EQ`J0L?%SXJVS zdbRl?TL-@Q2X)WqD}mT-Z_U@++F;v)ucL+YmA>kHIj#o#_4smHebSEfk8aD?{NR}q zd|?d6Hs|YoP^vI#4A)>&yANLtgEGW34cyxVcDzum8ecwyoLejW8d;UE{=pLdP9yve z67Q1a$v*zhYrB?ke+#*7rHEHNxVLvI@MSrrg|l^U$d?U4+lPd!H*xPkS=JZ4|J_!G zw7MK}Zhw%jlPR|kUceXm$eV?f<1fK%8z~31a>+}5@lRi>8{UPlA3|Q+Hu7*HJVL${ zZ;+Q2U#F|dm-K2;U&xQBR(#_$nlY#Uv?c$;ih z6J#qlx24CfJ?9D8s;0_T zZf;v|i7eY+YrmH)Ta|Fx%FS)7*3MkF_pnK?%2utQY~|**RgY_I7bi3uAzSstvXz_L zR<+F7rf$FE580~r$yRP|TlI*>Hu6}Lp|Vv^DOP3z1%A~igGO6BGwsLdZs#P|&!>7;uOxNAs)3%kH+g3fYvE9FI z{*AI#Pp#|9&26jEjIr%>pwTMXe(a>L+}ySrkr~_bhwt7aTaDCoUAeh!)oL5tKhOKI zxNOy$%T{h~Ta8wX?aSv3w#wv@FxyscZdbe@8$X0G{TlJjAw%(pU8pu{Xs%+)vwpA}|Y}d`-R!Fw$ zonx8{2!2b*d&?_3*Nlo7+~swy`ZW?~ci`)hI!> za&y~iglBAT{Bma>*=pn`Te-PyHR3e3{u{PL%2p#$*~-mrtC6;`tr+o(RgX0Sm#y5~ zwi=BY+j)2N`$^Z;=uEb9bK7dfWo*5J?z~sF8i~nPZf;wRaE$HT?H@0Ytwunym7CjE zBPL^e_iaN5%T^;P*~-mrs~Lo`jl25Fk7TPEhHT~Lw$t{TW+uk=;SJ9fm91thvXz_LRwHL) zJFaa)L(8^;Z7Vmot!8`1c4hd1>ax`=P}h~4+g7s}W4rFkpDW5%vm4pU&26h0o3Xv7 z`g0v+s~Mea<>t242-w(GU()w3*=l4gTe-PyHJUfJuYC35^Rm?_U$$~{+iIj~Z0q0s zehJxX1S(s(xotJGGPXyPud5t1Xz%gSxJo@B^ zvh{*&<>t24jLO)~?((8FF42rjwsLdZY8G#7U#ipR8eLbjd)dm(ZL86_vF+%2&g!!? zdY7%-+_stp8QbQYiuTZTH9L~6+}yUBnH$@uzAds(wwkfaR&H)v&1#M9){T!^?U`n~ zvXz_LRx1F;c6r~zFYCHm8IY~q+_swe8{3!$H=QqAtq90gZf;wxW*FPIQtQOZb~DIU zZf;x6R*mi2#uJLjRS;m&BBcB^40PEWvkhlt}8dU zt!Dqmw%y*P56V`n0t24 zs*JJyqu)WR?@r{HY~|**)vVXpCY`7qt}tj8EL*v`Z8bABwtKetzL2eEtg@Ax+g7U` z#`fmV&pRSpt%Ar_Zf;x6wvFx6!}`~it!Ck}m7CjEt3$?i`;+C{$yTdIvXz_LR;wz; z_RH79tU9FC7Aw4{+g2+l#&*rK2dwg-6&2aa&26idGGkjK=|Hr?pcORP%FS)7)h=V( zrQ!bNvehb>Y~|**)ok0?-n?S^C9>5lT()v^+m7s+W!rJ^V5=T$RZg~YbK7b)%3SwE z_0^qpU9DEhR&H)vttJ@TSFgFRyKJ?}AX~Y)Z6|lkvW=f#dAe-1N+Vmjxox!?Vy;^! zer++?YSl!xa&y~i#mm?}I%)DU*=nUswsLdZYW2?8PX6XIYka2FJ=x05ZL5_tV|)C) z!&mCMT2Yg&+}yTWEi|_8Jh`ZwY_*CgTe-PywW?%nw>`YnDrZ`4lC9j_wpw{Hw#V+Q z@{O*m6&cye&28)Lon^c8mRqg1M5{2em7CjEE2HMRZ#+J&x2~%dQ`ySRZL8H6W1Cbi zBCj6UMTRO6VSo zb*G%re9@^T$8p0yR)1FY6t19i*MRJeO({?P3Zq8w*?C`*r*_ug;gKnciM(#f&F1v* zzCON+mk{fz=yK-`w~M(AYMOWc3rtAE~-y^{euh$AYyPl%ZPk*p69r71PzyINc zpJBO&ro~T}YVGSG@1(PSPhOil4fqYJVh!dv>8vyul#tB#Ws_ugYJS=EE2m#Q zX&1F!YK!$R>+Z#x8^4qeLGnw#<*m&fFMd<2*gE5v6|b1t!H8G2!nR*b3j-U!-BoOZ z@ym+Wf9IDevwp`fcf9zGuwu^{zZ5U)DfiRME8~xTcUYUAH^vM{#0gM ztu4~=Pk-}UXT?4+{>1T>mc%KEI$l9%Ux}JZtm?IclF)5xwAZJov%JUH~03AJJW<* z-I>Z*=c{h#cE0+1rCS&Yq~EUWN4d^%GYe33eaj_0)5GQQ6V>KpVf=?N?s#yWM`(4SutG9!p*Ny>5S9l;3P) zoEGgV=@|%B7?Yigma@ir^>MfR7H^EChJ1k-u5- zwELFa<5`(&H^yFRqA{i2H+Vg!&rrQlTcu65%3G=OT-wbufD$#?6XTf@NLRbf&)vWC zIH!V>uJX@rx4q<>y}A9Xk#W!XT#!Opo2h+q9c{GuqRc6;j$wAC61cT@ppYsxuF z^Jb{hwmCWhZGmdw&=OsX@>_-eXVKQ^YiJwv5ZVs?18t9%u@v8yqh*m>8p^ecl zXg9Pg+8gbLE<(GbucJNC;xtY@(MVKfAqtIP|7tW6eGQF5i;)Pu(Fn93TGn$R@$CRz z;Cz?>9ib~Ug>dq|3p9gv4*f}|rf{pn67(iwqB670;U;uRpdCh~mRuWAE^rnZ@p=@+-)mtoh&2l=K8m<~0Y5 zmD4|I``vTEk(_H^-|Mt;+2`WTne(asv_Ko8DqD@wmh7{%Z0%Q}yr|x2`*-ufb)@ay z|8e?Sfy&4KDF4m;Z={nprf*cRn|eLPlE!$m&Hv2WPkHQRYux|I+D{GF+7Az4r=}$H z10;h|;(UqO*MRhno5JBGu)B`qnPYgBdl*?&m5 zKAW$@viI4Bx7m8-E_a2K|+H#V9JgyTLeFc1IxT%+aR-7nBw#LP9+&*yf28;~eEAa}C+$=C1x-*Oy&x?j0R>+2!WW?SJch+2!Ki zTIr(e%Pu$f)*Lr;mMnLEA2~52iDDm^v$)-2QxbVIE1mqb=PYiw8I&%O-OY6Vfweqw|ZRZkzOsIf<$#a?_N>?Uw2|%1wQ|+s$&~stT+6ceh(Y zY>IVUMb~{ikznXrD%$Sj`t=nb^;vG3uVi!6kI6Z1WpcR1rlh3B;ifQX?Cm~Jjh~Kd z%;G+-PFMM+v8?+zKQx+=k&vXMu-sKg-R}GdQ<^c*`4#@=PC6YjRh=?>>(nBW=!L zKGW{FH_73i?3>kFCLFfn(lm$rl+3A96;_qG7CGFyc8{Mli6yv<=#^qgJvPSj zgWJK`j;kEdRaS?TZD6#g3d8^s;fGGc%Z-LUbFq; zu2mQ1?#q`E&dxlhqZ(f}`C+ye8poP=@TTG<4GJR@nZ_`XWcw%c zmz@5^snKTJNBdy5aQsU){zZ%$If+HN6gt02k%{~ux1Dxf31=(L)p^ENX+st8j0mLN z-^V)Yr*gQrcaL=_J~`bx$em(twWG@B9Oql>wrx4CvWmFeJsw`UPVU3U{Ow<+X>H~E zY{K50un!~b-#PJAJyDuxU7Kg=QsVWIe(Rie6uQQo)0A@xPsyrVN;da7{M5IKmsO87 zPH?-aZB-aGZ*d<_NsQyC{}Pkq8JOr?g@tA}n@vn=YGwk*RBopcmimO{QTA)b+F?<< zp|OMey0PhP0`=R}^HVD;+3T1on_=p(*>17L`nRR(Se#SG_(&X`9;I?*3ir&_4cp-* ztcMu{=saVqvZA~knZ2yEHf!*Tk37h7XFY;eOUIQ@?&C4+>$vj5ecbln9Wq@9(T^!=`er4@PirpY_i^J$q$G0C*;aWPX8eWtc6yoD>& zSKf0Coo~)j9xC3Wvgcv8`zVTk4)<*JUFnd+JzITOdgO5bTYb-R&%M4+Bkac+Oj1=m z!+cqFS4rVM*InQ1V}A^~VifN>M`g@?PR{!7c1yR$jLZwU&QZ9GbKiDdOXbgPPuDcV zmyuNl-EJAK=SfU?IQ70Jdwn+Z+lQSpp>dPhT2m&TnCjH$sD$*?6wTK4oW(zzSL+-- z*P_0fB((Z!^Q^{%igNXM1}X!btquOZW&G{W*i}D2IM)|gUXhu~;YPyTnDce6u~#{i zd*whm8Zs!Y`wr*Zet3(y*A*r)(LcthoP1#0$XFwQyFWD(#&XG(Ykk`wL>KvV->%~ zv#n74GN3||L2`z`lplaZ!pp{X&0)I_34y}t)Nc~OFsi@YaY2*Ff zQJPP``gw*e{)wp4G1l2nM3Xpv8=8!+MpMy^Xd3zynvTAR&O{HPv(azRx#*85_ksK; z&`Z(Mg?XkGt&IBlza}~#y#T!u?TaozhoTG7G3eE(4_$=LMz2NZq1U6=qBo$opi9to z=*{Q`l)lve5_&7T3%w29kKT@cfUZDKqIaRiim*sN?93=n-@|`V)E&N?r7?Lyw^w(BIK#&_B?F=yCLC^aScHLB;j*93M*E z^;bd*qYcoaXgFFNZHKCy_e2%Gp=c?Nk44L%lhAVLRP-D)8Lf=YM5~|+(5mQlXbp4? zS`%H5@?L^}GkPBS92$ncj@CidExQXq_r7JPeWi8wbE^=`3iK3N*U|MNLC*&m6b2oa zt^BCx_)!CGWu=k1Z)S%p+On~qKajtzLD$sZ(t6Or(fVi7%%kW zD)!ohmox2+W;QVXU>r36T=s`}X%En$XbY6S+i!zTJ6UCQwbNUK}X2=q2|2zooJu?Xk*uS8d(*P?f!x1x8WE6{t; zd(eB)$I!Lt^QipYfhxWBq7R^U+okf_0xp17lr4H`HuIdf%0qL?oVFTPeQ!glp9g9W z)CSmfSI??wtIp`4I)7K^TGe@up*o|=>eLqL#=`rrgn2I_m`9z*<8^jvcbD&X|Mv5^c{TXle8@RON3I zS_6Fot%q(#o1;&n?a?hL<6qCy*x}67izcdVWhR{x%v<{YVU^Upd)A6d19YaBM|S6lo@+&?G4P+>tefxdSTK*6xE4+lo<1G}d^3JH1%`WGrj5lS!E0{7HW|dKQ+0{Aj@~Sr4 zo-=!`8o;o}Qv{fESzCF=WGbhWVSiPWd8+?Bv6uvuG&CrP})tiROxq=aFO2D zH%t(ZzTl)y>F^be#&OX6tT{x%WYD~8Ic$Wzpl6v&kbz;qb6%dwFdLS@CMekQM+zt_ z%v#oLCrEY=Wbf=|5$FB#g*+5JGW+z_vM37HR)lg>hQGL0wzVwgIo1~AsCM???=j== zzgf$=6kC;7oonoC2YD?^X`r<%^PH5{JhV}V1KS%IjH~FRlk=X8*4otGG{#=G#yup@ zN#*iPRBq2s{k!+<{@t@vivK@ZzqIqb#NVC^GV7NIoitQmY&OPW#g>{h)LOdzx>>BA zlrk&nr*`kfe#TsRqHy)(AC++qBT>^E>y`m~f;eEBs!MXUGn*%uc% zO%LeDS!<_<2zMOU(KXC@ro1tCa9Yaj_v{pg(+Rh!mma6Rtm6vzn_To+6K;J%eNr?( zC;!jxW195&iR-Fux9hpx|H>^~FN-TJ^{3e+Pm3Tg`9ve6!px&appltnKbrDeSu_$cI2{t6>DRBWS%e4i>>G z*b85Q6+xYNmTV+Rp#SgZwIi+aWVZ4}J;m->=sf?e_uRNC#62aeE!4RhyUO0!oDF@O z%D&2SUeCO04ysKyX5(RmV(Uyg>ODRu9sfzcpuDjA68n99-NVsF+ZEU$Q!6%Dx$iEHrcAIO1rTJKZLudI&U)A z^}-vdFY3!if;I|qhQz z3FCad>!vWR0K4pZ1La<897{l318h~S)Xym!8lx3atwB^m37@rAr?HUwc#VPjprnz1 z1lk&%jA|@271dgVz4l*=`05^p^nB>#tj`QZwbrk7dHWqZrH@^Py}D0qZR#fbIe%-M zq;W=1lr*x&M}&_RPS&f?-e}g?N9%eCfwa;!>~ib1@|9hW;^}nVjG*i_x`8Nhx9*P< zN9+E$y+#!I&PYU>HQ zFWL^GVH#-AwG9>@|X4^wuPvWMt z<>Z>z>O9TcWoz8seSdE6>$vBa&O1Ee`ZXdwg6V!gh3DSPw_+IiX1$v;JTqC3wukpm z=4VAx^b6KA6JmMb-hJ-KX?pg`eyG!ZoM#u~lT*?&5_o{{l)g(7#qT@CW{hAq$QwO& zAMsD-ziN|I#&V7kOj>JAK-+p-tbgAitykod)~Td3>%Nw)aaUiries!3>v;*!YtDJ5 zue;XO*Tu%9M)~ZdI<3A=WkCI->8qDGVejb*`(AANpYN0t*E-QZ=@WALbIkFlyvv_` z_;Zc%r%yt%^@J1dr{>Seld9)A{h6#rmd#x)-^8EWjXxUWj7f;gn0BiE*y|5D{n?p| zKRka?Y?a%ee!hhGX&I*&pWOZ7ec!*uXFvYj@AgLznezV5sij-){w#O=nQMDz{rfil zJYxLm>&u8p$l!B9rG*~}x|VSbk|4=`aK8pAJV+hHC`xb!@Z zY>m6Z?B|%?9Z{HvhcL{hUbk~9fYt}hc7QM^nlMujOhcmZ6`_AqrIEd{QTwA}eqEsb zvDU(@=T+5x%3Z}Khr9K>D&rN#S7BCOWVv%~=e;kTtNeDmx!X2{sUu4^Vb*yn582L3OG!_k5~IskS><+1?H@OLIB!`g4NB*5 z%b-nF*fq#F3{7x9?1WwR>gU|oN?>1oxH%^b&zf?qN?p6`=p2oib2~@p8BVRguq}lKw7n_yyccI1I6(x;+M*~I?veZczuo~g4&9k zookr5lRtsD`)1o=KlSkcY`ueG%Ghw{9+ve$JAPdZX8VNjZ#Lo2Hg5^snub)@GuP1Z;~ekD@rfMY=3Lv9$0e>jO^vW$qWx#>gT029Gj1i+P_xC` zV*PuNxHW3vl)e8DH#;bH+)k|yWFOc5gpZTKp3i!%xvc`Byw%!*wq{KAsiw?@?B`Il zrc#If1E|(0dZOVd3CtQpOPc38Fc|7X);duM3Wq(H^9JUCl{xP?X!}q8^mhCifU;I) zy+hCo9n5|-s@>{Dd<@CXQ1Oyb*$sjE6@q(GL$<%{(DfZg{ZBa%>EjbbNvsZ zvFO975B+<*^lYb|k<|Bj^sKAC*V7&JU8?$^XIQl##udzSTY5G%>pNXk505>6^ePRl zP5o%1^EdsMmG09~t$lIa&pkxzodb>aXhZxhP|C4&e~UQ!S)0=LKmGQz#R`k=sp;8J zJ*#Rze{0t5l)v`8(rZ2Y!mg(%^wS?~gwL;Xp!89==CDuou=Z7KwXf%qwdtBhRi^5L zJ(tXVO^|%>Yu(A%+VjEOZ5LX$4Fk6JoGy3U>n&UR+h*$sgFP?v>b(nVE5pB9gVc5l zwiVH(XjAldRO_C1pi0M;C}qyG3Z*Q0R-=>&EB-$8KK7@g_~Tbw@&KyFb3Iy?(Mbh* zHapFApRqc0W36!@7N$IC-BHhTpJ&BQ`C-rByp$q)bLYonTvz$939XDif!08uMC+hW zp}Lm+%(9*j%X)uE*S6;E6TJKyGL-%lv3g})`6J@9R}kGYo0z$a)s^dQ<3{S@toevXbq z6*k%n&ll{|URXNS(KJU@f8~B9D*LO@FWI-BSD#KA>74;ROWyz&JJ0p3Y!{yG9O0SH zI~VU*$4xpOEo9~_UTgj$N8RVr^Jm(==i2)72eb%!1TBXCj8;XDqK(jFXdCoTROg>S z2cRd>p=cqm$4{H$;TZsbDq0*>xh;jRLQA9fqh-;JXnAxqS`mE_<(WPI4peb|1wEI2 z#iSbgfup3aW%n;fzeQ`}P8_WB2)p%82x0Qn=6F$}EG>!3?i@$;d|*BH>!9^fu+G=> zf{oY*>s^sHXgK@b(U#~iv=urA)w>~+(01rlv;)es-TJ1S{|dA-x(MZ+P5(Ny8~QNX z1AQHhK=+|h=mAvmejn|}KF_{-ct+8BCv7151^a{0uhAi>)+&dhJj?1Cj{bsUt;9vFzLL2I!p+J=dsb7&}vj^sYk`^Z?bp8IG!txdP6kjOjUSeJ`*lb2YWT zT0422jo+rD^pDoF|9&))ecE;F+5c5&3j3?kR5a@uQoWZELm2h^ z=mOC9_`1VT&^s1c&s?hyvF9w_z}%-a$CiM$SzK3jb2h3rkMicPh0aA)M=wFu#$Ads zp7LCdc0nnRR-K)X_F?}@G#Xui+V7MojCvnL&&;Sz)V>`y`X>RN7)ZYA4fZ* zo6uh9W>oL;*zYJb=7`$gI)u?KcS=j$15|l5VN~AP^8s&Qu2G6(>ff|I%{8_EJgWZd zMO1nE5?T-4fvPONf~qXOhE70tqtnp6sLCX5iQn!^)rYBGX$%=bSbL#*-$~CuDGjSy zeVW2$&j+&ZnYzREF4xmOZIWMoww}jtizJMQLuE3xIYhw($biML z4z|IEa1_cgV5korVJO7GrJ#58HiEv7b_giio@&qzq9Fqo!^5y04#9C~N8yTw1uA4Y zHuarm?tj>EbDO=${Hu<+C&l`2pETdanZD%MIoN8RsPor>&M|iG`+%o%|E{hlOwEFa ze#cV%&F@E~PIdXE`Q<;o|5k|W)EKbJ{lV@RyBwH0*tbcdlM<3&d?p^gxj7d%R#mVt>{4)167C3&n z%LniA78`H;3XipZAmG38!;J5!E`jZ3;xjeNkAM6d1SVfJCT<0GIrUm)R-PzY_4NlE zZHCqM(%w@4HLtB}wL3b`E*n|T7P!v~!(M%K9qYVSfp%2q+4-IOd9=XRd9*0_m(^b> zJa!&>19_|BR1LH>$6oVn6DKZ1FKC`8&{GzY14V~!%o-S=Z~_-B+$O;cS*G= zPAez`TR>};hu}DrCjlBm6ik2&SPZM6V9TE=P=sKa`%BSId!>HUY{zq#(W zo3_6M=g8jJxZD2!^qhtJ`3(0nAMR&I{@wcu)^}U^;7q$@eep$W{5&f%C?S^HM=4V? z!tK?`K9ki zYg0JPwgQ_DC7t|o-LL&8ZL;ylwEK$-+gIOXJV96DPY>gd^-)QCJWz`;jm2KJ#=SQE zdr|fo|2zG=bx+v(KC9XixflDpyY-Et)*LtEgRJwJ)1>elQ`}QE_l9e54JEnTW~%-8 zBYAG$n{>Nnv~F!(SLNS*Jh$&YMiZxz#7XN16P!59KPA8WT<$6JJkmd1=eO^bnKU>3 z`d3O2HlLIB`ui@@ylkngyd9J>lLwu8%}!v!LiKS8wwpLl=NLPst;QeBx!h?V_(quA zHHXaMp6%PY=ltE>${Ve#==}13cen2MYuqh&d7R_=*8P6Xv*cd!@9x(58n4S;^NZZh zZ_ja4HnQCFE*oweQ#N#c<)hoplr0WhWk+Si?Vd7aI&Gd^rrpP9>Sv3{3%M!#+-@0j zQZ=ox;-j&R+s*klVuCqWLwmQoQ@yM_)-yy0sZ5$%HFwH_{8KS;pW`lzDjPbl7J(Xo z-FD|Z#a(TO`#kq|8r9aAb2oDCH&n23rS0;kbD3IXJ2#nUstId`BC0SkB*^BTp2!W? zG`p;ZaXmdN*@tUh?YgFh3jZ!V3X?ds_AGndGWP&0D}mVxJ8iW7zMHz0RyM0{4b_*v zeQ^<)85t?bxGNnF6W)U)n9eh{CJpC$v(>L`ZJWHy;T~w)OgiS~uKH!lcb0qJ<=btO zvwXYV+~vCl`K0pgc6XOIeZyAYz)^X-$w?obqw?lHCue!nd797m#I8)atTIE<&30bS zGD8w)bDv^mfPJ5NB-c9tO|YrwTvKhk>XSPxG3=Xia=K;3^s$k293FqO=-+ z?sWO1_Z^e1=T5lqP5iaCAbVqD?r*bh=kzI7nfwR!(tds-XV@C6!C-4P^HL|A?z~z&n73!^5er&TVD zUmj=fq%v-{wfI%V_!Ti^Nc5zULne*r-*+$u|4kX(<}6hFs1DKD?!&Kc#;+uP=_xVA zTC-64>v@;OoFjW}kJY%bTR9r9jntJs2F}vcC!#&WinR=Mz zo_D|HwlV#d!o@2no?W1O0X>{JD6f@g?sMFI&*`@JW^9n*q#@ZK*w>kDD|cm7JA| zBQyg!y*g*=cPkB^*}`qH{(S)do;Ut6hqD`!5!T2`=`x!z9tWLc>`eXOo=KqHqbxHT zwadB6p4;toe#g?Z*Cy--oUpUL6xbdl?BBVQR%|RX){cnFnz4T`XS*Q%DFnv*qX4; z%O2LieCodqYjaJ8*xdc|!-Tb#32Q>Sou1ABRkjN2BEoqLbe^#_W#U8Eb7-baoO(F3 z_thp%_d4NRpa3}Adcrx@gp)M2e#VvWth>h(tvGK5=saU<#uM`cY05p#)A*g$oaM8K zvnXCe4VAM!LKr_ZVN9j^s;|~yhfV3YpRnzvaOxamr#z<_()~xLBxNt3Cj43M^fNpv ztm7(Q*^bA|w)!izVeaF+jiIi|a#OqOc60weq@v<>o0XC_LvK4NuQf(+yYbr%i9U`g z91NSYx$(IW>$rxu?sFm>dxllnj`w0;erV|9w$I>4GB{+psm;vpmZBv$%OAR!Y;H*j z_V+Z(Fo@bkdQT-m9_IxOrI-BC7{YxmGk27m#t(mYv&VI(UaswD5KWmeYhBZvGUL9V zGL?HAzw*+n)mEIwJr3i?PlQ_q&0Z_@5>I_wb^SDT+5vGxsdG2638X-FwiwvAsU%wblwT zv-*VN`h$&Isa87lKq(@gUa0aU64gC$#s7R~pEUCH=D5ZQebGT^KXeG%A03A3ybDpC zcQG2xzRD)H{+TGY{`n}j*7xZ~pi9{wMN{=M%DMhs=mgaM#%LOG595xFd{r6OJ%4?R zuP5jmo;Ark_0YQ4UJW;WmsHQNgn_19#c_0b;wxPN)N@aje#ri(pE$GD@C-3}o(OXf* ziq?4xoqeA5u%2&x1HA+Hs-*Fq1a&5Q7yJ6n%Dd6)(N*XMRQ^7J>U!JIwb=iJu47;C zDL#PyiLU2(i^ANeXTL4_DB2!fjE+K|KqsT5jeiQd1$CDveGBo_%TyD}k110#`CHE; zXkX97=$otExt40KDW8;HHkC{Jc^N%3vk015$18C6(thTmJ*scLw&g#S9<|AOrs_Ue z3YSrGTSGWZwA@?KI_Q}f`y07>jw9=D`}aJD<4@M}C2L4~dkxJSScj{_m6mf{+cTt# z%KNjZ%KP)E%KHnb%KJ;G>c8?u=V?D2-GM5^lrgKk??hGJUquHycJA`Ni{q4e>zmgq z?{BcL^1cuCqi>;*c8YrR;bGR` zrUdlFR=>Zh{5m&qf7xE|@&?wYDC&WG=HC-m`Vi|`OqDCsA871uuV3YU-p|f?N3FQ3 zU$LLnO5{9yt;ri02N&nqWYBgD`w}SahShKVfmUPxPgG^$INAg~fp$SpqV_XHN(+74 zz-Z%up9-tJhU9fpO7o7aI2QJL7Bpp_ev50JlkGfv-6!`rmcd?WQ`S1KZQ#7F9JAMO zvhKYX=9t2vje(J$!Xa=P%z<;D!Ygv-N;sVB`sSLhUkPdd!&_i( zELioJyS^F9{|nCi5}b;8i{rcQ`g<^w>z}~skZe%zd!zNuW$nk*8Q`sW4(6ffqsLN9 zZcb3{?X^`2HexlUDI*zA-`2LI1~p}$q*M!@hZaGm`R(Na?YrxsH!)C>1$@0%8Qb}n zSYi&RKG$fYjJl0Adsg^Kq(SF8H%aV!v2zbGBXi<3pn4|c)UC!} zwsEVt?bttN<^klkHd@cG)NgRx5dIdbe-fL*H(&$$M9Jhj_txKIg=fd-$+j&T-tY0J zyu1zDz(2sY@Q={uMdz`>j2awJ?7Q)vkOARnPtbku%NN#A~4H znfl6qaUD4;_!`~{zkzqbZy|D%arXd>)e1u7q@Wgj5*`4bg9pMFA>T9!UxkOj?XVtv z6CMtE_5+SZ3}->w7<1-$BUphMIWJrc**6icgiYavkUb0GwXg-e0cJv;p`aDK4`#t9 zU|aYM>;S1F0pCh7d*M65cQAK`@4{^O3G42MvK z0q=%{6{b$9>G z?EO{e-u&r32BoJu)pz<4_QaSnW zJ7k%5Nd1PLe@X6zq?&O@tU3(&PHnK-nYtR;qP{@aLEqC$CNmxjHqo$dL+f4MZ_y3w z@vNeA(KFFi=*!W1Cw2>ZCtB~pHY9>h=wawQ^b+*t==JCq&~Kx^Lf1c>wgEjDorl&u z{TlRx=xylT=-PDX&CvtUlhIY^)#wM&ThP1E`p#NIb?pByD5^K5ZTBk|x%eatdi95l zAfxN4iMg+R-h2Bd{xv7(*SYg(52em<)bDq2Q|jXwS2{6XYCnpq`Pli`OSY7I??&^n zy8pMts4hmO&d180$2qNiH?B9sUfz=axex3&*EQKGX;Hh9cZXkPLCql^z1B+7T6_fPvcG>5bVZSPf#(Vta%21?xTpYfbX7NAcK8$xUX8-U55TwQvx;71l*Mvgh9EtXQ>$n#0mLw>k^Yj@u-^+ItjB++V74LVmr2 za5Rp)6DpqdQ1@d4Tm|*~GS3s-kNIL}z63sqc^7;L_NNSy4H9!fqcHy*^NCRYN5f5+ zE8!Dx8AOH%?R>~E(%X_sBdJ5Ow?<~-P3U!8@8rz>`deJjOyn;cTYIl!v}RUC+o5ZS zrzMwdJ0wXZ*$%BAW{gJ0>_qJwjGm4zM{Dh7E&Bh2s!gQ++1#egplBKsO7-i4xT~M6 z>CAB-CDpSjzZ##(y?3)O`+uY7!6iOYIL3ZhI=Tlq-8ts&{5bAl@_aaVJSfj_^4hfG z(xS4(m0k3?UyW(Zp5Y-Q^B2vF4=Lw~kM0K^HLlC}vI@UunhYa)rkwFVk|V9Uj2$l7 z+r;I~U0iG~GP55!tzDNf`4tP;Go-Rl#xp5ixTvDIYH638ilyaMW%G29&(bc_du8{{ ziC0t=&n+%wZykP28YZ#-HNLRRShhY#^MJX_q%wU2vogiq^o1ont;x9dc9vfCJ=Mm1 za=geNysrb z>pOvR@7*X5Y7cJyo;=_st-bOf|4K$W|J|Lv`i^w=>Z|0x&R*<$I{UhNv6qM_{|E2I z{&;7vzB66?y`8<?8(ZWT1 zYdv`e{M$H|AMb8oWPoV@{eAEHNZuGg96PGTrMk@}t@{}2w>JK%P2AW1gk}v@dyoFa zmk)DtMyZZ@HIDN6N3?v{b5UrEhv$y-q41-*B>C~~{ImX2G|d%-lQjZSeiTjAt{8L8 z+j#q|>b}X(XZTgQ*?SW+_X%U5yh@&xqTtN)M|Cmt$VWnZo`KF(m|((Ki94JAn8}O$ zsXbkyA1LNLL)E3Dq1sXEgISwt2MO26#0??k5K2bY_12F3mgLQ|pg9xG6SSck>q%4E z2AbLOrf%KF*Z;{Hz@X}*tBBxg^ak`6MfSg{#wDP8=H-|o=ZmR~gnAu0U}-fuW?y8b zJjvZ+Brqn93;@y4jlZR^&0^4^Vk z@-v2d+8x%WplZjgoUO9+bw3w7TTaRI#Z>lco28Hq&DtK%1+t1M*O2K#>b}}Vons~W zAi3A71Us9)f)XeL8FYfYeJrDm`>R6E@UGXE2HgtW=TlSLfTI&VYs zw9@vSbl>jIrgMn|BCpW5@gcJj9# zEw|o2`us=dV5-mUM4$8M+)C6>^?93pedg7#q?6_Rx8UZR2F*MV#-;x7j&H_LpI0VG zlHX9F;j756DlRJ>Qn|FWP;U379Z(tC^xJuM)(efg*~0u~Z&=36?~mKGyCtOiE42K2 z_iB$faP14UWUQqw94{MlIUyUzu~%B8YnBIl4yn(>P`6f~^+Ty+EzIA(%w>P=^Dsc4 zP8e2J8qdiuEsXO)hoV6RbLM2rVa?*TZK#je?>pCbN2QccuUH$*X!EqIqkBZVfAM*l zKXmb_ZTG4l`RwiEOXO48>$YEc^YbvfU0mIKL~t5;EB0~uym9@9l;L(gyeP)U3B^16 z8N>K6Hg$yot-E#8imT=iuc**T+Nxt8lfJe1l|S#cpBsN|iPSOkPE_AHb8_0_Xe^`9}Ib1J+88yqo{5^&ET0iUV z<&^RwN_%_-)5*NiJfyTp?-4DkltbOqO{BMqFy!C+@%QxQeZ8j?vgV_7PxtVfxTk&h z`=0u9wkNy7W&S6j*cXs-j?Z%m$E}afFNl|Po1>H0b4qy6gX51(J4s$M@h`vLy&sR) ziR5=7g_S=qzTau}&$Q0_lG2#ht68M=QJ>bxw^Ee8>7;EpTJF7@n)a(de*byE9x}7P z2WwrvK5}iA@-~}%{l@2OFW>Clmv&3#q<-o%!k&z_az=6vLyuZ6T1xV)9tFv>heFEF z%+;|@XXM;WSl8@JkW8!nt;Z$i|0ILken0t6hO%WkE7%^tN5BqHd%NiKLi=sb$ z_gj0wN4noy|F!G9Ds$V<#}fU&x)hb86zMegU>Z~&r$frl`|sp_ zJc$=sa)9FApQqu)$%Ipnk%v!*>V)lwV`l6nx6wLLO_sFPd9t(IyL1{Xbuyp?zkA=#|LRb&!MC-=d+Y(Ky?K5MEem9y{ zrKK_cm*Br0jwWe}`TdA>?G zz2H_@k2%G9+&LeH?zL@e?YEEXV2<8vjit5ra}?A)(p;y~-VExzRC`8c+eCPIB*3Cd>-=r(qh@~`q54-&%>;? zqY5IMhASZ=mDyj}6W)cn4|%5?^@dWo1yWXKANN4`cg%y}H;}c9unwJe4m<`9gX{%2 z?^Ln3+O#d>;7G2|fw^!2R2#Dbs%^Ovj)iwZ+O6<0I3B(NC%`x0MEGYo3H}YLefS!x zeb9!U8L$=9bKVP{0*65ALCD@lb4L9vI2$v24|$W!?sF`J+SgbF?}BlteT;MAFX23> z{fqOV_JbG0uc4mR!?`D=urVxy$H8*g9i9erU4lN*Z#y6F!^0+J(t7L!_a!SV;Wlf zZ?u0-`y@Jp`?9P;35lCi+CQ=5}(>+H)tj`YyH3_??Z`H>kKzCQU^Iwqp!S6b=O`Q+N)r+1X3l^*rSO5+T)&U=;C z8lC)1MQ5R>pmp8u3;%+8TOZw$hf?bLzLwm(U_K4=ndqz0&!TsrHDGLl9*mxjUV^?H z{UCY^dMElTbQ2!-Z1i}v-UVHSUW?v>-ifY51CWXCgC38rLjT{aYLj>`t2XCZlq$3^ ze=n>ZWNdBkzW*HghOJ~(`Q72%dpA*8HM-v;a=u@ek@3=aMR6f(Jjwka|84D$wk+6= zRy*9RgH2D``3)XEKfkfBdr6d^>T|??9$<$nnLSXft4j;t_Z`C+H_n-CG(UE1 zm5HBqX!-H(jEv8QOGr8H$)##qt`5imoG=R2FN;0fh7vpB6Py2qHMd;)B zi~!f8?fs7>>W<`%8(n0F(~i~QcLS*YjdX;aA&*l?Uu62#Ven|oCqc;u>hI`dL;4g$ z`UZ2IK0$l$%zG=D(C!&t;bemmv=7?f*9upX8CubD40peivU(m@?EQ$Ddm{%K=*jwl zQh$69R66Ry4ww&iB+cf!njQ7e$uqQ*ae28S8#lI$V~MiYt;j-4asQ26VdJrB{(|c& zt6#L23tM+q)5ferZ$|Gxe}b;<+CA%P|NpAa`}MzVE*OGOs3p{s@+|lKNA@wv-)gkn zdi(u-_Wk;g>g>KevviTDJ;$g%KfJGI6!$NomXe?ItL3L=&z7B!RCz?7E&sl1G>&Ds zx&KFugZE>M8l1=lvIKFw@gv0H+c)0nFsf@L4!-@J(YUR<_uBh8hHvN=S1sbRq5Cxd z=*!IaGkP~f3i&Ld&LXbiKCZEB*5t#k{`;7`UlM3HS=;M`4w-zlbtipDG z%FsV2U%9x{k9f6`xZd}14J)hiG3`%0{$3Sj*wE|wNZ@(I)7Z;>KVqJ?ritr(;%ejL z`hj`!Ww%BhI7;$^R~HaZwvVT{l3m*I5q#s1KJ0)7+elXte&pV}@omhYm_!$=PVc5Z z&(3kDT<>nLs~JtXj(LCEB%hZe2?VHUURIHpvy*wzQe`49H z9FLi^W-i9axAuKFy%U$5r_RF8_Q%O@6G}AjW0E$6b0p(=m31E4_LZ?jKdVR2%ecrZ zq568su>Ik2aFpXTN4j}N^vYXb(xG?rnlSgJGE1JDpfuUOF_!4ZqG{rB!GEqvlib?A zExp_0tGTs(lbw^pYY+{WG!t%*M7XwJNgwWD<91ZSt?d_LTbaNh{Y;-PqCb|l}3cVJ+5xo_?8?6f71f7i@jV?m3MBj+sjNXp^1YM^o zV=MFk^mKGNdNq0-`dRc2^cUzud3ZaZ2cu`A|NpF1Km2&<3mH&4m)om)^fTWqIKVu6 zLACMUgSeMlZ@(|&zvxZQj+tc_LB7#*G??X zJb=BPm}@VzamhWGQrzns0+I{8p9gWExs+>4lYaC#M&nq_QHxPOyYPeT5d10PM?;3F zANAo;KbZuoc70BnjYoOa;~w>6&VMg2Gj$^BcRhYX+#X$F{kFp|qGpQU;!=ETx7Qq< ziEgSeb<@6^6^+B$&MD1jrv+gs9qOB+ZbnpKsRJ&#u5@_4FLOk?Pjn4?o!2E;qwcjZ ze-ES0yUXP<7#Xk9OQB<3I(5Ikq8zqT(DLKm`TBHZEIC%-Tw?cJ+4>Z_0Xy!YEBPx^iLU~GYkJ*<^&BlRto>*D}7rNFHD*&qC^PZ`Im?EMXL#tfZP$?`~kiK<9qlbFh8KIwfM&3a+r z-TU$+*u)sMtfWYOO}cBARy!Bw)9UNP5|>s7lU{Ca#yLK%bBmYIdzeD4Sv+WFr*3l$R ze!Y9&-ZYLS+Z%s&iqc!Nb|AIA@q1Zy7LU|o3-h-jX*~vkN_8}n*6}4ewYwsbTysxW zl2)DTBmdsdPnq7GF1^>8l-fUyNbj}L^yZXB1~94V?TP;lX!-Ykev0(^zGt->KvcAR zIo~Ry>sgWVom6bz?nQD-Bv$o(7wMdifBE(9e~PsF^@^Tqj8S>!ul;irX}vR=))B=O z3m4~C_^s4Rr_N>KcuwQbyZtHC`L;{vhDbV_kj{*=BV{@{Ucq_r`6aGImCio+TaT7M z@AjumXHO>`{7H?xQ%yN=9LF>xlmvrl~2M*h{ur?c_J;tvY7LJR2_{!y+gSPJs$J>&Y$EE-PdG%L9igcG*N$je4pTtt}lq6Z_7gd zRQIF);!Be9i_)m?T<8p!)14osQAHc|LmDgM`N{Lxz9618_*;d)JDop0n`%~~{=7^e zJIROD?NnB>lMGnht_RojTq&*+PS?NU`e3e4;rdIFvQw~4W4_I2UuXWbgZWqL@QVjeEzZXaJXd)Vt9Xgy>#{^ZBI)AOmesafJ4?Ahu0t^VjslkKqD@2J1|RRt-2 zR^g{3Zi35_e$;kH{m^t9Kl|GT`{&HO+(K9_RUl5a;yLT%;trfVGP*2ZO`s{u7f9b| z7UJc{yHnq(`+syS+16Ec>yCR{#;MosccfJg(d((-oa|-hz?JX4yE)#Z=UdXVlTK?0 zZl^}d3}cGls%||@n9Azj!?fQcRGm?{4aq0}gX<&VN=AtKkID%0lZyvElSBEqwBk}3 zsIH{*v%mLmqU%Fl(RgV`evbMu)uo}a%U?oUq4W&I|* zuly>{D@pr0!c=%ZjDA7q1}(U+^~0>7d#^sjhm07~tMl-_-FkNJ*?ZWK&V7634C$QH zYsk>-VL5$z4ei#AEsw>8Ck>yWFx7sD?2|Xt@5*>#A~{0}3*+THZ7L&`Rn%RDIj7OK zKhf(X-#ojjZ`H1MQ*IPT&C50YyvlgD=}&!wR}<*(F7)L(KwnXhSCq~zt0*ifj+a(d zs*~*_w?CwxUE9va_PH8Lr`m8oulDio5v{#%lSyw0e&x@*Rr_Z8s6^TC+4q?~D%IY6 zN4y(x%fIQPQti!mM}6OC`lwWUBlnwd@o)O5H1@vlGksJVd*An|Kxt=O-ASfj;i|q~ zPQH7R@4LzOW3G(UHmm58{+M4j_b6G%NYuU}ej493*P4%g_M>*3jhv9?G?#>O8sWky&piCele3V4St^H;kz&5M>12?k6GX3n)0J(B5Eh;Smh@< zDSDk_@7%M^x70HklMv5A#53c{WZEPlj9K}~ zCXOv=)z3CpCEH)gP*L}V^OOCj+6rm;R~b%j!(20!;S%Rxc~gao`q#bEAXIioRI~Hr zIHmK*YIY0Q>mWZ3t6eW&$U=Il_Ely!U?`Cim(HEkb&34ZG?Y~oo9l=fDcAXip^2kO zwd)J*F~PL;W2e%?s3p}MK4U20$7 zJEi=aWSRE|g9+Cr>xr7E+u3!Ux(gyd3Yn@mmpK(i{=66DR$93w5?_r&4ap&Xx^iFXilIz zTpk+#ELoQAtNGbm97ItSv%N|&qhql{o{ ze+Il(kTLptdmqhOTW-9hJhEo-33-@_Kl$2UyU{~%Gn)_IC>-Tca$VFSyX+B!BPws9{8@4fKlFRWoL|xC48xkvZi@_NF}|eYNo?Ki-}C zYuUGo`R9yt4kl#{7?e1VXy4Dlu0Fq)sm2(kv)Q~lmb9Md)0(3i$|{IWvq|d!()lq7 zl^^fU*Q3^vwEBAF>r2$GTonT4=e44CPG+A{QLKd@+pqgN5_PvYUNF&#_ofc19z^Xq zG^(6^sI+AEY$x6CsD0)9vPC6DY?2#cg%RC{D)P3GysgCTaW^IFik`u!-?<37az7ro z526QPe@eu?p2?{D%Eifk$j7rAf0EUcwdM$h~*t?{S;RJuYEBO1DV&M^z|lNBNg6s-RimdTZ>}E=28} z-x8g6g_Uumdl+?-DxVe^H@c5|cVpj)nojz2Nx#M$Pv4xpk7{S4exq&04|(Qy8|j9# zT9g5&j-z~k?cxq>YnIa9uOxjN@h3mtoyt+;3(np)&%WzhQ`Y!2&ZuUevc{+JMml>X zQQ>RMkX%&R(*MuLDVYwuiYnYX6)^?Ia`X{>x7HKWgX4=Kk4^+DZQ8=}(ON zRjg6_=(DY`RVPyI?YL0wi=N$7JKHXds3=>=@&(KEHhp?#Q{Bx=jP(z$W>-{PVV?iZ z+{4`npX;!n!~rUL29zE>$I-AB=2sPJ50;*N9k#R!eI0IQJ3s2j>Q?hZ6O)i#RxfH z-L9@{*3P7kBm91eJUyf+)ibX;(azj>yG=*1$9{<(KWM*%muWt61DC)1NMUEc{sRK5d)uLzM_7I6tb7YO|t# z{FvI;hnm%cFOF1Ns>^NTHDQaI7^w(dxF4%s{Cr44`*WDfnzu-2K`NbJkjCctlOOL+ zZLiwLc8PK~6N z_lM%X74~5y4%Mls`@$+Fol(9{MOm}@mDWQHxdeOnGl1ZPW25 zKi-`$?+*W^ywlmMylY-wsddNqQLFmd?hLOgUQW=szaBP zpUH$F|K5-9AC67riRZ7t%33O}=ye6HNEOz0!WvIlam;^r@hdFVr>LK(tW~qRlG-l& zeahduysORgst0+$dwnGDcEaAgBQw0z?xCw$oayUlReu|k=H|WXNt_S+I3wru?(6$! z3a>VWr9OyqHt$^dycTKDi>f05)Tv&?yUoYDmveM=UzU*OZ2ZfwcdvS@d&z#(y|xp& zZ|UrPJE3GG?ODHwj6rK&ukD;SAUTo&s@W&YsMH^f}>jI0s$; z^Wkb(2(N@Z8{rx_4?YQb7Q&a{sql4J3jYAh;a_0|{2bB|`MIs;7mMP=sQK6ADt za*r{0arVRE66~kLrLYK6j$t`G3$BFc!0Tbi{|Di6_!3+Je+O5>_uzT(Q@9HL6J7|v zh2$x$PX)OY9tAIlIq(Wt0Iz~Nd-EE2J-i<3%*`9%gYZ_Uvo~*pFTr*2*YFPbHoP1D z87jZK;JujNcl@{G0dz#NKM>xBePeh(8~`7LL*YhP1RsOEo^HMYi&$g6{kj2i55lM5 zX81OI3jP&74fSpBXCQlrgJ(QJQ}6=39KHx2f!xdR1;}_M`~Yr&dJptv zc=UnxeA!NLE9Mj7ui+_>dmo+)x5KO9Z{cS6CVUOzwe!kG2S)+4b8&)3cq+PA8%BCy-x>K`s z|7F(-tutktn6peS$BlibIF@)HSz{cfMT&JZ(~f7tV=yyM9JYg5a3Iw4GYTT-hb0iX zHlz&;kk`W7oIPzya2)1()S-r)q1%LWbsOn4V^jl9F>b&~?hVL;ls|Kb_BXKa-p0&( zxU#E*Rvc2Cn`~aW%ZAEnH`pC^hqXG!H3eJ)hTQ_thJ@88Bu zym&>{B;Wdh>PI-L5B*Je$ulnxvQ{Wg_0Of8ThRDQd;B4F(%4ImFThOM2Sui#E z_y}AEUx#PFPvKdx83lhf>U zKaBg{a1G{B@OpSMyaC4Hjc_4k{WV+!6+Y)-2De~d4R3`v!P}tDleir|0Of8Yr0m0& z;d;0o-VNV|_rP87UidNG0KbFx!2{_R?}tZ0?pfFdBKw5uj~|Bp;3IG}+z6+`$6!9( z1W$#EzYIQsc{$t+uY^y*o8Z&%4oF=H?}KvxFnkX43-EdPTlfOp>FnQwFJV@{z6I9d zS$i2C3FW^Dd=+y?_!{gFe+5Ut|AAxSHh41pHJl4yhZRu%_1%`=#)9Q*;0~_e52>T! zEAVZ|x2}Ufz(2xV_!lUDwP+yzh}nK`Gl%x23%!q8DfQW{Fi)f%RDU?#T~mLlK3CVW z(S6+Y+{pEQk?X?}*KL@SF)Pd>^lW-#+s3ve&Ze9^)`LD*suAaX+jtb0*CY8YJ-(Wb zV?N3FYm5}?)29oKgTd9z^6%5%m*0JzKOdj+rMBN+kLFi){<=?-t}#ht;!+vNto-*! zOKuqL^l+&1>VaN}_T~Zn_F*Q=suAVU$n9=v%$tlp%{HE-J8M>0K2MTGdZU#Ne{bY} zE_xRCvlDE`oL-i^Ci*h9!}h)In0d!rc88$V_e#A>9jOoBgOX%EfRZgfgl*to;BoM; za47scRG<4LJQ*^sFtWv0@M_Hef>!p^x$!#Nt~pxYHdcQpd9yvbFX;_a(rDl1jwRk( zj;8V7gsC+C2P%!RS~iWGg<#TnAXFL;f=Xjus5Bk|CqvqBBL^K0PshyICrqYMXQ5S3 zqxxr^zu!KQ#$EWc?{CMp%q(%2X(jZI-o*a994^-L;_$6)q-Z5Pa~ zF{_qj!NIT{905DRNs#ZznR4y|b(ABUR7u8``_vBM}Oi{UI#+u^#rIoL*Hob2V+T-*Wpn2VSb7e zGwO2Uq?-z^go**#DeMogg##dS4(4q5o1yZ23zR&4D?An62A9Hh@IrV8WX{5rk>t<2 zFkkD;dN%IHEcsJqcsINc^Rw^)_&@IYui?X(cf*bFpYHm<;3mveZ}2Mo4E_qzegyvm&x1e@gEO4{DUdm%a4xJ3&w$Jwg)3kNTm=t;n$M{V zuY(7}Ti~JaNq8811uDL+@CeLr!Xx4D-1WEMQJ5u<%H2DVG7NXZ=FpB|hw!}I#`B@J z;5gIoHZ^kv-H>&>oY0nxB%hrInl&_L_5c0M??y;TP4$HyR8u3Hj5ojioPy>n8Zb-Q zfTyQ{ncp}EzmfxNJWZKrXd2X`=18t;#yESH@o#0R4qVgN{A8|Ind>c)%UUr1(1@{S zBgVdsm|<)h3`7s*cd2osIf|w{<5CJ!swuN9N@r92wLp$*p&3?GOVZK;nWTl2XEI4= zQ{*4HYih#jg53$|j_3-c&K%>fRd6l8ZQJ7GP+9u+Lv5u!TOp=7YNL+e?=Jf@$mBk# zZEpqDcDI2l#Vj}uwuNdh+CjC2?cv!__cMfi|HsVhc7iux?gk%)J>YiO3w{ZEL*^Qc zzjm-6=IHa^AG7_ojpnB`SJja+Q{Av62!3})YtBhB_$0$d+!HB3XXNvp#Wj1LLriN3 zMu|<_?;*tJ-7+T<*fSVnNLN;=pKItm4#%z9*b(qhmq~jpMXDyPr|q0X7~sA3;1{V0;D}R>82eIwqT|mH*Dsv)BXn6 zah>PcxZ^nuwqow>NS!s;sjC6~7xiitb?ITW#)@h;HFnc@Z~}S;BPKh(Ye`$w0yjD* zyoJ74hH6UdCUq?ByObSwsqJoW%xWh)FlLo%ZoZDAb2@tyMj!l)MbAf%=jqRdqtOG< zUD4yvar9X1Mn4a6^`UTviK7K=eow}WQtD%*Y#OGT-@d-94%_o6V(uxT zpX6GuafPfvxg5i9)w5Rc4a}{bS?$7`nAKiM`RB`rJzw=^mDccL<~#|xX^x)Bbt&ea z%r|u2g>5ju2UU6>Ks|H2p=Jd>f@%SgDa_dMW4Ht}Yd1!o`x}(}#@vwuc--XO=h3YfDgnG9A0h#j-{t1tPUqQ)d|AGS{GD|oMBCCW8;eX%~Si3gs zLQrM15;9kom_KY397DMe`SG^QV7H|XwI$7MgJC8RAGSRUBYoJ&WhU%?F6{m; z>;WlZpFx;Y(L>NViLgs}{_J@cF>|(sEcB$%<{PE*Ro`?tVI2lJ8#6o{vJuRT)i}E@ z)Yu5wG0cRVUuNnkXKtDCLNlnot2yim6<%N18nebuZJ;EfcCZv8bDFUabDZbjgIVs? zcC!W_z6P1=JYQ|}V9bAmIdD4ne*~NZM?$r!%!P)`l?JROhRi_*$f)6qa6J4YoCKLi z38q5L8&8K#;3;r0oCT-BIgs&PkOvvh1qJY2$lR)t^XJ3IF`o(#!8op$yAm zLwFkO0+pX^ScSQpGb76ci!q-BmqN9T%+ZF^;90N&E{Dq?vU5m36!<>y@35;JiJ_dsq7?UB~jv~H<&q+`%pgVH*p#-&?LPBOUI*gd0r)( z&c=0?xo)4=EUs&=?pfFgJqx`Qcja&#EQ6XqoD3C?coNqO&;!uJFt_7+CG3Nie0@7{ zOyC))GV%DnLvxo+@zWH!rjhZN&+n1wxo9uLYb{c7^dp=xgmb+MqYKw1L8+b3;`dP8 zq{`(g2j4dLq2AfEE%=rKzojHMs@;=fJY&|<{s1K>{t2pwdk;$9d%t$DQaugx?q=RY z_aGnh-!K=zPhbW76rQc?*oW|o+QE4b!>_r%34TjB@50!D$Qkee_$g%mK9o=^e=&Fn z<_u@n*t#C(gW=)uXm`B@JOZ=5*O}a3$Lahoc!4C8%%7 zN-|ZwuyUgMO+NMGk65%7EtBe5_W{GpnByt(APzM zH^P3)S8Jc`&6=lDY0qScnR!@@0gtw;p|m;pKNz#hNnR{Nr|mtAE zA?t#{TsRNTgC%f2TndXJ>s-MCcq?28?}M!Ggpb41;ImNWp*DIEX4YGR(;;)z=K42q z8RiUbz!G>kJPRHT&w9Rpc6b5TAB2kcF?anrcoEmP z!baEo=$bz_#!@s5brvI0&+C6%L0tL&jXe zEs(KFuokK8xcR*z0;7*8q7Tg6jce5U9uI3&{zZz_S-5~2=A^l)*KcpWE z9)$E)!9$RKDPVmpq~8f1fy?1WNdFN$2CslWhquGW;Rg65d=x%)V6cLF9z2Jcdl)=6XEfxG`&VZ@|`={{WAL@4&85?t8+Wn1{kY!%^^EI0^28dGLLxwYm?W8VdPa z0sn&eO88fJ6Wk5&f~3i;<$VG-VwU^I;b)k?gkQjKA^V2H44(0Sz$2mDHGyAaZVky( z*cOtfun%PaP?!UQ492ri?q|SSm`fn%xrdA4fpC?xzXaCBtnXxCzy)kkZ6QG0-NU1Lev^$0Q{h@`bL+Ui)D>nRK+mPb)XRYfE}G4roQVy4DJJ^4p3qdNFR5>WIwH7I{Ld zJ85WTfAEM6_fU{nq+!DO$3W+{{M%_y+U4gGq0*K)+8x`}Aqsw#dq3y#`@i|Q7&i*r`cVWL+qWR!nu~137`v5rgrZuT@=uzroy46EeEen;UwB};7Oq_PiKGyv9vWM=dJ>MY4UA2lP*-13aOHy~` zn|8>^YQ11RcAsiJFB*nDcOYiYAW$gLF#6(0V{i5ihL=P3ArOYX2|g|n#!9Z+cm89p zR?;qTZ3$ZH1pL&8L!e~H9H{aCaH#Z+gc|SDK8DKENpK__1E)jwIuNJUm$W}Hx{kKz z8q#L^X8Ue`%)IB1cWR~C^P!&sZLdiS`yWHeH`Ac(r$dbmXFxp}r@-NGCRF~^PFx6S zv&~viK71T=5q!znzv|4thU~{M^LX>%$If2znB0Hu%-_OOF@Fb3;NecbXaLJFYfiQt zYA)h5I2N+MBb)*&VG%qX7DJ_P0bGJv@{Y{xLkig68M6N!) zm!TzVYY&2bru|%nmBF>IbFlFft&{d0{g`X z;!-wF%;lr@DyB|kD`t-07d=y642%o^*mFrK! zVelDv5_}GhgU`c!_yU{@UxKO+uR-14!?|B}e4+1P4@K+Q(OUE==w9fV#;kp^wjO8? z$v~bqt;?wW)|0Bbpfw8HuV{W<_f`F)###;7HE8#=WG3#zdi>b;+hf5_1%NsfeWUq> z+?5ersPcY`bWVhC!};)?jNpQY;Rl$XhP&Yl@MHK2R2|qVVtx&N0{`Hy{}KKJv+7qp z`W$^@(B@U+{pO^zJ1$gTY`xTPU-!b=q=`vy%~ih2Z>ia6$*NLc6K*Z|4XgvdgGa*u zz-BNw$kwM?FdHK>Sl9>Ffoi=EhU!HQg$nmDI1ko`RgjM+g)1O3TX+d<2rq}quf|o4 zF+T&5<;-5kW>ED;?wUAi%_$ReXV?n%fURLam<6XoWIr=U)edT$)E<^W#iM6L=Ck0j zP~)Y}Q0+xmsI_Rm?GwHRyF>P&1wG)OVK3N>0_qDpz2CD<= zc^&4t@OpSUya6&_7u*C_z?-4w!jRR?+V-uG`Ly6Rcqc?=5ATDz-;YDZqdk`QVz$qZ z+6K*;4MeLC&O&QX&~S8b^kDP=v}A%FJX@ogUCX3~s;wA<)_Uww?)7~!i-%4U9s|kM=KV?oIpK zv_3sL(RN9elAI`IWpVk-L~HG^1=m{fS8MW;X|;Dw{h#)xYk!==R9+;zD=k{jnT*!{ zJu7)>Zod`f(l)pYYGzF9E$VSZ$)}o!lZ+}Ye_F51L@S@k{dal~L2^PC+P-t1eoglg z?vHP?B=gw!zhmZIaK+gM{UFz+evVtURgc5N;1f{&=aW!v)@CSq>}jZYpM|;`&q0ki zo`=dM}A zPW_hp1iiR!9L>*4eNLK>hF`*V@E=gU@W0?$@Edp;R9Rl(%s0btxqhcJKj7?Ng5Pod zSI)f6nRh^590=b6wcrQv0Qdz|xc_iw$t$(Fu6a4xOJ0$ECwL%crCH$*an~onx?Hbk z@;!ijYtKU^Pf}k()H|k{7jMhcYv-vu@@yop>v<{Si95kuYmHy+8|g}0BBl9n@6SIE z>$z^f~r?d;PX&M1QLvsE+t)06W1GVOKZ2%!5sJn90pZCM!*9}%Sd<-90eOgm67C=v6wZFE3@Y7$78ndQ=P$m z)mlaywAy;Lzo+xNf8v_8)3{k~G$&$7w0o4Po_G6hb1e9U9H5kcQ^(;X;?01QVI4RH z9t@Q()s?B3)fP^Nx<50Z+BCU4*>NE}1@n23IV!XEJO`>R%7dGs!h0GPV3yn_^K-Be zvmMViqc$|>iqfb3;hHnbA=k>MzOAh`No|GXaY>TOt7<_~W>xEB-+zuF$68ejDE(6N zh)a2#Z{qBnkacspX5V49-_e$v+Gyohs(xVC2B@uO+)jN8TX4M*w0(U$($Y2&-p+&k zyT-hK#G-=2Q`@th>r%(yk1&HwsJ5&XYzJFIJhx57K z0cvDQYhmhYM|dG-#)4)qc_*m;fv3&%4_)A+m}yl^zd-LC{t|Of_$Fi&YwGmz@N>+) zq1re~+l;|!rOa52zAqfab=qAs2B$?bW3IvQG_DVUl9`9XOJEMX84iQ@!{P7+I0Ei~ z;bK?}&xN!f z;Z<+}_ZG6>hqoJo@L5<2x4|;_J}ie{!_!~}6|VxaX0KTXvo4HmVD@<~fy24J z6ly&f86nJvXF%4ngEOIIUHZY0wPtoM*!PFdftxXh{QnJH3I7OrUcw_#1dF+zxMpzl9IOH{kP-XD<8=+yOs?zk~mVzlU|} zG8X`w!na{I+zAK6Kf!76&u|`mAD#t2fEU8u@H+S*+yFmAA#S& z7vX>4n~oYwEr=#$Xn(VD}NS=T3`HODa- zt+ANih0vUg-j~+APaHiJEw}1Z^uDy*&q7Ov(46pm^bEA()4LtAQ(UEJ$ubH@Zp+Z$ z=T_;GTg9z#_ZIg8?37l;qj?#*lRxD_`BGfd(VDMPIC_U%>6?kxo=>?gKx^EoboM|` zLu*_r&Ozs+mETe5Gti1lTJI9e&tkMM!xsEj-sE5Jxya9K^e}V>wBp>CbSfV0IZ-~8 z2gRj4Doske@-q;vbew}$n&e06*8SD}Q94u}DpUE@{I~AU5cC+wRZwXh?5MboMdzT^ zKWqL=T45-TE@*|Bg;sv#t~FZqL+@JYzUclcOr=5jJ`UY3(a-bz2lh;knA%{Y4(IQ) z_NSzi_K??8WxZiqnD6FnL&;c5-~S+u@)@)f#11=s;S7+sEDgf*k?qh~=%&$U-{RT+-d zt-3p%iluAOxTf*(k+Q{=U3BJJC3d_M+hEF=;=+ou%CfmtU4|7`kkaXnqe}VQkoI6@ zFjA{s`{ffpdg+lFZ;aa9wr;H_@7oG8&L)` zg!T-i^>ToEQHAK#p}5i9vMJ{i%P7R+!Uc2em#S3WTJNjEpZs`tEdzT77v37!U~21Z z>y&c`u?wo%C(a#Ixa$a)_X;%*Nrc;)a1~zCA9BA-l0MlZJNf+Upbupi+Z8?((SLhmp5(pSPh?CeMkN<`D!9`m$56SuzY-6PVrw+nDkq-bKt%- zXM+0j_s?b%##~bU6@gR8JsJI|h>AN<`B&zj?n_^3tV70kq2p{&|bKPgj;TE0fgc&6f#t>P8(&++NYnWh|m# zOquA5h!x%DOs2__y~>2WT)`&%$&YuZGEop*PFp6j$6H$aZZ6!(IA9%7?{fqfyZC*5 zO@^DSuN!bb42z}se~(yw8H-W(b6xnXO$URqn2-5G=ib-XsQYwftb8kd8*w-V|DEX^ zeSE4;QU5+Z)1k+;=6l~`1bF+?7r^!`1(j_LPhh}g!s1a z5#RouYhFFR^=aa3N__v>BR=lq4=B$OPJYfp*pupSVg52)&*;caR6AhWE$6zDh{&Ne zt0(rHTmMY>_B&exLDUQj^OtFwj9EU-u8nc&_K$_>U&oWqZ_)DW-TVHPt|;2SCS-Y^ zm!y3%FMhldwWG-PVH}p4M=ux7cPZ&EVcw}s^7xp~V^NtMhELr==3C;sHe zyYq4(T|wHsdHF7B&$zRognr77!=l#{Re|`t+!nQ8xReric9O}WcJmAJC0d(sC4WWj z2shtMVQ{_XdeY^;lKP28AF5akoK^bIp_3`H9o-`+351Cs?8yjDQqgvkyl0F_#LHRgIk~;kw;ubKXCL>rG;y~jZp}9*?sZP?@jpe}qY>V! z=er$oKc5EotIzPu$<7#@*+~j5{I!Aa_Vb<)043-ItEqlzBqF>-B@=5g*_B zH1Qovd_{Z2cl?hMUlaP=>iO$Pe3$JJU+*6!zEx@Bqii#t*dx9^KPW!mcYf>Qi?$P; zi0?fgpBZm)?|#H_NI89$R5Z@c#CZS$mZ>u)PVV2280W4uaWbyWXq6Ht_wYxIb2iO(SoF}Bj$$k70;`HDC*p?>FY~q~dD4Kn1Prw|^ob{)9$FLUVG#s{rBjAZ}B-A?(C&EkMNpJ%k4PS+0;74#QtjmoW z2RlH@$h^Bi8JTw$CPBUPt@2w9r(ovn5M#a!PQ!c~WUOP}Q8*bsg?Scy0nUaENPQ2t zH@F#V|Jt*kZC2gvo=}}nSH=#pv)KKmy$m`V&+eDeo|*Kz0XhGEt^M2Ir}Zw~_vur( z+sQqv+H27u$V6+uNAe7^CAhI`QL)5&mY%^9c}5kGf1Y=CGT3u)icERf@{?#e7c;{K zvtN(#xFK~^^Vgw$|0}xpRBsOJj6UrNX=ZR~Y%*){M)Ymg0XQP{aeVgD}n05BT z*{~mRhx|VYu7G2p>d!d167x)W0bJ*<-w7|o%-NoXPr2)yxoP}A@2E2tR^v|f{!+LL zUIzaTuYh`oNbzVQ`Dd7Qp3Zf!DZCzbgf~LHGjtQ|2XBT$;Vn?l&007S-U?5Kx4{B< zJ3JNM0hhr$;c|Ev)Y|EK$YdUS+now=$vM~SMz;Z z>CwLCD0Ob7-UsTGXsfjbZP(3WiFLPD#I=U&Qje17X7Dkne(vW`DcuCA=i2KSu7FQK z?vMHQ3vSJ~U$((#xc+zeEIf=bpM#y@FW_kSJk)!XFTji7i|}sv64ZNeFT+2>SD@Cs zUxhl0bt}wO{CMV=f%w09>uCY zDbU)w)K1c>+W0PP4tK%U@O{_;egKQ%Zg>y;5dH;z1odtSzs;%m&y;kQtI|94R5JIdWoN3DHppQhRY?a%xY z9tic_A>O$NITJMC{Go6pJOmcPL*Y5F9=rikugp7thr{1st`9k*E?}cTct~xVo_eq` z=EI!1KIDCgur1_$33D!1GdK=2?@fe7usP(6uAl|fJAN(U?U47y!%eUad;%)J+6Ubh z^DD4D3=XvR+EXBRoTFsi9S(W#IIQo?+80gPhwAU_`4u|nRqx2%@n5vgWzbm)I*Xw% z@~!SLX*KUP=p4Mes2ly+ou_t2=SxV>A`YFYA?{r(9RCiDeHT&hBYHiI-$|X?o?Vq_ zzoKDyxlrwcU9(JnzeWA)<#LS5R=L3LQ1!ScRKKV4W&YNfkAw7KVU9DO{?;^FowG@Mz}CW?j;Pn_Ln{k-c2{@pba%;G-fYhHN(~@ zrT3Tb{1v3}XV<*a`_Q>gGb&50;v6^zM-M zAfKDax5BgQQR&00aN$+D@OT&8gvU68dXzrAwLA>Ehw0L{)P=Xqg?EMv@67KB&#oJ# z4=;4#EqCFqaN(W1m+&T&U%RFgORN#mq?s`#FyF|j16Sd{E~JkSRd-gy5%3ZydDxbt z_KL?-%F?dEB+osG-kU4%do*EO1$9ptqnYzet}$V1Z?)ZT@1IM(uWQ#mVrC5lFGx`A z!{xfvb@Ldih4!BgPv@Ki`R;TiBwcp zKP!*2vFkH2y~Add?vv`C6mp`Ok9ZkI`-@jGXJW7ZL-%saB7HV8z-<$7{Qh)9GO0xZphW9)CsV{j8>KXY1RQlgB;i*qi z+tNQJJiBg^{@MLA{tn0gyHIV_E~w|?JriE~wq;eby|*nNy6~tgCcMA6@IL;Y@a+0V z`t*I`!u!;P_n8at^Y01Iu34lH@1HKbuUvTla^Zcwm+;gl*>#BYeZ+V8Q(yKU<3F`8 zv+D`z{T)!t`l}7q=J@)g`0TnsdVh7Czq)Ds+4=qS{^~h@hgI_@*~QM&C+l0Zzdr)^ zs&7X^)w71i|DLjoop(~(uHx13nOzcVc2=`^kHPVFxt8> z+NB9Y&$FH9wqfWQi#~rmBW8YwHr~ja4WY^fk%{}Lv9sRqNxpyEyn&yOj+wb>g@=3) z)aSYseS--v6RKZo1=~T|p0FFFtq66GvfxPA7EXk?31`9fa6aq+HGgv~JR4FcO@D&y z`(NL`eHQoBJM$es;xuO>b%%fAdJo9h4k^QaN2M36Mf#72^y2WqRgBS z=Qx?~0Jn#)bGtsDpE>JR7y=VG%_vH_w!wsbJjT=jDhia-v9Ho;5VPM_gZVO-@5L#)?Rz< zN8n!g4E#OZ12up0HvA)ux1gT^+1o;U#6-Q|U!dOW-47?i_n_YEeIG7@|Afoo2k-{? zA-oyV)sOCkS@0o9pU~{3nGK)g_*nQBJRW`sTfr0PT(^ZM!**~WY!Ao6&M+T#iN{vm z2I*Ty_rUJ(5lEeno`t=j-rwyF{|0klv*YZ%#z~MiAvztN2G4?n;beFQoCk-%GN^I8 z*0YWzyvO0096t}wf^WdF@R;N67`g)-&v9=!0iFRT!bxy4oD1{eVmKAn!f9|7ya29+ zGvNj}i}2os^Ef`14*Y!B1zrpX!^_|~umDbnv|Z69un5+`Qg|KISn+0fIs7`LZHqR; z3b+kc!yRxb;q_|GygSFk;c_?;Ho%MFN_Yjl3VsrP3f=&(hPT1%;5~2^dksssEy$2sr|a0FZfbKw`^T&QtS8N3BHK-%DF6YybnGDABDewPr+Zp-$C{B{|I-&zeDx+kK>-t zJt{gG{ucIw>c@|UyWvFm0-ObZ2MgefunO*hSHrz<4g5Xa0RI5*hOfdO!#Chg_$J%~ z{{;8Jx8MQDJuzz4o_Sf=6}}Do!*}2q_%56R{|4v7_h2b}AFhP|gg3zt;8)>?@Y^s( zU+R01v0?NRcntgnR6qA6sDAF-Q2p0qI`F<7Y!8ovr$F}Dh(^K_;3UXBI+_W2@hDmd z)eo(N>W6*`svr7U*a_YWnct7@gz8(~583xS`XTHFpMu@ti%|W@eNg?#c*j^w{mAyP zC+rP-!4a@GJQu3ZI0vfFxEQL>*Z}*%&%plhRyY9O1y6%p;py;6I1v604uXG%gP}T$ zXTWxlIr69%r0)?8hr?hV91bsnBj6%95-x|M;EixJ{3;v+?}VR#4?&*AMLXbG@C8U; zCVC5wgPQ9)8@6R`=p5J+=E7lcJe&w8z}avj)SOfvTn5jDH^5179i(p*eH-S(AHXT_ z3CMGmXgB0pVDu+A6@CDDCK#R2h4vTrfYaenI0H_A7s6SPzE)HMXTf?n8(t4Df?tGl z;O&t83Zw7Ad2lP74K)YYSm*|IU4kGtoh~^tY(fmRvp`HJ&{Q>fvJIzh_FyyZ> z$GYA{h`(+~&7CWpP(t_KpQyb8w5NjHYF=dpqCG@4*P`c7((80&334>&G{>TS4m7`W zIKPz^b}s#+seKm;5bwUR$KKze*q>`FZ6+g%zuc8ONADl6g?$8`5cd+f`K%JPLS9KYX%%A?AWC>=!U@p0Ox$EUIB(bVo0 zZ|wu3`Ao%I>7l(qlwbPYROeL&bgfVnUb@I$;isQZKbD(Nw69Dk(mfQ_A=R@gL~XL> zNP3w$ul;l#=pMzcWsEMfYlP((j#uT-??g5uJCMCdRv+%^$XH}HQirTYHX+-Py~qKi zM_=xZ$O5DeS%+*!b|P;gt@?3qNAi#b$Vy}_vIW_Jyoa>yPdLbIL=VH)A={DNNUH(( zNAi(EWF@i|c?{Wuv^WhNkf}%svIg0N>_px~x}MIxA6bCZA#0JlksZihBx@k?M8+bs zkp^T9vIW_J>_b`%qJM$pAq$W?WF7Kv^S?I*vWS{rr`zD7c}fu7$D8qv7mH9#b^4gr z=`yx9M(drtVU1z-`##){Sf{%Z4;}F@zux^R?!6%9I2fVGWNBZF#Jf_m*V&}~(XC@u z8rgS(?EW5Wn17Qw+rs?aft$PeD36J1u#XD!3F^}tx8DALavzn$*)yecus=(%w+lnI z#_yBTg49XhC&j;4p?OIe#+nK9B^c71xxOR?3myG1Gi$A%5l0 zyY*$_@2O=XWv>)vTbg~!UMbJuKy#?fS;US%$L8fpt}G?}F&9%*QD4fnlpeNR9M1cu z+yn5Vaw0$e9XsvmA@i7p`O7z&vUlaWvXo&z3auktk3aeG?i7E;?;jr#e%)L zDuyJ|?MTzkzk8*bxb{m{7F}-hASG9O?MQKq*#X+w;m^kc2f4+ZZuHpUp zvUK1h(o$)iW}lLl-MHpPWIXQfb^7?UO!~8F*|>6K_b~9~=pC+~kJvUm`5cRA(JQou z{!*i!LFsvdZENGE-PKjj(H|8c%&A;YeXt(zWY`nZMWTn+_-9b6)O1bEntHk-W=;KI z_$AJtL6`0+NEa`98IFXC?%g`8&|%{{$VG^BQutc$Avf9&QRDO_h{jG5 zjWeZ>#v~f6Xbq3{Q`B`Oieqxjp)$7$vG;HL&D<6ow?urOiYa7M$5hvtzGAJdT_4*K z_TreSw1{p#Z4T>PAyZG$Xm}!|yz(xy)-IjSHMMS9YhV=b9*ELZl3c4o`{C|;adQup zE=*Bs?W{5M?@ayd2@$h4MfFq1!(eYn*(Y`F9*hhhqOWkQdbkOy9`1pvhyCOBS+DBN zP>z{*H`luds$On($IQQ*>obpT?4No*!xp)CttO9OZ|Ol@DqYsQ&|mn`h6dVdo{nRhav6Lph86fQ**eLPp6bbvKiFk0E=IEY5dB zh9LP!84@8IkOz^y$iL11?i9!(dVXI3o-G-}TzJBqc5E!W*I(WDNygS!mlV~N+TOMX zgB3+9&R$qhK*d+TTi4paHRRv>@nbFS5vp#OgU4bDHj_Pt91Qlhp->+ z?4?&G|FloWKi#m5_Vg!=efA;jM>%`dp6PfHk!TH1Q1KYhG zSQ}!-5AWc2FJki{Zt{dflL@=@1EcRO_kgWnF68}ys1UY+5#;@V=)WMFwne{%yeDA3 zYu6F>Bhxy;*|0Oze4D<5toHsy$n(mWzK6{7zu3u;wOTRyyk;#-cgS-W)1GzW{%^mZ zsqgvdy{3Fbzt3{N&x86Fr@q&d=g!H^ID}RkqxMc|+=_WH8T~#$+m%BH@!#g7Q$TgY z@Bg~fIaPV~CSts_bMG++&0EOd8bofreK>Cs&Jj$RK6pk|OzmG^Mp*Ms+kRe5jh zUaPAA>2nA^PB&8iWF}jfzt<3_=Y5>&t1GICN=*BudZF?xx87duS_{t2Ku+TPvA?%z z;m2y6cI}$!k0-{ihqqse-2+r({XsVyj~EGej6 zQCW-&>A4zZc#f_9e$2bod5uxpa-M!%Y*?E9a|8X$v6mi_!_$Ai*+Vm3|DDPZ%&mm$ z&2{Mi1+TwNbEEz;b^~6t!s@SiunqW?KkwGJ@4rmwY3?5>^EN7rne6@jL+yJe`(d0{ z`rJsk8W;8Cc#G4~&+8=pF%DZ%SE@p+^zr`6@HdZh$NeE$E)?z1-xbTMQ~c;#ai7J_ zs=yB_Wb||Rd9f-bFZ}$`J|zyuwv_faW4r7Duev(z@?v2{Rq+*AD_*YJHngy!9-+{$O4 zM828!WvDOLhhP6}|I6or*OBk;8PmnW{AI7^>?;Bt&#ft{Eyd>W+T7G|d_C{4P7g-o zMsGetIM)W@u$|ZVk`i|8pbxUk&t(ggQe!um!K){L5}#Wh7sjwl>|ADp3% zF-HAtZ$3vjj~pD%G*dZor1onq`gOyv{CT%J{|x7~@2&FUX?G3ZzBJ{1(5KUbPJi8Z zy;+U^e+~4X?r{l2Z!eIW2A!s)?6aJAVn>VXZ%CX>=)E4t+#XXY?t-kr|x z=lodCt4$x{{5MS++2n+cnshqdn-Bk3aeG?tEJOI?-P6ZLE?bZ>xP-8PUqB^~HpC^smwHKCd5p z+J|kKnM}lw+9V~NY8`k2h?v!vp4;Yp`4e0ZpZ2Nrr%-v6*lfk|F-|2 zv?@cN{^+B!zQF0L{8gO^-8XRDxU{m*V0>BkX|=iy7s7;T^(E5kTN%=-1ij|rUT(ep z|72RNMW5N|qqN%g-;h=hGGQ)LV`2W@Oj;fP#=+%k4SKD@z1({H|H-u4hCX@;QfW2J z>HBe(t2J$HB86$iv-9k$d|L5MlVvzD?LK-fz`fjhd!JU%9ik5UHZN&!>yZ4Zu7v0F zN{dP=$}82KX++zS+JE)+WxtD8XI;#hFB7jn`*>AUE!OEHxi9#3cY*2snddJ)h}bQJ z(VPcq=HAH~gT=PXbVT92!&Oxd>>Nql%$F!2_4#x312dfBqOLmgjWijZV$GN%mB00f zorg%i*RI>x8bl`77Bl8=?K7owVK>fCg1zBnH~{Lo!Rauc_sQ})E)JWnlzbYUVD*yWHexOsm1Nho($x#Lg6E3y9)#4h?F z#4dW=+5Za4{Y&r~&i@Hs3;*iQ|IHnL2v>2w6>;I3(P(%B)N}6};brhMuolYy)lk>H z34V^_ufo+Zi!zYK)1)lYvO6_EMtdbRCml~B-DR@)mBq7Mai|%+%grF%bVn{ga_~9C zx$SyLH_dU=9REqTv{+pA9enB@Z07{xiMb5A^ND@Z*2H)Zgk!})bxFr`-^_c5s^X+) zr2c~Jsb|Js%jBUG8W15SY7f-@lX$2{x14VH6!C$#0)wi?YD={090o6WPw z<~*-%ZqmC8?17vW%OXyp?sgm>Ps{~`x_^gjOZUw%)ct!LOZWSsbbbJy0>2NHc0Yh> zKOTblkg^)hfe*tgAZZp+XJS8sAFca9bk3|hWjJQX>T&mEHTAjr6I}av+&l@@0z3tk zo4%29u`^j7`5=rs5oRQsXwZQBaPSnb{M=+vHbZ4>FJINEW0+>9aR zE(;l}ADG|8>>dg)LS5x0sC(DTQ2C+jXYmr7&zITQ+3|TiF>Y_pIfWzhCjMGL>bSYy zTTuD14=NwthFR3HLtWdB$CGP*!fXEnzq8kV^r7IyWhR>ulVOch0_Nr-*{#godlH*YB~FJtoyUxX;pkrgSk-d z@*MNwV2&?HAG)3*z0tGaitYqyemZ^Mrr z+s4f}mqUFEP3?*?JgbS0<<~_}=|2Z5|K>ua=X|KTc`+OhFM$Pc0lXY49~2kvh0zjN z09U|5sIt5eu7SnSwofOK#tV>s=&JUrGr#8}%0=I1oXvUlHBL;VqsoOH@5U2jKebu9 zw#*W)ulBeKsytRhwPDh)hdb^AmvUb5(Rtk~tQim2D8v9i@s!+m`a|% zw<&daMugs3rfo~r(T+1S>lkrO>3A)aj@Q9ZM;%MYRWQ_1=cVKIP&(cSrK8>>&Y~VS zR!2L&izmi~VLIN-HKo&+q1uyMpmIj(HP{`i9O@n9^W6Cv?)+RxpU3F-HMo>x*8HL4 zq(iy-Zko8m1e8~E#s2bi2?YDxpPR{Pd znZ?~Ai}h?-oKfFM>21eEadOt0W?+c>eLvSwy?p?7f~;L6Uh2c0nkb{Xh8^?7DK*xF z*VyW=!TK%JhCghsaZ2JE`|+YMx+()O4E_*>;-1-@eu()B*(;b#_7oL*4)$4PCVPrU z?C|GA?Xwsk$9M3n`ft-K*? z#HjpKq$hGR(#IUP=5DAka}b+0$+lbZw=KW&SL+K`CDzIC{(v!U`MZ_!{tWV(%Doz- zf1CePDG=8G^)BWruihMJ9?SmPfaWRnU-O9aHxH3pZy&DzQ5|Z`Iv)2nODugIkN+k} ziEB5)=J}uK_D!!F&qoSox{nb|E2=D7Tw0?zNY@Q;2>#{QyVv$3&iH*4LEEzAz|R9;hCU247~rS#9m&n85Eyt~e{&GI}k z(YDhsUU+#U+GIPI?9;-RAHB~Y6Y3X7zYjwF#?P209T)N7y0o^yEL<_=1ReF=X!-T- zKQ2A>y=0kC&tuT@q|;m-R63^X$xTaovaTTZp3~F2|G4zjdr|3nHbc)*AED=HJV?(W z_}zdgj^6#prRU1#M$MG;%tFtZAED$pU>L^8T4y`evhW=SGlNsaeYlu zU3pcd)o}s-9&AG)OVd&7PUTKzPXoR(M1H)xrq<7o8^*L$ zsHys~zhCy>L;ZL;p$Iq9Z3B8`;YYf8H%+aZPrF?ibUPm1I-ef2*(K$*ZrQHUPkZ8R zbozOBO|73#JHI|C%-dGzH!MZJs^t_rquXxu%014eop;mJy7{#0s0kcQs9S4vyCBqU zQF+ah?fj@9yK$PwQ#Y^=pHEm#66GIt-(1`gO&R9!e-q-rdKg-|SWg z>vsbBT_5TGvSI^}wI>^X{5jKVSCtWzerJ`h7FhudKA9+UYhA_gkHA z-p$9Q+iFc{V#2c54&5G3)vdv|Df`iD9)9HByZN|u>)*zxmZDpGbo*_JZsiqnr954O zUi+PH-c3{M=IgBXXOs!ktpmEfo2DDtS}u3eZyF3>jT>7=p#0w@&zfR~kI8DE$^}LvZk$x5Ew$th7-8Hp- zzQ1yJ2K_pt-+7^a<=oBY7S&WTRX5y?KU(3h0a3iX+mB1f8E$kQrePO!TyzK>N6@KP zI&PMJ_?18JwyAaW^<=Bl(a)zVFT0}SwV{sF#?P5iq?OV~HrDs;?7a56dTN`bz#f{jfuO27BeuLQqJKkv4wb@b(EOh<*9s$(~Fd?VD+G-j%l zR=@S=mW4m*=iPl=`t8b~Uw8C7c2LmXO25kFoZMLaY;^j0cTKIIFMoBe0xB)MIR*WC zhx)n3R(ZP{y>js*_ufrY>*n*eqkCW%>UJu+os+Jc&016T8qjTz)6ctWYW;lLZO)({ za~0W_r0dsU%bmVWy%JG;yql)h&8OWAEjGY}Y1b3omWR64mh{^f0 z;UJC?o^_tX8ip;1zB8JWct&cUvBY^AV~rlgxN2bbpwV|pz0UR-NoJkTA`D$)tO-kd z5ZULjimQE&5l`fS9*g84GUIWtThRpL?;>;?oe0l9SIF#-v@rgr7=M?g__Oo;nf*<7 z{$^zGXXo8B`W zf3#1LzSk9|r=8Qy?2qQwgvVqs{${86v-7N({jG5Rt~CBGPVr~wKQsG_oWE-_glFd_ zGyA*2`Mc5h)3>OT<;Bh!X7=}a=kE)~-`o^`c0Mn&zb`v~w`2&<&a-9qx8C{t592Sj zT-*7t%>Hh7{x%wab5iuQ^HQ1p-Rb<@W&EY)pPe(x?C)OZ?>^%%H9hToPG)}(I)C5K z;LpyrWcK%n^S90Tn~@SfI|q{4-%p*tpBaCt@w0Oinf*QK{5@s-rRIa3Gsx_3r}Ovg z4B^>vd}e>oJAb>4zts9*$JUwsz3lwGlIBnCq#YY4*Pw-MG;MRFdhXk3J8sP!#(OS| z_l=*_ytZS?%>F)f{#fupSTj@d%#QOi`_md`we4El+>VtIVO_Q3ugv~hJAZAAztlQl z$3>a_u_nrd*U9)xEhBc!lG)$M&Y#vi+wa>a+Y~#N$n39|^Vi$>OD$WrpP$*E);23$ zw6-}tJ#GIxvp?2r7=J^JztlF&_Kh?98}0m!$q=6Hvu5^pw)1z6@s}Du+n>zrPivVK zze&blY8|)zz0CgD_t*HFX8fhzyKH|fv%gu+pVmJ6d)|J+=W$nT?>YRz%%jqD9l_cb zBo8S=wAge#vIThtc@4=LN&gSYMdl$Zk+sN!$TP@(q}3>{gXAF#kUC@yvI%(%*@GNF zI*!I2l82NaE0MLx-N<9e9^?ShaSVMzBp)e68jv-}CS)733)zpf`ULCakz8Z}QirTX z?nZVXdl4;4?}`jT@{vNM0a=G^Ms^^35xtVs6&Zr$BPGa6WG!+xvIE(R96&nKsT+di zBZWu`zm2Q7KFvFigiVm#U?Dxxs;&a8vMzRcjw3H!-6$(s=G=j6`AmSW&IKk zt(~$V&2G52Q!=F4afh(}q;{GecLr<6(xY@c?grLQW8^e{rb25FPbn(LoK<`c{}9f!gvIM!`u2W&|RX~}FuOS6A) zH^%%)@%y~y7W9L8$v9oPfJkgdZO=lxA>DT*} zyWX!M^CRXRM`gxyDc9GxdU_b~;b?x(wp+>f%#}Zdh)jAozj5I_50zfKp)!v$8cl+~ zgUR&L-phWEV*8C2<<%;=H|<#RyXq}Dr#zHN4|5OKR9d|Z`@>hD3g}*#3x5x%!au-y z@Ku=9L3=rCk7zG_%x@q69NgRXF3wv~)~FtJb-&->TG|U*dKV(LU5cCEauVjrKHMtp zaBJSB{R?cx@n4DZ0{9P(nIAFlTehKOv|(L;d!!BTLbd13gf^`2S2)tiwn1@n%bHN9 zW9a{Bk7~J9TH3ZDo@iUbwB#Ld`ii^*275t`HB|9WfO)VjoC0Y)%zK9I;eT-40sa(f ztYP=V*0-MYT`-CE-_Aj9M6@^dpv3zHn{-i(>cg(FtWQL;#*v=L5F`&-fK($lBI}VY z$YaPJN3P6XqV)iyzIgaqlwdYS{<9%izCDk*gaqCQN6(ZJd4DN2T+G^2O&?mXsH{=erd|s1?`IHM~Fn z-cvFjjgRNy_490BN@c^QjqTfOjl9f43-kA0+)VkXc;QOrCy%&v!@vA`_d36d^ZJIt zg`A)7uH*YZpHAc_?_Kfv7oAr=hv&=P_1ANqj$EfL$JYhd;dF}oQf@$slb6Fw54*RS zPY=JJ_6Bv1Fx)Q_=04Knu8&F&m&uCzZ1m+8Y5aRX%H!j>8t>DFWjSRZPW5rp>=XNN z`m{^hr>0$aUTNpwl?%`7eV8IO1I`{bgYX!umzCE}sA@3pd8n_awjtGjt*MuNu~QO- zb~UAJ8(CXQC%C50@1Lo(SVtfuaC`;sUvcTDYwO+{`d?IDT2aC|`PoRoL-3>f(0k60 z;-mZXL4M}gkM_vEMVfuxit19||M%s>>r}?|l@XV)>9xw9(pUH1@cLnyI=u2^-yQPh z$+yo9iY#WZh57qk%F`+rc8oVCZKFK9D$!Kq%A^H)=HXv{y?b94t_sExVLb}Zliwz8 zsxRUB>bjankHLJre0#WA366PP3Fyog;&tCg#Vf5n)PAKaxsI;k{V6Y%7dONYT~}0> z((Ds;MgCQn((Ds^*2-S$ChZR{`-)PEJw;o7RCbk?p`9=9vQwQ3?cCCKQy*2ILOWCD zgYrvOr`U((*VmcQzkk0?eYfcB=S7yOmO{3;6eA!gLnr>^%_GOa$ zvnXHmoLA;#`tmHvWF%e!`>6) ziF<1s&TTR!QxZLqu)1#5*{Kmoa+hh4!^;Kr3K&30Xn0KNH&5Sc=K%VcL?<{EoViw0^;2by}Dn66ku{4~|`MGcbEQOcB z%V8nZy^AVzReb&3(=O9y&p`_nsh+?9$J=w4ayb< zc5YU|U(=6eE3miid)&13a<8&cs2`YX&`HPFLY1NGpz6;mNclB;h4qEkb371|E|HCc zzI&waFG=)GBz^y=s~LaZc#Lmzbu=?*|`;!{8He1biA! zfX~1w@E4HhHD(X0IgqfU5~z8ZD zeH;E6Zh`yYPvG0|aj5j%0sqSJv+j5|RC>P(--pR>WobU^oU}4IhH^F$>BW531;|ij zI?@}N=8kn<$4zaYe!X$%p}L{(EKNsLN>xAX(+brO?MtV2TV==I1Cq~?RTOg&nG>i6 z9ih^vrCI^Zenf50U^R@GF-QZ|Z9TFD*@L`?bUTN36e&a+koCwGWDoKl(l%GV|KBmH zm%e{l=hSx9)*QXY{PZ1_Zu~z{dnD7*D5p2VTZ+7H&x`6uHYcupQhwNL$LT{_L$OTE zyXhIV^3>;zpI1^o_0MIW7v$gO=u$xW@5ig$uZ*D`OqfaZr><-3c4rvNOSJluOFh$uluz@XLF7xx|86I^`agC_QF&!WRaLd}d|0FM{8q+uKF?=!eS6Kg88aw2jal;b z12dI8Yzx&sw};a??%;TeJKx9kH}%!P0s7)4#j+&GI6R&dle-zLE{krZQE)4ZSy~!qwLLY|qw{TcpXPrB|a<@ucC&gh}YC+HahhG66Scqy26KL;&pUk`SQ2Lg%##k zE5f?choyK;Em~MgqkA;vyqhX8rn80l+nR8$@!=>=O%TrA**1WgYN(xQLpWdY;gr-A zEw5N;ZXv2qJx>{}ng{u9n#WA+T!AF45ruCKD4 z$zJKFe3?xK)RBmnz?-hNZHMOSunzq3eSo6M#ig8+o!Y?UHJu#^E<07<6uZ)r89a(H zcB%rQ-I5gxYwByu8rdG&xj)|?`uf$;RjiJL;Y|n1lj$1O9(~_O_TQWlRb2B;E+524by%MEuS48Gq z{B@v5q_A6HVedon#63)LJs^jed=mz9Wl&}EJg7`OAL{-+4fcW4p~^nb=FA+~EI6HG zo-LVm5`6#L%Sr#6T^##4s=g~tRIlr?9|xDicGNP7 z<{$bouE>iOVxxHoeXBgFtG$0^*7ZuR)1SCW*RhDb|HL&fVT|gH>a&d8s;G;q`{Foe zM$aeQB4&ei4W*5}uVfDII{aw=NFScPH)P%`mhY#TaQJpu)QRizy)FDIKQ(V@CpmsKm0m;0KN<#geTFSejm<( zy6#-~Lym8S55pJWBamgwt) zl+7p5UuAO#)cEX46QAzr+|#sq`#Gokt)I7<$L~G4jMI=-<0-euSY$R*f!v5}K(-<~ zk$p&u3AjVXBD0YSWEHX=*@Emq_9Fi_N0tHIh3ivv|YsO7oj;0suR6CO|D=9Ov9 zPx!sz*=03+g~;w9oW2&w_;qW822ZTgo@*vPBM4V>_j(?68KU_3@f^QR|AASd}&qW0?7x-6rg?{9|gYf6{a>yf&2Q1n8(>Z;m0%~VQv*{jTk z_WGW$S>={sPWIleHiLLY|}L`asK(b zuYSoEbJji+S0;Do*-|gq8}@@aa1iVR$HKmF0%T4%x)7cYFM+yuUJ7w**2$g$Rru%+ znP;}L|0Ku5IBrc3-9B3#4D}wi)}cv2==aVEWE?>UcW;Z}K1ydpi%90zrM=1(Hx8_R|24-sDz=ZO&Eix>8r zR+C{p$BZ|kW$-+>5l)47zzg87;0*XXNP0yt!dXyC&xXgs`B2X%FNW$TEr9(Y?OF6I zSOE9HBKQU@hVQ~s_yJrDwWhEfc7RvFlOe@FQhls~BjHkbHl(eNCPQ?OE`ZCS`c?G5 zBfZD50v1E%St%snqD7FjjF!6dwJ_qpeGaL7%0s%6Z+ZvM|DM9{74H0vj;r7o-0$_c zSAXbIWRR1E@lK|nq-TYCW|)UeLga1&G6&H<0r`mR&O&k!*;6_(?YIMUa$ijHWr1=S zvvnz+sAEJy<=YtQomsn}IBN_js z`Olp};A3e!ZhhE&3vcYKva02IRh6Z4%j?R{t*NQ1u@3@p-`%|PRX&Sp4_JR@r$G~gg6nHJ9yvMGClvlHkLG99~IbH{^hu?y$3$(DY$Vt;oCstKdu_s z=4t0k%I$v8zVGUJc=rQ4x2rZr{`~W&5+yEXk`#C5m$+%jbM4T=dNx9@99l4u(GiWl z(rYye55b@Ocz4RjmiYhhBl1!Anl$@FKFa^`2iu!ErrxCNTODj~{112btq-;znKNX_ z5Y;{TSKm1;e6zk-b;ysKlJ?B6F0|!#JMkSzd^-@|J6*acf5^t*dbp>2*!IlU!|+!>on`IV^gzvUVxk5xNxMG%17wO*J5GemI>Hjz;zxD=C~+SiXteN&v41ez;7EAMPwQs&p!2-d_(KDerEZZ1q!| zG)4>c3&;AtT#H9jw(nMf#JsGE?98ty+YdWEVzz7#3(IyHx;EfXe!M%C9qCKrnzqKh z)0EQwo1jwdQ_8l=ewu$%HhtMv*-x`KWz&~!rC%m{m2F>kllF`^TzOM@2+#ZS=F4Je zx2TeDao}8bDs!RT@|tp92D4$QT?*}L8H^~eHz=P;2=(lq2=dw_e+RQe2qwy zkv1AXzaHeF%2nu|YZ>=hxGg~*$G*+^$vjsX3EiuV9Btd-=kI!)z{N4An8Is+|C&4> z$-)MuRgC3%3#)kZYG}c%QuQ25OQuwolr~H()5BbQ-`I%GZ*tSoHM~FNvFh?MsbwIg zEzx}}%|4|q(S0nu|dhp;?c8E^tqBrMR!-<`ver^xsF)=K8V4I$!??)0=0hf3q%d^^eUvm~+LFQT`on%*c9|*%=0$S@w7;Jt+@(I;DV61QQO?~lgzWgWc85_AztEn$}_s#1r!jWNTvnxHI!L zDz{ys(&8kjy4?+Sho`_C*aP;3n%6nq9ZUCKoS*8>&vfVK!#|c*Ku1j zLv7z_ISH0Cd#Jmb!qpmuT=V-h^S;Z8*bj*LdB7edpdBx=pQtJ{2HnlKD)oCH*H=6S zL$zJ#X1?<%eTj=XMpw;BUvnB9g+0Hu&qu_3vWZtNJQMqJIF9o>;5qOGI3Ava4in&| za3b6Q^WZCxIkM=_P~p7|r*Qm^JN`SAKF!hleAt?q=+^96*T>9iD;_7+7k$7Autcy0i0{oMI^$JOvscq=5&qyL13@H#ao_#xDFj_1as>*T=CaopE&m^*(al->+^VxNbtDGher zz$s8`X|&GfTBHZEB&|$eKt7H{s0kRA?ExyKn3E_0ok;0Uq_Uk4zW|Oa? z%_dItQ(;?rno`0q^Jdo9=ic{65Fi zh@mDK zGvd<<{v39J^tq$1@JXncJPlQjehEjxo$ze3 z-H z7kV?Ibw6Fm5ye3HbSgPC(fmG%oKXEck+kei%h;V-Hdrk;M(?}H==~_IAM$lfZH(>L z#}nfO?sc&@IWO}Tx~Pu*+2~~76%6ax+niS&`wNs7e}zi3ci}})aa0|XyJGkO-0aR% zAJln?zU%lPJci?KFbn<^W<&DNT!;KJ$G?Fs;<0O9fvvEA6SCebB5dRC?~px;uIWu2 zv?tL}*cncQ(kI^?&w*VzUj?~0M&E~ehwMpb{~IXx`(PW+A8^MXz#NW0bjQb1hoonF z*bjDx^sS@AtyAq(GBK@rLZNk#_WnBbFz&BsQA)TYV|vj>cjs>2ou{Qed9pl8cXW)u z*ZR7rdu?mVgwOwc+}Qpo`OohbNER{{ks+_m`&8|rYHvr_9d?4+Qtx>C>+Ndh z`;Bqaht&0EAUilOb1ME+etJNao1U;Qq;y6@VQ;9gbD&y{K5!<)jd{-B50-J_g3ZBV%_Qa)D@yU5e*wI-q z7oHEtL)Fy@a50<&mqT=mZh-mlW=MNs+Vu0_JseX9qDSC#_%tL9qUYg-@Ks2hqQAj8 zP~~SX>;mV(-f%t~4ljl0z{}u#SOCjmA-oC}LCu>kgj$nW4DWy?P;EbH73rBpIot^^ zhi}0v;0KWVT-1rYSps`P+P7#7tbq(C%`@K#XWBbX=SmTs)0$+h%aq#^ME5i8hc*&f zgvhV1sj&51eKYNqrhBd2XrQzwg@uq|{Ec9tu%_Je;v1dm5 zLOx~aA4Slb9>%)axP7lvd1Cdp`PS8ykuc0s+;mD z*--taLP+}9_v0b=VD1WbkCegiE{@fodI+i?^)pC6D*6>1315e!;QNrU%)1w3pyr#< zH98HBgJ;6C;d$^JsQz~@Tmr{Kjg8SU`U;!~Z-?A6qRo(7M6?yE|E0Bw>Sw(I&xe13 zQ=$6f)1dm{>VNfu>VJ)eGhjYc|7$i>|Emzrg3F=$U#sCfcr#T0YZJT}eji=}ABPLz z^HBY=H=+7ve}M&1{i#COyqWEnwS@~gJ{cB6&C8U)L9i4Khl^orQpbw!$?8|=osLTo z^+8TUbdUG_1NBqXHz-5A-6VeNe(mk_KFBmg*O-NUSzAAUNJ&c>S(XwS6CI^Km%BY#(aL zbz<8oWx z%+VOLJxBrW5!uHdb8w$X{+KuUCpzRh&G}Pj71!q3p3q>&;U)CLSa&(Trlh{Q zyrQaZTIu4V!TD3TNi?=kLlcc@eo&vr_kk;18Z0sH?4PZq!P7nsDp^0sqc%O|YfO1p zI)?qvXIwaHC%pL~ZpJoqX{~UuIFc~@`$he2WMkTc%p2-Tc8L$8-c;uTo>}tzF!_$p zPTcS3-Y0+FZ7-e~>KgPD4E4K)m#pe*3#t|sl(JiE8Lh2-t{A#0;oF;XD?2Wk;=iQA zhABI#8v1J(UtFxUz_L?W3++|}cFoi5t_Hecq`*xC*i5 zJ#NZAhumY#b0GaR_oBYAH*FEc)AZArdolA}*FfE8)weQVntRwVn9n)&^+-~sCHFG*H8j7F zoa>XFEq`(8XH3`*tG!hostoA#D_yqR z^xT2iG8RviQ(b!-A~TU|=+>GCNjuYT_-w4Ev*jBL zifSg9^|uq)AANC6Refa%E;UZpwZ`I5{=FZaSJ~6^lHbEJcP-Ux4r8aslkLeuU8~k! zs}Q@#5Z%u=2Y#eSiXXG1guM?atU~OitojLEzL#7JqjLMN{OOsV`lq9uzs{~*3jI~H zxrN#fFNfDY+jSkSNlW?j?eiW*2IF9UkH*afF8r8J?cr$ziZh+h1 zo$yESdr;S-9~b*6$J^m!@LBkC_zGl>H+l=o-QVFaIM(~_{+*mo)IIw?R~{{35i%Y* zliH`}(Bt4peCd8MIAPySEfL1=Tad$Vo3`#A%dyhFDL~@e zD>6m}`hSU0o%Ma65vn8@<-a%Q&`*DKi|hXvEh{f5t}rW{e0|?f0?NI26ZQea_gxO> z`wgzQM;<2MvGF}Y6@RTB3*V{HyWop(JHCGSupYDB3*#5@g^1z92KHD|TU=FBQND0s zk2!28Pw!^ju)#z0Z(xs!>{`jR)VRvh`nsB;ih(_5)Gy>sg7ZuHuEiClmE#tU9$hrD zc;u*|pBO%(bjTQPcRrks^_lFOV>~l$mG4GGli0Z(Lti>ieb}tn#929sb#H3#eZ^>NGnu zkuV--* z+?;QbcAhbmDJROm@LH+mWTedin>hUVg+kDaMfSyAb*H?tS^VDp9_8rX76SB|P7h-=y$$MSUg4 zE$)7ndEc9R7$YeEH$(NI?u9MsMQB|U+nkzlO(ExP8yI&hH%wKE&E~ueW4}n{?m?*j z#}A<9JhwvC6XpWUJiq3)>>gqoUuZ3z_7m%p2xkp$ZTl8CZ5@Y<4(&KqzqjMRC;SP_ zgFl6f;m=?_d<=dPJ`N-J1pESg5`GOn1-}KKhAkP5wPa*vsd3}U#JM9fkl!85v5)@{ z{MfcD&UtH8k8|AbUvWL9;ZAeio{9LV-L`EF@7KF_Y839)$}{FSxK~f_xA1cKJgkAc zq4azKl0Rncmin77a*SPU57fIIuRzxNm_5|pm?X;O_;t=tg@1&z;Tv!Pd=v6a%j~tT zwOwy<9Kp9Ck0+JaW-s=?!23Dg4;lO*iYC=D`yC_&VLGagSSKWmx$=Y z$4-II!&4!d80!hyF4*kb+>#w5TCxJAC9@xvDku7e;%s-UGL(ayjOh2Ni1v=^jN~HY z5S^Fk8e$JbesU>ydUl|5n&M!sz0JcZe=$H(e>nB^DE~fD&wB| zEq_|~t#kbo<+Oqk@q| zjeljNw>PYD%HF=wjhD1%>58J|vh)4_ef*Yt?4ZN>QgrM8Mxwi$o{WOvr};6&2G}{37=-#f7PYg;q?#gb8n@4 zI9H&3S!BYzc>y=C`*4&ub~dKCs-7=s;r3|4Tj|0JV>kDXJ z&zrr3H_wNs__2#t9s8wKxDbyd?|l4Ly6{f+fx+Js-f|zF;@1S>CCa}GuTv1-TZH!| zAD-e@q_1rpS()_V=v{u9FyH=6IN$Q&m@;|f;rM#?pbJO+V{hIgoO^sYE( zN0L`QtQ^-UhGD%=SdV51OS&9QSZiEZ{d}Y#ZFBao!?2iLs;uEb`B8>7#%0o1g0Kb= z)`2jr;tk{qyvAeS)wa@L{=n*%V>T)&LO`#_LSNdc=pNcr7fgX^OD6xv*R}$%K0rVLj=? zQoNcdtbxay%csPPwPM*%`LIlW)mE3dh#gHiT<5|H%OT^m?A<;rlV3*{mcJLZ&_oaB zBn$I*5@GH2VJTjGFcolzP>XtWWwFkM*EtApGU0uYF}x!S%g1f63#(fY7VG-5JANx@ zJ6zm+uk2{@ZH6YqFas^j-}4D?NEqG{7B`uvZATV2e_z__!V1g&RKi-|!%`VJ%CP)A z+z?lp-R;T5i+2vQFZE%WI$c!9hAArwmQ_{M9Yy?nm>XS~VLQS;kl7_ZOjEa;Hq5Rk z*o+I~$vc(VH9pKRo;9WVV3FB$;7H1hkLPL^=J24*%plAaKFlzlM;WFsJFDB;z&;a% z`Dwzu+lQ%mvL3%~cGa};bL@D04SLSQpZs`t{yF>7#J%6F+o{!M{d0}b&a9D{T2;9? zuWETEZscD>v(QaRZJk-wBRdUo((SaW2UQQVPhp>j`0=ife_1;&j5))?{Joxwj@%Tq z3+GOCv3Kz&?j!IgKi-{>|KuS4z8@kx)y>dO4QTnIMTvN)*i|k*qV+@RaWfkl5bmue zR`$;g#H}QZ+xUx9;#NVtrna|!ygMH^x*jgIl6k8>pW+tUCGz&7>O}lPd*!S0&gW~o zomO(mPD8)YZXwIRRLPDs&;2v7z3pvUeBQ$Ry^V{0;M3&@zCY#D-q+=MZjjI>2;=L7 zvHIJtT-hbA6YFbg=u*!rt*awu)Rv=ZKXOmBfqm%uLOR+&n796mFg3@v0DW8GUw*xN z<*n|`sO9oK^*N^OyBxxPDCcFbXAYVC4|DcXIg|ZxXRp3UCi@Z2UgPFW_L{p__`2U` zvLEH_HAkAsel+KmF6%om20+RGB3-t*bkud#RwezhUZ3aZ{#*6(x1}TNHyC7p8Fwx2 zw0Z99QRt5?;)q+DCqHTzLqBEZcF#-iX9IpTnD2L& z)j@t#uR=eSMaxpcc@ICoB7%20KZ>uW4MIP)D{6V#&YEn_D_$CghxSz!B}>?4HRZZP zC``R^_qp#R(?j>y(4TfF#fOkGiO#pNgvD z6x}NDGXyuE3H+$*_fdYf;b$Rke(L-vuhb@mewJ4k*VE3Ld{h@Cv?CvvtIVm*^=0Zk zuDOD9BkxV-Be%p9e>KJC6Amf@bh=u z+#qm%FsS$@VQlbW@Ffk}CniCQO}W^FPOI@F_uh@#8tF&bGSu($m)mwZz0WYW($4}| zd$q5jzqzHU_G7U~!Yn8{|un%eW``@$qe9%6(kR^dc?=iJ|{?i?>tPy(YWu$nspyPJJ+8%esZh$i5HW8W$ZNJ!?1JraaMX* z6NZtC`+hN7=9C|H?me^H@wn~FQ&^vFcJ4gR({F3Sbh{9@N;gsAiv39KalExQncXjR zjY7oEb;r%TH;1(3whrnyjf<&U3~i!S9M{0rupZt7Y5JlsL+*jpfpb|u{0Bteqto{v z^zK6PyKZ()J99a@2LFAjvC>Ip)y_$0PG`AQI*S)l0v7TYv${c_R#>| z$nd(`xzfzK%dK=5=d!y=1#h_c^s)1var#Bpg!+)5)T@~Zw|34l`K`OqE#pkm@}h)W zJLeeJd#1*OZoi1zL9{5+L3Q2E7seCwh+&z%1-B}*qROn;&$M~^ZeLX*JUb7VIbG$a zffDKCZ0GSZxA$Mg?O^JIPggttmdt}=&_Q`4Be&8`oNijLrHL@?99rfuzJ~iDt{v7r z%+7tq^-hs7S^QPH$jGh25LKteVUDxRUF@#d-K-o@P5&KBc#v7m6q5l|sFLgMXE| z=b_5L3vdwB8nSk*#c3BCk7y6CQ;gn}&6u5wi6`cAG>&ONWM0Fc^nM*m?>|E6{U!10qX7gC;LdGKwhe%@c;WRCZ{<98wNo<*$n zi=7Wy!xx(dN$c2j$eO&^g|H8t3DGGw3!VdKL#Fn$bm1s)Gsixg?{g*7{79pg)| zAIGo2GvM#xE$}t?E%*k!555T>fcxO1@NM`r_!sy~NLbNx@Ll*a{2P1~@_avf2mT%Y z4IY5U&FZU>Eo$*cI|RSB&pyMcZIE_!D>vUw&K%eg&WAnW#jqb-0EfWK;5b+S&x3_w6H<=ip+v4wk_? z;N|c>cm;d}R=^#w8a@ka;BR0Zd>Jl-e}&6o3p$4l@MO3a_JLo9{oz;OQ214NHoO&{ z5B~$sha2D`_)S;~Z-){5HvBBS6W#>xhPS}~f*awz@H_B6crV-ne*hnVPr(P_%kW94 zZ(2MB{|ujj@4;Wd=G>fq3EM;F0i#plvv2@>4(fX#zkwqmdzwV--4J^LPK7VRI`|U& zJbVqVgRjG{!8hPW_$PQDWKX$h8~ihT3hslu;oIH20wsW&+;Lh1Y^zUlfpP$2#Sd#^;dLiWUsw9bUJ&e5H)4g4-_ z3x5QeaE+dZ?cocsBYXpPg73r5@K|on>>m_$f+xb>@FX}Co(j)`J>c1}7n}@p;6<rumks^v*CEi zdk9e#%!MlI#_zzOh6khR^>ZBXC+z6O0=rD_A`}(%tpWJ24Z|E>>dtDV-QgS~qf+S=z-4o!biB*!@pC(aY?_Tj!nVCs=>d zMc)e4Hv;?ddoiN$Wv{(z$1v}A7IHejhakNX{T9ziJ09eYJx@zJPWR{CdHU=7a7UPM z`|$3n!uRY>Tx|H#ZMd@=<~Y)El%uupZsIhGIB6eleZ#PpbS@{(7YFgych$9T=X`fg zX{_|}qHi4Pw@ovfZ_2yT32DdM?=~F^IH!D(TYZOpraONb$Gx2>ot5ST5bZPV^Pq@h z^}8=~elF)&*HItU>$`|!f1Tc(zr?wf&dR&KNIh{}68KTx4*W<-UPonS*hflgoN{pM zC8<}cj$!<~TQTWA^_og+m0Q`*B`(FtV&rV{e+ZQHC4OPrD(?EecMo_PGRV{+yMOEi z^V|1>b2zf|$(hG#rKaAVZpH*#aBJs$*;j`?n~eI%o6Ilv2E{E^Jys2M-KDS(WM9yT zxsg~M{0UqJe+}v9M8AhCV4Uk+3F#-tcsJARh5ji>e>HYBq~9649@>7r%7FUw`c9`r z`zc7Y52p5*(%uU8oR6pa`*z+oIj2Q8kKD3`ctjofsdh~7mdL0-O;aDcQ<20-hm}*f z$0K(m+mYSK0i@%3^pTLMNC~nMS%+*!b|8C^tn=xwA!Cu*NFA~oxf|Jz>_+w@tr#%m zAi2mqqz+k)Y(lmndyw~#j??JBA^AulvJzQ~Y(^eK_96$6t`~40L1rLj$c@MbWE-*z z*^jiEjvFK&DM3~u>yXXJPUKCb?F{Zy$W){Rxe?ibY(;h=`;ZnFqB}AcnSqoctC5Y! zW5^z4KhkO@*FtiUdC0%b|Be)(>z;W3$In|ZPoFT`86us<;Ge3*;Nau=zDa*`amEac zbG)J5$)4}SJ;eT>dhWRr532X_>)q@5rLIH!V5r|m^ZgQ~fqgb;_n_RYh6qCyOPHVH z<~}AvOjLrsLkDt#v59f(?HlusRJa#H`g>2|ds3P93HAFa9O-*jb9r`GwY+w)KABld zOw;#XNPoA=9A8{oGP$Oxx-8ATzFDd?Z0x&Nt+>vi-o4UzRED{eg!viy5N9&VoJ#xF zCu6SIX8g##ccZex@Jf3Zxw2x`(xiOON-p6`>P``zgN9&Ts2_;tpwk{}s2{dSJ!ek1jv1(v4= z?zP51=@PnUTLJTZd*zMyHx_@Lardbp92NP{pFXx0`l-W@-p$$M{3t9{=g?1aRYm=h z%2a=w@TYY8FbJ!8n!ls@hMMZ7^gJ(S>+UXH95dd+{Cx~JQ<%6^+Qep5Rr5{Wx>8lB z*+mO0N+;D+ExD+=f)B=)mMB+j`o4zV8@ZOQ2-K(2JBi&A7{U>(>xVm%vBcV@6Uh%#AN8QEJbuT0XnVlsQ|*7ND=b*(iVB ztFh(DliRl=CI3;24!P%}I?Qf^>spLtXmFkMcF;T6tQfYyD`RXb67D$Jm+9 zkHS~prucF0x8Z&u?o|%YcJ5UcRGvfkhbjxc-IK2Rp6j{z`%IuKr_--P!dP9$;C>U* zA2;iQuu&=9PsVb1q-D{sf8DLj$Luu)&;EXbviLivORR)~IJu_0WKMbM@}UJ3$#X09 zkyYi5-cj0wfBE(9eLX%WwLBhl|4g$_+&^{Q{uEfvNzFzbe_dbylm3$THVs<$AOmp! zj?-K26{XNU_Zw4peSRq%egAS94o7#kbmsS=qLOx zaW~wrM+V@hA@HN}75XW!tkmagO}nMK6517UEWJZHk~YY%r#Bx^;+jj*$(tSI`=f09 zU{2Y40G|r2p_R2|bq{fvN`odp-konB1|{;FZ;h;&QKWTkhhH{R?^9mKd2Os_S156v zc@iCmpXhWn9n11Mzo)zMXBGP8;7@+MJC#Y*!Q6z72lwez-_q<8Wzx5?ne4-RQ_`O2 z7L>Klt_+6f)wKCC7M`zLQB8{3yjOHXJLSFnsJw*d-D`%XE^Z~>J&5=9$FTm^rH}lm z9EE;Vouz})YD;V8Gw|~S`T1_(N9}RwXPH`Y&K+&p^KDM<30w@b*uwmMihR9|%|uMu zn{d%=_LXCu_F|13eD)fh7ocw|{L8O*ul$j}@rTG?#dSUYTHtRm?jCaC__F)|v3KtA zRTSs{-vc3_f)WG-1Pl-^a+8}}6y<(X5EN8Ylmrq;BqT8j5ES)*SW&5>Vx<)oFI8%3 z#XD8nqN2r$Eh;KntXQ$dOO>j%*kb#8f97(|=CDxB$@h=n>($kVcXnrIKl9AY&d%=H zok_;y-b@`Z7Vqn~JI7WuB>NAz&aZcVcGLmg@_YQO$B*g>Kh=?>SMQztc6#<*P~Wfc z?>jbaY(<)RG1!jx9lLtHo-@rP7T-lhygAaC9&XaaS= z&=j_Tq$eIVmlVH=xqEb;N4j%-0Q;|DyO!hJ@v`Butha-mV0)-*bq6Tz95@D&&+)S$ z`^0C$&aeb>Z8h&Cbcb=)X{*fpUety79ju=Ke*$~K$05fy&pA1_DLw2i^(Kh5Qa_ z=011^PGg&^$_mFpbS~3a0UMHFrRG?j_AxuoTlg1KM9>?Ou#s>DD#xfaXim zTm!PyzlX3*?~7yVCEoE-o#!%1TV>CIV_-YhTR`d`&-(3qHN2}9AI^GPNI3`D zka9J3+>Y_wm*b|I#@EsqNA?||b3Slx z@yi152tb_|)Fo5@sT-#L&xES~MNswrQmAL^iy-G{{Bp-z-1b|c&W8uwy3Qx9KLK@K z{L-zz;KJX5IxjwiL*XZI82mSsjv7d<^S+TePufA9C!O8)UQqk--i$dvY*}eu43(kE z^;&EgZI9+I)o)(NiLI zvPnz9;>%$Lf7^Thn9^*1bD*1O>IyLDXMK1k>F1KmFFp4CXPu|i6LX$YFUkC}UQ)sKeQ zYD|mHU)5Eezg^&Lr&kE|EQ+#^D>szSl%ZLde{{Zr^eTV2JvR#)=6X^I+p%QupwMY65bQFHHCq&o6bFs6?jo##helJyd1C<{-&NJ|S)?bEe;p^~0xEB&9 zz7PH!>O5Z$>q5oTb@egU_0HSlklQ8RYq!@|^4y&7PeENzpN3b$N8t5P@%1j-bFA|T zVDJol$niO-@K@j#w!iB5p4)NmRjLycUIMeUJ3e%iOy4K6owj@n$wH9ACKA$#o64-mdn7JQR zJ`KWnx5_NBnEif&x)<-rmJHYl)`tUN12`5Q26N%z@M72ys@>DOuvL(srQ!=AKlhmH zBkfiE2G->_=bCv3_HIaBj#D?y7>eYPdB^q(NcY_IAKStKE`J6?$~is?wuhI&4)9tR zego{t`fZSFqM6f{-_6V%q|)8R_O7gd2>Hz^ejGkiR`DKC;d%%21l9+_-mnDrfs0)D z6|g_+*Fw@1zrk%^0Z(H6CP&_nGwZt@|LVBUk@vog9`AjbcVZjVwfVvOSY~@SIGp40 z9+X+>#&(G8|2~`kDMr6X$)U;52wKJRPdPm&F-l-zQMN?j%g}WNB`UR%|bD zVaaQGbFN8Q)T5TP)Gayh+HghF8Lp)*Eps~SZKz>-uSbjCd1}MC-HG>FrtuC-S?~aD zA*~)u7NNc$ky?Lke^&24YuroQ*IPjxd%qhq_r9vjhhyrGYT>*y=lmqthIN&(S{$wG z+&>HUfs^5IxBYae{VsrKvwapk2kKqx&gz}9*z0v$(%UW2wOWhb%l7Hg`C;#8V|Z%& zJ{fQ@rsV>Tr?%)q*c$46;~Yr)fKE2YQvV>?r&Tl^p)clhm1 z36US#;Y+MB)-zLUywfnkvJjM=#WfmRgKfrkVtcU$lexxXgRx?4DYg#VjP1tuV>wd@ z$EIRs*mCSXYzwvv(@j?ktQYpb<$pQwza02q4*dU^18Ted^Te&rfhHkGS~H;c{%bN! zn;f1KSMio%+SiAFm-kvy-zCvA$M5=X2wj2$-VO1-tfK#+MehLmr47Cuxy<>Z=dc9m zSuy=)eQ#j)_2JEV#;kZ3$G8-_rJ`K@1^etdyxqPVFuCZ`0((4VRxZc;hq8a)d8J3u&$X)ZMVq6w>)60h9-upqza3+THG-Ny&dyL8Ae zT`I%Jo58yL(set$y|AE4!>3fR+2qp>jyIL#bz%MO(D53i#FL(Xp6>bWoTJ z=gU%kNiDkP@k?9wnRRWVEN5%`x6`oC(!GWsS7DV3fW`Ma^!IUSEbNHD#;fH`II zO<3onEhQWHEsIdM@u+u*`#e{^|Z|`onK(m zwpzXrNBjGI{;$&J#{oW433N+4(zY&~wpki6r)K5j>wv!5(Xy0$@=JSko=WJHFhq$R z19c6)Z|B6&zCK*_TiIBgD4Xc_RieUmr=asty2)_f)2b{qzu)>cAsjZhfZ-VR;~Q~I z8-uvMU-~}l+g+M{n-Gr2xGt(Prq1|y+lY5N@k+0=_1(7@2aEUZ>)TaFH{`g!zJ1Q$ z>W|y@Jm#K!R3FFSDEi|n3Nj6;SI3Bx@3tL{CEDM%Z1>NpIgiaf z0?#Vw+beJF^U-4=e{&CIpM$E8-=Fnt)=z;Q;At=is@vTOUI;tG#jqQ^33C4vzX$e! zkHTK?N!T0ec~u{%Yu$-Z&pV{^3Pj61pVs!zT=mqyc-+} z`@vyw2pkU2g(F}FY8iN#!Cg-Vcb^%20j{MU&oJr**|c)~$UQwTI-m7Zu@TrQSX08< zV*`RC2-Q-bBe&-n(~{4=x}+39)&D}MddGDu z-X0diuCNqRS2VuilErX7>$kxL@Bw%kd>md5e+jRE&%-O>%P`LWufrw$pM&=ISU(9~ z15bm?-~@Or)U}$nA+G)k&yvjZv>V}7tgnC>+~sC)<;|e3)T0ile$?ZPsK>85^{7+z z_%$)Z)Ty>^TR40Y+lFCTSabGkimA?=Y4TTfT={=ECy17T*x0k_J7AUAGHea@7`7GL zgQ>7uWBsu4SU$E0``_~aR}N&5T>t(}8FfvI&JDlx&kQnu)3;t=f;8snu;Sv<1tZH# z%j|Vc@pZl_j^FRQ+y~Ug`|aWP;HMN+RVwY_^!crEWkdP>UHZ2wH}wO&7Tm;;Z_FD3b?*Mq0 zy7;?}(Vptpa;Fvc>twWk@3rJtEotqG@M|zy+q{J|INTsrxW&PI66o43tbD8cXkdS zGduD4yoF|j$ePqeue(3OzY*v*@w&duYDw4MU$$05&64Trr~V#^ZfCC>`ld^TyoU~x z_VwYq2UMIN9pe5{=T}s?x?PH|HY_S!eNcs~Nr(#X>%x`vsPKL+TvaqG{6rV7td9!s z@4{6VqQVEbaP=Xh!quNt`jy2|;rfkM;re|mBD}ZmR}_B4LBf6hsV^TDU-|d#?}_d6 zA>a1<^KPlD9}XOm_mij}JqCu(2lM$uue8qZPn>}6SNt*>o&H`&^}iN${2U-*f5xCQ z!Rx5KGCIA}^2d*}6!vE-Q_ml6Ij4o&9wy-vcPzG?Y0O(zXY*dOMI%KU-XN%)hV&Ss|*eoi<6ou7G~gg@zB zANi5lESoIMzh|KHwAV@aWA9(KkgoB>(f)oPJ$KvB_OWc&!|&K2dycoF4blP6HIKja zm)`s56Fr^+s(tzPZH#@+?b{gNNB_j7J$%ibNZK!R`hoIjL|)nSaePR{Qj_bf*Ye+5 zwA6vzG6}6EUQ78@OIn*xCj(&sj%T%;xcrE9b z*D}A?k-i<6;`sfveHq)fV>*BQ_S$QU{%(E)@NJR*W_6KEfB2kb{IkqUefnKqO)9M@ zvR}*9tbTjFPn=%(ygeVio4lUOuiDbnyc$}<=k5jQ?ecoQE`$VYQXjm3Tb*9`{GEp0 zU%Z~L4{7T8{%XIb2l{s*dY^ec;~!I;aP6vzUtVXm)9GO4%)b|*^Oe^ze$`yZU#}Xt z8{TkvO-HBY$)UD(LQ#q7vXY9L_~f-JomS_NPq}DidoB4?OIo`k{K`XXjMq{*O~|XN z4Zp@Ww+@B`&uhuA;dvDW!^&r-b1n9I-CaW!u7~;P zE%JKutrqoGJH4=f1?b)7^+Nugm6u|YUjA9}s8e+vo<%E2fZVCC~BVbhWtCXC||D{rRCo`rx*6G7`IPSAN!_ z?r1k|O^enC`dfRnsk>f#rPB_VZ5i76UOU3)+R|>^=0LwML3@eU zj_`ZpJPNxO{9f*~!+w{eeXZAy@H<^?U(Yg}Xt;he-f-pvUOU3?+BmNkIo+_&mFWK5 z>qhuo8@gXc_&X2XtzNgfzx2LJ%NccM;w-91P3pGK=VE;{!4md&KDw`Y-Rl0E;?M)+GB?bozy5ih>FD~r-r#h@{$7dhbzV2c-@J=U z%O_VBl%;cD=e7Ig*mBmpdVYzceUsNt@wqm%eL1gl+F`#Jqy4hij_^C3_QdPvbhMs^ z`(aDa-R^ZGd`?H#=k*$=8}|1qbpPRXBmAwcwxo3@>vOnn^E-X!zrA*Z&$Xq!%4vuF zz8dY;r$)Ems$=Q4B|guac0SPW@1fnnYe)Et=L0 z(C207j`g|`KBuGWpM8}%-LSvcqC3m$%HOl{N@f?>U!iK!_wrghotCRw#$o2r$eio7 zr1k>?vwbN^0WzD}gptsBGCHzZI&)1a(-K)|M6N0-)gSq>&b4X6)v}%&^lvCs9iPZK!v}2rByGdbhr5! zF1MS}JKO6ed`nNykNvjA>4nd`ThP1E>m|y~Jk|5vp&I$wK9038|E@%Hj@L~1 zSbLi5oo2WkZ$Z$iLr{{rX`2#ec@|p=h)7SL%b*0k`m*;J0KI=6T zevT^1ccobqAH8122?v(tD)hE_y@ZdoqgUzl!sYlw^jZu(;CxI7rsLmkrx!jSe}vv~ zUN7Mv?WoJpn&|mDGqsn^&v5zOj$UW4mngq*&#`9LLa({iX@;+btI<5sYbJcGJ+^$IDIk!JQi}ivqOZdL>J~VfDP5D{Nn!B84xIBN1=2u=b z)lb*^NvAxg=tXCi@H2z^(fr11rutb6np>P^*v|*h%pMlHo`myOb5`V4rqvD&)(hJy zey&Bcv)4@ZGYw6DkG{cahW-2rnx}cq)bcdFpu_{;8u{zB`wg)Ex<^rFmUXzT`Z>A}c->T=)716%gv*?6*x!fHectQJ-!lpd^4-h1 zHSy7Fed)AXT35}#>(Sckwd7+hY31@!yOwbO;bF8s@LJxl;({p}vOFEXwmL0$OK5Z- zLF)^z<^4)S%ilK)KG__;+VhY{(K>E;sNGc_78g_)$Jo6lzInZMPA}Y7cnrNxUN7le zt?0FO5BtOA_BeVyy<^agvqq<^)dx8Lc7&$lPhEA)Cv|9lrH zE&qz$3&`Q}+kjrF*Gu|WD|$PfUby^zf!+eIm-Nr{LUe19PW>Ezsy!dV<@XeNS9`sr zf3>2w(dmWD?`iZN_IgSG?1Ls8Ovk_OL#%({^4o~s2CtX&uU7O{JH7Dp$X}wj$?GNk zGx@1orgZ#kIMn(#!ovLfEA-y1}m-;q&iV^agmnq<^)dH+Z=9FI;}l zp*Pd(CH<@Lg6ZVvI;R&dzs=}f?DdlV)rwwgcOrz#?|JmfyM@dHab#^5$?naQ<8+jZz_+i5fO z9dVtM?K31XOaIt-byLGx*YPq^w$El=$E%mJeFmS!4=WgJeY zNl#J9?BS(VHU6g1_e)2P=HM)$Yz}@)KDQX<+VP1clk$ql=ESG`HEUP>_aLp^k7i%F z_uHiX5_&CD^t4@NI+pb9IfMC#*x&D?JZ(+*>X;Z>L)3_?hm8Fbsbi? zk{1=O$8QSHK1jG8TPeKVLBjR8N8x(?DeCxoOrr1(2MO2X1cm1uBwX!}!u1+T)bVxe zsBrzJ9uc1SmcH{r!hQaAIY_wAKmEKNb$p+H`gu4i+~=Qu_KXVm`KRk-RJhMS{oEE6 z?(?tbLBf6h>1UUy_&)#ilSM>$A8l9uDxadlef}w*qQZUtDW9Ukef}w*qQZUtDW9Uk zef}w*qQZUtDW9Ukef}w*qQZUtDW9Ukeg5fIKO(%Z&p+KRM}_^@4buDRjk%-8&D?i*BvYfOW1c=-CDaE+T0 z4maPVyWd_FeneDwLAkQpw848%3xeG7jBCh6Vx!9srCry_@NvtEstSrH&YDG6V5;J3 zA6+XCvd?+iN8iLN&!w>njbEVAW{kb|s2p|e3&#(CPw(SxC*EHXdh>J}Pd-s}QSnqg zs%bW)oENdJ^30@Wqv*IMo=>mp$ZoDn?>1rHgtL-yk2*+PrL`$qyNL4)aR#_JN^9ek zI5X5Yu*GlcYgS5liFqt#chGUia@?I9_act_qflB{t(FI6rCi7>?D=tYN|@24#Fghw zqr&>wux3$VG)jusJSvO^Nj@GE6*hd{%sB;>CT@$A@QQgeW-?`>32PY{*2f%IpB07c zM}@vMnJhZmIOyHHyX{J0D?9h<@TYnHlxjndbjUgs01qw~TqFQaq3*HOPejWOE1&Xh^^=;8kU@6hSxb=2QaL&x{?H#wcKKfgz3 zpx2QSmHN>aGpJ4j@#Mf*;w+^jv;5~EMYa!y`g(#9X!Fls_#!i^+h&7wYk55 zS&ZSD#rU|IcPd;4cAU6q?O&UC?GxH|thZ?G=h#=;o1wIyhtht*97A)l9jI-`bc@#B zYU1@xXxnkvqP4fNue4u*(tZ_6`!#b6jdNUGTVw9q@zY|7ao4y+nK9;pnRipiqc3U3 zC#KJ6=9D3y<5#ksN9bn!T^=>ZH3sPrcrqLcnL~&XZ|%ICBj7aFN5XtK3YJ1H@$pOH z7`PaYgUcaZmH0|{I^^17<{P{hatV(A6w*Y;pMW%N@n1ojg7^#YEch~<0yS3t+3_E!8EuSUI_1n7s2P@bhs1d!Y|+q_%ApUX4bXy_%(tTv)%^I zfts(A%W8ZioC`G;dFB#66d$}RlO7&JF0J_^2|q5?F^huejEldFEEaOxEv*+HWmv$oj)j@gH~O8e!&_`!(bNCTZ-= z_@&dZ;~AN~AN}R-glJyD{*05aIR%FV9n}J`wBhfuoHIRW*);!P`1)eU5Q}c(TN|Br zCNBna96JVB3=O-`BqYX+&yEF4vRG$4^SJsRolM+p^fXs*vQJ^h_DYszIPZIzI6aJB zF2}HAbH&uInkAEeX+zDzxcYHD%j*wMgqoXf7#s+d=Yt^aazMLJUTIF(K3I3G7gjwF z?6_Rfc`(An?_ko@i{sgGwPI#mbXHBDD@T8@FbA!vi<+MRc{n$GD2=I%bxz-{-JzGqy4we7plZ51s(ehyCFNP-Ufg*0PMxswZ6|{kG#Td>Qo|E`dP}_BWh{wRWu(_EfMq}>|qNWa^_G-T6 zWc{$?NJZC=1;o#y{CqyyF`%OB$7SrR`f)i_{kQ_EelSm{sULBu`mqFNkrK_VY3s;= z^}~++6rE4knfRR&^}~+a6kR`_A`bxJl9J_?d}o&jqE!j(Zf-JR4>S zr{m#Ru(%0ZA0v+1i^pL$q<=))PT$uY>v+=8B{Cg$oTKP;JZs`6(_zOcicSapFO!ZJ ziKBG<7AhStL8XI!8ToPWbl7o;qSNuFiEI1*$`3oHP;|Ncfqhjj??9EyAEC(F?yoYQMZmwM?I)?FetrAM}63a^~2zy^23hD6P=Eu zP26NU>{vR{={Sacl^-pk($NYkKaPb;M;mykbl7ooqSMjY#7(Bdj(HQEj&AI$bTBWg zNk>npbTB`wNk?yZsC3xzZKBh0vWa^_qJG#hX`<`t5cX9)9R^iTheOrV5m5DX6wESh zrRFt0uzuKaXQI5&VkC0bD_%RJeb9OgPn8vz;xJg zV4~A8)5JY7kso&4mgscMW?!YF2r3;HL#1O5R66FuL#4xx%MzWA1txB?TZ@lvAGalMI~OotugBsv{8vaix{6I42GhRTmypwe+G zJXAXDI405QxXZ*%ro)as5?xR4Wnb0PA4ApC`=RRT15ow!C-6||u;YtFr{hr<*Vj`! z9!PY4JjuSwk6%FL$5T-G@ibI^{1P6je%SFoqSNsk6E|5;?f4wg>3E5Km5!I8((yZ} zbo?GF9k0McrNfTD5uJ`dn7GMuv14XLr{i7rRXW~-O2?m|((yi2IzE7hDi=F0Mszwp zGjZ)RC$%4T9E(`u{yTh~`@-zYy&3GuzF)x;;XfeHi-NCB_-V8s`H}6I9j78X9d+u; zhh%=(u_dDGDbHg}J!QUYQ%?_rs;7rT)zgOXQ2AlUkBCl3a~IdwQ#;;6bh)%*UzJO1 zsB+=CkSUk8Q00;h4^=!}@oAvzsB*;nc41(lB8Q1zn^R62N0b;xws z@fD)eajJ=%EEhW_LUcNYv#-*@^DvW+QBdg^4V8|u@KEJq$32Kn$7B;X**~@87R2ar z+a+92&#i0kn=c@a?wgs{JboO!5O##q&9QX<7Tr&_;}k^SR~DJL_I%0ZSayton4X`S zC43JzmwiWByY^V(-Y{I=kJJqoXS2`a#8LbB1k}43PeS>>0gi!B!7QG%H#ZhLt)lZ)c)&H3S)&DsMCZAItm=60rY;-zuP26OD*zZ`Q(~-}{TM zel$8AOubFqWIF8kp3&)8&b~^=4N&R05h@)kpwe+OJXAXD_ngt`VD4w)Ci`Lb8_ei> zx`us~j(ec$>Ag_(^ggKc+z$`c53}D{MyKOp6W2b&9?Y@qcaqV+Up$^+`(eKzj{0Fw zo4ES@qWW`M`~72dyY#$?W1mm!ys+Od#@sJ6n%g(|oc2ZbmA@}RwM$!}`gR%n`tNpew+Sh$1Zn8gVzsrmEbwB&c*KbUm>itRk zeOEg$ZzDq-(ej72QGoJ%pm?CtP3|o9arzA)n|PdYy|%TkA$B>K2C`9J791$ z{026M8Fk2OSRX2WLwIavu$bSag0^hWgU7+;FdOoFK+q2I+&5?sKY|_LNp(3t;V{?{ zj)R@xLr}-(d4%CFVOQ2)gx%n)um|j&!Sw}lFBJ5F+}8wsA@?&TU1MN>*7M*1NIyRq z1WVw_a6UW*(*F&Hz+2!@_!=Ar--g3sD=u^+U^_Sx9uG%n2207SU_9$h;RHAZo&hg_ z6XES}61)eV2^nuDm<;(QJ7BJ~_%qPtKRlQ958!$56L>!CP9w*$;(a0WK*cNIh44~% z5nKXuNyo+p+{>{39Gng7(urnXl=$J0`AXua!HeOUa1J~VO7|jIO8ixa+w|P&_*2Mu z@9`($rSR8~F~Q?6z{}z1aA{_+cfj0;4!ct>;`Xwz2Plz zAY|Ob_)y5WfbsG0hj0oc&*B%rJK;r8>CA;|Sf2;U%lK9o{;K1f@By}e1R299{uN|g zp?IA}w59Mc_;c7CJ_=hx9k(rHJdAjI$hZ;lUXbw);)U>OxES)ietZqw1lK~!EdCID z7Cr%=gTI7)#~j}bUw|*c-@rYP?_=ZjxY_(Itblyy7{4F>4n6~U&prMDQz>6}x zA0E$vuR^^z^BTMwz7FqzZ@{PFoA5Qb1O5%Z1t)N!ejATG-*{42Z|ehOcJ zpTU>l-{6Pvb9gu}0(}9yz%SuA_;>hY_!WE*?t@$4*YHF5PgtJ@{9mvO+z*$kL9b7F zz&h|zSQkDCGvL#(KKwI041NR~!ehArG=k&dkx&|zltzZi{3ATjagRS5Wcr5J7rLi^CJV|Zf?_gW_4$OvGyoAyYj)LvseAod# z06W6Et!NM7bl4f@!{h4*i=TwuU?vx^o@}p#z2F0owj%yH><3Tbp~i`DI2-`K4+p{> za1eY4o(#Kib3GVVz*Arq90H$%L*bEh{D#4!;RtvU90`8{N5P-NG4N|R7LMdci*axq zJRPot}TS&2}W}Vax!syVtTLWUD(-~?ikc>Iv>+-I_f*= z+4>wz&l%oR~~jH>!Yxd{QVL<6>EntDvM6WY(B}?-a*qKHTAjzIy{x_$dWx3}bt{x;ObHq>p=uJ?c?&MKhnNoT`S{$9ws z%!hkwKOfg0E6z6AaoClZ;`zL~l{Eg)rE>*b>HfYM{=ofx6V!h4QQ@oH-?zZqs{K8h z^D&3=_5Ja&l%@UdEymq|UFc46X4_>N=RKF{AQ#fS2YHZYFPH(dI2Rh3d-r1!$IBti ze%}^-|Cmp_PW&eKIs54>u-~Xf-#=5iEc-mq8Wm3KzoO@G@xc*@lp3 zlU%;(9i&XV`cwAB$tFu*a~i*d9zD zrL@NSVUw^zY$>)Hdkou(?Z)1$~$C_Tq@vyO2 zKDG#3g{{Z7VSBI!7jccohGJ8(Dr^O|4%>|F!uDZJr=y9D#d5Jl*h*|YwguaRsc^Hg zf!I{63|oP%#kOF(Fq+t)1vU_ygq2~-u(jAGY!|i<%bvkLST0tDt;IHBd$9&H3Bx8~ zacmW~3EP2jJ0G;bhGJ8(IJOGggzdnB0>ZJeST42#TZ`?$_F~zyI5w7xRbgwe4cKmM zKh|Y7$Hoe=IJOqsgzd!|6cQJkgvGH{*cNOT)}V-EV`H&gY!S8+TaRtQ_F(#SAsZWr zO~uNv71&yA3$_c>hfOW8f!HLh3|oe+!!~1kFn#otgAK-Vu_|m8wjSGt?ZFz(Wgl!T zmWwULR%4s69oT-XX$d;mB&-r!j;+VGV4q+arQ`=T6f4By*jj88wj0}zWtVXbEElW7 z)?gd3J(xbe>V=KPs<0K(#)&H~n5jWvD|(J8V9@oVne-pR;qF7}38nc3oUctn zVI#})7BD1I^=)~Tw3^lT^Yg@qk9#gdNtG_B=&50jIW>YKL&qIAQDYD!)8KS^j+>h| zTYAkyVN(imJzrb7*9&d;aUA=M^cuybv-_1W00N82lZj;oB~wnfdiL+0W6JZ&3X5h| z^wj#8@m4P-O!3{7wUPC#K-ix* z(b?~HR0m4(<~ykx`Q)|u9mgzTpLU>C_c)h#@+nO%U$yq|3;XjvI_teovb>C1O?>iN8=O|StahXIq}NK8RgJZLz36hpfqs2} z*6+NQ{F+^E1`;h}Y%T3w6W_evDyJ9r?a%1F?)BtbE$I2Y%uol6C0uTQLGKfxZ4X*scr8;G)6??#xGTc1579b2JJipx=d*V$t#X^x$mV0%w~x@v z@_NZSSu1**oL;!xK1Q#L*HgL8$g5>^L5LUmVdpDJkY;S&^y8F$-i3A^J8G$ z=k&t<{T02@UN7WddBI$UnYH&$HL0IovxRO-Si)uaDVh_!X2{2MHGTVR201`8?B{1_ z=6g-kzLZtWDyphc`FWi^5x(t3XO7pAZ?kKz-jmR=B)AN9$Uz<$S6Qt?us5I9yI&ptZ(p$*=sPipt8;1#&DMzg9V|uwP%I^?=us zUukOjdci{vvxNQnJ6gZ;TJmcy&rE9Qlh-M9I<2jo`S&Yyp7%QPsTOp$Mfmd%bl&qi z@@GL=Nokt?3_RL85-y{C=Yum^xJxlcdt#Eo_|LUN3h1ZjRwV>zg%Kixd>Y{h6*OPzw z)XB=Cx#`x+!WOo!gxh}JPtIKJwd7kZX>E5}uKRC<>!Y>7Yss&|dHDXxqOJ zM{Bp&I;&t-d4ZXNqDDIYd2{x$_Skx_*e^$*v)}7XEE!*#mv4RxYC)Pl!L+XrH{(~c z?J=w#+v~Tt*Qi$R_l%K==l=ZOSx`|a4gDq{xp3J0qJjmJO3O{S&PjjVJsg++gQGgw z<2EO*ewql!EvT};BYgYc68No{WBBvm=lMW)ax4tx1!MSS-tV*-1KP}`K~$5z9P%!M zINIOu<9!>I@cY2IEtLMK@ZM}!eErlA72e0`PF0zqtFHG|ImvusH58B60={#;d~tL* zUwj=|?efJzG6CN-WFFVi^+!e&7v#|?sL8d(=lz;C=CHw=7Uth0(Ky*_=*PEVh}x66a-_0P9uYu%4+&vHz^@XbhO69!>4RZ@8{s<^nQ%ycnLKHNtd zD~YE#em~{IPPUh^eJ$JDxcELF#vCLc!rOg5e93W&InFg4XHe)k%7^g&wUG~ry5N4G zekODtHYOjohx0){;L^&<*L9??m^j+s@1yOz*j~u?d)WT2i>r1?haDTr11@`cY%<5% zN1S}(jA#9Q7f0u$!ozW9yWe%S-Ism3?N5Vj9gXibEX=Qh2bLc#7lqlkb@v>h$V$zE}8suYZtm-@k5f zkZ|>{b^OB)65iK^AAXSVelA=;A4a9`L>I0;c2szO7p|X`qQVETUG3Ed@?{hGavS-Q z$w$M=QeSVA@#y2?u(m5aynP|t)elm;7~a01DBtug6jnDStgxVHw%#+9{ z6rAex6(=Jl4(|t+vB|WVKHf$b@AFW+dWVQt8|`iW@k#~nr&^eQd7UbA9g|8ZZvyqJ zLv`=lwe8jWR{pxS&1n^dwA!Mzy%x26KY3tRD{^K?i=S~bPw5fzYkW~j0pT_A$?FvB z#9(=nYlUC3(Ye9vHMKzon?=4;C->qpQv!Et2r-q{zQfQ z^H%3iRJcEHb^fG;oA(f=%{s?Y!%NK+Ysq{4a5z5`moGdqzhE};bbOst;c)Z5k~@IHb?$`23-gL+`SV!e zYAaL2{kg1gwUy!U1%*YGe)3XnW>NXfVx2A~z8>X=kDpgQvz#lG3DcwSaF||zn&HxQOiEZqX>n1$ zn-Es%(&N!^+={ZinG#i)9x+x6(|l+yOwV7!VO5njrrLOJ)2oG*@yt$saywgX``m@q ze^^mmwd3LA7MIR6`J0`xeeS~K4;M;nyOi+Ca$EBhMwhzUG0ohGY*V?Z842rE%+#Bi z$~~J0bjzxR=kc4<0=6k`$CNNVH}uDrE|D}cs%>7EH=6QmA?&B_LrY|<+k$bTI}O4 zBd*%bEGGL<8>qPIw}jJ{8rR2HS~n3tkBATTPNubSN_?HG;W%FsXA|4L>6?tBXBc74 z)Hu0h*u=WrGY&|`(fxaB9Qn16<4Y~HM~DR`e)Z$}C0{z9 znT)4vXILxUXU6_{!cHBS1=kWwJNgWxoVI_KUekH0x4GZ$e7|d-F7hnO2fwsOZ?xAN zQ&4Fh8IIsRikbEt*hLyQ6HjsceyYbx^MvaClxp8$=$f7qZk{(#Eap6*x}}DjdoN{) z>PibVH(_dXysq!RCyz`2gL7WxC;N8&x24sd-}}7jr;ZcLH5TSye$vRSOyo^@-i*my z+X_m!_*R-U?pJ;iPjUQy${YE9M)ka@cJC$Mqr!dOs6P`GuDsFl>m4Lq$?pLbk+%KG-FtHLE$TOi!)Fv#&duYhqI9ay91in!S!o%{ zO-wJ+@-h278OkU1^TTmw&#E%{w3Yq4v;R4SpUOu?Dg)(f{gnN~&o+IV153&N?Lpq(&$vnsDOe`6jSCU^`FoJLV zD(ySs%FkV-uaLNk=l9k2)@;ki)R%AJj-hMB{ywSc zAIXpC<)sVdfzr8#G~NA+VN?( z+I3O)r5Ybg_k&tLAsEU?IA^oQx7&=j;*V#)&rFWxd$8l_J~@26Tt0BGbUlgdm?u=n z%famTmeFHx^dKEMyk(_*dtvsQ$>^~+w6EGGaRlS*T)^Cjil?y-?KhCI#J7>H*glf& zTJSfnHk|uilLy?>#_>Ps4Au9bPaPiyxd)7&31`A-@OC&G-T_PCop2t!7hVT{0`Gzk z!pGn`_-nWx{uVw0--TbnkKmG65dROnkTLsOk+wX@b)1oK?D&pcC(ZbdT<*+RfmEIN zFv2NIGZx?}(9XH4IaW0XtL8;L0n z#P~ZE)F2&C^~Qdq8LeGJyiVkS*S6nSMr&(dX^YYpr7aGj{!itvi-Se{eilz?+wUl& zwdW8ohX;OM+kOift*w2fElOLIws<+=TKFk1T( z;&tZ>ckj3T?k`$f`$}7swkU1!bZXqi!Qx;E;~w3{xJTY^`(0nOHht81d+xHlw*59Q zT3h={Ta>maZE*m@m9J)Z$fN~!B!+kS%=txbCq@8a4=on!VJx@c|fD{WEQqO`>k zl=emBKsjZ7O|UGXZNHO?)?Prou8bVu{kGq@MQdwcX^YYpr7e!3j^{H*)ur_GZe(mV z@3;MiEn0ga@xt}oeuEaRt$n2}N?Vk+c(8hIzcY*0zKnQbzwI|-(c0Qq+M={YX^RK* z+kOKUt$jK1y3q#vJh$I(MQdwcX^YYpr7eyl$7l1`73B9V)ODZd_WP`8?JJ3Q0xh}M zw%=7nYinO=i_#XQEuLxG@$UyW1Z%if-j~p}-%LeoFD70`o*H^>``uHtw)T~_C~Z;N z;wiMKXEW&0EZ*X~j5gi-ZNG1d*1n2(;dae_pA@aFeWfi*Ta>nVuy$=tw)%R}+E)`V zT+i({MA6#XSK6YqMQMu%tLOGRp=j-Eh?hej!sogD)+eUdN6iwxersRd|BKBWk99nW zCt8zeU8d8%RMOh`Jh$KUL~CEmaWsaZ*S6o~MEk9M<+mumMfoibU~I?6jtwQnL``1)Er=5n@ukAB1L!Rkakx8Gz$Yu`$|u8d*n zwe2?*(dU@<)j1~W920epi6hPRyNo)175djCwC#5jG4swkyVA<=OhSLK+)cdB%=0Ae zUYPyvA?80R4(xil_TX`wc^K&VjmY)A6+Y7>)XljT|*z<3P^K z)9LMaZToFPa&Gak_LCgr7~*b#8k^qVe{9DY`z=Atd{@9Oj3UZ-Y;uxiBl{l#pMg!_ zv#>pU4i1Hz;YILyxCm~6w9^6iX7L-~R=5hj4DW!ygWKWn;UD2P_&$6U{uRCk{{dfz znWW(j$h*hp9=Hj7i*?>%HRLq_vz?#Mf_K<{Dts4CfVpb$ra9w>Vj7!P zbA^kV2Tgx#3|P&TJ`=Mgt?^sC1n1&?z_uyaI84XW{F-N)?S3p@8&`8h@Bod)Z*Rnv z#h2}Uq|bgA5i{RNXuo#YDzKwwh6U8MhtsPHy}j$os4DpF!R;i$4zA!lz+2q`m|>kopnuJkrz&p0}Af z9#lp<+0H9Famv+Dbwk@J2mQtu{|fTcXFLO6`aoV|3;My4us@s#`3W&T6Ec58{9<@A zyaW!0Rgn5Z*=fE7ji0Rh^FCM(f1l^J9Sf`6-=o>y7SnjWt;zQe*s11kyWWKqkvAMC z$2}Rcb2sST{|syp`*y|p5HAPn*m_Q2p94%GuKk`P*>2Tio9;)n3@5EBEBrIjRYQ547Vqyk7*1t<2vk~z!Sh+44ljV0L(acA?P_o#R6V!|>KTsW(GD4Ig1M}# zKIk|vzD14 z#wPM(H|zFWjhOjv!-g|PqW)l^u9*BNhRs=@3zZ+GQ29X}GUtWTdjjhftWSWIa1NXY z7sL7RHn;%tT+76}-|^>=@0Q|^LLEo>LVFZ{2GSm-_}vp)?d1 z_r?4-88P#HhK?a$RMC)pDqMbpw?0jZnG00;(?D3@1XR{Q~#{ z)@MPE8!v}HgiGMYz1){gqqnlorL zEW+ku)3HgUQuU`B)(absosG@Fj>oQa=EJmKSN7Ie>!QY57e_e`hH7(qyW@^bl$F{5 z`>jbV@eNA24S2?+)%u`w|2fthL;0j@^JcSdkK4%gKztjZW83dbqL2OClw)sAIrht} zXSwms{eziDTQ? zn&Z#=sC3)!HlpWH{K6gk@35&mb~E@j>pIu|l{mJ&rf5D*f9y?!+ix#o?pFYfx5@XP zn3n&zW5?>)^SKUGy6eJhC_hvNT31b}2S>W?y4Gm>8IbvD;uWv~ta9Nz>j{{zCjLEm zB(&#^#+x5N>umF(mANkVWDoUwb*(%D^X<~9)%>vEQN;8-!z^Jxns9uTZBwZ2&7k~f z4zr>6L+kRR1q}P4?ee1)oCA-AWiH+&@Hp15fbF35L+9-P`d{7Is^5WgIQOj|9nG~z zeS>H}>^BiH^NoPwhW+Ts@#RNncr@$+j$yxVi1uR;$Cn=`L-{cn%8yf_{1^hmerR2O z41-}mv|WCTgke9%vMxVPgYrZDEc;tYS4yG_A?9~;%0RiKYnXmV(bZY!b<&T4G(7fO zg_!wnLE&nLbWPDRk>ei$&xG>hEU4?;6sT6>Y^a)iE>yib4~~Erz|-M0I0GvG^I!uLYdTI@j8u46cNiK;3VYL)~9!KV7%xv(7ax zsDie9)pwMszV>jOKwZ^+!igxUkMOA5r#p-aJJH4U^cfmnW={pJD%lahvV`$T-{;T@2DmPz-KL4jD(lx2E ze`i0Ic;BCXbug0cT7JUuR37W#$?)e;`SB2(2_J@~@DX?!d=y>-AA`5R$KhS@3HVd^ z6nq+PgwMfW!QaAP!w=yz@Ne)r_!Zm&xnB&n!W`1|JJ<uoa&Hp64)ft# zkp6J66UN~?@M`!jya~PsSHt%qeZpWjRK5Q*d=~D3ufY%DZpb`nW^T2=LRHYuU=I8n z>;u236D%GLzha$pI`}7?2lvCP;J*o93uASe^9a_1AHW81FFYJ(*X4Q#Pl3GW6xVyK zyxCIp__i!M-pTo(S)N+V3tni1l6YWY~+2jJ7jxXfTBJ3aH~QbX)>QvHpEH z4l=i4a5{VePJqnsr+0SaZ^1L+pW$Q}%cPxzt>M{_`Qd_d;aGSc)EsWp;7oWCWPY?D z7gj)}hk4P08LVFgXTk?zKHLBcAoE-Wv*2;{Z9L|0GVxDt{VLAL1&WFcx0$0IP;37B{UIBAq99F_5@Futv{uo{Z-+tIv1Y?pMVcR=|2WHu>KT$3O1sF*7hcF zBkRY)U%?W$y#j7xeGz;X{@!hW1-`&~PdeT5ub<;sxQ+D-;VUo?z6Oin>u>>l16~c^ zf;YpRa1Hz;+yLK$-@x}_GdfZqz;obV;E&;lPy?rb3@5_B!Uy5s;8XB(*oU_AOKpc= z!S-3q*#Nu3uVDfF7c7R~z{}yk;Y!H48NUezXK}MK6t;oGU?CgF^>r9p=K>a0XliXTl%BeE0+`fZO3L_#wO))}bR<3Nzs) zuqiBu?V;wL?*W!g_&vA~-U%;*kHgF1%TV*ozXh*^ZCeH;nsyOh1y6#? zw;}Lq)-QzDz#^zQ<{yLC!C%7f!}@dwZh#Y^;-BqU1T~NRJop0`hpXT+_#^lrydCa> zt6_6Gv|JnF1L56pFuWI@1@D7J@P2p=Tnq1m55jeD9oz+f2HUo#e*rZv&qHtsTo1>> zN8s7;QFs%44E_Mh-&ODl*6)TJ;Lo7ugZ~gd1wVzqgnhWN{uL~O&%n#zW_Sa90p0|4 zyj$QF*7vyWpE_!6l$Y85ANV`iiVoWEVORJH90Xs5r$go?jh_Rz!&3MLTn{zJ`_u3b z@DsQbo^l-R5nKk}g|EY1uzfaj)xvr3eRwte0PcW)f!*5CKEXNgQ#c>)g?Gch!MEV& zut|H`CD;<~gPq_%VGk&OPk{Sb9}NEuN4V{yU{H^8gmvI~ZuglS$zZST%8yI?o) zcR%;{3iNY~A9^m|l6_hR_YpQa@wc`$!~d4N#i=>3HUDE9v#!58^Y?E}{I=w0^6#FJ zf42$Vreufk%h>>zuC`EfPAV^yM*Rk$w4DZjfGOXu!yd%sucz+GJ_woSV$`!;)h8W8 zbw+hX`{_449q%=41EynYyYf)^G!j#MnbL3yru683eGI03_3T*nwJX%|m1dQre(O`7 zE-`=W*+z2PgXZt#?;fMbFXiteY|nvfvCX9P434BUNmuD9##G){VakJRFrUs&{C%)= zW)r5g>HJZeQqyMh!KODgZDUi?c0cPc;{62Drf1>G1EopzS#yQX#Zu;U+cVQ1>dcN`)_ESuH4;#zk?Pa^K;`|7^9a9^n_NANA)jX(&`a6sF z_w?IfGgJ54K;@0L8|#d;-~L5EcOO7| z?Dt*DzV^Gg7`bB?Zehp)yPV9v+^U&2o?DVY>vYY7Qy`ai!)&N)fOHk!6%K*j;ZVZ~ z{H3NE7Mx_(k0+lR;fYU+H0}3q$>-hNo@qKdvy9?c-0lUVA-4^|Sa<>)S1(vR z9G=el0yrLC0ndO}!-=qwX;V)@ZwhuBb~~o|A2o+=i^RJb_FJ>$I~{e2-wV@nHpfwV z&VhPFbFMkAe&5ma$(H6AIYhAEh{eqJVv08mYoPcYF_hjs zH~=nyDrxTL<3pkHd8}JM1761VN$_%bA-odKfs5fXcon=IUIQP5*TbhE&jaGm!yDli zxB`9+Z-%iL-`B#Xa24zTZ->3%9gyGBO*%%n^~vxqw)2~Bum;YC_rOcwy>KB^y7lgb z;$P#|Z-r}Fe*mtB{5}^v0$+fS!rwujSH$0jPr!e}4X|e&`j&7wd>Wnue+_wV8*GC4 z@L5<2Uw~J@Es*Dq!He*A_!7Jaz6|wji02@2o~s#dfWK#*=VFF`fZJIAlVcWT`3mbQ zQ}HDDD&+Y~@H*r(*ZH9~ z)t*JiaXf#%uOJQf+q78Xn>DpDYLm3QLtZt8e}vqQ2fLu!oIgRGGw;LG;79Oc_%T%7 z{}f&hKZn=Dzr#jcJ8eFC-#{Ki zm@-!S_;lF(HY>Jw>&LrrT@iSuh97#L#9qJr`y;1Nu3EzS_WQDE{rVh7`iH@=enZxI z3=xRZ7sL9EShxCWX_D`+r0Vl-gZoY_X1*EIzHP8VwrgRa6H_it%<*_W3OlmBDO7$n zhibE!Q_HkXJVP|^6t#uZ*{*Y9Ce-?DmS;uXN#;y7fh{BjGAn)0V)_tgEhc zgUewL_ygDzs?9qAz6yIm^|pJ%_h4W6CDd`gf;`(azu#zGZQwxGHLtR*Fa1q@(RVzJ zxNa%`y1DCDTh7mx?AM0AgqALxk6Qe1=JtIfm3P!TVfLEs_w{A3v&4SO79*Zr>Hu9^ zwQ#$>m`5`v?T5MZT)wD2?9+vsWeX8@E@T~ROa^wxMq;^G6}A#vhi$@kV0*C!mr)Mb zKx_(Dj4i{~U>mS)*dB~7QqUUfhfTr?v8C8*Yy-9p+lw`zpt@i~v8h-YwhUW?ZN#=? zd$9&wsJmc8v0SVQTZyg1wqUz3{b<|*8;DK9%CKeFT5J=x8{3a%$Jqy)f)!)Sur=65 zY&*6WYp|HS#0Fziu`+BKwg%gPZNv6pbjgDjSTAf6R){Ub)?k~k9oRms@m1t6HWJIl zs<2hqdTblE2Wvhg6+okV=d^c^uoqt`Pd?CCAJRRjP1m}#2S1L zU$KGMB&--)imk>T!?t3(vHe)nYe*k95}SrqVk@zA*j8*e)?gXO!v+p$luhS#wlHWZtRRbeZzwb&+XC-x=Qn8vvaHWtgp z)L5^=)?-_+UD*FmO9qMc->EK&*_5{pIWVVgkoh4$o|zywx1_$KRXqKct$ls?|H-_s z5p%q1I5v%Q5S|~FVazU3vcubIG8b%kZrG`Fi}kF)&t)5)zc$df@85Mk)gwq>MjiWo zI$4)#$DYtrf9kt3l%-i6OZ`jVE3^J9F7NY8N8}aHBt3Pr;zZt8*Y4}X+Xi-AfUR8W z>=8185tDPOjlCiLsPNuwSNw(t3Gd^=b^j6-Up+I$*F9ELct01e>wZ+Yu0)F8_#olB z>d0^X-pcPL!BON<*l&VE$K{!N>C8N48ZOcHRvedT)x(PynmOmBsq9XsiQn-wY_uBy zP2tE@3$I`dlu|d2ReQo!Y~lDe+>fAU_3NeVQ_2`_#d&sIlFXE_iXx^yc475X!e$lQ zQ74qH1}R}0=PEp|+hGymK2_gs+=joKF=NyY*g9|P>l#;Il}5kt+h=C$*Ia!qnKyTO z-t6M(=j0X7D;QD8u$=|@?D$>2arc^|-Q2f4`!!2gvjoi!VNGB7j1*TJ+QXeT_m&4} z^BZqw*RZxL*xJ;kKYV~LzbR+-4(qx~QyaRcIe(W&=w5>EK(9Mu?CH~I=FQD7(vWvd z={2qJI@^A^`}goGQDW-Y*Xi_tEEp0*QAbl-9-_) z73hvm(Y5DNb>Vb$zl_kWM0Y}1SB*=A!|CW2t07?t=kq*tr=;peI9wB5U%!T`fnxcY zh52_rx)*re5fg^1eifAGO`lw#Y2yp>$Ccz4R3(eqTocMje?yL? zHs2jn*8&N>oVZ5vyR4DWJ7nKw9IfhYq95aAV?!OCcP(7osJ|EBQ-kfUO{|(*?Ddq! zk)&@KakRhRM{T>Z=Krzx9^g?`d*Aj9C4vG10s;aC2nYyB)qwPbrj!7oiY6f$Ad+N4 zihy-{1Vu$f#jZzCJja4ZJT^Qw>@}Dn2$mHq`I_t+m(8o-ok}&wG8>dtL8_ zf9_d(^~8Pp0qs@kZ6? zyMA2#d@}p$#}z;I^U3tJb|`&iQZoH?UmpbY>F*2a?8!&nSGwxEy@N;u_Rxp=`)MzC zH4cco%NW17Xi*u*nU?wXHj}XF*c*evrM^AZ2Kz}(V+ zJvBE8_E@-b_G;Fi*s!>XbI=)%ACr~7{a`b#zS_Uc~@^=N^B1k<~16_C)0QBq3U5Web*kU z&Lz`#?V;*cGJV$`svafNckQ9-N-}-d9;!Sf(|7Hm`h#Tp!S*n&&z_-3IiH!#kCbCi zb*pCO$d*}^5!v|`yV;1H+sDs=Qd*2bbTwo7L)n}P)n<2q2g5Yj7IuR5*$+|QJS(vK z;oX{H76r%7;aD?N26DAVGEGIGUShW?>K+jHh=bjCeFPkZn!NR&k<05XF{zR}39o=y05Ume9{)J=UhgHur3XX|=)I}{m?==rjq-RhaTL~FF}dAIga=($A%nTs5U z^kiK%7s(^UdIqBRzUG+UT8q`QSC_86xNGNN@psV)Mr?#Gai4CAUY2jemr85C7~OCb_-2zP))#?AbX;a(fGWdqqj?*||e)#edo>sO z<~@?LA$5k+f9!LpbD>HVOPij|o)0gAE8ssMzrA&EC2VNQs-Eq+vMOpnL}n;hmU3xu z?RYjE8w-!Zjchf2lXD9!J3iHkIF?b972Hpx&!|YLp6Cv^OPKUQcy>t05$a|Q^{d?eg)c5-84R8(W zCw%p5@GjJE!+YR1crX0K*Z%_Ek9w!iAN~8k!biB@j>@REq9ddo@_275^c2){-{;^W zU;kA2BI+|BZM(;NDCR5z?e%{Z^|A0Zm<8W}ti9;nX^%OwIeXwD_%`ZQa4WnMz6;rZ zZO$NIA9QFN>Q~^0@GJNc{04pu>(=4j2FO0((5EmJeh$;%Cdj_s(3dbBegy}@@8LM8 z_)UPnpw9Bi{#bMW1o$ZT+3#x9C&S-SpX!r+q~`uA7!Iq<^`LC&neOe#FhqN$2GKvH zle3yH=vmg`JfYQdc>wIcq^^=p3Hacej>?rqAw?J~s0xYj&#tp`(4?+=fH z${(dhBh*>&AUFp$gS1QLe1wZ(3)Ivlb4~(fH`Ed}WzE>%0$Zbg%cuO5nlfX~Q}`9O zLtTe*e<*B7Pi@i4v_Y8YbM5W9zMl+m~S+GP6AS=iG)gSH8Ml^ruDKO?du z{_Te=X~y4nF?;moAv^xHDP|fQn5!}6@Bn_1hF%M(@l9LU95!VCf%bSdWK`q& z%mN&+<5bRG!J^!|6PckOT!&&0H$$oL5ZE4eh8>`CwIh_@X;39j<0X|a%$R*Klt}Xq zSr=H&{jTtI*bS=vqXc`jrDm*jJ)|u)`(-p%qHQA8*sBhE!RH}Ds7JsP;1rkx z^I<+zds=`w-jmb&erCVSiKw4P9fiD~#qN}l$9q>g8*gc=+U)B<-3yY&-f(yZoCME; zbKp{__H{Wt3z7%krSJl{7G4PNhL^x6;iZuGO4zwYy?|Fj-uDPy1sm3}{aicvcho&0 zdFYLVH^OOfEu0H)hV1t@{Tci7O}}*|RKLakcyq=m``1ms^enuO`)|Vy@N@Ve`~^M) z52$O~U#+D-hPpd^3J!)(!|{-^;++81&X>T=kUd(Vmmzzv%-J`qq57Tm@J;wMdH>~sO#^?JL1&)){wTx(>q#f2m8PjI0EhmCqT7}5y<%8I|)+ey|W<;Mcx&V zb055aLbZb%;KA@2cnEw8wt=5P#unc9usuwvNBxE^pxU7x@Gv+8c7YRMS2zoHg9{;b z$~z4n0hhvF@G{sN{sVH(gm)k83!j1g;9Iai{2U$$e}P9qt%dSj)@uu?qh3!q5DtY$ z!z?%m=E1?R3=V;3!J$y^iVcG|!Qt>;I08NmGvF3To%cS2BjL|*6g*&md)7-EI0khO zI2I0p$H0k@&rx`}a2#9+$HTwD3Ghk|vMS4Mz8HHVTl_wJUCz1a$EBh)3Du0s^jdiB^qOpd~aNa+(i@sUo zh`Fu#!!>K9<#O=j`Ltgv7(*a~kZfczvJ!a^c@5c(G^3Lmgk&R2k!z7BkgZ4^I<7WI zCNdjYj;uyDBRddH0$U>KNET9rEJdzG?nbsC|L^+0GX)qHP$KO!{n?DMbTJ-`U3Kb& zQeMli9Wq)~_Wv*+FlL?p|Bd^9g8O^MPVAY*x8*d{HtVK;bzPjUaF6{x?)wv67-#Bw z!NUAyj-67kz)xE}pU97vl<=g}e?(!{#B)jGU5M;Cvsx?HxcO^@F=ME|??wln1Igh7 z!*mq>HE77ZoSZ_|+{bBCOfM6!ny(3e(yjsSs0_%Cd$!P6g@&u8PyJ58%L#d(D# zMbT&}_Z8Oe#GUu3jd^EA>-r20Lyco$-E+SZL%O8;%wx=RLWW#P^_kxoeTGCy^_lk= zedSj&|5g4KK86%Y^_eG`eMKOk&%7gAsgDHOd?U_Vh%@hThd%Vvr3G%1WeIlpVm9XO zGsbvWXk*#m)|&fRPc&~o*J;A1WD=SJXD{@BhN%M@NXt{Rg{k3OT&R_Q|Z<7iJ*EkFFw;ulfkMnml zUuzGiE| z^#l%R?+|n2(AR$W<*w2%?yl_RmF2O?p^W>gYc;Q9`l)ZgJ(E`E4i{vHfQ_*6%9ovJqX)nA1wldX%R++7h;b z3@oYcT z=lWdb^K!_V)Y3Q5qHaGB<4Br_x!!qxh|LaQ)W1TJ^)NNcC3Cxpana zbN|ai@pF9R>#AwEY5Rn*trMt;p317Z3h>{R!<)Hd+vjkseQ&_MYpv1HiI^qoyh$rN zHf~B&snr0`xp}E@5$p&lOI|mqH0TbsW~csHYUP3K4TZ~~(x8i0C%N%c=NQDcng2U$#;=huwr%4aJ0hwv3Uw`Zp7o)GvoY#acnE9{se=h? z#z&z(jQiv-@nLNRc7^$nv@mPMhr@GFlP2a|E!D?cQLFy_2ljz4Le;;wq3Ye|khHV! z7eUs;%vx_NsCw54QoEL)2C4IA4R;h=gIZ-?&(26M^PF5|{0-EksP`^ZS^o+WR*%lj zlzDZ|D)Sv6ZHAW)RrWJrHk<%e2Xf&wI1j20H01e?T}RMdU-Nv;q4N;U@5durgV36X z=Gt0^&|F;Rw3eZHxa>_wauCh=TOu;2dAZgnG&k4!fJAFWZXU0>zt(ZO__7doj@@qyRY;30?}{5P$wRV?V1i(>9?-!8toA z6Yuf+x3f=3m-igw%U&}5-rSe{y4C1YevQ7;GnswLwb56U zlIbfs<-Y1)GJUln(pMXlOrQS9=RzUrv#A5e{cy05RcFPZylyJTN&UlRS^y?p&f z)#$tQJFpskmwt__(Rb;mj7#RfOFznRQhk?x2UVl*(yv)H`Y!#NSEKLJPyKPS@VWFm zIJtfwmwxJ_lGyL#(yvuD`Y!!iSEKLJPi=TI_g(t6sYc(WpL*0_L{nR%m(|752ST*`C z{pdfF+IQ(kznWCvr62umQhk?x^ux*Y`?>Vfm?cU0`?>V%QH{P!zn<0TyYxGv8hw|3 z3P&>kUHT~;$@E?NDICf4UHT~;$@E?NDICf4UHYLN&`+G(b)$V`NRgngZ{dzED=e7C z`%oE?qM|7kONt^yLS`90{JB{or1{@pS^HBTr>p9_eQqwU^A>fDurPnwFOzcfH+#;- zwU#lPPOB6dfUU{>8)C}&N_-hrH6SW*yORNhmoJ>`Ti zXeT4eTX*JVpmIiJaXWfDr|0Czyvm}yvXP5R*`8X?3q$3cLmfAxcP)eJ2@$P}#r0A5 zoD$^)BbH~4xzXeEN_$QinN1i>_?)_@A3{HX!LW}miq6r_<2=2uggq0+r1pA_&nsIH z(TAyxU$Y_wqxp>YeC+UDhge$p>Dbd}pG>2l+5~9MW=N?>cn@>$%2v}o%9dNR&(r{d zi*pHM*U^-%&t2IHtl4j%Of|;5%sPEH#_17G9$x8dj8jEF;d}NP<5bZ%YiMd4RGxR> zZv*`0%+k=mzqMsvYnvK-#qBYMEiA9#ma(Jf#5y0e5cM|!JJL_IQxefVxu>?Es-7*Q zeD@dkbnd8zw(Y))he2&Z&`z|}77m4bJ9e_MlZu({z8$TxtG);ARJX>iyp}tPOFiPh z8hbebca&w-yVINUX~)0So9ScBXbfDvnZCx1#=+H_>1WzJg;!Fu{o;1rQSF#5({{bA zfd;Hxms*&=gD^9gjW5cdP(|LHjA#j;s4nWAqlz=OB2vt4rPCPFXbU2{&b;zf*4QKA z*C*BhmW(K?ET13C^PpZ4>*IN4whgaYJnX)A7Z3NY>2g0F8lSmqF!9*z;xUi*Cl-;3 zC8%aaqs6he(`x3oeRsq8?Vc57X;9DQnZNeW5d7Zh{2o)UP&)vOwQH-l)S$mS$CcEc&St@{B?JdmTsXW7Y$M-ul zsIrvu63Hl{>6{#`tca8knUj;F;#os~lec3VeScMc-8GE*zuWn{hqrs@pKG%RsUmSH zUEMW}cs35(GA za~RsUDdr_P<^G&~OaFDgzrk`og7iP%`D@cZ!CQs1W_3Dw-J0zea;;yuD+52DPxO;v zNfwXf<73+OgtZHHWzU(_I8$!0&(u)AO@626C74e#A&D)^Fv4DG~-{4@mYW=mp z*l$L78`tvdrcEP%7-h?5F5%qbht-+u?1z=Tu+@Z>!422mhS$~SC;af9=K>3lr!1wr z@cLzGTy&nPSAHU^H1*cFLj7N3+*pao4QEgNpPW4V59Wt^Q!ZRvkls?Ro9D*%2Y=a9 zp7NLrw@v3N!QQvB*sqoK>gt$}>giel=3*~->>5qnOKbb(nstvz38z?8M6zrW*tn+??>g9(J!jU1w_n)B(TsItXFs@l z8rR3Jbu=qD?y69J;P#PVr5_HLMnStuBgKDj)4z9cRwvagRVA7t>Q~hF|kACU1Yf)%R3VyM2F6oP3Y@ z2209&&fh@UoE$0VIElUU&&9Js56ZX}TbRGRyPER8^DkpWPDQ1r#d{ufwKrwc`McBi zH&_QJ;qP=d_L#U&shl&O?X+XEbJP&BXy#(Ocky*~|H@PwQGeQE6qE7yZ0E1);pE}d zr8y;%Ru%3i4)u6dbHY`b0kt=C?z*gZw|ms!J3xypq# zVJ*&{@3J>};?m|+-#@kF?4POUFk_Dz$X#az^>$5$>CDM{YQKYOl0TbL1biS9Pn=S9_&#gF+U! z9}4O4MAxSU@3ZuiaIRudZ(g(_I-dy0Ers#{oHFqi4v?avVJSf-5g{SImMwkUE^q{@kf`%;cprdf|J^!*d2bUl#`fVQZQFL=ui-JDc)tt3N}XS7 zhsQ*VBh)Nc*Z0Oh*S5{*Y(1j-#jfM1*0(69(5y7UnPKL8QFm{8Su^ zqIm@stRux*G+QQT6W$$&>^k#mC*;WWfxc#LL42H@aG$f`WVYsIF?k=f!jD7P6g;`e zdH``)(;zETjuTIJ5Sz3|8voGahoxhMY zUJm(J4*oT4&dKIC*+3j}qIen&(IIad385 z8_4E?{KzG|vs`$2&X~nfzQOU5+PL+EGZnkC=ghixF&jq|U|;npKB z;9oxRd&>Ezb3BP(&_CrvI^o=f$euH+`xV^#8p+^(EnYNJ_PYB1O{^@j|GTu@^jRw~ zyAz??3bhZIm%X6*ljWY@C)GSp6W4rP8+xrD=c91bT?NE>l<&VeYj9yDD+zg(6|q@Z zP18AX9_G@yL3is@a2^)H&(rqsv#g@X&)S-`2Z{cQIh5C4kuN-Fc5 zmo+TAiGI2`rm^s&%WwM3?|Jz7dC*VV*FFo1WB#ekEG2EeMr6;Kb!8?vADLTLywCl> zGkzF@^QQTPu?eGWl{u65Cq|c)SCIXFJ}8V`u(t}4J!dvq7_qv~VNCC-fT-TYuR_9@ z=EA5tsRpO~f2R%D=KFVD+&g{GG-aUkZ+>L~n?0hHbBcJzXcyR&CWElI4v{@)*0sgK zd@Cr6mhx0`pVKAFpJWH;+6xHhn=YKbN3mBK>EdcuhZ6fJH;&BgWfSE7K)Mv+UrJNI ztT_MtVV2S)o4_^3p6obtE=@Ss!;E|697#G~bmQ}&-dy(PNmK5vz`X{zr}i=8`>S%N zaeL5C1tSR8KGrPGiEX1h*Likd9OgP-9{5)=aelx=extC<-VW^DNMMH@WXrJZ)ve;!+`>pvf$vur z%x_0d#?B1ij?ytDnH}@30EIEN$$nMzd4y!jdc7+5i{>a)wjOBDMlk&7;d8uPt9-jW zNFzfv^=jBW9*_O2*blB>?d_Ps^=+vtAY2nH%-<5~#WBABq0!}~kw`&8E2*&N63(57 z>^ZYaKb4m|V&kF2v9;@0;`)qd^A_)Q`^ncjo0tHr5OdvUVg5#m!<8-$>k*>h%GqIcKRFXhb5eNOeu+0pppu5!xR)>eKyAP>ztPvR#}_NMMTKgSHTKIJO%{#AjW2e%IR zNrqH?`lNK$i_XokFT2jX?r-FNWA2|$!8y!#$CX=*`sLo0Tf3g~*U~R>-PZLJgZzZs z=^_FviOZr6eq79=bA~zW{*NANC=TNYe?8ojTh6}Xptg;3?1FVSb|!@D|Kj?I&n$xX z-7|}t_Z`XCdFlo5Wn5DqhY`2e5ZQBPUHF50v$bbi z^<4EXc)vLHBW)HSecsv#p(w?}iba7$Hk$6neLthzDJ~bfzU9cxR&Ybc| zZ5rncCe0`5t4&L$-<$ictj6`VE@u-F?bvuAsBd*61%-snwY5S0ia9pCnS?iu@HWMr zVQDsxWM1uH&^+#$aYfD3G_g*&_jES;Y1&o+_pcM!Pd3H(JG2+)i0IvHh3i|~OG|U_ zU5Cv(*zzJwWLk1x7j33F+m?R9oGU=zr^kgl_s7$^3G*V4rkeMiLgrin<~g3moXls; zncQTcSAd%IGUs?41U=Nv;Q6pQyd1WG|AYs_f5VpWA=nB&16#va;UVxn$n!t%Gf294 zyCBbcyx$>@n7#ce?5R*|wS?82;oSiqj=Cc}5)wUcIP3(+K^_%&(;;#4=D;qn7S zhIEtOel$+3o0;zbkfvT+)HKDO&H$r1^ZG)nyf*|=485_C;^Ae(AutCHg(t#cuo4c3 z9vlHRC(eME!%Vmaj)eb)qoB?Z84X{AV<4a2FlUf_29H7g6Fe5yp?r*k&ER;L2FY{p z2sjZAgjsMToCI~&_++SWL{EWpVK!U{r@~X=Gan3!%;quY{}N zN$^g%2tEo=fm`7j@CWGezY&elQrH?UgNMVj;nDCs$hXtYx%g%9BGi1B+?!5n zb%yM}VEg)JZt0DN>rofOJK?2}I_=#L?}E?6yWu97I35H^HY!$$BJD%e>WbZvh++Pk|HQ6>uWF5oW>vz-;(D zoC@E8)8G$~zRs)Nly(-jhO=R3cs%S2Pk=*V4%B-X zVG(>8(uaBb;hg@LG5=yd7QwAA*;{ z=in;%CcF%O3NMG>!7E_H=Ct3i6=aOyb%j@lL(8s&t5NH{k2R=|XhC}m7sA`Qe<%}CLraIlhv47gV{ij} z8omZM!O!5!ux?A*E9^CaZ^E{43+xKtf&<{&a3o|b<4uKIVIF)JmcaLj&%1Ct{1$!= z8?~Zcg5BVM;V8Hp7Q6!djea)MzAB~TT5Oq*cc9iOa#4gkZ&$|v*AIo5c2IMuM+ZYDep|!0$uP2@ZvawxwNxBjIp36^?)r z$XQulCCr3p!jbR-I0{||N5fm-7LvD?z*Vq4ybSh)jCH-EA>VWGM#C%Nba)jkfLFtX@EUj~ycS*nuY=dYzr$PM z_3%Ep8a@FTJA0eq4R9O05$=R*;ZN`;n9`nc6>JLs3ERP&VNZAq90G5J6X0#|1ju=Q zUI|>tp1Z)Fehuz^DFde=LGvOAP z4c~&f@NHNO-=UnG1GmBL@MEaS*ypef{0jDlyWn{E6ZU4ppJ4?40vE#F@J#qCya4_N zuYobK;i2#z*a>@2!p`t@co_T;c7b2P zuJ9Mw4IXe9;|16fc88r{57-~F=IjlJ%#FNBkne<3rD{%|ck z65a`qf)BxT_$(X%Ux&=KypQ40@OwB2*6l)j0Gq=huoD~s`@;-45@y0_kU5$+7mkAE za5Ov%j)9lLvG96$47?xm{V4BAI1auJ$CF-}U1<+c&w$ye-+{AW+ir{-xZeZj!QpTY zoCi4?+`9l4!0TWH-VT`?dJn;Q@L9;wx8CcJV_?0H;fe4Y$T6zkZ;)@@FKv4`^EY@h zJPBR}`F7;ed!PrOgUjG2kh4U*Z{hi}4_CnbyVH)q*6>2u8S))0??|{3j(``#iIBPJ zvWMZ7@KyMC_!V3W59mRChKIrRa00v+dndsAU zdl)_pUxbgqx8X+kIeZlU03U;OdNQwpP2dx-EqoI8fKR~z@M$;-GI#bS!)M_M@Hu!Q zd>)<+H^Ix{3-BNCMR+fK2|fik!#Ci|@JskQ{0+VV8y!Kthppi|uovX~Zf_KP7tV(7 z!7}(hTn@LvzrzpU9q>c=2>b{>4?l%l;SRVHeg=PpU&1=QnE#Nk-Qjnr2g6;ckB2|O zW$-udUj}*A-n$cq>d=otw#R!PK+f&;zJY98_I`zIE%lo9X1oB?AX|vM{*VPpZv^DA zw>KHG#^4n~9#42DL(X~i&VwxVdzV9&&ArxYyvBVQ7eGD3 z9tP9la5xT*fO=+}0V`l8Tnml#Fd7I!d@LhN;{1T3XKf&>^c|X>B;0QPwPJvTk zKIAOLznP72XKz zr!x+Lt>MjZ6ubpagSWyt@L#YT-T|+N>){>nPWS-42kP0}y>JV>4{nDW;4XMSY&?K= z4Yq*~!yfPvI2dk(GvT99@BKdp_1x?!xD-AOSHfrD8u%={6FvtYg3rSj;7jmzxEX!` zUxwepS75Dyj89-A_!?{nx4{08H9RjHz6*=t2k>DQX zUxHu2?Qkdj3VsR0N7Ej`gWy-N6Z{(XhTp&u@LM*3GvLCANxyl3EUsOLbx!uR2C@N@V({2qqt60Sjve_&Hs3wDIH;SsP7JQ~)8 zqhJc01owk8V0~!Mz`cmI{=fO6GjnGmbC66#=iTb;W8Ie=j~s{Sdq*P>ecNaVGTf)W zzoYy5CXuLfb)~2C$MswK?zisi9A2HFt8eb;OkLd@hREDR#MyUtb%yT*MBgiN-(GUm zxxG58S9&_{S8ByU;mGwx-_()2G9!O=_OC?e_v)-)iOvX?p5m$B`X-Og|J7N+Cm>V( z-||DEaO>Mc`c6*=L~bbjQxKgYoP$J>;}M+?d?q42rIFHB>8Ib)Q`##IN*Bdh-$PQE z6^~9xs{dR5DO^gg(~xpxIdY+|J{3w%L6#wBA&Zc6kxJxrMEbfX^oCjS-Rjz}7!Feu&hTVYlDC_XYL(S1>A(%z@c>pMo>5dD_Eev68m+?IS-YS=hult?LZ@H~| z&aBhZJs0-^ek-2Sk!0aHp8JZE{BiM1W;aS4wKO2!9 zrH$ND8{_JjsB$EI<)QLLWkYGG`}(Kyl8KywsJuumJ;h1!m7eUX&Wf_%7}385zBqfT zyYfqE?L>A|@0}fM)Bcs2afmBBeXFPy=ioj4mRV78kbe@XRhJ|RpXx+V#-LVys|+b0 z6dosvm-H21>C3*-(4~*UI1)J-`I~=V@$G@g?<_?6vafrJuiS9)b!p_%RbiEXGUr5g zt4kx98ILHhB`O0!wbCPaPrscx#Y1&Keu^%gl{SY}5#_V$fznWUsPH=J!f)v-eyR(K z-zdbTk=#<+DUD7+JVbV6PNKLepJhgFDE$<#Wa;F>rgWE|${#1PTU|QIjLL-SibU=Q z)rx=co_;%Xic7G(s*Xw2)^@BSGJ67|bddWlY@*W3xuv?O_$jYlI*F?1ry(wlly)vX zCiwaai_BJ+MoL@RQMpmusx)zFBfHh5k@Sv5TwPK54XRb&g7@@WW<|wAZ?^o6&|@e z9Z@{wmeNIOA$!Tp$ZxrG93t~7V+x<_O!R*%oC=5HEKxqop2~vqOJ!72^|$`WxlF=ioeSPg+pl|`>s65U8Q*h zi6T=G`5`Go#v{S|`GNbB`F#Ph0ttpmaXki6oRqHeOL?UHQ(CK>DjgIaiOeVsC9XUx z9rasjtTL!Hkb7zur}%35DN%YVj!M65B>tU>T&5HDT#G&X5huB%kr`V=u1FJnI{sjTkm(4$Gf02y1=jYK8p+_{HN0 z?-0mi1COOVv-d|+o>bJw!uAlqY3*2Rg&pB3kmY8x_lRX-?;6xB<9fHjOn5KMsm-%z z5%n`L555TV;cGAg--mPI=WrhUFFXU$l7eDw%e%KbV1eV&^d zb37L{=6D`TEnsaFo&=wSi{O`VF>GGT?n!9_&qmz^o&)>A< zAiM#x{vBEiS!XtTOlHEHQM2A__Li`2Yxb0!4cBr18u%~B`l;SiFyF(z6SAIY_K;94 z%-)gx>e#&_ZQ=ds_k|C@@lfeJ5k8DM%U81=W%h>Dr>@jzT=VBL3NyozBat?g(T+%4 zM15y#4d0Gt35gvQN2t>+9B#^)D{#WYI_t$)os;twGV0|)sIT;s5!_HxH*7u zPB!6dsNH#7?psT_{I=&Phs~MF^-!x`yL$c<=_)mK!(++E?2S1FQb*3DY?<$UUjko6 z-?lTiFjBh^oHy@~xp__f8jlNqy@%RPHeaX94hyK4B} zWg9?e?tg^6?(h>h8h#23;0|~O{0ue>9Y~m3A!_&3SI7O?LL}{Z!eMi^u>7HJgf=Pi zTwh^dKfi`b!Ea$pxC<(7v3LJxE;$vA@y#7;2BqFYqAPgm$4B>;jv^p|Ay<3J-=0p!_X{tx&Tc!>HBXXb;Uv zur2%>YzNsNVfM`24%1Mx-@xpVc?4>Y%oot?jUmJ2Zew@^_j#^v)Ca-dsCiCp_Q<6B z902=sU+oiZqBj|)L!KX-?~U`E*zA$1fO7XFNL;){zIq89j`|Fk0eN0)_R8=a)$EnI z9gg8X&ri*F!+EZ0+<6X;=l=7)`UN-vHP186o|(7cB-Gn{egLPS<~gL& z9%pdBHJk}k;cR#eJONIH3iouFkNN~i+It0%H1{rr3*kCg2JeRDa0{$}JP$E@Vd~Ic zktbdQxCr)wi(xuk0$C^5yK!CtJOwU?r^1!+G;;a0d4z7HGMXKfj_gdf6G_$llTKZ8fXop3Oedqd$@sE7NU?%$sYe-WC07w+Wa z?l9aMV*F|gTbXdoM{g;=Wo9-qH`Jamw%2ZEuJ-h~Z5gk(B|X~G_qC;u5!;hb!!=sw z>PCKb;&&%TcSG<)S9{V}X4-PEJv~la@~=H(47uA$J8HQ)k$>$O*>%Ewdq0EUM`2d} z9YvV>7;_pwbkT^F%Z?BF#rjdDoIT4sj2pHerTHN?_WFf#)|j8WVJcKPZA__ZtPwL8 z{hcvu&*ctlPrvDlX(}mw_WFr^We4%|H{4KP>&6%=J@$OMzQMAf_$u_wGnO9)>DN6#yb|58 z=Pm!S8~q7`+!&n1jco4QGmpcXx0rH4m*TfJ^!3;oj#~TEmO_Q=Y{>pJ?;Kyz?J?z=TVRH_#(nIl0<-V>m{8e3H4Cgh1mGD5w7|u(D3U3Er-4!yX^LoQm z;0VZ^)VxC^^DaH+aNk3HBK#XX1)c>jhH~!`$euv&2DlvF1Z7FS9rK3I?Q9snr znB&{Hu{7Jx9eZAJ*qmLgG;4xvF(&Ok!~OWZhA=5DZ-6Q*H^Sji`v@n)o1xY+w0}_L zpZU4>cgVQc+W_x?&qBt(=KHMwhF_q*8>+lM1nU#$$KiqSNyzwL`~N8OS}W5$Q)@-~ zt+gkui@CKit&eG*6cm})T=a-oT;-2F_c(0MKvrB;uf9ffy@X#a;bzDhj@e77Hug2t zYKLBjinI0(j)&|O^s?Yqs5D^h!IXoKpoe-pTnRscN{dh7-H^2j?-9rt-g^!z-#5W; zP^(->{Sy2RbrUnjX+xfjMLLp)`aKHi;Qw}YXdr5d=I|;XD#BOL1eKWy*s5&OqH3b*9gW zQ1>UncHBQ69tu?loABIEm-0pR(Ejd`;J-bKIBaUWi8qFv|DAA0{&$6~p!_)m_CVdn zr}{A6R~yDUm&f)Xv(MA|ue;UzpN5`2lh}UyTK-cF_1>eowBOUE)y>?o=Lv^RUdgP& zcC9gK_kK3yxAuH0tV5t$s-aM2Wf)Yw8V*N8g?S8QP0mv})!xrsI2ta1W8fmloR<95 zchUzSnoAspq#+vVsQpr#r?n)lRmInD<(EB&I9~RHV~Gj4+X6FLP-T6R@keV^gJSuk z@Yyqh!=~*}oa-QRTNm?e)5lDMN(<)OW}G;~xTQ8pYhiqiJY>IPuk^O({w7cFTNgu5xT0gEN1MT^_VRM$Q!kmh%P{wl2$GqD76JZ;u zJ*;x41gh?rLit?=gJt_9)TP{KUEH+!OW-opr@$*9?@xMb;OTH3JOkbi{|4WJOW}67 z41Nrk!!O}^Q2n6x!X7{vS3uT&%wE{u@M6@g(S%sD@J7PRU=h3mvUXw05o;Eqt58?^ zWG%v|Srah&tOQZ zpz6&$cq{7pzFOmv+fb|DaP5rdsk*B62}`+W&*Tl8nYPMDeZ;lDci@id|DCWCybG#d zWR1x5gB##-)Cz~j#@ai4zOTLjYVWXpR-`&P#7OhdGIW&2s&Vo5SM|uAhZ`^B!8*DT zxAw!#V^C%E3FEfv{-juWS6Q`Z+lGm&P0wIGc?LVGo7!uv=cq0p)aKZ8YQrX_ln!-~ zF^H}gFt2*@5=@1Pukz(p)We|m9BX{igy&ScnlLMKZYxaoOxpOIHW;S2d^g`VZVZgs z(-_~L6B{;X#wtwBkll!`_b{(9?fb@_-M6f~`T(`k@#Bn1h^#=vlSa zg$_g7P%e)|w1zVq$way!-H`6MV9Q1;<_Nl6IG}zOmAAh@ zjaPTW4p8A$TSjB;9S*`!qv=|3IIIojQyn-R)`d!+6j%&-uH&gb)PrZi`tU-yKU6v$ z0M|m+MZG&tfGfIPD@WuYCk<7_?0QD1sBOspsNT--2Ej%^+U z>q#2+tgdJIdIlA*^J**XdAjknms;FQ zlVe<2_^C2K$@m>#H&gkv=i3g<}swJ`ghwD>k!O-vX#MYA!qu&Vw2&D_l9S z5cMMe{wY2+dM@I=ZA-KtKy%wE^dhO~s4X~(lY?622#&XJ z=AJ$OHEhm;t%q9vU5n__y9&B@FVr||gYVA$Q2G8JI21krXF;BonfcE{@HEtVci|$a zcNZ>$8=>5O6sljf>7)HL>SwioM`Kd0l??OM+Ba}$ES^d?duD8WUQ~yBs++o=#9f8! zDX9E=8uo>i_CT0+K;xz@h^|f8Q~Y0miof2OP`jXaB~RFc3F247OwIcsK*RVO;Rq+~#JfQ}gYX^R{ zfS<$ma3@r+pt`I&EcFPfq54v(r}_FCcj$eLQmFSa%Hedj0BYVDH|Dc^ z^$CzOa?CkJ(l7V*S+5NZL9KeEv3)ncX0)ap=vm=m^fkJgn7XI>r}ERA`$wDmttnrv z{IwoE8)|FpWns6IDO)OEt=Lo9$~+hBWbC+SNX=R6w9gm2Ly4Xxj_~hofEq)$#qNGtgCMs;y;<7|x??fI->-dM49I5@@|L3*ey&4B7NMna9N zM?sb2G0^TsIv#&D&KVnPABxboXQYPBd8w*1`ysiAu5sAay$MkLK^D|lZxS2-PT8jeGL3tN2A=Bd9W}en)Dx4f9|cEQD%bPlPH_GS>sjoZ5^i z)H--aGm6o30L>FLXR_~M+SgNXS8dj* zQ2J-U4Cq1S{h4qk{2QDL&w`b3DLe;p$TOYL zJ@9IHFXXvM=sw6f2%!z|DR@8BzMcml&jvydL7oYO9)VxNjqqFe806f5&=atBZTexD z0-uJgX`A$9J=&yad&piF?=bj0WIZ^v3EF*RTH9(#S`zzWZYUg^Hu&K=3 z{fF@}jq1BS-!yDmVU_)0`?cAm4Py=15j~Yn)xkGVt1fIY`U=wkREmFm4S0SX`ZXrc zTCvT=VYxk9!hKy^v8%S^J*c*18&tdS0h|Nn*F5+U>L~meo)15PsvpwV8p{sUPr=XO zhwuy7nDQz8=I~3@?2QY31qZ;d;XGeo>!IJG);j1exDtL3ANKVhhd-cx9{vQ`0~Goh zHmAJF{nl_d>JIQXI0XIz{} zJOFhXYzTQ45NZTjb2j>{Ift5}W-U2%5IhGqhZn$uA#1;(*6#)CL|*9<+tb z-$U(S6dnq%fvJ$OYp6YBTovj752a9ag!DO~G`IvRe6)$7&ZubIVr!=t!6e)8Vmj0GtPphAZG;cqtqLwXbX#d<~9( z@4yWB0~`t4(4mZm9pM-_6tb7iD}dvm_LGf==fH_@9h?O3f|KD(kUekSE;tST0;fam zE1L-i!Q)^CoDFke4zz1m+Doi`Rq6%Q4{2N?^+{FK8kGn27ypTR$)D(-QbphS*8{(g zLrymO_Bp85t+WoKG1~MR$_!)Qtw}ctW%%lB?8}{Dxc7hh_cZ)b`f882eSV`p(w-F@ zHs=PD73^4|pFniwlP{WIMWE(SbD`$#g-|0<_A;6=SrOE{sTdZ*D6D|&aWwsTIb4I9 z^Bc_^;UsuF>Lu_2crsK!d@4+QZle9unrCW$S=}>|h3I*)I1R#`{EoH_)fh){q6+&h zI%AF$yI1;b{OZpAbBv#MPqa&y?cBF#^M*r@^IL8x9kw94&QA$FNOcK4i(TD+9v%!| z@ZEd~_CftJR4e}~90sX#X3hK!sD9*4couvMYTivv(t z+*4eSfeqlXP-9HSZ(e=eu1_7UPwLi}2`-v@Mg-=(TGO8C-Y!J_R&FP$XeaFSMSH74 zt1f2zf^0^1Ao>V-Go(9`h0I4*A?uJ$$aZ8m(u{%OAS4^9Kvp0dkj=<$q}eLkLnI4X zjI2cNMm8Zkkvc4Jq$24^0dgv`8rgtsLB2*BU(Omcl8MYl79%T>4ajC>7t(+QfnLZM zWImz=f}4?z$Ts9hB=t)CL2{AB$hFAb$QI;lq~%q(fy_oKkZX~nB6=~UC6bP0A*IN2WF7JZvK`rtw7C{{kZhy~S%IuYo_qDPo&F3NgybTNkt>n)$Ts9hqz!}ge#m@81NQaEGsq4kw3_rl(ve(b zF|r!jfP9VAqoL@63`1rk703$Y|L;q6!ktmQ*$+&MK%n}DLn-a%+h^^ZQC$%&Q~y-E ziR`UFWY+2L&+6aQDSY}WQp|`m_Pb{W-zSWiZ&H`{933f%lojTOng;YU%kmcSVdap{ zvL3<{rDunJ{?uJF-x&K~r~0)Xxb5y-ykK=HlTkPMMBS3#s&{Jt^tVne`#p^?LnwPr zxBXs8KW^yiVqyMrFQs3V`23Y~`;{I+KeSgsS4#`?w?AfPJ3lg_rAxTGH-7YS-(4Zj zx`KWji60ftkL>6)(l=Vxw_vaQars~1`*XPU&irNHK*|c|&&0WN`IO&2`O(j28mm3= zD;+=XbAI^gr7|{O;laGjI{nt1(Jq_QY}ciqp?sUfrd(c$o!v-h?r-$njzgK+)%S4zZAEAs7YsYpL8=+Jw1~9aeoHJ{Bdzpy4v~_X2fc*U>*#_zV=Fei@A|(h1ysh}IAgIN^k851 zDjno|O>2e1(#tF?FO8N*^z*Ne(`YMd+2^{rWyVmkZy(i`i@YD9M$Nz2L!PqR`8&3x zu%a-psPJSy165oaE#XV=GN!)bRM-srvg^#ZqrX>uIV;vz)X}%SV&4an{{GeIYpfxC z)w5*wX&;Qf=8Vbo`}+E7r;_Q@o*4UTCzI*-_w_+QpS`4!@@QpQenkCUH-9`6x6fQJ zuOe@BSz*Dn!pNeGNKw(0iX}x6A|taTdxBd@&Em1l)~<UFfc0QFIS#0V@vN=|xz`SehMAf1AJZ|ed3KcPWiTM5Lg(U^iMddw5@nt({2JHmqcJ%vkI|@V3$&q=LMR{c-7nf3e%L}6= z<&1&iW@Z!@C8#Gbw+On8y62Q={(=ZWGWJG~&nxXYVPv)opHuhrL+A%E81~Uc(K%{4 z@+$BidnSxY?e!d=SGFKhMg)Ul;M2UZdY5>Au0N+uOsiM}HJ%UF(Xj{ZWY1T|Yo@EQ zAnCw2r^Yh9|k1a0hIU-N3Y~sDlXffv0HmQCrO>EnGr}g6U^;P_;=*PZ+ zt2T2fWvv;8^ek_lUnVtH##+E0&pXQ${@P7=P7-R2`71DA?wi+mTxB`#591gLwA_%M z+MJ+XS!7;hF>Qg|OC>}8wU_-tSU&irT*wynPMGpLW-`O!+-cgt@j zMNmIdR;J}8Q-11J(aSG3Q$3rvq(vrau?r6h{Pa`#RlNwh=gRMT8vbFJ*R!#OzIpkN zGYRH{EdF2|4n6Rsz3F=vU<%)W&oYg!Z?HtABqZ`wust|Lv zQXu_{Jt-*@M*8{amo;WcMR_dvDxRt2{Z2%7oH^x{;zWc76 z#_iGH=9O0z6x#2)OJ6|?>d%iB^C3*DulUzI4eU28T^hLc;iY~WT#^ zy{a$Hj~%`r>@|*Eyf>Wkv-87$22ry*nV6Su{d0#pO|DrM=I>VgxQPP;O!iimGDV7H zjL*!$GH`Ptu%$6Vcs>r;0EeOVXWTaRd6?-}2JR~LeI z3iVKhOL-`%S^VvqwaZ7>ZeD9zJo8OBIcctUarAc=e~m?m{fzPBY`h8IeC+&+NoU55 z7tf2u+r-P%Ri$C@esCO<%7CN*x8A@^+Blouu6_sYC&&gyZV5AvInRFlxnqfB= z^UkbmOU{qwUE=zP!dtVjCiZ!*t-RY0>pBI}zj)U_W%hW#e(77t!wU*>GKvcG7yPwn zW3DVazs#XD_;Hn~xYo06_*IY1%H~#9QJ#uL&bX+CwWe%rAbeQ|Sv$^L2l7$2SH#kU zxkj{T$-HQZc>d63WZn1Vy`ukU--<$i=XBd&xKFMnI88Rf*@5_DH9>x8qor&g~`-)cZera)h zOcA_4m${1?5Y=h5EkQlMEExCHh6MGBC>*M5y_(TK@SunC5h`Spy!=(X)UE{0FDNc@ z&KY}Su(KXfJZ|vqx%MV#uZZ}NEk>MwY2?FM*!wl$pW36KJ^U++R#rr~ZT#DSU#ZxW ze?2DIaLPZ80fY8}{>k5(mFwi~*HS$^;X1{_{QU?=&-DEdWz5ejnaBEWQDt$-7~A+O zj=6+03%j!C%}U)Zw6m{s8aFmsrG*UJ{>?Jr}%S5AU<@_h5Dm|cocKSGth zd6)J<^DgaOnuvRoF0Sr8cnBVHt+FtGIYTJrz^Q(^u{JFOjQF(XwUHmWogZKyag7HtdUnTy| zzYX}u&^>hEw0OUyzBp)iU)vTpcFgo2bbgBa?&`T;D5Zn%cW96nVj~QDhRn&y>21<# zm%@iV*>UDv{!)ILSa%Y~)6!QQlIi#6zVtPwNT%P1`%0VcY&vLwzn`FX{<^j)Zja}n zzWKG7uZQ`KsJr^{QQoO-3YssAE-Hy~&y_)OZ_1$?OID=e7}qQf2L0~KyP#g)N%M;GD&phts(MlSE4it96VxltTO6}jCyAc3SGTHOVM)whN)kP1Z@(&f ziUZFzOjtBN4u++&Ja3Mk(5N1&xCiwrD2NKb<~#}aBgLiMGU?bWl{I||%72Mui<$BE zPV=Ck9apCpQ|MM;UV8=G`R3(^#$rM9`F4nC{J0rA%dx{bTcITZI}NMaVLexML+&+7 zqNjQxy#tfzsZOX|Y{jpo__YM}+*vk0nlr0C4~B2hka;;dh3x4V7iHD7S3=t(cNEW! zxT7-q%ItW$s4)n-qr&CdE!k6guI$MBN@3PKj<@y{=B8EbQ4k6W=gu|lz(G~@CqA^Y&inojG}0rFdpB zVP>qCD0SBzOOueeVy5hM!ej~^Vx~RXwCr?w>!in| zO|(MXMbI`Y;h-fSB9%M!cTC|z+!eJqtZ>z~d*NProtPTTd!|Ss?*Ch3aJ!~>%(X?0 z*}J}=P}9Azt^BkLGtG0+e7Bx0A%17+;N-^GQyRO3epmdw-E5e#Q+Y3v3s@gR7!cyLBB7UuKCpX5PDaQ?g zcEUQjeFw|zZTj_{IYGCXGwHk1vhuq)c~`PD6ur0krk4hPesyHNz0ahfmlEMj5ZzR0 z+D+vwS(u^uX4XYVTDZB@NfpAoIuPaye-RdVe zzr~lYC7M%FIP$X{eon(rz9VP7=*3O-SW))-nacq!>B+2An3;dRrS|1_H=74pY5)qW zkgz5Z7Qt96=7hE}zZ=yX**}H-6zmVc{*|76)5iSvi#i`*(zX`&8uy;yY@5; zzkC0fqV`#`axZ$nv05uU=lalv^Z#o+{nZQK3ae_ept!z9Jdd?>-5I-ztNNc?ePydQ zBm0rqJ&GuAo6ZlWP5$}qo4o9W-8Ye;n78!VSDyIo&q6K#v#|RbqA{ecXJ2`*^7Y&2 z+4^Gb1uEbC@}K14;I;(9#e3+1>l-|O&x?nZ>pmAq$r+cPmzkL@ONw(1^1cRc<<8hO zg; z)TE&rb>?E?Q#HqpkMdM~gx|g5WBNInYtH63*ZH%VTCj1+-$LRPiND{XF7*6WUaCs_ z-DQNeoxjp<%o&DtT4ZzSnDp@iT)kX4|4)&ZxAL(mCwo&SrOcc-dMp#4VVO%u>zuKZz7524 zIBw<6*j2vB&F!K28aV4^^1Uc?(+4R6L37$*{>ViOW;w?WoHUm#t)cTHlh#%$9Ig>A zod4gE*0;}1>+npbma^c~aUypHkvn5oX_5KFKwAGhaW(U*x@zcL{&M-AxHc;Am5UCH za;P)BY}%2|&k(sa_Wyq^8z^Tr1> zsB!tr=QQ!%;g4@}=Ik_1*!APwZlLktMs?~n;=2Yvu%F6T1MVa{{Gc(FS#ij=Enanhvxcz|8$l%A3f#OZv1P9f6ef(<`TCZ$iMPoZp=JbWokt3 zm9{M0pD+7MUH3{`g)sO2y^WIf9ii_$n0lS!4d_hw0vF#rEVs`K+bYOQOP}9AEwBAd zr>8Vsmg2gLc*f&iZjF62#wCT;iw@@eveH_z_=fheCcd?LyU`@*!1V{7ere)6B5hta zul3Cw#ecnj=MBn=?#y3Fu`ZGtqxJEFH7~XU?I(7Ug9H+D*yI zBDDUSHPW8G@{PTI+N-%rlaAJG95`C0EJpD3I&-`;tx!C75yxe?l{;hC)cq}ic%IuQ z%Fm+A)rRC={a#V#8e?UyKCUQprq@n>lq@eo>!rzy_(VM6DsbWa=ewun_ADzZFOoUw z@z>@pCcJk2-GH3$@_1pg=Tt7?lA^*Jk)su=Q%4ecUe}NF0Hrze@7Yz}sL$RSn)iWz zN9O9c!^}hWIMhcMWp46beQ;6c%6s{*@vta!EuCbp{l+kJCw@$mopB2I%xNF)r*fP$ zrzXIIDa;%7n!>n(w7dd6`I`FI)SARZrCZD>PxE7I5 zERS=uG7B=5Rq4c`WaSiEr%Yb$8h{5}N~^glkXM6D_~+)83Es&o3-<+x+#5IltGp^4 z=*I936H!=^xXwB^u1SmX^4K&O&6-N*yMygd<-42sj>a$fW8A9WlegOfRJw zCEQ8fe-d8dU^kT7z5pW$FUN$(_cHW(L{8d`c3(Ym+hGRr9F1GKGj>%@rSWciXgP(v zZ&T)6b7%ZgIhpsJg6=hbg}(2kI_}!X5pycHrI;M>D`hf~V z@R%#r`S1RVB9E?I;gvs!+h*nT&sjpbXqGy29A^{tow|_K&R^>bOrKro#bLcK4poT5 z=Ozw;eYpV{G^^}6+M3JD$r?8|$N7%sU#TOeA6zrk4fIA|*!(_gxyx31=?{eMCOpun zrLV6>WVm%^HEEcHU-HMeb^3JlQ_#;sf0O5@>8ExC>QeC8;#b%ojr|GO-{#rZc&YOD z+y8I9<6zDaZyQDcT>D%&|M`Z0x$_FWe3+A2FlYcf*O(|>Yl&knZe-usF>PdLAYJG7 zWojcunX8SMd`dMDoB8*4N|sll za~Ly+c+87`Ltp&)Hd(pmt4!M+JWS7~brx-A(%ekGY?NU}K^}Mn5Irxqujt6 z_`*D&Fjtu{&AjYCsDGwy?e@Y_+c#G&!rEcN3hu3O;DwJGV@Y)|0(VOgxifanJSr(r z2c5nru)ZyMKM-2xrYzz|yD?OMW3E`@`i_ZfZd!I`R;QVx1%0F|E!Wvr|10&(fRNv(D0kF^sXcWb!Oza*yG_1xhzZ0s1GjQ#?3y-uS0I1rTj?p~wemC-HwO`w z``4cTX5QgNOYG3ZQIl0k1Dcp_hAHx4>*dLGiK%ae$34Z(YP|N-q z>`%geJJch6_9MdV=ghhw(ATS+OJ3HYb0SmLhsF{B*9>1_*CF5ccyX`>@`1MDe0*z& z-UrQRI^=%qOmW^weAnS#ZjF7D_jmj9J|i>R`M#LxAN^*0Bg;A9VDi#$mPfqgMtSDf zcigZMBR9$)zgfQLrfir#W$AqHrR4b)+7FvPqaX#3xemK<{`31O<*KX>&K)$t9-*D* zC2rXsA&(MqCpX5P+OXnyPavPpoj;T-#=JfHa$mj}bF#)UuW+upGl$oBX38lTKEFjV zFPj*U@Y<+LC}fl~tIT<4*M@VjRza$p=j{(!KmLW$1U4%W(34tJ|U9 zlrd%1ZK`6-869Pmcg3k6Gi9YdMei#5`jaKZF9LURW9%ufo8f-`-yVTQMDq?wf2&E+hWYSdgkhvit@jkXRdUHnLBk& zYi;?jbQWRmoc}jsS`rQ@e1GFSWcn=hW1Q83s0D3a>6+OOYS zb40mQb@c1|-_cQCsNMR_c`eBKSf9))hM5)QE%nY`yL-xhcS|S~#iMeVo2BT>ugEZc z^X`(&G~e_4mF2y6?eu%Fmi%X6pQ; zuXT(+&(!g$erB-1Jv)VWd#O;Z*0}Xk>8urIKb_+VnfV1|RhC{EboNnV!|cpvBIC2- zgj+kzPPX@L673iIwEU&!}QZot3EXd)8`RGAP+PSIAaHKK0}<>6X%Pr4bH!`9`dKr#JN$pz88mt zFntr}#^L&&{U%}hCeBU6^uyz9#;=mkH$vxUW?q~yjexi=a^d{1#~8M7tvBDuN}Hv* zI8(Iw&Z7u6X_Q~R=nqdJa%b!+ujRp@KN-i!-XhKEGMutfpIVfA_3tH5Yv{VejMo{{ z@r3IQ7ta6sr1eXaR_)EE6(pNi8kNpwx!NM$NzD(=t%7cOe(f6lAM!7BZffT8xib_hb1W62cg2%`PhIcT z73Y}Wl7bPLY59xtLeC}5B@cVyUT%$jlaKcmlaI>(UAXIpyR(G%n-`AR{|&l3cmG#; zq-gr>m~%Cz?UZaixi&Hqf8N58+?l=3L>(I7N_76a{~C}Nzue&EMP5z;d*RyY&0%-7 zAa7poh|KIoL)fn|TR=`bDj;o<_$7agTT{OG2l9nIAU5LM@1VHp@|)?~lqGK)p=E3K zuB}uz4R5({{x>8&J#O^U!}mwLjeX~vV#TFOWtL2Ojv(^OxHo-6@Hu7ZdZgs>4{h5f z{)MS-#QVE&{x>52Ro8j(PtVFs%kxrDT;y?8vN}<894e%_f!FiJA%QrI35mmqdCup= z|3`6HUlorM0YX*6ZF zEJHEjoR>1tyPA>4UF*Fv9qa8^FEUg zL36&;zn_BBq9@!40N`R)7n07{;Bp>rsc zcbzivoa-YO&j04BA71#D+vW=9Ey(=SI%2B~@Js#}x2C?cW^?L_JeNme$>SYbuT7tM zs)%^EAl~=$Lu3>m4~d+2VAAL1(Rt<<8+9k&yW!VOA_x5=cR>=x2K6?25zh4*4Q=i-0REZ*-QoH|6k2x6VK$i@`baW zE}Z|Zi04)lPiL=N59-Id523K3{$e9>tcF{;Gj`1w`cNRAp<}4bRc=L@w?|**Y6nG` zcks;BPKz>Edy@NzV$3^v=4Fd9@9deEE5_XH6O}K<-0Tx+@1m&qbwj`8WfeMpo3cun zhbLUwE}Z|ZDXTkf_0_41I0{yf6H=!JQ%R?Jbe($cAZPWcvM|0`r1 z>c>3)5Pk2R1jQwTxa=k_@uXp(7jOBc zdhK^Z5}b9C>a$x zOFgN8JGn9TOyBWnXn6ec&K+aaj{IiM*<^2n)U*}9 zc^dXrU)10D^+W4Rremk#pW1QvFV|9rg_NQ4zU?Nr4k%ppcYgoLBd6|_y#9qgM;hy$ z8{5R3U)NM+rgycc{?*tLR{!`VtL#6mfo^*`K-{zNQ~nu0RL9iEJpLzjQ0XhmT=`(? zNYI@2>ir;&_QO@yezVZLcOJv=yS8rM`X}}jlw(hI;7{zS+B^Me4b};BNo!Bk4|@5f zvQppScdt64_Q}t!TNy}O)Q@=fl{RI)-#%q4CxP-Uc^QZHF{X^O7RtBKvw1hw9S`S=MS2KcY&YYiV;gDchM%eUY5Y+BDvW)BGG@Om4P)gAmF`peLD zLmRKYj?R-W&Nr&u8~%4BEw7ri#<|ZO!+jQsixqmI7no?ky5b;-*sG>v9V7_7)}MfuufC(@X?-77D(!-4$xjlPjpd{H@h zkV5)v;Gg_5?oE5#AIO7q=kjWgMVYrpU-_i?1bI|V z7NxHw`t?m)slmK65`QY-&ugAPDm&%3-@e&bRoK&TQvo;MVdqny8};{oH~#k+*WxAu zH&kh>;tn@|RhQKV_}zrn|J$;&;ootm}$>I>y7eUPu*J5%m?J54*~;}t16 ze_HCwhvB3r1;6Bvacj!_$$wMkMVYJ2;sWTz=7rXWcFXBB$ecCyXW7KZf)~J;QTj z>R*_fK)EVz3TrrVy9IZj`NC5D2y+(*>m+Ul#Pw@~O4}OZI2SjvZ|ta?RsEg{ttWxsNtC+-xXZv@51%_z zzCm}KxuI>z{u%72V!s9U@9^THa42qHIP@XTBQWRF{2}>Lvi;!DHf6>OYYBmHHFx3s z@51{rZ<;)5lb&9{ujiF440rAR28E^a`X1i~Bku3~27eb@G>-{kMFzgK9gk9i=uq*rmc7y+d-62U-9kMG!;%L`|2915R+!{GC9IQ%;t z0gu6v@KZPneh)nn!l~@FVh_DC*V@}JiG}09bOENLF%0SDZB)J4=;tk z!OLKU2>$U`9WI9na0ToPSHeVC2#3K{a00v>ra|hkods9J#qdhF0$v5Lfmg!~a1GoF zuYvc$YvDtXx^F)RZ-j5bb?_s26FdVMAMA={oo@@;G4M9j4d6!D9@1v)-f%M<0=K{^ za4Vbzx4{K)J6r{Kz_oBEybaRU>>cnfcrUygJ`V38>dEDty$U-8K8F4@_&A&c_rc5H z6YwgyAKnC?gqt93*1iY+4L$-7z-Qpo@MZW6d>1|oPr-w*e0k?L_UwA_dDOgbsOMz% zaCiu&!^7|*_#(U>z5=(xSK6n4gpa{*;X!x`z6HO7|AgPe z@8A#cH~15*Sdnu(ur~Y|wt&CDF7S8QAN~QyLHas79hQPQuq?b7mV;|xd8pqXWxi|g zf|2lX7zGc*D)3!+9{dDWhd)7nOVuu4iSYzhhxDO#BUl@@f^}ebSQie3ac~N(2WP|j z@Iu%KUI7!}&9E`t3Y$ay{wLo`vJb+R@O?<%Y<~~i!7`N@4`6lJ0k(i0VLwRUZI6ZB z;4H`)3_Bn8hAUw|xDL{{+uL9gd;%uJ*WqAz0uF&cK>B_=B9eX?)`p{CJ2)B+gk#_| zI2LBX32+&l2(N*R8TRdPGQ0~;fd}9W_!^uEKZ2?7JD3K4gR@|bDEd>F0O!EYa4sAG z=fN@X0yq~k7THT+4!jcP!du`%xEgXhAZI)$k=CZgR9^Z@Je_DUImZAYvI?BvC;kw-UzEyrC)>f;0D+h za*odK3mH4@3Gfa$2i^%6!%gs7xDDP3x5NA44){FW2|s}Mz)#?A_yfEbMpWaB46Fg~ zhx&~}#$>x4d>t>Vz$)+vtO`Gd z)u4WRk41xBr3U>IOn}UZ>>jWN91UaOY*-U6gXhB=U@f={#=<9IZTLE@13!gzVTBm_ zE!YY&$Flpu`fvh_hx1_rxC%Cecfv+czbTghkHW_AYsi||{v9@jRhW=BgS8=ZHoFOI z0eirfa42jAC&1Ql7Hk8vVOw|+YzHrg%=PT`uru5VyTC_bSNJUK3Ezah;7QmU>Oo8& z7zvpp+Kpfm>;#ixG8_O?;Xs%L2f>wa7+eR3!)Gu+3g3Vi!O!8v@DI2Q#?+=? zge~Evuphh(PJ}khg3PV$ gKuG!CG)VOn^7Tc93Hc z_8_>_C#PiG+#=!4kWB3E?0#Cyc z@C=*|e}>tRwU@mL{tj<~f508kDnq{qBg$ASzJ%pb{|fnrh8@{}{ukDTyvuL5hP+R2 zCqv#Pwo@SQ`P!L~_hs#6koPX_HIR22?b{*m1ljjO&Q;q_LCzf8Z^1_JpD+Rb2sx)` zM>V7$Bpy8>Ye9P$;@l(-Qf|~8yoR28V*673Wvgla3ov~N5LE5Xm}S)fsaFehsS;qPJkc5DeyZu6_!q*--59) z6*h-yum_w4$H3We7Muh1J1BGEDmV|`0xy8~!ujw?m<3;i3*bADwXS^v=D?p|F09g+ z^)9Rr7s0mhLf98x1joaR;e5CZE{B)Eo8hJKUU(UN3fk}$SP0*PtKb*#a#*Sf{SAzU zSHp&I4eSor!U6DlI2_&pC&C-yT(}Ni0&jw=;d*#0yczC>8{nhx7Wgb=&2GO6Z-ei_ zjqnqAJNypb0e^#c!U|34Z(t3$8PT%HBqdv zqpTJGMv^g?$o^PlbeN1lZDbVpLy_T#?Ds_eQJzRW z1(}7+^h9puM>>+>=_wu(#Yy=!43WR%5rt`_J@;*pmPjW=;j}^;B7=~Qi2Rx7sawNw zh|%xDz0$q_NkJY$6mP{%@tJ|BJYx~L4Y$_;J%wxRo45`^ZxwPevJANj*@P_e)H1sf zQMyzXa}lLg=~#>?&Pt==q&)pk^a^m_6={Sh5C5Iogq?t0#i=u*c&h9gAUTNgO!Y$P zRUS1)lxEpg9Z`L3i^#6>djul;OA*Dvm>YfhuQ)25st+a(qRL4AN_ry77u6->hx8PN z;-Yw|oK$zmAVukoN8g02y07>s9MuWGbVF@KVVXEK<6h-z)ZsMsE*(3?-A}|!d84?b zd6EYeFTcM0F#7&*{P9%%Q{F1gqCc*FH_|tCYzX(tPm}LPt^88kRGvz*5cN@NXC`l@ z9*JCpDC`tO`6$073R8Bar@GJ!kzeXJq^EL|9Z~j-9p#DY*mUG>VxW&!cjk~bSjMsvn`@N!jz5tkv)ZP(yBaAyybUMdL}Ps zU~cM~$-~*`DNU0R<&(*CrA={D9E;OeeN$W)Bg%8tVfk+u#^ss4L5l-bwN~HR2)pdskF$x+MM!S z_ZrJow~D)0eq4z(MN|&SNIOJ*sq$L)GHZgU928fTnes#SWv;j?oe7A_UVbWk#Yb%> zA5pr7Au|!>(*ooYME2$&%45I2sS{JtSH5Q=ixA^S4)>}*swXN()jj2}->%XiedV>x z79z_Lxlw#C4!c)cOq><2!nh1koRx-^i2PDKRv~_W6qle?F-^HD^&9mOa^*J(brGM0OPqiS!NSPUWV2Q8~%2 z;-K(Ve-+OrfoF{Dv02l5xX&0r;-2knMsjBlkN@toJLz?0TFMqLv1jfHzxnoe=NV=n z)GX;pEpu&{2s^|6us2MC=sETWK*Syl2f_>CP`J@E-wcPN-s15UPyaPI7X2SR^%j829!l-Jyqf=N-vJL z1A9_8np01r@gtf|fEe0|t|%wG&Q7?R6PahjRvFe)z1(u^8{w84WuY~vb1fylSaF`I zm4g?f<`IGOOpUE`=b0K?z0NZ=w!kc#Kc@0lA#4McpB>>9sL4C$8QBnc73zs_4V(q9 zfl8(9UjVN|y$-I0kHhQX33vmnKtA3Gc`o2QGn)wIe!9o`a0BWk@D_MEybWFtsU!9} zsBqYa)^91;o8g`CF1QJ@KWc4;^~i&*uoc`6)8G!sK8o`Ujr{?~AJ+eRW@eWqqjtj{ z@LtHe&bl8ife%2|X?kbJW*z3lgLRif)=4@eZ?oRf`CxlDd<@;Y*Tb}vZVpkCIap2T}n-=oGW z)un$|SEo=v)2XjBU?!XfGXnK7hMIqF{Z7PQ8{}qW5;71sHwT2`4%|yWjxi*TxWwVB zspqluC~@=#am6mOmHkkoSYq8S@>MR6L$wHxe{*$1_n^>fqI zgfdqD+X2ZyUsqZ7_1R{3o)gxCv@4tKD62A@1f$@UunJV1tHPZy8Xkw$A@|Pn!bVWf z3){l;ANQL~3^^@Qx1I(fbh_C?L!ouhse4nX}890b_| zbM()LLr}9fWetPuJvq+_)8Q!8hoGJh9))US@4*z*U%<)mM^FC@q+fE{<_xHF2D4x+ zOoxqO2Gm#^&D_l`!`W~q(hbpgJSR+@@2F##i^fndVj2Bnt$6N5_ug#_$>=2@4bkuH zu{rF4x;<@1HB;lvT8FNlMpK>5OG3XVGMg6jBhuf|Z@`>E);sEeQ|~IH=Z3=m7wJ6@bv8_ZIdCM*hil*>s6Kx&`~)tA)HNrcsbkJ_%bK3L z7S!`gcRr%|$|Uk;Ig*21;1Dm+SBN~5vMM=etafofXP_HL#u6uvkx+5h#h78My{v}S z;FVDGl{GLHUJK*lb+8Rw3)@1*7CRB%1joVkP;F=fyaC<<-99LpxT$T&LiI^*n|9af zN{8lU!M5Cvdi0AI-+QPtiknI#0exK!=`YH|#!xA30h_{Bumfycp1obzAI^kHP~+_S zO78sWHsZAm_3dy4+zhXUTOebZ^UU=i+=cpm$XIEA5ATK*DT8}pJlqYt!h7LJcpuD! z_e09bc@}#kd;m3Wt-Vlv!$a^T$h|XfVvc2hg8B()mFA2IRNH6HWp{vwVITMk91mZG zJm0Zihil*)a0`43@*Kf>8?tZjJX<{h-$l)Sy7fMcA`h9P*$p9cG`k!85VC)4eFQV$ z$B_M3i#XZrk6NEY_9>lbt&hM{sE@$!;K%R>s6OBfRNwnE)Of4DLgVdO)V)2m=3Vr2 z_5es)?Wr&VUgnuEhviVO@YIE{BI>JPWq2!$gm=RzSdrFSk-2(B#^Z{tK`JsEu1HOA zr3=*9-Uw-cXg!sUsJ>~PI|7;DiPjR5L5TDvs+%1Vtp_p?tt~W1Sb}IRBXg}0%(|pE z_gbH6?ILrd*7`;33HfdOZ0xD!pYAnBE1par9{QMBYn>TM;*{AU`kd{<+;%>Nd$pTNNFkz2&zRNjt3$OL#u;0oshns_j=D8GAN@|Ay0>RO0@g-< zGNf+WZu&YAb5=QAHHl}m6;IntaMW5Gn|RTWSbuo&`VCXXOJlE%zOMTCR}MCUibrEe zTXvo?cZ7Pz+y^#?10ds|Jq9Y?>UY|rRy(JyIA<^!A8qAU7gzwh!Hc2nUjkVI*vgaM za1HDW*FmO4w)(_=@J^TnH3y)3x0%~I?wQ+KLr|;F9txjNy&TOcgMIb^*(C$y-)`>ZUlrsbMAsb09cxBd1GVx(HF*JQl{ND>TeI#w zsJW%gRp;pEoHf%DxD@qLc$H_avbzNJc4$M*WtT&(>ov~kigwzf=Jam*HMftU9mcS7 z)D`3GFVqUu)oIkp3M1WgFn&4dsDnM`KhCuZ|I2fC1yuU3g#F>wFb!Sm+u`p}=_Tu&=g_6#X7rh(I{KC1cGT724%h(hgv|A%KUA3ji-Mdl=^0mn>>B>AIH#FyO6)E zg{|YLpMW33Bk&|t|M3Yt4P}qDlcW9veujQM(l2xE-^jc({1P?udPhANevNt*{1&Fd z@8CkHXYH3kxm)h3RX6^HK64$%{6WwB0A%i9zYc$a(b|pTGILCKOw_okavzRp+>E1V z&`eD49yX+hGHow`-l(^uUyt#zCGAvKP0ze0dNHi0W9WsNvmdCd9%ixZQ8w}Ri8P1TT8^E~tUusr&zJK_>g|01aK3hM7`d#xarxqWNe zRAX{US5Uuyh`#0r3H0^4Oj=ck&U$HG$-UBA6*++DiY6@SvHr6w!WgLiteQ}1tPNGq zl}4qZF6!AH=X&~@PuD|#p{LG=@u&+t+MfOj*Z}<~QsA!RTfo_rn?@IvK~2iHiFfbz z$wj3}{qJRC-SYbz_lkdQB$<0%jR~VPRGcGVQ`GXc8C3bTfQhgr)c7L%qdZQBZBc6t zz}mxJ4_OP_o1xBWybU|Sf50yAJE(IT5ro|nM#5e&3MRttus>V|lcD-q#Y=mvgHb>3 zshRIv!%^?|)K5X3<2X+Tnz*8AOIjz#P~x%FgRa!|IL3W<{+WPTb7UA&A3JG?o|Tw< zmi`>{`Z|8a;EygduQYY#0D65=+fuZB~h@=@j+;7ru}U>bZ5%Kc%FuR)z7ai673CXQ{bU>-~)9qJR@I-)ioOFz*R ziKBIxbf|q-9q*=N9rsE{G;$Qtbs_$%t}lja-|SP`=fkB?Gb`3Rwt6X@FKGpJu0&%5 z8^ZQbxExM^E1>2?IZIny7F}jry|iA2d3c%KKv+tv&af!0I>Vy0>I_RWxE^+gIm=#~_z4^cKZS}H`%uof`z73j`WyIyNc>gDzC-<@ zr#=GZuj-umiKlP+*Erf!1D^jkp#P2Ic|sh0tL}BF-s$R3`Wjn_&i(iNuUnQhO?1;S zg^X7^lyBA0*QI!rfp-&LWq1#agzR}cbKpHtb#E`!i1;wnD7g=+E$xSo!YAP~@NZCa z!vnC7*LNgB_RQ^p@Gw+=`68SGUxFEsHM^YyUxpXKSKuo6DqIU+hufgyy92(7dZ(w> zyx=X=+P`=QJ`LZ42jK^0to7_6Sf^2c3I7Gz6R>`SzrdehISTS;7zNM5YEa?CKo%bM z3|IIz7JL8pKv)S5gHdogtOB>fs_<>7aI|;H z$6;*Dtn*+$7y~bYHQ`=(K71UqU+KJ)R2z1t4C}xG$g>4|FXY*R{T!6PFTe(<4|_c6 z>3;&1&aXU{DaZU4dzB%3B(^^2&=j5zo548P945dPuqA8-JHpnmH*5n3!M1P|YzHU7 z_HY*L1Q)@Is_HZFU!;8K2gAT4(F|g2qnu zQ(9N6AJ)D0j*}dFW{*YVYYeSl`x?=#)ZI0@`ei+L5r;5)iFe$@atN#`waHe}z@rrtW?FYkicT?eI=de>2>KzI&cUYwH9=`;tu& zJ@@W|w5Kdq6I0cd+T1Hw{Og7_=(R*zA@?9{kq5)%e$@M%r8MmG;$_lCu~P!>bwOD-O^RQvx8~KHU=x;J@Z8ZaJL&0y{yI74l6~b-b==dX zS-kV=%mvPe4N%vHO(Am&TeHA;sPr{}TDLTWvtc8+8p^+`U}MypGl-ghH--1Z=1_Z< zEur=r+Q28F+&u%^p?(qauC3EvI>2$%rjAhiNsNQed*NN-#i-@(64(>9_7eKSLogAR zC5`=Hf0!h5m<;#B0gyBO)*#3l*ojAFj}72Z^jW)EBVZ>u3QmIxZw4HPT4xO=zzvXh zfbC~I^Mi02YUV-K49GmtarZr(g_`+^!^)J0{ELDa=vRkx%UUZLUmg8+kavmg_MVz- zp-pKIUTsW!v~7`Y-1kS4J<+PbZF_O-lWDyb!@Mzu@xaV2W2tkoobHHa{Ts`9Nv-7? zc2L)2<_S}Uk;)b%6nMfLs+jEBF#R`3tl1}Y!bMoN)i9Xxd>7=c>- zLOD1MR)BLL?|9pDq3maQRLtd{))b=FO;yWU$G5^3O>(Z z?P$F>-_5g%bZpAA!AKVRx-KIQOp9m;?z(FQj77Z?Hh{{rCZ1Y(xC(vc-4(DOyb_Lw zSHlb7HBd8{8{tm44n7Fi!$VO1sqISr2HXHoz+2%d$ouck^Glikidy#1qkQi~-4bqw z+OyaSIUnGdYaekZYV`s4LACMw;a0c@@(j{?0DcS~gjHzMdtn3kFdP9Nfjlp;9)(xK z#~}ON7Vq8L?6q3^;QR0isJ>u7jD^Z4&GQw{&hTl}v*0r@8ynUQHT{wG5u_{~ z{X%#GHF@Ev$pecyzq3A2yvYOWGt|$*FW^b|HT)8O3%`SiU7Gsy1FQf~Lw7G;V^J+; zQLQO0cds*=+N?J0uBkhq(%#Q>N3VsqmsZ=E&uLuOnTPt+Sa%+#vjH*G?^xz~y7cTQ zn*G&io`bq<>!Z#TXg*vt%|2{2{gvCN%*Vggj^A;X&O-Uc#*WS=sPEBpg!yo>69>() zgZEP%J+n8Zwx+#M_xVFDs6DS{f%%4Jt0xw^?e9_U)&A78sV~#@JNZa<()qZ3Rw<}C zBYEx21#7|xR-x&SA%<9>`B;~>*m8MumE;~7eeLzVmJmafs^1; zs1@(Ua4Eb5u7a1s^^otfICEPXyE8Xf0Y5;$5Pl9r)qqSaE8TE%+3u}EXN^jyhdIU|G)}wXy(QP1~lRX`7Pw8(4 zZ$qsSLTc5|ji}YD+yONX>G^}M;IqD9J5!i%{YjWx@Izs4hyE~kqV|Wm3$?<$3zj6z z@{8SkD=MA$;)lZA1N~t>h}s|KUepTnA^7jYOu$}uFHEY2leeNflV(nXAEvEtM8Ah; zcZz4XGF*%3+K=6G@JSdApMq+$e}j$S0oVdQ4Yfn_EF1!#gJYn|Nh82v)RW;6Slpg~ z&e#Rdk_7vcL>lxuFOE&PS6$H@w38Y-*K7Ex+rLBg1+T+O@NK9#zXLUwJqqRSJ=h(- z4^_)QgahHna3cIC)QJBnTmip^SHW-Kt?(4wA~k8-22Z2j4S$3$!=K=%@Mriv`~|8_ zpM^Ckh~Hp)_&Xe-g5j*+Tv!UOgr(sfFal~%yBxe5D!kpWBIbauypN5suKMbRw z_O7bHx8Vnba}riZ{RNDH-@)_YPcRl%AOq!3C0GYF=hdt@*vQjw4C|wI`{j5`dlBw4 zAe@GTJr(_Z9LCWcLTyR)NOfD|m9EB0H*5+U zLgj~Mv-}RDQ*Wf!y0Il{cOO$DL9nke;i#Ya(hEmpM0npe3ir|*1FOMt@O(HP)`JtE za%&>&0jEIayE`XsP5KiNt>@c@^ruZOa?@5+m^1K0VWvWbISVSxbl4PTKs`I04Hf1* z7z|V4sZ157&MgMd=%#sL9>IcAYRzAqP!gLyCm7C`0Ig)k2;hAZI` zxB)JOcSF7@<~)bJ7`}x166o%QnX`*RzZz1t6>*-6-zV7(ioMB=z5s&l~0dC z`Sv*M4fnxh$T!}czW*thkNRoop0CoHAOX>H2-V}UfiQKRAc2E%YMXQEYZRu&mp$m~ z;#rQZ@r&=q+3FEqgstEa*blx2r@_}@I(!3W!?)lH_%>V*--BD>F{r&G<^4DCL)71T z>eKL_sACBGQwcnWg1+WHP^z4rrDAN((P7XAn; zlFl=*HkA7W_#5i>@DJDa_SkgR zQt#s|BSoqUwH>NH#8DsOct0VI`r$W=VSVEE+sRjr8^eCR8eUDo4ti&usY15oS z;ZO|T=)@j0?$xg<4bkL_F1brZ>Ui$d7ly~LZ3Sy(6#AWU9|PrH{c=~-s_#;()cD>Z zc~OfwX&8}ujf>tDgTLh&0O7Qc~U@f-VZ;L6xVd5}6Dqc$^KVpkCr}HRSt`&Uxr*a4+iV@O3x?YK_{6 zdhVX*(EH6g*CFb;klv5cvy`#OxIkSVjN8u3-SXCqLh+42dLg>f@wYn6gz=E?PTJkz zTqit@Me@IWz(4g_*`9wif5$&jWvnY3ccv_pG05@k*5+PeYyRp!@npQjuIl&_SOqSH zRpG@j9;(hL52e-`;u5I3&hu=$KeXXU&s=#b`?Fvn`WL{<;l=O@xYjej9$t-lGh727 zgxA6&kZ)@`YuFp0>b(5>0j@{=2iyRwkq+r=ExQr5`(A;@>snS5_R4hCv>Kw;vs%p| zJ5pv^QJT4&&iJa9s~^z#p>yUv5$!9grl@~QAfE;}_a-k@N3LAqmSZaS%1ep*DqUNM zi`wN@s90=+qoCqC2JS#T)}zLF>FcSqE-^jhf zSDkqX(e*g~RD=6q1NbCVJd{r5{@+j!f(PJa_zYBho`tF-vVWP!YoOd|?(+irYd!T1 z@DOVEy_4>gb38gKFFkV_?u|2TDNUU@F!T5G96Kf*>L<=Cbknhqd!@s_PW?OnS3>V? z=r5=DP^-UqA6^3g0hJF&;cZayy$gPV`fg9X8-9jbza>#JO`)W=xrUjxoM=)8um z;2uLqr>|GvaKwwF`Ub_Z4AKtK^)-HK9`y}W>b~{D(70{VDZ3wfeyCo^kJ5teuXOEvru!~-(Uy$JJjB!JHOU93AC?Y zKM+5qvH2>u9Ms2zr?GTJH-2TH>Qe;NSr?u8G-*shf0*Zo#uoWe78#7_s)QRSpD3G( zs3TFUY*khoGpeEvp5@nyDcIhWf0I1FRZ8;PpMTYH+X}rJP~Uwpagw`Lo;$@m++8i~ z$D<$XxN8@1mx|sF&z<^Mx%20Hee5gF4WRN%X;8cpQ2Xa2jZy#Eno{Neju(z9q{0!+ z_`!FG$t$;${OZm>V>0kdH*m^&@)5orH8pCg4)f7&;?T*LTh!H}J-oXugDC@=1N*p3B|3JcB$_ zo~k}7&bnq0ej-eT!(kd63unO_U^-k6GvM1W6TS~;!zlcl1GR@c4{GoB0@xGIhf`q| zjIu5#Ozm6feUqyYeVgTKM9&L!rdIk&^8iokIDO3l!l|;_jr(El6?cEXzR>ZTwKh~8 zxe%(3FNTBRQaBze&nJ57RJaU%mGvcX8N3W$1*u%_njCIMEq5xzm8jkC4=A4c4oMqg z?2gBJ-@!e9rgf?-=2@Kfg1^UoB#q@AFCDki=#>tQCr%>*SL46>f@@#{cpa4QYhh=2 z15}@MBOC|UL5-U?!5p{&s*G-dPr}>aG01nfZ8f0VVFKI?HSgL2C&2CSLbwC!gwj3m zR=68#5AHswb=@BL415s24EI9bd9@yf@4`pnN%$E2C)@{5!Ts=8_$1VN@F1)~NA(Db-_3}GjbRk*0F|z;p1Loriv9pt4RS`*ssUHP7|1y~>wI`GjD=6Y+VC)}13!Ur zuq=aAeOMjF!v?Sc>;o09dH&A%9;*rJbl4Owh0P#mCamW04ygETh3!ytX2EI??|~hm zp38TF`qqDE$Qc8x3w#!Kg|9)m=PZDu=Gni+_ulOjum|MXz10WC)3*9To{d`lAkX@& zB*^nOD;ds#10c_ytU+)q90DJJd^g@^kKY;wk3og|8C1Au;3(9kXqclR`^eT97!Sw7 z?r-(R1f9h|URgMD)C0YYOcNYQIALtk}uB*B*(^k4k@#CoAD{WCEgRh1yHh zo{Hwx#y^ceNuFr7skyB7*>wI;D=v*cI%}mf4MyEH#N61``P~@8k$YF-u%~mZ61^`g z(YhvyyF|zDhOCd`n2EaITDb{!LX|~tJH(SLPdym5Bn#i&K3VhFIMSkX6*|MK>wg=b z!kIuA3Rmy;#3ONt#%!~PzmU8PzB8FcoEENi$F_^O*O)-nuu>6S^Qj}zZ~@d@Hye(I zIdB0~9n~0?k9sLw1l?~ssXX;8zBjsBM{Wzu1=gbe(hKtq?iHryoP~%kCZNuH5X&9E z826y|WiE#rR~2RlxEi(MB(=t;t56Su*Hp5W-w3aV?zh48jj(#;!!&dimxc~?zB9&o zE<4B>A5WqC)b(y&^kSS)yv{>TI<`3zf&ZGbY=oNE-|mHf2h=W<;-U5A7SsdaRyYQ3 zgQ~eZplZQRsJyxhUJ37kTj6eaAG{YK!_*S9P!R?yj9^>mc`<8_2vvpgdFue!0O-cOv)Ub>I=gqZ_gwg__?y2DK7+ z95#bbK-KvDQ0adPy5BCHO1|q1t)302T?gm#yRg^eMmNm2xL25w$VNohGx#CBgRnY$ z0jdrhhVk%4s5)>2_J=RSN$^#;68;@N2H${(;al)c_zu*!38F2VcqJfuKUw{k@=4zf z)H|yBR-Nih!$2M_!EM!bZhRG<;wDkv>Ebs#Y_*$XQ2Rq4z-sUxFdlvgRd|_b(O@#t>vQ5{$R< zt^7@HzP-S`!jYJK`xW;J_bjXhe}~N>8xGF1h0<^x$_RJ>mV?j3@=$w=?sox|U#W=7 zEC~sQzZSc%c;Uaty~6hQHI?y4;YUJ+9|e`aRiMhN8dN!*2QP*-;7(W*s_&`=--WTz z&ErJE506*hbK;d;inY&rH(#1?uXw3XG5d~j_*WWrJ;z_>Ku~)J4Wa34l29k0&WFw5 z<*+%_9K0n|xwe9LLG?}dc45ftU&yvUkP?Wt@kIo z!kV6bE!Ycneb@&!hJB&Cx1qMCvoGo)wC|`h%X*ffF}e}s>|jUV9cRZ=OZ8bkyX5L(|Am;3p6gPvU!6_@e&rMOIhipwOZxJ-eH z%QUFC%z%nZDpXu%!Q(I;YLDFwTX9jl(|2diZF|buwYRu&sm{If#ouSl!7s&SE>zz; z4{E%-zzIX==G1QlzYC|nVXNoguiVQ&roUbZ^2`}`-BB-uc`y(D4f1iRQgVO>aXEW z^ndr%<%z4z^(^%+^!;bnq}Frpdtj1hKHRfE4emi-`!eDpPk%Aoi`qRyq_Hsp@xNE3 zd9>am)7-u{l7eWCuY2XQo|A86m!dy0r0-(fjbpqu-*sq%ouK}JfWG@)f^sdm*SL#& z_xI{cIlo=6@=={N^M%KWr^a1=+sbYa_rosmDX3oK0GtV*fzLqY(?R$=>YqII&+stn zUp)0$_#$fe8Hju4#y$6}cRb`ub?9=3W`El3ccqr$op27bt3KF zeH4q|K(lL5b{$~?>;(1xQD>M8yFis~cUS;>!a~>^-U<`pU9cb2-c5g~_l}a_6zazS zI3Es#SHQuLcM7c`&>in|-azwc%@H+M?C#xb-l}JF(%0NxXZLllxwpQtvjFvIPp=U5 zNW`!%_YyrbkXyM6-n;AZe$)=iiIq?^&+BDJ&%D&WgZg?FCbt?NHUH7Q`golZGUL9^ z&1jt;!%8gPbDN1BovG0LO?$A4ujWdc152&5GJ2ML0rDK8z1d_WI4{>(z8YKHb~crA zQah`Qs87>1g8WlE8woWh7!9>n919cSIH(j(fV1EvsCG0NY8>LX?wt3Iro(Gd&wzKp zG`I<>er$p1sQ17O_;)CCt!u=0;asS-+dQa#m*38_XTcn}5avP~E`(|~d9WerDS#c} zBB(ve#c&E-0^NF{^_9xl)D4xjp4X}jl!w~mu21PHSF}bPizM?@SLXp`_B5h#zGV45 z7(d+Kq%UQqa_u!7~M`MLYs@ue)yTjgIR zq!7_{HSXm98mRG?-x#!I=UP|=D*vm&wUO5H74Qc1ukg&T@wg7ILto+7V7Ewh{ygq= zMO!PVk#!lVdXOioZ#A900M)C^?QXr&HwhG`zh2#fe~QnoQ1gM?pyqQMVKaCKRL$Q6 zli_Bl{MZ6B;5IlLD*p4~F4USc@tcXZ(s4iB3?G2o;9mF;dOn!juRO=nNlN2tH4 zLku+bx#v$~d6!=MW^wHI#aSO9N~zAfU5H$bncBY25zNAk_6+rX6YUQL-=o#pGxxXD zOF6%*uKaF@Xl&8-8u8NH^mVB5@(rkU+B+}-9)+3*z6&+(zXylGf53_GIMiJ7V|Wmr zfbYS7!mpt6@f%P5Bm5NodW0==Gmq+u`U})U;8#%XR_^rd;uLBJpIP-chv6p>$F#@Hm)-@rmPx~zd9d0 z8CigIrL+=Bjq+08PfwyWTRCd?8D2lACMO$lU!F(;(dj=IzQ;_qWZ1 z?+U5EO+|E-j&j>c1dK#o4#vU?umP+D+d-wf2aH5r!x`IV6Q16&(YY1%*ugMWyWHOw zFGZ@{w#iUR?R2mDbT>7)Z3-bx>iXrpc$vL88$oI+~RK-(e1kql%RvJTmU972vGXOPJ4tk;obWE!#rS&KY` z96>%qtR3_-NGD_xl8dZCwjqa*7au%s^7kduKXrusHgX~5QA}5ivNR7LhA0eZWxyWi{6LJVSjzqArP!~x?rXkvB z*nk{Bjv^7eF-MY-X-FZm5jlt)L-c|8T1YP>1t~z*AP*r&kW)y7`-lUQjAS8&$Tnm@ zatt|*)VLozND7jLtVMPqZz5kIHTGbROhXEgO~_-&XNW#ZUl-|wOhR&zwa6~y7;+j( zU}4q^$wCT|jmSgDo5)v4qP9fh_(0u zr;*70h-crM0FN@8roub;sVNh?KUO_pr|j{YXXm)(rn$^#ZSqu+jdK~|vL+Wfn6!;=U^<)pgrFQ%jB$(S z6{OE~%1P_jwTSE+J4&yt`s-EhqOAPP#q%->=DPK(WO3Zb5-J$S{$5?ub9G&1Rao9N zhB)43;@E$D%FLv+ta-EY(h4&3(lX}d%uLEs&2sZp=Nnezhuj-CinHnl^IfkkoLjdP zTv6txZmDh*Wp3(L#bV4&-KtcKx$0JJFHeL16IND6Ub<(dvI#RwE1+`8o$5-MS#Ay; zgVIb^gq!6Tq!lbuzah73-+s3lUSFj?B@)9z^6?4+znPB_DGsWeDjvU^G}Ql(x$}Up zqS*iTIg|hjN-u&CARt}3Nbfa3=tVRM$pHc(2`Ll>U5bhw6+0^S-m!v;h=_`U3W`_k zU9mS*)c5($?3}X+2QLEm^M4n9dCtu4)Sb3dU72!V@4a~19O}RKG({lSvqxF#?`Yop zy==4~w?l>LQ~TxS6z1n+xVK?2%}BJ`CvVR6){ILJK{Ewev-7ee#m&vYocab*ZnEYY5kE>R zL325|g{cKad3m|{#54Ewj-&1pzgf83>eiUMN=rfWbJMenaMqZ~#=RuW48=^ZfElHw zpqUK&evO&cGDD_o#WTwSW|WVEW~i(4&@yq1kz)69^HgWY{4P70pKt7ZE?}qf_WtZt zvJBpfXXh3y=+1Kqx5eT^`8{YZ=+7fd+>2*tA`UBUO$gYj@^XK6Rw{8XXs64c;=$xm zSI;xAz+5L=n7?DlqjPSz;SNoY6q+o_9i^2_!mtoCdfq*wyr?pZZ{lEC+%8zpD=n6| zZ}OVUi%M%H?wh=(_>#NKFAUAc-4jqR^8M!WV9Xq8SPebjOl6)gM4F;L%QvI)PI)kB zCOxMhTHYOOeD-whRV4(jx(cv=jU_%`aq+3TZcO^zh}x9}(Q3|waSeWDoYI(e&nxVV zyN7zCufBvzcgE7Ate+BS3%dO2(#FB03s+|+DPeLovM_(g5sokJ^3%oGiDOeUBN^FQ zIqAxgspF}?sch5+mY)~mU&a@Vd1pp(FN=bHc5#1TevRM0n4*lr^{9pUJ08CtdG|m2 zH9{dMzcwSR&9Fn}of+xVPa8@?|5Wr(@a=M8$d9IVzO^D5#-3$7pUCswc)o}Kyz++9 zTZ!jgv|-NXo#OYWo3c+yD5yU>i-gMM-tWPtRaZan^5ac?wCj&eu3;RyrZK~hsH3_#hIaTi~6mvU0E59Hw63Hy-`~jA`fB&tlSZaVsLXC~q<_VY`~`fvUvlOIev8R4hVDSnNnadmf{jJvNpcl!wdDhG-VFO>mou+;+>U+{`a5u-)O|MoRc^?=;5S);X(F5EPqYj; zu&@dQt|H*Z2W0n&;I;-kZHihQ^#ui##0*Z76#p&9Z4@J%8z8mi7LJ0CNWS)OvBwp&Rw&kt`Z=-pM##aj8 z>|^DM(%i?GOU7J7)SvinC{E>k(46aAIPiAjkHzwb>w{0MEtl1g9J{6yzH8ZF*#vn^ zb|k_VyD8`J*KS15y8G@stuPQKI<4{xdFH_VR=n-+^2AEtZ|!1U(|)}PUpl|#Wn~mn zF89ryKdLC5Hk{wDcrbawxmmuBbu8#+7H-yEC}$e&AxWV@1iy%0Zsj>xQg-o5(? zfx4kEV!F`}`Q2}hv15>W6dinD&R;&HkFe!W9hX9NZibbF;(Y zcJndc&C%9r^EV$iPmj6T@o>A@N|P_Rf@Nd@Zf=XY*)DbL=pn>kOxS0`iv*Y1*vtyzS=O7F7mwnX} zRysFFk4#P--e+QJu<+t3wF%Cbe-r5=0Pgw!W%>0!Zs`j8mA&5+-gbUX88UW%e(jRT zcMT%5?)m?vU(audLtHe|qZjL#6B<44r`bW1MyC$yGh{@Gh&AoNMCO`cUS{3%{|mpm z_H`NmBOq9Ior+)23i@@xh(3Lj2c#a3a@w`83w?LnL}Q5d1@1oW+*N&)9hn=+PS0rX zS4M|Yj(qOB=T{HL)rGkCwR4Z&+gZu!QzHypGRI?0>B>0na=t=BkA2)FRg~zsKA803!dtP) zzTx$7ck({&b~vo=E{o&tV%(j#kGmZYi@UC!w8wXMP#|qC!QGY4UFE-mdFcf+QfH^< z6s2b$LLPK^euf6^xPtj%DQ>>K&QDWvbMTms1q`JfO8e90zwN$zfgozGM8XeG`tC7T zVK5Vb4#h3^EqCQ{Hf#$m%wP7bNchpYMYvK^(z9~-KvsUN>Lof`h@P9MRC=BkI|En;# zcfQ#V14I4Mi*r^IzH(vc=h`#_a+sHNP-T^Kt7CKPM9?kfG$s64%q>;(hwj$uIBs!n zOu`?<+)`UDIYRb1q;OSiv2VD}#jVm$yRu(#sBj&+Tl3?%bslaV>D*Gjky|zj4=G$9 z$8qa?+^Sa6EgP&uax10fzHxW~Zq+U37VqmYglk%q_4uz9=48e_=i0QaO|9ara&vDEyc{duf9UF&ZN4A<=9jU41%90E z{Al~tG&Q$hc5Z>DHyqTvcH_P&t!)T`k|94ZcZ-MH zjfriH<1S}qCHxR{m+{rPxjD2{OS*iZ@4UF%?w$AdJ8gquz6`f#KI7tC^DKBP#8dq1~{^SiV{LwM=f=EsQLmm4cNmqMl zGvS$!owCo_p|%7=lcBlMGGgEM5W{qF@2fo|^BP`@XTH6EU*A*l?kjjQ&#*__`yKuJ z8mfqAzLS3+1nx7I6BzGTxa+lLJq4ak({p~@scclV#_VP6HGRH@;-cfKCGKeiEIO`Q z?A}~|5D)tlo-!rv)qPB(ZS2-u&!G9j+`Oo}3H#nN?y9_YVY!`%oxyYO1;SFUgt=f? z)OHHG$GvD+m>yXCUWu?A5$}E=EKF4^WG(9U33jxKqxL|B+EQrv8b_o7NNXm>CyRrkFY4az-HISDu;|cI}OQ%aT(2x$nx7()+pZ$`a+Rc=o%p zM0qRTeOHz!f5p4+$`a+Hc=tP_uka}^#k;Sl)P3crc=x;b_m!XG-B;hB%qu^|x!;Z= z%-q*|jCbF~pYl$;`!4>Jf8yPD@uxf#@4kya<)L`@UHmBz#k=p~Px&a`eHVY#_H*CG zU-kXmck!pXD31N@UHqvoig(||U#UQXCH zx5@yS`2n+g5xX`o99`3=xcUy!g}=>OVf<&-)YpMY=rbf~)_Bv$X!dYmNWtu-))4mK zzSa=;g0$nkWQZBF7Z6=nX05%Rn~A^^RJ2V%)=TOts@G6+K z>RPX^J%hA=VlCEPH)gG0J)TepOhZI_CpY5x_N=wmKAPtsT@dZ%CaH@#yKi(o3J<$R zE*xE7r_Zv=Dpa^ggJ!y;!lZOYnlk&~Nv(828u2tl+YQpK!j3z3KfIn$W43)DpDC>P zw)+ZDw3&T|2Eh-|9|AvyvhNFD{Vg1Zz6w|ACqO-S6dVC-!W7sTj)o_~v5+|(nhR$3 z4VnO#pq>aXf%wI{9-aj6gD1ls@D%t5OoI&xb2=OZGobdlpn~uwz-cfQ%0Fo^8#TuY zvAUgo&R`CF0OrCiP|v*r=b+x|t6zn@Z%_M{=yH4Y*u4q04}tb39FD&BH*voghMLgg z)>YHI+rH*^BT|*!D?|GrX|I%g*4b-MQ=R>%Jq{eT7h_O#wn|GQvZzj|w=cb*Qmyt= zV3427rIFkDZP(|8&00O(tB9=953W-QQ)x(lnn@d?(#9f4nm1J1I2|?V$53U<8K`-$ zhP-cHxZNX3;o@`dUKaR(pP9DB%OpVgS>z38)Ei4x&kgkP5hWW z3Y8WvMSVSL%$T&nv!NSM-wJPn%I|vaK}dXikHS0Qlkjf%I=mPD0q=*$gw0ZMllC7% zJrVU9NI4pM1YQoY!+RJ$4z<_A6Yxj44pt>CVz)VW=xLaOdOggA8{mcTS$Gem>@jJ2 z6Z{JGX81RJ0aoM1zXXqiTVOZ%3LFWy!VLH-)V|WMLG35K9bON2z=zV&e)9fZfg-y!RdL%a)5YZ(88H^aZ+TTtfShLm64 zE}y^o`hUPu=xZNlxii~m5iEqCK1?+Sg5@{hTFk z59Ro@dq5T7zf%zH=k!lRXBS z3|V5HiN%x3bm?n9T&SsW(Yf8h>b*c|w!$kCTQQvuFyHFD3HHO%))2j!Y z!N#x!Yzte#?yw!43ERUfVF$Pgc7#7clfGeR)W7=b-yrp=*=wdN97lQ44K9V<;R8_S z9)dklukrb!ufGMdZ=3fz>fKYQ=O@$gSL0oJ2Dp^P-;(123!dh{>xzm^%cJQDmWeW9gwxF9>epYneYWT3%&)j;TLc= z{0*`O->X1*z?w_18Jq(L!F)Ik7C`MEUkFvc6v1cV0;qE2RM>%pa2lKi+4sQg=e`JX z&S~g$$oZe4Ga%=9h8Dw~kay{E9%X15oC?o`Mer=R9G(q1$1ub`Lf*Yl;pH5{(7C7| z@YN5&3sJuSS3u6<3ta*~g_pu(NVAv0wvf8WQ`)`~o(ivmoOu+w25y9_AZOBqu7g!8 zP*1{c@CG;v-U!cxx4`q^?eIo;C%gmR1v#rBbT`}x?}eOQpmPL0_U;dnRz3F84?PU~ zLWQS4d=xc%)Q292(|!FcxE8espM>Z8`WM1yP_y@TXcN?0)#u@MxEZp)ap(nj)RETy z%J3!B?AIG2Pk3$N%aA=^L$AOoa4Ynn{IdkUih3D*4YDt1h&<%6Z=|`u9_~QB0lopB zgFE4?@GbZb{10TG#n9XEXZS8;f5gxSkbMn9A3^ph41EIGhcNUh)Oy1&VNbXlj)mXA zH25t{hu^~)@F#e>?&II3zWQSL3;H+0-{7P0clZq43*Uf$!4Kfy@HZGLMLw$pU@b_Q z;5C9}VOPipn%57OhZ7;^(|Q^3NO&4#e=u()JPO_cDNDRHkcGeA7D(I1dmGBXpF#Qe zFUWpYUaOMP%415IYxyRtKs2}&$YhiuV8(<=|dy#4Hwi77B6OqBx6RMvw zkZDMk5kkqmngZ&Ri;48?-lD1c$#3n`to;(TpQrXQjVC(aF`j5o<9(%0=xpk!k}@2< zj>b*b#<%{DXRq}3wO4xk+UwlWd08hRgW`%DcJAtX)W)CALD1O_ViD}^Q~Q0L;j6Qu z)N`TY%Ef&v)G{|3_b!Dx`?9wQ-!U-uTW1bfebJuzc#3c56!Uxyv%j3qcGFn_veVY@ zR$uDibK2j`wMDe|oZg-MrTyge4z=H`+s{(|))_|nHcR9U4l?f5$32}BQHL*CoiTPS zU$_lJ{gH`?&QBN#Qv&Lt{2u75hjTxf-_q0by=k$v_QNq5w_+kqmk#Ae_f5w)jlX6- zY}U`~If}5*GX3C6BCRW{Do>E~jk*SGiheUleeJb^&0#nHem|(^C&5dugF?$8PF zde{Z>-4Qww{tdgr<1yPE_JTcOF6;%VXF|Op<#4DEq_QGjWmAy{J4>Sitr@)4gaCx@RVNlc#+GzfI^Kf+SdL5qa zg1)W{%uq##G9guKi1TR8H**$jfm-2KdYFy6J*1sx_J^MXmE!Z^FjxRb!a_I!&V}hv z<}=`_sAv0Xz1Kyk^L(D>a}hiP{fppYcq^3o+u<_QclhLc*y!^;96A$y?IEsj99x!j zMpxxgQ*?EXnA;0pXSy^Ye|0kV9aU}}OaDl3@~_=zTA^|8L@6=WU$TndcHMe7lxpq} zw@`Ub*SYvbad{q8T=K1L;*z#(vAE<|1aoGm!j{5wSD+r{Q>Bsg>AwnHiGD0>DnDJ= zrgPW%v8Va%@|pZ-*S5#^^HNr~LRJlpi04^5dgWxkP>%0N0{cOh_%)o=JL?B9<{b9SA4IJ$mb<)-3S*9PpAAD@Nt<0e=WZidRM@>3Gr zf?E0JWvDkL{oZgJ>OMY`eSO9EtLVr4s_$VJpQ;19@u7MA}m$xvZy5c`jVSNXxYO%xxlSEm`u?Z`yi-vtEDPb^s67}i%{K%r1@#SH z8r}@`oXV}TsPBa3;3JSa#M=NXz*iu3iP<0aNcbu0ijaPz(9y6AVUaxvuqx_uKCAlr z)gk?JfpikgcVmc0r5m+hn)&5l2W-}OdTZ1@5S4{p0(w%boYa1-lJ1E5Nd}u|)Xz~P z)Z6@aX+`PHuEmd^-fH4MrMFtJA*^luyKj24>+0jDH}<#jl-~HpH|ebbRC;R&gXyga z>R@_nhFa-O45qi{sAK6(?KhX+(sm;7&jEo*cqv6 zVYAj<4k-WVJ?d(Q8HKYwlzu089PAABmQH{}U>B$|_(Z5Q+Z8I@^v#+*o|R@) z$M!&-<8y&e)v$ZP&NQkLwY*uehcU+Qc>c=Heg4b-!X|m|d$L zKTVCnjN+QT^i5n(fJ#%7U@%Rcj5?U6(ooCiVlYjmqmIQ%FdzPNIPE(1_~FdNPK7f9 zm8PZ{Hx$lTyH4-Vt~rk%&MeF*oHL=))NH75=E7h&3s48cITy8jE(XI%KmUHhna0!c z-{*GHw_S4{j<)lg@GSi*=30cE@}tsWEqDg%+CCfmYz7yj-v%y)C&DvfZ+JFT3AG%K zfak)A@It7v{2~~EvR`4j81)RF${$keyGT3-UJ9>*E1}Br%itaG3ivR*3a*3Kz|HVl zxD_(yVa|%Z0e*=3CipqL1%3l>hrdDj;}3Wz>b>x8sIvVY$QXdRe>A)wbp!YSRG!jh z%iunIF%03i_R`lm2I{xhxUl-DwRd_;q@n+O!%z~>^k(#K5nq3{zhB?7NxsOe%*ifM z>iUMV$GNF7O^rKSb*E@PQ@q)=_hGXRU-wnt&espFhw;18@FTD?RM@M+wWwv=<4|SX zlTcr{kHWt2X_ySxLpxq!{i1$)+rO@{iylbqyzFeAw`=jk(Y2uE&`U#fZNe_4v*%$V zlwTUb7f>smiArD6Zwp^Ut+OSy7ribU_ey!Oc8J`xYw_c|xeYty=BqFfIyYZOEjPuW zo7++UH#f&(&aTA|YtDeV=q~naY5EO~9kkD2J@ns(3g^2}ZoLQXS#&zvL+^S(^nGsO zzFkirHfz99hK@$o>j&3InALmy7*>Iwz-sVQsQ36elp9|`)d1f@ecOBomFK>PxsWqS zOrBGGoQ3*l)Mxv=4N6~m?icj+{_WV6`sMoYTj^Kl5UZa^^@_&FRhqeXG}`=j^@+k{ z*WJet)9<*UF#Q1)roB*M`V%Tle?x_-R2dtl1gJ2Tg9=l5s4!K4$`39~N1|4k#9){z zqCOm9vg`BXhp94dC`?SOG-0X=6{c!XVX6TYrrJ>NsUB3Aj)e+SeW)-sfWa^|M6EE1 z!7w#KeW+nlnPJ!chy5=z;ubySFF;Vif@&U$D>a6Il-*!|*Uh)DyKi3)-@cyzV4q#PAK$*dzJ2|C`})H!_;Ubs-;zQ9sT{HE^23^EW3FI1 zG6Zu9?@*}l4)g6xhH8Hfhe3N)cLc+3*Wbs=#b8{H!mR8b4Q2Nj*cOg0W@lD0`|R5K z`1Vco?VIG=$5}_lzLWmJKD%x{zI~~_eQCaZ>Arna|G_@HCO*D>(|r4;`}WQ7?aSJa zeM<9o{d$;`Yp-%3&Hp_cbIRX2P-RvwRQ}F`$3ez5P5v%|15wX~@$+Y_%`7+VI`sH% zo{AlElerhh&4o~IE`oCN45%_?36z^l;eT^;70=oAt{g5ckz?XhS6MzSbd^;L|43TT$KxU z-Ff_ccO`ZzEnfwdmam4&ch?xVT)B`JP0NaByPiB8QhezOzS~=jIogX*VON;ccfoe7 zChT`ZwT7gxmI>V;ybqmur5t3#P$e|N{C4><4V7I}9_9DfUbwJL-8&Ai z*ayn}esCk|k?=XFw)-Zy7`_0{fiJ>y;Y)Bm+zNNVZSZ|4dp?A(q5jC{H@^ON@D23$ zz&D}#SM+>&$T+@N!Kc2(rj_(SjSJ>#F`Xqu8ayB0mZxsQBv z9~*PSiW>*+&A}yF_%)zoLvhZ-`v-}Ip$jtZ?QfQr31T`n=*#qy7bMbz7btN z@q9D*3mgJ}h3d=Q1J8iWt1#mNf52-{?}fL)KjB00FZeXndwT|!Dr?V4D-AzDT?YOF z%R;^Pa!~zgm0gP-%Tp?Mm5y~)#}A6Lnox083o6cPL&aGg zcoD1%6=(IJ;!I(?116$=95#e6z((+0*cd9$G=;yz<6tnav_P%AA_ntHOVl<_MiD-V z!mEBr8&<61x1FPE?;VfY#*OaTd{I0Ol>Y7d_;3g(%_XXA(bZOd@#j3xM{U=xhs_#r z-BksD0jlok0w=-~;asSAksaMoFYwi;!S1NluO&Y_qHX*u2Hm&o&f~k^ z7klJ>KPdP6L%BZy2Hj__P%-xhqpm`0v|@TZ_l|FFyl-xTF&7)7mV0*Xc6@Uu`R1m?F=y9d$2XVe zn@cz5iigjxsg7?h;+tb`7U3)IPrE)kzPXvcIrgsGCtmDY=lJH>bIimi`+ya5FO7Jy z>yg9$$S`we&~tS)`%D>gbD`?yc~JRdKI{w^z&?=ua_Bk55tbNx)ppXkeJ!K*t>T_tTO5Bp?`+H|AF>yL zR{^q~-n462e_m`nk2T80`W#t1YsxdR2y@Dx^C0V5Jy+-2F<;v*sS%pNU006uGQVBk zlppQ-<1k-p_6oK)ufk6G@oFePUJDz*>!I2ua(e*033a-!&VaX~&h)A8W<56t-iCh6 zkG;ve&W|T^*ZHw{Stmc*HOleh@hd>(bsk1wK@t76cP zFQJb4v46mivv}J1v9I|ZeAjl}b9_H;#ZLKg86NA{WYba@=j^E5GuVc zhGkKo3CqFrVR?8dtN^cuN5C5(=ihku!b)&0JQ{9?mEqS=_I(ShqW%$9hrh!bFid!A zLbd&CLG`=Wf%V`qusN&;`@&=4Nw6WD4jVz{@P-=0Ghh-t4;}}vgv}vyT0^bi1F$t@ z&S|I(WG-o_9ozz$5p%p9S_ji$!!tMd+&+pEKtp}ms)4p%3rEuH1?pr*mfb82M6OH zyCyemMh}#hgLO=0)<~%QtqNQHT?8qoGp>+IkrQTrwy@7B(S%{p4yN8fTN8GT*k z4P##-tc$uKYzj$_UOU(rc85t&vDE~s?~7+VmB`1z8L$~FfX(6QumwB^@~vvt__Tu8 zqb47i@qN;_Nqcz1%)zH^W6o#BO>Y;^@x|wT20OqXAgz7xPe^_+X^(o_tH!&g7u$S? zbb(5HC&G@fE9?bnFM2~EVK8&|d%!f*)F2-7&>88W4GDY0#jp=NANGY;K*|j7M%W+T z1F6f*dA$SSv#5y^kNL~`TJ@NB%qWvhlSARRsE0x3|1ugB@|e%7F&{J6e*~REhV<8lmcR*cDWnfGv<%XR7@~aj=EJk#Qg}AJ5H5%GXN5@f-p%k_ z$WaZPvdkJJNO|l%2QPs1xr8o+Z^Mh=r*H+-8mo&T-{@vdUAeOK%b~6cSHffAWl(D) zE{7f96|g6~5)Oe^!Ljga$oUJQYas1yv-YkCUW?j;*FoBoW)0rua5d^1;0=&=Qs_qb zD7*=7fH%XJ;Vp0{ycK=~Z-dmCW{n>8SLhDZWfJUKJ?fRvU8t!S%$mI>@E+7{;k~dM zyblh9_rp=}0XPLd2(=dMAvhndflJ}T@Iv?qyb3-FZ-$RStpR%+YR%UZ@Hw~^ZiDNf z)_^<-KZQ@h@8Q#MFI*4Hm80DStHKTNSokc|xo;a`2lyP+nvqR#2z(xng_~h2d;!jc zFG8&$c?s&{V+%YBZiB1ftMEbi8r%$DhwsAe@F%zf9#NitH&_?G30uOQ@C5i490A{f zT1)aS)LN4F;0pLYycK=`*TE0rYw#oZIs6#@1wVn+D=;1jTfom?Z}>SJ55Iuf@JqM^ zeg!XuyWvgnYj_|09zF*ttG&13kMMi=6D)UxT{Bo4{(`z0{1tYDf4~87FB}K|gmd6u za1s0)u7st-v<+Yx_%JLBUxoCqc<;b+P-k%+3CkWy8wb{am0&w~6zlcZ-^Jy&Ve;5+qGp) zU;*mRun-P}MQ}8vZQxCX^I#5~4^M{+;Dzv1cn3TkZh*9Fz1N@z_dwbdUim82C$J7& z3Y)`auoFBJ4uEIDQSfY-4wu6@@EmwPya3(^FN6=mi=fW-Sph$X7sKD+C9pzOyXLG0 zT#32~ybQL3m%~2r3OEX031`Dq@GN*Oyc}K!*TL)I7PuO|18;y|L)t{%Z}28qp&IoA ztO0L=H1L@!*^u5qgcx1nwgUxoePYj6^L z9p=LA@JzS^UIX8N55PC!2DlTx25ED8@4|QBxA0x~H+&BsS&Q->)`K6zR`3(p1%3gC zz%St>_!W%6Z{b|{9Xtzu4=;f~!<*nQ@FDmsd>Z}%x52&eefTHT86)9RwAW!NSgE#M z!&V=bL)``*346hca3rh@(_j^N7Sx)x%VAA;8>|H%g|wNy&9ENa2@~NLup#^nHi1Xf zvFmbZNSodJ8){w5(Z^7Z!n$xMJPrr)oNLU;}=f>*=2@J@ItTnkTwFTpe5o6v)w!Nu@LxCH(Um%_^R?7EahxEysm z$hV8v2c8Ru!}DM!ya*P;74TemFofeYa(cnQ1~-UP3M55XJZMtBq44sV0+!`n-RmNu$Sd4{?J)OwD7@Lo6> zJ_u*Qhu~>&4Lln@46lQa!+YTq@F}%z8BbM*(pW8nl?A5Mo2U;*S?+gk>c;7ZsG-U6G$hhb~D3GyxOy#X~R{xjGC z{t7$7qmn4+U=zr8J86Sr>>*2-l8F(Yy03U?U!l&RyxC3s6pF+(M{sn4o zaH$rwk6<0R6&??_!2$49coKXK&VjGPv*C7lE!+Vgf^WbV;G6J0xD);i--1WBv~zeH z!naYM0C&OR@Ew=|=_~RU!1v%q@O^j-`~a?nAHrARNANTFG5iyL0;{#M^LCrV&rtV* zpTlvGz9(-M{1PsPU%@NjZg>y;8a@lZfp0<0^Zgdm7weU6ZRh#cg+HKf2Y-Zp;ZJZh z{287Ce}P5tcX$^316~gI!W-eA@NpO}!yX>66#Ne?4L^lt;GeKOtk#Bd4>pJNk$JtK z=H8Bj72z~k3C@K_!6i`hVlRc77kd+|1=qmZQ2Y4SgFE1{@Do@ceh(YK^2bw-!8$Mr zHiu1MZ`d4;f-PV=Yyoz#x5BRQ6W9&@0lUMBZE3GT?akT~ zHiLcPiLf6W0tdm#a4?(+hrq>fD7+GC4(EMvBwPG<%SFjo~fm4}^EZEO;OH z7r^^buY#Iy_Yiy>ZiMuyF8d5V4UgzVxr6>OkUrLBJ>ZL|$HG@&1a3utIouBKf^VU} z7XAnIyYM~KKf{k;LTBDfqRRd=X)Q^}CNVDDsD4bFzO;OVe7 zyb#ubS3~yY@*aTo;Re_Mz6Kk^k6;q~5z?3JmFYtMgVkYc*aWtLo#62>8PeD6oeVp| z*{~B_22X^S!LINYs5wCEU@!PG>?}s4utt| zJS>3IU?E%r>7)0qf(zgs@KpFXJPp1G7sCI*Mes9tI{XQq0n2nJAH&LUF>C>sz|L?f z90-?{4W0QgJQwu~kTHNWlY8)81uukGpnn~_5{ZumzTZyP(GWe}EeEFWuLU`B#HSqHX{+ z*54LttiLy`0#l&I`lrBZumEao{|s0go&`0=e+ASS|8=k~yaQ^ie=XEl|I4sGd6vy-;%i%Jrihf>mJ>tPdF*@|we@uoKjrfZnhf90oNvU_5LA(_u@P4K-I_ zKGa-+rBHJPE`rCyt07}e-Yrmb2Ofa!;X0@}1kXdwA$SdH4#B%na|phGC%~Vf<`RVZ zQ_jJPuq&(u8N2ct!|t#R>;X@NJz;;?3yy@n;bhncPJ?~nY}g-a9a$wt3M+*MB7Kp; zNPk3Y6{RO?pUq1IOFIoTzD z4E3pSXdZ;z9EK>I?w+2LDEt!V57GJ2*(u7b?9lz;h{Ea2=$_2TzLMdRd(I#7r_7Xe zQ*qhHzvt|9ev+A>Id@;~JCRuz9!K|Fkj~GJx)=QI)Xv@@bx-jiw>tUey1|i%<}PZE ziPm~fL$q(D^d^=NJ)=1)($_qdDac7k3q<-(#_>BSvab=M^w1TNU-Vn?qCGDa_u3y* zb`~M>xBM0q`Ca}FipVlNi}BNF{9$lEy^9m+qsC$=-r)(NMG;M-IqB%C%a|#JVbFGPc$b>=~HxbwDemNOq=>G z^9M?oW))`TkpYO}LHdXCTj5l=#vuCb)XEPEr}Bi;D@nzv;%I+V{*j!FDE!W!?)m>; z?+?ST%GV0-Nr=*#-j&oUFXVrvSG@<9FGY7x_a!o?H0k0^b|^lb{R{Z*;$3Eo5XI4S zL}n);GOx1Ml}~!-%F}XBX~F4d^IPV|AqPhUTk+zk{G<4g9FM5paB*0YF8rtSjKc5kD?Ez3xkze2{}O(? zdx}@(dA%zS$wDR|a#!V2F5>KypH%MaohWY3Mif511LYt0oMTCQ6-SDP;fUhsG-QA8 zT5;h-ev!L!-=!P5;oK=n*?$t^;zjjYDw2%I@6LUtqmz*#h{_<9Rk|;~>9^j6^qoj8 zab=mKyC0FjrOX5yt$`BySCU|&2vXP3)2qTKx_yItB-_$9Ltrx*Mkyf3#EFM2N3 zXB8+>Iu;M7e#yAopW6955BJ?O@$}q1N4?+lfElOn=&#e__OG59fvCKbD9;Dg zN`pZ?{dUjE|0)yYrl@Bniet6$n)_6n%+)ci`K|KRnY7?xBeMbQ01KQGV33 z3WM}zUT#UPx=`_?u)8ph=XX$?8O598NB87ksr8;GA&OV|*F95`@>@{krp}u=LUS8= z6O4V*pRKDA{RO(xO3^>Ljy`)t8y~Gg)*#!E&ymVc(yxI`MDmd3$ZBLGvI{By6#XX1 zU?dG$f!vPlM7~23pQc{|nSp5W?%l{n_HMY;y+{xQi!ZV z)*!o(pOAXb(eHvxK?;#8k^7PD$Zn+aCj5aUBbmr@WHqu8*@bA*ZEd7KG6nIFE0Oic zPGk>Kc{6@MQjqz`3gj_l8?pzf`~vrp6eJH>j@*o_L$)KkkuophSEM^K7AZu|NA5;8 zA|E4rk=ifO&x9l+nTUs6iL61kAiI$=TZnt4JCcnoLmor6A$yVPFVk0qOhlF=tC4NU z=Sbo!_!UV(W+3My|5sNT9Cqik-t2p#R=_i*%Y_nJ(K#KK-tpY<&oR_^M^~nZzk?H{vXD_@yP$-AHBOa{@I~<<|Wgo z8SoE7atXuuV{Wy{D9p`|z4KOR>REUHh)`0Mabp$~a9%KLoua?n^vli8j${;O<>nN$ z85GHhca=e}4Kr9RyrVFTF5bUJU9bXXVT(sW&z4 ztoYB@C(ofxE5hZuGNFEBlG-P=4G{+k)tM_e>+-k4Htr#+d(@r0zYt zq^4%)W~65qwEq|Wv}ffxf4cH7&-Z70<3sz0A=QLRc-HuH?8LFD98NzwDVIGn74LFjyvR-@kLuy?;-ck86an-2P@r zHKA8r_l89l^v|7_!(--oI=)IvPjC-@i*ACGNLX`e=ta-6z^hnm6|q z7Ts4A#WUXl{ew*>E{Pr&(1V) zdZ_WbKEVc!W>oZIEmT5jBG&}F`&bvT$+_v7J*TFo>UEkh?!uqvV_s(6^Dc~)i>EV_ zPFy*|IAUmd33INTiJ4=(yf8h#5W5ehoayY>UyrHs=X%}3{ADOT;YAnDV!^cG+lU{R zVNPb;b6rX2iWf4I$xpJ#lr<-&ruIwEm=VeBlargXV0La%!SG1ojNHur93DNLRuLIo z?{_bDsv&Y8=C=55yZ0Nkv#?#ee;ICj7O*QvT)DMM4H>RJ7UnN)rG#rq$mad_9XGZh zQdpE%FhfV&n{rG3T!$ZLU{>bbvnE}mpNW1W^zZcT&^wpKRReJn$;rsgROQU2cPqDo z_YX%M;>w0)7350sF!msf?*_t{pPre;k;eqo4Th4ZWb z<8Zn(oOuME;gVn7)st{GAR#M$L%hqvNI_vi;5{xU3~ezdGwwNsZ$0|0&{z0c`R4zx z-ea^aaHIlZ{bYYpe-XYk7rx}&>A|qg!2etPFt}%2UaA&Iix~SC^-uBo-=(qpeZN(A z9)rE{o96MjxTmo(eQG`}$Vl-tRtB>R5t((*ySNVeGisdY4!m41?q3&|I@?NDeGBuK zG>~w)^Y8!Y4Dg-4yR1QoUVU+QjdS-O&H!(P*_#oWbr?+NBV!r8HW}u_=3v@#KVaW7#C`+C_A4UmMfZTFzVi?T&g{uRIK8H* zYr|Gh`*XB`by0VO$3UWz-G!KA4|%^{1-{ZN&?2rte^~`R!DaU}()g&(Nw()5-;Tch z9tfLn13jnLwMsv@8ex~BqcNl{P0yG0Q!{uR>XuM`k)No#Xj?JQ&8Pe#bw8hDpq?8C zk4N9`!L9RW64}3^D}pOr+E2S7U+L}WH#|{01aLY3>YLuS@x#&Y1GO>Lj?g9hm8Uuo zEcp*VcmO*qN9`CawP`blO`BWy)s&Rox&~r~xMik^jrXCj9qM7wj_s?zFez%^cigjW z>TtAePQ4cT7|}(zF=zK~P#jG}P5L)`G|Yr2p*|H(fj7WYpx#R=ya%Sk4KM?K2{YmE zFajHf?H&xx;0)9);4Ih!X2bqaaiTV70qRO2oj1^!{S}*&US=ZQkz~|5f2#o^bv*r{ z=<7|#-o;pc+qQNX+w4X2Pw{51dALW@#_Y*Z4W5QtWzQnm44!WM(}1{4#82w)Z5xf# z^7z-bk=ZAm-@5c(_nKdnnZ~TiOCIT-o_pqF!E>O}!g(+ao)5XltO|SH$c6A3)GOf2 z@M8EbR2+QOcO4Qwbbx(K=>RvvF`ufT6cJ!6Mv~QR_&#W2owlEN< z(+O!O#HKdI`>{$9Ty^xux$N0Wq&hB_?x$e4ZBK_y+gkUOMpMw&^(5{puIU2ylz-*# zqu_I>>%r$?lCMu5Hv1DOf4qo(EBFkQi^PdH8Ol8A(dB1II`}@k6MhIEfaDc(M!=_V6Ka{)SyVbZPS>%N z1PvKC)>X%p56!rzbgP`H`@N8sJfrw*2XzK*aWi_(+G+Ps)cdKS)&!TzYsveyIES-%ErKL8ZNiVQ=^-q|7jTQjCXd={i>2eU5%1`~sc< zzl3MPuOR8toV&alevevlBX_ae?5VKE=SH83tDkx9HTVkzq&@Bbo$>2DeLY@0tEZEFVWEXpI&z1_D#dHrwH z4ImY!M_F&epf^4~>fAx!PL&x_^ZDSYX2vB}G7RoR6VbCv$sDts+2z76s zYYb!YGV~w)lE(A4%^N!(B>}y$h_2(XOKR#0Q${q0@)LE2cMNO^8$$YNaZ}@?lKQ?h zh^B?XJY(CeVN)if43$A_iAG(FdAZXLsw`>`9-cj~l1sU^ zV%W4Bl~)zlz0uc2{G0YwB2*blm`(et5mXwb9`O{GBsd5*fumtlsFJz`%z`c90!aDk zQSUH1$=rQNE$LA<$W8BgNSR>j7}C4hSFIEL8~x7k$gthRiuWDrhMG81JbL{gIno;m zd%|h3FPsPa!Lwn1cqtqJ?}S4j`yYgcLiQmr?G^S5pp;~;K1_js!%^^P;({=lJ*dXO z_NXVoo{%tl1K=b$9!`eS;Yn~loC3Ai)X9)_)TX_17feO{2uy>UVLIFjsXshBuW>N% zU2|46malPOjpgdM(wWAsHP$WBSg^)sbC4oL_oOGY(%0Ct#^hyIW5s@wWNPlDsQixoM+>dNWb|aOykx!9iBokSVtVY%$+mSs;&$R(z!pV@j3wJEp|G z4(58IoTdH_&N2d8>lm9$U7&P-wY2v@VZ*!kcppH4b zd@kjq`w0*0qD{-Sq91P8$3>Z3#YN4uOr<&7&l=S4-gA0tYF18GVX_9o+L|<_IR5wP zs=_|$%8d^~f5d+7w?p5>eat-T`0}%(ecUDV z+jr{RmNL+eoyEDA+8#UAKh7%-_=z=z>9ZqfnR|-fpxMkw0oAP9D2Y|dmbf=7bsD4B z>4m9tBl#+^^qlNh^abr;96nF?l*ZQKfW~CrAdjEn$EWYX*3%yCp?7L7LsT~$H8=3!a$8mnFruL*u2W~uLj{?F~K9COhCQn%6yB#XZV`w3w z+9*4H!3YzJhm!8PD6w!oV`2Ud!@YCQ^3&ZkCJjvU(;jyfCmQ1^gE^UT&nZ3?C$yXV zJZsWjCpZ4C`*JGYeWg3SLlC&n`cz(G0eW(?BQI+g(gF3gzTe!qOUzE%AO3rH?@#6` z6c45 zZC^LX=4VBnZu?PYAE%JJuX0r5ox&-^P90p~?&K?kh57o+yiZUu{a=CtBj(R~x~l z%b5MdeR7{MgSn@=ROv5xuYmerW=faP&tncES|*(R3Fnl`^aY}>eqQWdD2)c~a_>TM zBQvWoqn_W(d^7rvQS=7Q6#tH~b7P!&j~JYe$Da4iE9^=)LGxxV(Y*95c~<6DANS7XIq!m4 z+$cW;%_$GLc8BP~xCXP$xYz!om|3Oqpjj8MGIwBQV(~V%OXCx(Vlh{13-fn8X?&*d zc1SNhm5=Y~cD~zzxmCQa;@qmOK^3m|!j}3w0k^JjZt06d9Vgj?2TYvX-o(cg{P%Hn zYsNk2((}}4eu|}M_gx&kmz$?K$GOv{F(*iF%DmEP@R`Eg!t`wap3;5r-V7SwIhi&s zt;9d?PP<% z=5)zS8J=H_^yZl?-;Bx?<;$R%EYy0w3(u}Xjz^sna6@T4_`K?wcIcJNBl6=;%%8x$ zF9YtWj0~DTwS?IN&nv~-_paTt!cV^%TX5Gz((l}hZ9Iiszr^^gf+A)H2WO`qOulh# z!Y+2GEJTo_*CgD%*tyGGu+%v7-B#k?GMJS)_pIKfEFlUF_1k@K9eDiMc}RosgUm#~ ze|&!`jk#+w&)nkt8Tqgw&(ZdghfRMukFtXW?x+F5rLjMn17_?`hQK?~9||9a!{B7T5z!PCU914jOZ!#=| z(_j%?1Q{amE`Zbl-c|54cqd#4*_+wSRoVoJOYa@H1hRK=XengRVRjc_EVZ!6VAqxjc2@ z7pPmoFJTY(6&wM{GhPP#8s@-npyv923(te!!OP+I@CNt;yc_-qAA&!@$Kfx~j-hL; zTWiQA`rX@?{!nYPrLQ&B!;zuBX#89HT1%~GQjsaXXm5!|h@R0Hx*IFkI%tipCnFjk zmwg&n*P3dX*`NOY?2%uz2HTD0YaO-5@&_QY(~aRL@mqUFG)MO5hFd?baB6L~!ZHq# z9U9x0Up0SeB%)_DrmrwdUw$vCKLR~Huek$qTXO-@k$B;jze}2T{&n*T6iz)SDjsEz z<|636MC;*2twoo}e{$2Q^;=<7TxcGG{H*or61@}EEwQ;-*_6X}Tr+IOILo6Z$%N7n zUDZfC(yIYgx737?5It`iJOR#yUEo=eu?X*S z*cILiyTM0bcen}mfN#K_@Ke|uR=||zKHI$=GNIy8?^vRD=+eVjers=laXxi_OtkLK zE9J%tIfI+u3Tt~Lli#}fBpM^b0D8drVhOd&Ov%$eWldpdQyae?? zxDwiZBa}`XB8`#yz9`Q$Kw2@6{sv-I>AnNfmM426$02=v_V?M#=lBxpnY8RW`_d71 zM|vY8D7E?+yPIg17*`Y0pys4DBo8$-^HViPwKH-8d5YY@W#_@`&Fgn;&e4^`g&o7> zJY>SBbeD*nkG`%e3GcD+YN&jycxnq*p(bsawgPFy=%>Ne=<_a2+uQ+IP?s^^?oR8qvyMQRf_IuG>{qz}(D z_4RaS=>+rp2cFj(u;Z3t^KGp-;1yw?y^hAsBl%g`xE(wDTITH7V|;U(gDZ12jJej) zIF~s)ei+{z-yp`^F~;0+#mw0;!1(6s`{qc`#8Gi`b{sFhxyHV^Bx5d?cjZqz78lb7L;{ohWm5Of9~-*1owm#$0iK+HtY?<}?Ra@yYyB!q+?+FUv~vZE&{wrNTOk z#H3;BtI&LY>pFqwm4>^(n(#!J2&rE@)oIi;!!Yo)#h^(54HK>BdJKOo~^J_CA8=z}=9t+*6%*AvARxY(oaR1a^cg zVQ*;s3$I2!5?%xKJu7|fe?U2E&WDvc74>zf)o#IWp62-702jg=;c|F6ycpgBuY~yB zoELi=ycP8wkh6?})ME+8)RC}Q{ zV(SpC(a}`{vo$C)t>{c=t-a71t0Y8asme{+(ab!rx;}}zYY6+EuHb9G60IIrpJ;yo zI~Eu=Pz6ukTynWE4&SEgSW%i;X_dFJPdcB zrf$=jbxS{iyHM|j@4z47yYP4T9t?;1=7tsFC$K8~4Ay~Pz$Ew;R30YZn6sR}hUutj zLweKUkC6Om&Z;{b{)(D>6(WCmr1#Koa25O=-Uk1K#9iobNSH(6Qk-1^OT)KeS%@Fi zdF|mRwZTj~^$5s4bB3J;h-jmFwV=YSc4}qRogw$UKCmiOA5=AX9;^;m!5Z);coe(` z)`seHItD%oW#7{fJ58RWeDKH`cz7J@X|Nfb16#m(uoXNV zQqFiwA#?vd&Mz|NRzS)fa~8Ag;T)q7Vezi^@2`U0QLpvY>Z9t3`YB(%9`-`bc|V#P z>{TM|5(i#w*adPvOK1Qb2xUL#u9!3PICsUUId8?BnKuyB(pT3{9zDnk_j!k9KI7I8#v^J|FGLZ5_ z>n^nxQ!FEksJ7b1p|4t5^GD5UP5*(IBdp}WuHQ(`cxP7q-hhS8}ocW!=us9fK{N{@EGC#5m+PtLk#^aItyd~u%=ds)R zvK3Ui*Z#kOA(bZ@k%oJdYML7Rb?AT8A`=OpyIBkgc=7NW60wNq;1mr;nuOO^j?nQz$3U*Kj2a0z98?(ot+CU-rbX-yLHB0;eLmm&n({E`q168#$DlloSl;_ z-rWnKyBCeS=CSaSKkd9?@$Oy?-Mwbq74&mdhS<5mC~_=7)e6LA~TVN$QtBjWCyYziQh!M zh>S;OB1@39$Yx|WQiXz|B{Bq=j4VJ_Ag?1kko`y%1_;_B{g6~-HnId+i)=;qAvGvy z+9D&63}hj)3V9vbft22iUyy#tcw{D0+@9nL)O zNjVy zjmw#lNv^i*+6tK^&opM$FjH0Go8_REKFym#`qNP#?z#x~t}Z;sDsZ{9_TF93@~)q{ zclFktj^G`eVqbQhd0qTf35Q)`?`hT#cJlWVR6fwWvwxmjl>^OV=eg;<6&(flCmd0` zaPsx@(U*S|PQE?|Hs&Xf)7Cd@u2=TWb2R{bUa{`r%0r?K4Cm?adExu=VZI+WWX!ny>~W*VoMHSo9{U>**>`r_JDupIk3W-7 z-8w72Ic2VwoX6nvDwB>4{g#zBV_Yr^1@qI!rA^B)d!rPF`|%&&0W;@!IJ?e|CwYDx z%KfCTF!uFR+7;wAUq3I@S6=h=Q`%em3QAv}qc6?WafYQ^`GJ56;&jw%&O z3t9?@K{+G(1DlKv3$+x2_oM_X4#BLTm4sr=9wi>^i7Tfui7l>QA+J*XRDH+U1& zDA`gt5#9>3;WDTK;dVF;E{Es96;R_lcR)M$ulBgc^)*MLxzFxMD@1Kzy^CWt(+1Yw zKwEA^V|7&u_v2fg=DM5v9>p)UousuIb!B)TObGQGL*gk&g0kN)q{^g6P>+JIK=n9Z zg({0)gUa7;K*hnEknq=8EdgO*=1X`dvnFH>d=LF6;bw?k63-@~sVV>@PzM?1J1^+5OoOou?h0>0mC&i~Nbpq8koLHdxv0@xaA{Di(_!1q|qc^)sq z_NYIGjKu{ygS9iPL1A(tJQ1D($H8up?_ip_0geQZ5XQj**aPw%Ni#=qH|!OS%=rrT zN1yL4Mg~K^n;01e`Tk*qwoXur3@{4v-9a-K!1w(k^jU*ma11;ho&l%Af4~bMaTideqN@OgL<+yv*r&mm)u z!ESgdjFzU1fXBfrVI{_lblI_>rsj85%7M1@S#_?KEgLj;r1C?3V~rna?TXH^P`RN# zX?=QnCmFZZuv5{@U26VP>oeMf_iTf@qxoH%7L@&-gVs6>pbym*QQz|<&J|FU5ET6 z`&tV$0g?YyhDlHJ4Z2?~-o0R~$+i=su{H)tIX2crJ`ZZ4z83a|i=cXkjDrN$FDk=N zL2Q}03Nu@$7o5-Km*F?zj-+7bZE8Zsp@ZgdDLfh80tdod;W&63JR9B)FNVwE&2R-& z*>(qf0WuDQfApSOZzR!sy0Fu`JAFs%-?q55b+7FYqoj^6n75rma<76~WuWU9??tV5 z;9Ixm(mfVZ2(CcZA)An0NXZZAgCSjzAxI7~AGrjMhEbS*bYyJ=5tWWoL3fwU-a)JPqZ& zW00a}|GPa=s`qu#)`?xzvvG4>So5uoA(ON7vqzY&HSbfRVh-V*fIGQy_FSKOOsv0Q z#t7Q^V+2%*T63mmGM6zoXA-nSCHGWuMa^Sl1nL*dRe^iPr1F!evPIMQX%&8o$4}2= z=d#f6x~Gzo?lucE0kA+_=84)*0(! zj5c<4!_Mh6XcSHn?SIn&#$0+ott(%P8`*bu6sBb`KcjFw#`Yk~TX}L!zCK$@ z^X+JwO$(a8O~g`d(n4;SUi2)b8{Zw{pGxlLSxRQUSxTOLmhy+MpPi99JvoEz;>KNx zihKiJ-@jIyCGwQ_Eaeg39ggHAmOqqc<F0K5d za9%7lE~~Us#JteBY_$W;V`Z-HU;RLHQ)YKSU*Cy@Qy$ycmBFb61wtKZv;tzXk^}cj4FY zAm%RoF!uaUUf0oEWJ2jHew2<1-p`pQ&vfR>qrSP>yB^l{$~VfZzPT$)WTyP+n@yy8 zw0YQ;GrrkW&YV;ELozPpCT~Uuqp$qw+s~V!{nvIJxUjy>&#HrbeU3#kg`E7Q`o}lp zh^myycue6@xrkXF+vbxq($CRgs>+Yrctq#fZ|3D54)dYzsXEKQr`{DU<7O@oOu)@8 zxcMY>Bfl$q`)*Pxh4qZbus?(w4#2z_g9eHt*;l>h+fUBTHTHL6e*pHCraOlAB(0A*eHG=2V#{Mo6Mt*2t&r+S}+jq~>`^?2n z4cxG9DAI?G~7nl_cuggG2M9oiivJE;?67m&#UmCE>@t zz8^Wf#-7;l=fcI+^<9+VxKtmzt0D6g)mac@;^GMADcpPQ;fCW8+y5>8jArUVv&K`@ z>x=RW^;>W}jED6h!njNgM(Gk5A=J6~8bd4it^;GjVV|$~v&pMly2)Pn(L8d(ffrz1gkD0@9Z^{J3F9E^rtp$gtp;2PKsJ_zORNho)( z!P8N{9;*Kd$DrN_Y0m{33)LDuyKZ+Nx=Lj2QS1EnhKxkoTw05}YK?DAo>G(XM19Ag zi)kflO`l3G@%Y%-A7f}?KPejPV-cQ_#pvrgi)Slr#zTeq1SscsslgE{6}p zJD}a8sIg?Ng`SCMt+duQ>pb}uyp8gR!d+_;6Ol_1t%cTF#{{FUNQhYX+K;8N+J?qm zMN*sYqxFy41Lf8<+A(g;nQ6~nO*7Y|@eA9Ij>g*GJ-AB^^mW~hUlmvPK$YkBLdEz4 zP;J(SVFUOmYz7~PN;RZG6IV~c^H4txFNM!Q!Y{HOE`!g(74Ug@Cwu|&EEDDrh3Y5Z zOXw@zz5+jlq;2!9jyGUs;`B{;JXBoO3Du3^Tj*1!X^bWq1UJE<@Lk9}hMB`U3(CFL zILkd%k=X;Z4)QFMRz8M9h`UcA>m-f6Geh-6xE=ku@C&Fl$UEWJ@N1}jAG@ITuYU^_ z=HJ8Sa4+lv{{^*Hcpub$^v~!kS;HO}W{em{OarKIu_wVwEPlkn(0x%BW|f_EBrf;Cw{ilxP=Y8m=sjo=RZi6>q439GWO0aO{^ z5Y~qYuqA8+DW4;x%b+K00tZ6vRZ^MW45q;5FblSTD%V=V3t(G#73>IC!V};luoHY0 zYM$^t*aeaf&3xe=coJ&TiJ32qhxDxj?q%i+l{b2z9s+3-1><2aNcTU2S#S~T2XBD= z;hpeQ_%u8Xz6uAx4cI;jlg&0X1Jc8mc_iyrS~b8IZNUW?qrC zx{;*4|XTZx~HoP1LZ~@d=5m&(5;g#?qcop0L7s7Yp)$j|bIkcbQ zwXigKbrGx#HHTIUUJv6T^=@G2DYfoEqP_3Rt2!${bBLo6ofDw>Mwx4_PaKG7ey}g1 zIWW~R(*Fli)J*qrW;%;NH^ep*L^P#e< zd&{n<=gO}9rFpnvh;!47-@3o3GD`EhvRl-zn(uUeRe2@9YA#RI+^D;^+)7WPazXbi zI2S;9-}YOgJk?$VcewK3&Oxfbs5wZD&uH$kHCzUh;Bpf$dMCZ3z9Cb1-LmbUM8lSr zW(o@CPsxX-KE4Y!ME@RmBD~k!Q{i|b_v;-iyVhc6`xMbwpQJo`s}Nle;7;}WgRnAu z2sVOiVPp6RJPAGuPlk`fzK}Z7v_nykLTuJcl;wyny0?Im*iZt2IEwJY}}So@{HM#{R~f0uVQ zKo0S*;@{0vGmc@dx*>%dN<`vnF(_@~-~0a0;jV?yy-HGvs!z|oOgeC5wDeWY)l;3B z@LJ4sySV561>?ec4?AyYzX_{#nYz>_ao3I5Ip^o_UBkUD8fV{)g%#MBU1xqcYhC;` zEWNTbIb%C5D}P`%TPNIFlUaG3#o0QE^SR|0yZ$89%T1o4Pi*^o|JT2Br0*J;ckVkd zIj8lY-XmIvD|d7-YM$nUSYHz}>!mNMbI|bgbiO)*sn&#G?tLRi@picB?KtjJbnT5x z=R;J`aG5l1e@5639e0U~dmW4#eq-j)#=Gr#p-Mk~8tbCQIai|hpqsHX-#use3^Q@0 zG^TytC9yBN&b%&T@uhITIW`t=*6tLVXI8ma#JtcvvznDf%nQvkW9*qT_cS>@kMC5Z zrJ`Sp=gaE_?lITl@}ZfskZ}X#uYKopOur=i>!w>ZTf<_twW1vTYkBCc5^RU zBcO}EQS741jC*-sSe8tfmY<)U)y~am=zY54@yBo{H_l!I-bXi}*>9-d**R%hTK<&8 zY-#qSb|x$|&ZhN2XX3WRFZLPLaI44rZnefl`iduCe**e0j(q*zy@w1N%m9*XE? z1AYz9pUv}UaNh^Q=gSS+g`Q*Pw9%6v6h!|0bg;IWqJP-^>rsw!G*XMD3i}-uugIzMFK^F3jXc4WMjL^4~VhT%7uD{5Vkl^3D7>(EU1c zzdG2tEWDrMO>tVtjTZ-pmS^nw^DfW0w&uEHxG~q;3YhS^h48;Se6|UHbHILT>?Efoqyx`n;nJJuoGe2%t^SmKEk25|Z?e-Uh zv%KxQapCOZz&CT>5Kwq34t%pbGLZ{sUw?wpXI%sZ_yC^IczmSUe+u%3@{@00X+z<& z1pEE4|1Iivo_!@3-#+Kco9FU+h4fRV+WWlDeUi9OC(Qrp-3RSL_LEWj<)}-a3OB9K zPgMDMdx8uGsp=a*nnfjJZUv9KL^qY$_-;G-*DKmwcZi4nOSocnyHNN&0IO8d#XI}&HV37s7&z9+;=AA{|q`oujBtQ*qKj{UE!ho zsa){g`0YKdF?ktD#LlwNjmkWg1-_ef)Ov>2vTQ)wpkC=cgCteResSN4P&zvFv{Zb1 zu1lD!m^X`Ex09B-N5gTDV!l^Wjt)mj+{ulzr*P2?m?J$PpSrZ-$3Eaq}S0 z+ZWznZuA`Ajca@AIjeC~0XMC&Q>ldYlfqQxx9=tywZg)=(KmSdpm)0GMrq4;LYS+F?+pxlwKR4pX*|?QEXV=BaX9tOsa!g<);f8tZ$ncT{WuhMKyYb^B5jQIk z#Ytx9#>I*6CK+=VCvua>bLbOA9`@WQPJB0hocQ{R6TOSV+}C$)2fhC)p3#+Obi_`T zqYKiC^11IO8MTXF=RbwROx!lZ>>sUmLwsyJSx1_{>>QA_>3gE;;)e0D63^@Uz9 zj@RPH@wk;cXV=B?wu8j+Zrn7*O&{F!VNtIh>GGZL#*gEKs??E4OYDvh-MBdR-6Uh~ z!ccA!c#h(DrRPR*?7Q*f*w^>t*w^>tcmdCd=NXFQqe~TzW8aPQmy2hm4~4^6+$xS& zcy1NPzS}<=$F85gr8+m}Vl7DQT1gyl44)l~kT8$o(sPnUicNfmu-9aW_~*L^dVGSYK%R1r6SHtbv)Ogf$$bFsD{cC8}p9&}-+`h8Mbde#&+ z4)Vo0KMZRV?iFw^x6Z!CE7U&uJQjurj_ayzT*SQ4xUSm5Ma*O4x-O0i%sH1iIX#Qf zc*4wvt#3AQg2n>acZgrh;ny_$TK1TNGEU)I$bM|UNr{T3YcULko8h>r{wi6-4gDPB-=mA@)5kITs*`+wUcWC|m;`($ zb5l5fD?2kYIVaCg_Z4uz0+D;?#-+M6LF;P;_~kR6|!8) zGw$MCmALWc!Z^{pWDs!U(o$m^B(QjB>7el3k9+3&VxGx&pyHQjwZF~bT+}V#Rgku; zIg68QB;cRl)8?shV{nOwzcq-fmPlJ2l0LWx4D=~R4 z90VJ{!LT(P0(-*|a4Z}NwI+BJ4B+W-0UQmNz%g(YJOe%h&w@JRX&n3lj)zR$s0>HE;mD7LJ9B;AD6m)INb5;pOlqcsslq zYCpgdsPDxsh3~*y;C6UB{2nfcadFf!uo}DrHis)=XLu*<3-5u$;c7Su-V0~I`{0%E zet0t^Zw2?jweSV_Fnkw20yV$;DAaf29)o2{*?lKf;S;F!ow%oAANUL$1=qt&_$)jJ zJ_j#@&qIA5ZUej*z6@W2ufX@=tMD868r%n8howu~Gt#QSf1+*y--f;6J8&f21k>TW za2k9M&V%p6CGaEo2;2f+gdf8X;V1A*_$mAuZiOYvn7)3XHL0JY?g+ntN$^WJ8t#N? z@GCeCehufqZ{TA1J-iq0hHK#u@D;cReh7br-@v_aKl}-nKgRA$sSAHb-3IQ1iSQRV z6#fb)z< zQm`W|4Nrz;U=LUp+ViWl-dpEINxFF=eTmk5Ykj*Dt^3wmajgT_Z&9MP?^^G!b?aJ# zu65s92QK%6kwM{atvT0PaqSz?{m(>BL$p@ht$UZ5{Bt@|)J$vXotf6Z>-;S}SL@Kb zAbJO_k(WE)O!qt#v!edgxnlC?!Sv<-qVKKnaPO@(^?EP2wqD_)bGv)UIcf~{`}V3 zcRgSC`y)3+&Geq`e)5|{{&MU86$kn)d-|<-a-#hT@~=c;;za32B7ND34@K#!@Lqzh zWDUEPEsB|0N)VwMiLJk^LH?n*qd#TW{T~m@(ChN|q$Xf)*G$>Hv=kp^TnxA7iZ^cT z`E2=7>JYPTCmKoQx9rwIRM+cjf?cW;(;gw4vC>od%(g>n!uF`^L#+dC7OLCAPUxQm zPlWy8$?zQ59bN$wA$5>xH&90qyLR7SfA|FIQ{g(O_Q9KQFjPBcINSk8K*~PT4xkJ& z?EuOi^Uc0v@%verSAY{>L#X<@6_h_aK>52H%!YPK{v))Kyudo|{zOI@0O>sR7R)mC~*(-c5 ztcQ9wYy;1Sgm2_R*cV;|38%9>~HQ&&E3f_SJ3lKNK8xS|a2XHCe3U7s9!Q0_3xExZym^K0X4o#b&Ib4Ol z;$$`K3e^VCc&_}>4?cui;}}wpgpZ*fAF3xn{9?X)_Y72emc8llS=4H)itL>-ydIkO zgU_RXbI6sUzS^+76KO)_kMg+Eh4T3XqzC-~aoxQk^cd_fBqGnB$(pOVt7y7zh;XRe7Uo-D(!{s>C#HIO$sPvBy&FjOB zs3{Lj8|NgbwoM{b+eS}TxDJG*0h9hdgycihwn>8@qt1Yzz&!XVJO_RT=Rxvya5*Gj z2iHQGTS$A$v}I^dnKldeG;NigQ2xM;X_L@?F>2Z^rtNVQ?=ExN z7p9GI9E_vwp!6vH>QHTqnjzbU>=c@JfogN8&M!D?v;nc+o_JDyq%uE^c+x&@g_b($ z+Rv>$Z1oWB@lxHWbBh0a(t?YBt);eWv7%;Omf~Oa%NF!?mFGRmLc$0``Q;|GnTg*c&RZ^o9R|%vS_u3Af_^@fKh6y~4^p<7J}qTia5HM%Zz;s@rfIj#{iFU!GxYWC zqgxS`h1$=pvhW((B}zfE-vjALo@h#Wb~V4X7rP@o85zu)Qk6t1+u9=CxLZf=+6J>E zT6f(j%d}5i_iSnG{ZZNH(tAH_+BIYB%jUPzdr3rTUe^S|r5sF!mElBK6HbPTa{Im^#_)BUU{<4}I!bvyXTsBu$%o`f^AeY4#64 z4X;N1BD@w-R-666+aPsc@B@@Te}uQA{tfberhJq>Wuy5%8L0{5*iZezkSA*`Pcr(CQ^f2*L5R2o#hs}kwJI;1^)q`hI%4%N9L^H^^mrQ z`OY703iF-6EpP++)N$s%pTQSV{|mkZ70xfilKANrSQfqt)n=8uY9T3Gt-s(K=&LRJ zChP;>f@yFq%z>NWO!yuw=))e*lT-)kED(M7QD?o3Kt_ht@A`yql9zXflMlNi4Uuky zU00Jo8-;C~YNmXch`Uk5aRQ=p#(uX+VQkk~Ma`Nkg?(*gEc&`W!fy)ukD{&!Os`FJT|J6P^ygf|KFbZ~>%zHs4nM4&H+Ld$K8a%wp}%-va32A1CNKQd4sWHlNZ{+cBtDzwE=WrjayR>2fageUwATVwFypv zqeJ~OV0Y9?nmy1q@QvQc%a&fw|fgD$ zpXz*hooTWZISuKIxcc-o-u}SyFM+%~lF{aw>g92{GBB0+x9g;$X3dn+g~~GZId%2s zeUvWxz>2UhtO5H$rH}rwF+3Hvg0yFXE|9ZtOdoS79Ef@t91Hag$VqS{oDN69IgsZC z7eR%id`LUU^#A_>Zw<}w45@T+Ci+jqvmpJG$awfIOoqyT6QJs(6j&anLFL1Vuqm7j zTR=Up6`X>)6PyZZw;A&hAr}%mDVnS zN^A3>(%Pj^Y3(wow00#_T3ZPF!mFXu+BHyV?OLd`b{$k&yB^Mgi=m&^ZbE$p`Zq(R zHJK}|iTA>#a2>n_z65WB-@s*XAG{rwB(9c2)z5dpT5u(73|GNsP;sg>cQ@*e@E+JN zG*_7;dn#-0gDP7%!zQ>Ku7Nkg2jFc`_feXA1oge4T50Y{)K9>t;IpB=(%dtsmFC1P zA*nBon)=Y(PibyF=638c;ZLQtF0{)UnYO+wr~c>D+G5_vt{ID(^Z z2jP40G59`Ix%ClLx%Dx86MhEYhuh&7@C*18+zCtI=Wk#osJO2J_n=lAdoOGh>NkOG z=QC+dObpd(1InG!8grb)vD#q=mM7&IxwCB(jX&$070D%t>}zbx>J{Ja*7s(MZ+j;& zs+y@$NiJ9KtmU^|lNQw+qUnQ`hpP}>Y*R6Prf3Pw6SBn1)F&)c3a&=Y@)z^{`tneHk*dsC>N~mWL+aAE%bPNPV1KKh(hJeI zQfkNiuC!&>faK7G>;_lCMCi($hfvEOPs1c=(@7#}MRPDc2)B{=Kz+PQA@#i& zwR5IYue3ILwFvX7)Ft*CvufWYAr~O}t+ORHhN`gxeTP=(8+Jf+4yDdGwEh0Z+|#A4 ze%#fr!-__d`K|aViF8GD^~0Z~;HmI9H~=c|4>tbSn48ArG}qS6^zW69>>8-3Sr4WA zNiq;!qj0CPCJk3Ek`{verA3fZd~ z&7(4mhwF0sRrsy^A-%mw1>{59wT;|VTe@b>K2mxM`3vcSj79R1`N(a^W5`Bi2eKcj z@iBP@8G&RV3y>AaI%E^F7b!<)uql#=j7Mf7OOUn5W@I-~_y6LC0`-~kQ`(_vKrZd>_j4;5${M>WCWsg?bb-8@>`e6L3e!=7m53B($OY-j^z8V z@8e$U_uM|s@lku{jUlDlf}KPbg&3{DS;N?-sbj&J7qj1gZHa;GJ3Dn*m!|Z4Ym{te zt^?ObmN8wGkFeMhg zhyBe&_l!N}+CA!*;NJ*p2Whvqbe+32@{Ij|Ev8+L=l zg&7;kgF{j0L!DJz#+<<$4>d2GfM{M*>lrjpU2s0{4&2zdi<)>uX(Dd3esEEyneucN zY=Qb*sCc>n&WFm6m%%xxFAvo!|1LzWd(##-^$zc8zUOxdyoIoqyW1f52$qHF{Y0&UgrW|R9gl84Qka{D?W`_9hcoQvb1X)_=_i{w`L>>GE^jsHz3oh@U&?KIq; zkAu4P@a&YSY5Dei^20qRM)gq9b7I^YXqR7A2fOPE!XxhbFg%j7d!(eK<>Ze@$>CIW z4)y7koRKksHLEs!)XrXr$h~u;vP<_$wOPR2R^N6=%Q8hC_41*vKey|)6+hOEJ=dtI z5*t@%3-k9%>DyOXq;gm9pUCeV+^7#;Hrs}k+$b*;=jPDM_@645;~uV!=l1e3UTH4oR$|vT z#M9F7*%9_lWaVY>xpEycXX9u!{?j^lxpDSfUBp;m7)PcZUFh3^IMaNsZ*KOP5$v>- zY&*O-bAtac>N2~Rs_1)8R%CN&tkYer#g4oC>@YpDmr7@2P2_+k+b$?kaS`v=5qEOq z?8%>sZ`ywTd&J&Tarip!_7lm+dG1^qE^tR%IPGjcn3iweUEV5emdDwC`hsLZ*!bo; z=U{j~heu@Ebgnezo9m2%JoNNjy?PfPJ&zA6$h@!cKieo7awuAR9tj92qQJVV#F#Oo*Fvm?Z-Qm(?{aM~$F zpR?;|b8D^die2CFoa6Gs^fMqkIhDf|Iq%MdpT2YO7;a?W*-_e2Jgq34c4B8s$y~2f zoVni5rJ(|I##=ZB5hG)!G~}CQ=xkN=T;B4{D0Q=^<))Z$IrK8bwi8|0xU#-q*m!$Q z9tf}R37dT`Yz9)qvoCG<nuIP=}u?ahN}ncJ{cocZQ|McBIiZQ8e?%Z^Uk-<%m2 z_x!Xl-Qme`y(XunOdXz2A>C`T_H3rw@Ew5L4T#)2`wCy(rBSTUPD7ogMj6alG;m(tv`cICDP@6qp~F z27EJ@29&>)27I&pw3)`Y@{`hmZ|0|i2AC@y9BAGvIV;6vLq;=f+V<_FnzI;(rR7b_ z$jA9%)N{q>#SI#y;i}<<{~p3WXGWM_@;HVtWpc0Vtm&MPTF~yAO&l!5t=u`gF0I@d zEmYSPDzEgI;>;BfaGN*56>?OjhQ1^w59|VKowQvkv1Su-a+PXKG|ldwe_zsv$F79Wc@Q zW9_$*sQ-98J?GloO$C&`E78ic7mvBtBsW4vBV%KI>)9kU+ZJUHiV_`{(ojzLdmDbK zfOe8?z>EIYx7M6vYbJbd? z>hM^ozQu8{7t|W4)1lTtkq*q7C*nC$12sc#`mSR@yqPsnw?M6ZqRujFpVXd@M|~e` z03U`8;X0TApN5U$3s7sHUWbeg1^3~0e^-{Lxf4B4Qj%~@Mz*d>N2n$Hp{YVc(5balS92}}ohl9f3qrKlFz29BmGojWuDZicur@}#S1{?x4racU5j7M>B4IG8~26#Gr5RQh=!ZGkA zsC7;6z!7jOJQIEi&w}5=aqvf&41a+W;4!>QDpcQQBGd$j*fONnwM~*f`BU?jb{(1K zSha7UKQffC(>R&d%btMf8*;;tmOMdat>#iSuc|rx21Z?xy(XITt{6!`% zw5Mb^E6S2%@i2n>*!F+atRK^TRZsNO53Z^BuN=&TjQ5#!R0;5G)S9!%huS}>{ScLm zpH(*5{ZCbRKii&<#`*%PA4;RIYZh+Rb~y*?8RtU9G38Ux9-a?Rgcra>I0p`e7s1g` z>yDvpvF&RljdLY{KCy{wgMDsHWf8}2rHfsn2+m4T#Ha(9c zwoIQyKg}8@h0TrlL1A+ftORd{HQ*AcdQEGb65*||FT4$^-nt!T!R2roTmb{9HBOhn zmGFAF3MyUS4ORBu13!hUp~~KS;Wtogo0QHUfGTqzf=b_Oq0;rkunBw=s!o0!c85>G zp>Q3X2DQfNcK9^B3qAuC7VF`o@L8xb^m(`ez5om2patQldFrBZ(H%Xl>sQ)Sy{CDw zOwy#rSGC7ad7(a{`cV5pHCLu}F^Vfc9tWU4SUfg1YYNnMu>FIm=_{b5?Nl%p`zroz zh59w)?@6(IruxCQ*`u-cenaf(-F0omzT*2WsQ7*xD!#QYN%6f2)`MD))EI7tdd>$> z?Yj?QSGWZ#9cX>haQF#41AYo8z|UYF+y>{u?eIFd1KtV0fXYK(Lgk&Ea0C1bz5&01 zN*}vm8T|e&>;%7qr@-%F65I_>gFnDwa1R^-7S%|Dc)+2vkg+rhu z%GfwSXr%U!yL!>goyX)7$$-vJIs=?`eDiSUS>?PW2|#5E_li?L&yANfH8(eH7+Et{ z5_Xom=N{zyFB*@UjqSY%?VpIVUza|nZc-&SUZQc^BOg0c7}$QPonxgq0MR9DIK8NC)9nW|9k>epRW^a20OzOAth%p5Ymn`^^fLp z(@`^LWZEO$q3WANcn$0UZ-hOe`go*4)5jxU1TUf{y#?>XKJXJrT^sC$yi-7bmKHGK zK$x5gtHaY^OE>^_h67yf9ezkMDB5J3oo>Tj# z50Z(f?C*<6Pv)wpR6nYHqdH7=#qEgdJe_Bu^EFx^suzbNI`?8KqIHXMuQsjB)OH$) zsI9Aes_t}@AG9Y->jdkE`h~xfY4cjt-Aukv5Fq>p9l0hLs}h9?vn z10`t}Yu*lhSAP_^|8w<+!qBfj=+l@><9+U84Q|}!{|v*~t3NV$k;&MXU1$EkS%3V| zIxWAh3cvW(I{f4pb;RL)!^@_b(g)NjZvHA>372a{n0EA=^~-TDxG*&5Q)XvnaU`od zK~U|5HH76ZZZ3DuuJq|gXkEH#;qD9X(I9L`ycSDG)Z^VIjT@Jqm7YH!J0&@zt$8o! zJ|Fk0b2_|fSxN5%tz$1J| zH&3xKe5Tq>?&{7w#WwfMBbcXf<&0~0*>d}@X?G>zQCq%7W99UXc)Uya0)N!*QkmM2 zx>ar91V~$jTHfxrQF~0|q)p&t*c9eLwa3nfYL8tCTfjw7?Xg>-+GBS^wZ|TYYLBgl zZ6SF_V~A!4KQ?fu1lA z^Iq^0m;`Ttz2QAj?J$iS@or{c=4tR9)M{^i3Tbc6SG#Kz>Ot^ys6NYRmDI1TmFa5{V!o&&#v=fYp$Y{++A&H0iw zA#oNogBQX?co7@|=fYGt59Yv&VE`|K3*hB&Ia~ns4f-qKOYlmlbs1N|9q?MX8C_D!~2Cs&X!)5RZ z_%M7DJ_pyqx8ZuI^CzE$`{8r2LMg`nU>&#twt_E1<2?T49N?@H26B42RFhc z@GW>3d>cLj-+?c}P4Hv*F8mt42Y-g|!(&TR2Ec}J3v3QQhTY*Oa0vVqCc~{T7k&mW zg4^ICxEI|}vAm>EdO?{LC$b|q z63ugJEKL0ro$aNuclCdCo}k9bG&ZO{j`~cpFKWzQ{TuarG)L71Q6EJ8CygJoj!>AVDh88zw~5BB0c|J8jqA8Wyklc z#<7d)t4}69iT`fWcV_;5eEq(mJB5X_tNRqyZ-m}JMB$=)>Amzm((})3l->Zuy}JuX z+1ESiEJuZnM14>9{-VZb6$YZOuXvN5PxW_YNA}fU)wr!heN=^iW2B&eN*Nrs<)fxu zPck>-C*z^6N~A@yy6K0OgVj)@r*>k{0M>%dU~R~F0{s>3$59${&s93re0{svxc}Iw zYwt!)+gHy#9vOnZF76wU%}xDW9yUT<2R4RHVH2olHisP`_3m8i6f?G*2|J>n6>@IK zOJNuEmqYw%#!pn=Qr4Jymb^;}<+=Ew8>|C0R$UMFKph`aq-WO)V z{`iMA5N14MIaIxA!$51=HD6gDQGPlZR_4hX2hcp^>EzaN==DLgS6B0!{gB>BXV0F_ zzZi>~c=Wa3RD08_BlTlptoOEU;i%rr?CB{3XPUdPHVr>1UiFR&|8&&N;1o!^#pt(( zqz@CuvUdXNRMcG|;mbP_+gw$7)2gPoqRt5^giB^_t-kEr_OfmN>3Jm(Jx5nA_fmZ4 zLB(^vxwpdTghKbQZQ$bX!F!o|%nI+Jwt>P_;pY3pwrTC20r`XIF?}9j#$d`Qb#Xa; z7e>;foHk=FaU_0Sb^BN*f*dN3`N(a^24oAe8!7z-?MNgM8I9y1i;&gGMr0?VistW2 zBO}Vo;oc!d02giN*tLy*&;m9n8>7K|K@$`8UFB{EBD>D~aKN}X z+uz~dF1P>7x7&Yk>mk{>Z1&>v^+!zBNBQ)n^uOl&;mR9D$Ftq~d*=1cwami&-A*_? z<-%!FT2@~E)amVW*a~L$tCgszd4LhPlN)DG<4i}RroUa$-pY(q75ct++=1q?@4&dV z#RcvuE5dKcyRiq~%-&8DWS$}Wic?=dH}rcdejkG0RaVuc^MKOWS9#*w&%nOM z3l4ppVPQGdZ%SkSIKv{{m}`-R`MU!khD;gH7^b%aBTbRF} z6Bc`1Sfto7t{y{dzFdq)@^K^k&W^%D{*Egg7P0*gGME30n47Rt{#JMZ&)oDw(P!TT z4%MHdUXPR-ZPSLrLusVoeg$EBc-zoo;?nvMWpJ*+7UnPGdvRmkGg7l> zFs7EAiiyHoeb?H!k$q>!#V_qBzZ^LrtrwUVloKwld^491jx_DMa?*UG9Dj~5Z)N{5 zb`W<@(RVZ7J+|*Rf_GCtS8klW|Euq(?<(lhT2FU<&HMfC-fvotVlI3;`+glsw3Bfs zH_o2kPf3mSXnz=g1?IF78D>=_D7SjNZ)Uy`%eE+$KZ;-FecwEf0~Swz>$LKD!;q`#5tAZOHvY{TCbEkLH^9tP27c7!L4y_K^YxaW{t*7)ocU@I2%wP5q#cg-*bp&$> z?iqWyoBFS|jbE@fm+Yl}s=2E3%Bsd{n*N_1pQwUb;}aTV(D+0HSPwRX^`ZKq=+R%) zxJ5!J8nbd^7;R#GNcHn=n>iX;hC5x1ftbA*`rVlOC~BLS``Nhzjh8e>ji1cif%>>D zQ76DwumfZaBT&1g4eSf?Q!og&gTo+eRP3& zs7W(sjko&m=Y{s>!IROy6w)_0YfLoeaXsoD@D|t)+Ho_5No~aLt+3RXqtqJ1^7X3| zjtW(!Ih|dib*38ov8kaRp{+G}<ID?Ihyyd$G)_Ka7tJL>VU51asbS2G@RDx8Q~;XWCT zhUrk@OxT*WIgBrva~QKBV#Y2M&a@FsIFmkuIjHsAi{Lq^=Z5Nw;cV2G!SmrY@Iq+E z|1@q_9Z`5T!bEw9*yGZeN=*}%8tbWtC~V_ld!z}Xwe412(WGISlOnj>xe4X5Wyc9^ zc<;c>w#lQh_Ph#)&2q%G0Dmc8T?vnYS3{X!3oAptpJJ6XWAf7tusQ0*Q1Nghln<6d zh4ZcOR48`?;O(f1Q=?Y9KwyC4Bwsr~hl%{k&j9rDxqfp`U zcp-n|pXtVv4}7N9 zCfjx+XQ3%Txm30(FYDUIz4T1dnhC2fU?tRF!YXhlRNeG7R9q-+$o($ViqY?2i%`E6 z+=H6(QG4Bj_V8!e5&i;Cfxkk9+i#G3t3kYg^cpz|s!U^iz^vn@FKG5&(MB}ux$(PM z&s`3FhP`7UevDLr`yq{5b9TA>$-Rt!X?K}#MHHk_jo~LCbr?6QjVq;9 zYkk-pk$MU;3h9oVfoPvfV%Fl!Ebz!vaA$k>o6pIXDKP`8ETee*qvf_K#(8qI?wA(|6e zizq#++|iy6yY5=)!?p>dv9_e2KDu#l`7sg7k3FH%M=z-Kkpz`K`anN@^h2#sJr(-t zV-RYk57yS3^f4SNeT;;9*HN%HJOfUJ%tM%U{%674P>+Xe-~{*tOodOwNsv5hzL~Hc zPC@+@WIdEg7mWD_5#Ck)B#jv=Kjfe;2(!aYAKKG)nf;kbOyM}ZsiGy zO}BDu+k(Zf#XpW)EAHi=GMZ)J+KVWi$>;K&t=iqh)52jpxNn5zzyxx%eD_Z>p>qYq-PvQh5i4q~qMo6Jic#Jp2zUiu*BDj(#&%t6e%gyt%j ziu1q9ExA{{R*ZQ&l_fGScMx+Ie&r8h?!r&yU~%_%;YXQNtho!n3I{QF;irf%?*1

3|-<7?qOr7{nf+L!LS2s>%J!}7vg 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⪚4zTr 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 z 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 bATDU?fu87v-uUn1zf<79Q{ey4De!*)kxy6t literal 941568 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

ZaS3;J#D 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

vY=&roECw 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Ġ* z`NSDU0bxI$;50^1ND;*(DPbfj(v(uhC`L1ev7AnLZ-g^Bi?a!jKF4t`<2jEBoX-VZ z$VFVtL@r?xmvR}GGnp&6lB<}))m+21OyxSRXByMFfg8Dr8O-EnW^oI*avQgE2X}H8 zcXJQ-av%5e0JC|JIn3oD9_A6|@hFe+IP-aeCwYnmEaYjPVG+-=nCDo+^Sr=|yu{1A z!mGT->%766EaffU<{jSUJ>F*-AMha`v78lr%t}7tQ$FK!zF-w!@)ck64d3z|t69VM z{J@X=#LxV~TGsI^zwtYN@F(l}i(qs0o-Nptt*Ak`&U{U_p%&W`-V35O+Y^qXcVs7a zrVhKXE4#5fd$1>au{Zm$FZ)rKdeo-@4cVVYH0A)Ba3D=Nh=XZHb6U`nRJ=2(uS58>MDed$Mk1~8C84CVw* zMghY~a2g{hq=;gYlrWMMX-X+$6r&l#SWf2*&g3l4<{ZXx zF5@|m37pRbT*yUS%tS6>5|?rrmou3wxRR@w!qr^EwM^wYu4fw4xq%zGi5bk~W@d2< zw{jb|a|d^F7k6_H_i`Wi^8mAXkU7ldAs*%t=J6!pF6_!~?9LwS$zJTuKJ3eW)TJKvX+Sswx<8F*%mFmvK$>z82h)t^ zw4f!eXiXaq;ZP1EJYH{0JC2||9XOJs=tw6zlS3D}(v9x)peILj487>hu^dMqj;AmE z=+6KKGKj&Pz=@nhE+=yer!s^XL&+nbIKwDlI0;T;1cek4-UA^?2_s37rj#;9F`6-q z<#f*AOwQtL&S4zqGM@98!1-LjgHUwxc%NvjaP_6FXCfUD%b~*quGtlfBrReb|@%s7rXij`}p9A^X#a#vDKs z4x}juaWKtjP77Mniq^E@5Dw)q4yP^cID+4qfOKLZ%ZAO>>+CvpZZpAYjG&Mrib+z!NK&LJ zrHoOGW(;Eq@B4BFXL1&2a}MJ;m+_p(1kUFIF61IEW+Im`iA%YR%bCm-T**~T;cBko zTBdRx*E5aj+`x_8#0+L~GqbpbTe*$fxq~~oi@Ujpd%2JMd4SnG$Q!IM120v7T#&#;JRSMBQ`{yuaBJ7VEk^^l!VFr_lJLw^Yua!KhjJK))0TD|L3=uIBuCMa zPIM-RE_9_E-RVJ3j^-G8(VJsAjy@buc&{(FJ`DQfR))bq+*ZQRZs+{snIUSA5Mke9L#NW)0u-13&T;Kl2M~S;w#Z#_#;WU##a(g00khwqQ%P zq6S-2lWnNQwrodjwr2-+WGBM2&2`v?UD=J@*@HdVi@n*0ec6w?)T2HPXvqFFqA>^1 zgac{HK^#mon$v=ow4ya_ID|tvjKgV5JC2||9XOJs=tw6zlS3D}(v9x)peILj487>h zu^dMqj;AmE=+6KKGKj&Pz=@nhE+=yer!s^XL&+nbIKwDlI0;T;1cek)Op+2tk|Iqh zWsG7pV;IZnoWYr##o3(0IL>7}=P`lvxqu6~h>MxXB~0Q{F5_}0a|Ks&6;rsHYxw{0 pvri3WmHntoJ?hhdhU`xx8gl?mIFP0s#6Lg(Pitch Yaw IN Yaw + Mag Heading WP Dist diff --git a/Tools/ArdupilotMegaPlanner/dataflashlog.xml b/Tools/ArdupilotMegaPlanner/dataflashlog.xml index d048c7c0b6..3964602e0a 100644 --- a/Tools/ArdupilotMegaPlanner/dataflashlog.xml +++ b/Tools/ArdupilotMegaPlanner/dataflashlog.xml @@ -19,6 +19,7 @@ Pitch Yaw IN Yaw + Mag Heading WP Dist diff --git a/Tools/ArdupilotMegaPlanner/georefimage.cs b/Tools/ArdupilotMegaPlanner/georefimage.cs index a23100b607..bc3429ba27 100644 --- a/Tools/ArdupilotMegaPlanner/georefimage.cs +++ b/Tools/ArdupilotMegaPlanner/georefimage.cs @@ -1,22 +1,19 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Drawing; -using System.Drawing.Imaging; +using System.Reflection; using System.IO; using System.Windows.Forms; using com.drew.imaging.jpg; using com.drew.metadata; - +using log4net; using SharpKml.Base; using SharpKml.Dom; -using SharpKml.Dom.GX; namespace ArdupilotMega { - class georefimage : Form + public class Georefimage : Form { + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private OpenFileDialog openFileDialog1; private MyButton BUT_browselog; private MyButton BUT_browsedir; @@ -31,7 +28,7 @@ namespace ArdupilotMega int latpos = 5, lngpos = 4, altpos = 7; - internal georefimage() { + internal Georefimage() { InitializeComponent(); } @@ -51,7 +48,7 @@ namespace ArdupilotMega } catch (JpegProcessingException e) { - Console.WriteLine(e.Message); + log.InfoFormat(e.Message); return dtaken; } @@ -61,7 +58,7 @@ namespace ArdupilotMega if (lcDirectory.ContainsTag(0x9003)) { dtaken = lcDirectory.GetDate(0x9003); - Console.WriteLine("does " + lcDirectory.GetTagName(0x9003) + " " + dtaken); + log.InfoFormat("does " + lcDirectory.GetTagName(0x9003) + " " + dtaken); break; } @@ -96,6 +93,51 @@ namespace ArdupilotMega { List list = new List(); + if (fn.ToLower().EndsWith("tlog")) + { + MAVLink mine = new MAVLink(); + mine.logplaybackfile = new BinaryReader(File.Open(fn, FileMode.Open, FileAccess.Read, FileShare.Read)); + mine.logreadmode = true; + + mine.packets.Initialize(); // clear + + CurrentState cs = new CurrentState(); + + string[] oldvalues = {""}; + + while (mine.logplaybackfile.BaseStream.Position < mine.logplaybackfile.BaseStream.Length) + { + + byte[] packet = mine.readPacket(); + + cs.datetime = mine.lastlogread; + + cs.UpdateCurrentSettings(null, true, mine); + + // line "GPS: 82686250, 1, 8, -34.1406480, 118.5441900, 0.0000, 309.1900, 315.9500, 0.0000, 279.1200" string + + + string[] vals = new string[] { "GPS", (new DateTime(cs.datetime.Year,cs.datetime.Month,cs.datetime.Day,0,0,0) - cs.datetime).TotalMilliseconds.ToString(), "1", + "8",cs.lat.ToString(),cs.lng.ToString(),"0.0",cs.alt.ToString(),cs.alt.ToString(),"0.0",cs.groundcourse.ToString()}; + + if (oldvalues.Length > 2 && oldvalues[latpos] == vals[latpos] + && oldvalues[lngpos] == vals[lngpos] + && oldvalues[altpos] == vals[altpos]) + continue; + + oldvalues = vals; + + list.Add(vals); + // 4 5 7 + Console.Write((mine.logplaybackfile.BaseStream.Position * 100 / mine.logplaybackfile.BaseStream.Length) + " \r"); + + } + + mine.logplaybackfile.Close(); + + return list; + } + StreamReader sr = new StreamReader(fn); string lasttime = "0"; @@ -172,7 +214,7 @@ namespace ArdupilotMega localmax = crap; } - Console.WriteLine("min " + localmin + " max " + localmax); + log.InfoFormat("min " + localmin + " max " + localmax); TXT_outputlog.AppendText("Log min " + localmin + " max " + localmax + "\r\n"); } @@ -220,7 +262,7 @@ namespace ArdupilotMega sw.WriteLine(Path.GetFileNameWithoutExtension(file) + "\t" + crap.ToString("yyyy:MM:dd HH:mm:ss") + "\t" + arr[lngpos] + "\t" + arr[latpos] + "\t" + arr[altpos]); sw.Flush(); sw2.Flush(); - Console.WriteLine(Path.GetFileNameWithoutExtension(file) + " " + arr[lngpos] + " " + arr[latpos] + " " + arr[altpos] + " "); + log.InfoFormat(Path.GetFileNameWithoutExtension(file) + " " + arr[lngpos] + " " + arr[latpos] + " " + arr[altpos] + " "); break; } //Console.WriteLine(crap); @@ -359,7 +401,7 @@ namespace ArdupilotMega this.Controls.Add(this.TXT_logfile); this.Controls.Add(this.BUT_browsedir); this.Controls.Add(this.BUT_browselog); - this.Name = "georefimage"; + this.Name = "Georefimage"; this.ResumeLayout(false); this.PerformLayout(); @@ -367,7 +409,7 @@ namespace ArdupilotMega private void BUT_browselog_Click(object sender, EventArgs e) { - openFileDialog1.Filter = "Logs|*.log"; + openFileDialog1.Filter = "Logs|*.log;*.tlog"; openFileDialog1.ShowDialog(); if (File.Exists(openFileDialog1.FileName)) diff --git a/Tools/ArdupilotMegaPlanner/temp.Designer.cs b/Tools/ArdupilotMegaPlanner/temp.Designer.cs index d09cc97373..4e844073f1 100644 --- a/Tools/ArdupilotMegaPlanner/temp.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/temp.Designer.cs @@ -46,6 +46,7 @@ this.BUT_lang_edit = new ArdupilotMega.MyButton(); this.BUT_georefimage = new ArdupilotMega.MyButton(); this.BUT_follow_me = new ArdupilotMega.MyButton(); + this.BUT_ant_track = new ArdupilotMega.MyButton(); this.SuspendLayout(); // // button1 @@ -215,7 +216,7 @@ // // BUT_follow_me // - this.BUT_follow_me.Location = new System.Drawing.Point(525, 164); + this.BUT_follow_me.Location = new System.Drawing.Point(527, 164); this.BUT_follow_me.Name = "BUT_follow_me"; this.BUT_follow_me.Size = new System.Drawing.Size(75, 23); this.BUT_follow_me.TabIndex = 17; @@ -223,11 +224,22 @@ this.BUT_follow_me.UseVisualStyleBackColor = true; this.BUT_follow_me.Click += new System.EventHandler(this.BUT_follow_me_Click); // + // BUT_ant_track + // + this.BUT_ant_track.Location = new System.Drawing.Point(446, 164); + this.BUT_ant_track.Name = "BUT_ant_track"; + this.BUT_ant_track.Size = new System.Drawing.Size(75, 23); + this.BUT_ant_track.TabIndex = 18; + this.BUT_ant_track.Text = "Antenna Tracker"; + this.BUT_ant_track.UseVisualStyleBackColor = true; + this.BUT_ant_track.Click += new System.EventHandler(this.BUT_ant_track_Click); + // // temp // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(731, 281); + this.Controls.Add(this.BUT_ant_track); this.Controls.Add(this.BUT_follow_me); this.Controls.Add(this.BUT_georefimage); this.Controls.Add(this.BUT_lang_edit); @@ -274,6 +286,7 @@ private MyButton BUT_lang_edit; private MyButton BUT_georefimage; private MyButton BUT_follow_me; + private MyButton BUT_ant_track; //private SharpVectors.Renderers.Forms.SvgPictureBox svgPictureBox1; } diff --git a/Tools/ArdupilotMegaPlanner/temp.cs b/Tools/ArdupilotMegaPlanner/temp.cs index 394ab8b1d5..8994baf70e 100644 --- a/Tools/ArdupilotMegaPlanner/temp.cs +++ b/Tools/ArdupilotMegaPlanner/temp.cs @@ -13,11 +13,14 @@ using System.Net; using GMap.NET.WindowsForms; using GMap.NET.CacheProviders; +using log4net; namespace ArdupilotMega { public partial class temp : Form { + private static readonly ILog log = + LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public temp() { InitializeComponent(); @@ -159,7 +162,7 @@ namespace ArdupilotMega int start = 0; int end = 1024*4; - Console.WriteLine(start + " to " + end); + log.Info(start + " to " + end); port.upload(EEPROM, (short)start, (short)(end - start), (short)start); if (port.keepalive()) @@ -230,7 +233,7 @@ namespace ArdupilotMega int start = 0; int end = 1024*4; - Console.WriteLine(start + " to " + end); + log.Info(start + " to " + end); port.upload(EEPROM, (short)start, (short)(end - start), (short)start); if (port.keepalive()) @@ -295,11 +298,11 @@ namespace ArdupilotMega int start = 0; short length = 0x100; - Console.WriteLine(start + " to " + FLASH.Length); + log.Info(start + " to " + FLASH.Length); while (start < FLASH.Length) { - Console.WriteLine("Doing " + length + " at " + start); + log.Info("Doing " + length + " at " + start); port.setaddress(start); port.downloadflash(length).CopyTo(FLASH, start); start += length; @@ -335,7 +338,7 @@ namespace ArdupilotMega sw.Close(); - Console.WriteLine("Downloaded"); + log.Info("Downloaded"); } else { @@ -397,7 +400,7 @@ namespace ArdupilotMega if (port.connectAP()) { - Console.WriteLine("starting"); + log.Info("starting"); port.uploadflash(FLASH, 0, FLASH.Length, 0); @@ -405,7 +408,7 @@ namespace ArdupilotMega - Console.WriteLine("Uploaded"); + log.Info("Uploaded"); } @@ -442,7 +445,7 @@ namespace ArdupilotMega int length = Convert.ToInt32(match.Groups[1].Value.ToString(), 16); int address = Convert.ToInt32(match.Groups[2].Value.ToString(), 16); int option = Convert.ToInt32(match.Groups[3].Value.ToString(), 16); - Console.WriteLine("len {0} add {1} opt {2}", length, address, option); + log.InfoFormat("len {0} add {1} opt {2}", length, address, option); if (option == 0) { string data = match.Groups[4].Value.ToString(); @@ -484,7 +487,7 @@ namespace ArdupilotMega int length = Convert.ToInt32(line.Substring(1, 2), 16); int address = Convert.ToInt32(line.Substring(3, 4), 16); int option = Convert.ToInt32(line.Substring(7, 2), 16); - Console.WriteLine("len {0} add {1} opt {2}", length, address, option); + log.InfoFormat("len {0} add {1} opt {2}", length, address, option); if (option == 0) { @@ -535,12 +538,12 @@ namespace ArdupilotMega { port.PortName = ArdupilotMega.MainV2.comportname; - Console.WriteLine("Open Port"); + log.Info("Open Port"); port.Open(); - Console.WriteLine("Connect AP"); + log.Info("Connect AP"); if (port.connectAP()) { - Console.WriteLine("Download AP"); + log.Info("Download AP"); byte[] EEPROM = new byte[1024*4]; for (int a = 0; a < 4 * 1024; a += 0x100) @@ -548,7 +551,7 @@ namespace ArdupilotMega port.setaddress(a); port.download(0x100).CopyTo(EEPROM,a); } - Console.WriteLine("Verify State"); + log.Info("Verify State"); if (port.keepalive()) { StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"EEPROM.bin"); @@ -586,12 +589,12 @@ namespace ArdupilotMega { port.PortName = ArdupilotMega.MainV2.comportname; - Console.WriteLine("Open Port"); + log.Info("Open Port"); port.Open(); - Console.WriteLine("Connect AP"); + log.Info("Connect AP"); if (port.connectAP()) { - Console.WriteLine("Download AP"); + log.Info("Download AP"); byte[] EEPROM = new byte[1024 * 4]; for (int a = 0; a < 4 * 1024; a += 0x100) @@ -599,7 +602,7 @@ namespace ArdupilotMega port.setaddress(a); port.download(0x100).CopyTo(EEPROM, a); } - Console.WriteLine("Verify State"); + log.Info("Verify State"); if (port.keepalive()) { StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"EEPROM1280.bin"); @@ -607,7 +610,7 @@ namespace ArdupilotMega bw.Write(EEPROM, 0, EEPROM.Length); bw.Close(); - Console.WriteLine("Download AP"); + log.Info("Download AP"); byte[] FLASH = new byte[1024 * 128]; for (int a = 0; a < FLASH.Length; a += 0x100) @@ -650,12 +653,12 @@ namespace ArdupilotMega { port.PortName = ArdupilotMega.MainV2.comportname; - Console.WriteLine("Open Port"); + log.Info("Open Port"); port.Open(); - Console.WriteLine("Connect AP"); + log.Info("Connect AP"); if (port.connectAP()) { - Console.WriteLine("Download AP"); + log.Info("Download AP"); byte[] EEPROM = new byte[1024 * 4]; for (int a = 0; a < EEPROM.Length; a += 0x100) @@ -663,7 +666,7 @@ namespace ArdupilotMega port.setaddress(a); port.download(0x100).CopyTo(EEPROM, a); } - Console.WriteLine("Verify State"); + log.Info("Verify State"); if (port.keepalive()) { StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"EEPROM2560.bin"); @@ -671,7 +674,7 @@ namespace ArdupilotMega bw.Write(EEPROM, 0, EEPROM.Length); bw.Close(); - Console.WriteLine("Download AP"); + log.Info("Download AP"); byte[] FLASH = new byte[1024 * 256]; for (int a = 0; a < FLASH.Length; a += 0x100) @@ -733,7 +736,7 @@ namespace ArdupilotMega if (port.connectAP()) { - Console.WriteLine("starting"); + log.Info("starting"); port.uploadflash(FLASH, 0, FLASH.Length, 0); @@ -741,7 +744,7 @@ namespace ArdupilotMega port.upload(EEPROM, 0, (short)EEPROM.Length, 0); - Console.WriteLine("Uploaded"); + log.Info("Uploaded"); } @@ -800,7 +803,7 @@ namespace ArdupilotMega foreach (string file in files) { - Console.WriteLine(DateTime.Now.Millisecond + " Doing "+ file); + log.Info(DateTime.Now.Millisecond + " Doing "+ file); Regex reg = new Regex(@"Z([0-9]+)\\([0-9]+)\\([0-9]+)"); Match mat = reg.Match(file); @@ -820,7 +823,7 @@ namespace ArdupilotMega Img.Save(tile,System.Drawing.Imaging.ImageFormat.Jpeg); tile.Seek(0, SeekOrigin.Begin); - Console.WriteLine(pnt.X + " " + pnt.Y); + log.Info(pnt.X + " " + pnt.Y); Application.DoEvents(); @@ -860,7 +863,7 @@ namespace ArdupilotMega GMap.NET.CacheProviders.SQLitePureImageCache.VacuumDb(MainMap.CacheLocation + @"\TileDBv3\en\Data.gmdb"); - Console.WriteLine("Removed {0} images",removed); + log.InfoFormat("Removed {0} images", removed); } private void BUT_lang_edit_Click(object sender, EventArgs e) { @@ -869,7 +872,7 @@ namespace ArdupilotMega private void BUT_georefimage_Click(object sender, EventArgs e) { - new georefimage().Show(); + new Georefimage().Show(); } private void BUT_follow_me_Click(object sender, EventArgs e) @@ -878,5 +881,10 @@ namespace ArdupilotMega MainV2.fixtheme((Form)si); si.Show(); } + + private void BUT_ant_track_Click(object sender, EventArgs e) + { + new Antenna.Tracker().Show(); + } } } From fa443bd928622db412d62901e7ec9c8d66775e66 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 27 Feb 2012 10:22:29 +1100 Subject: [PATCH 075/122] AP_Param: make the templating code a bit clearer add comments on the arguments, and name them in a clearer way --- libraries/AP_Common/AP_Param.h | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/libraries/AP_Common/AP_Param.h b/libraries/AP_Common/AP_Param.h index c3f72fefac..3bc2bd4329 100644 --- a/libraries/AP_Common/AP_Param.h +++ b/libraries/AP_Common/AP_Param.h @@ -434,17 +434,30 @@ protected: /// Convenience macro for defining instances of the AP_ParamT template. /// -#define AP_PARAMDEF(_t, _n, _pt) typedef AP_ParamT<_t, _pt> AP_##_n; +// declare a scalar type +// _t is the base type +// _suffix is the suffix on the AP_* type name +// _pt is the enum ap_var_type type +#define AP_PARAMDEF(_t, _suffix, _pt) typedef AP_ParamT<_t, _pt> AP_##_suffix; AP_PARAMDEF(float, Float, AP_PARAM_FLOAT); // defines AP_Float AP_PARAMDEF(int8_t, Int8, AP_PARAM_INT8); // defines AP_Int8 AP_PARAMDEF(int16_t, Int16, AP_PARAM_INT16); // defines AP_Int16 AP_PARAMDEF(int32_t, Int32, AP_PARAM_INT32); // defines AP_Int32 -#define AP_PARAMDEFA(_t, _n, _size, _pt) typedef AP_ParamA<_t, _size, _pt> AP_##_n; +// declare an array type +// _t is the base type +// _suffix is the suffix on the AP_* type name +// _size is the size of the array +// _pt is the enum ap_var_type type +#define AP_PARAMDEFA(_t, _suffix, _size, _pt) typedef AP_ParamA<_t, _size, _pt> AP_##_suffix; AP_PARAMDEFA(float, Vector6f, 6, AP_PARAM_VECTOR6F); +// declare a non-scalar type // this is used in AP_Math.h -#define AP_PARAMDEFV(_t, _n, _pt) typedef AP_ParamV<_t, _pt> AP_##_n; +// _t is the base type +// _suffix is the suffix on the AP_* type name +// _pt is the enum ap_var_type type +#define AP_PARAMDEFV(_t, _suffix, _pt) typedef AP_ParamV<_t, _pt> AP_##_suffix; /// Rely on built in casting for other variable types /// to minimize template creation and save memory From 87a6d97f7b6f55c42b188bee065d58bc120aa42a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 27 Feb 2012 10:51:57 +1100 Subject: [PATCH 076/122] AP_Param: fixed setting of CAM_P_G in ArduCopter the variable CAM_P_G has the same prefix as the CAM_P group. We want to allow for parameters having a common prefix with a group, so we need to keep searching after we've found a group that matches the prefix --- libraries/AP_Common/AP_Param.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index 32081f92f7..da0ed84984 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -533,7 +533,13 @@ AP_Param::find(const char *name, enum ap_var_type *ptype) continue; } const struct GroupInfo *group_info = (const struct GroupInfo *)PGM_POINTER(&_var_info[i].group_info); - return find_group(name + len, i, group_info, ptype); + AP_Param *ap = find_group(name + len, i, group_info, ptype); + if (ap != NULL) { + return ap; + } + // we continue looking as we want to allow top level + // parameter to have the same prefix name as group + // parameters, for example CAM_P_G } else if (strcasecmp_P(name, _var_info[i].name) == 0) { *ptype = (enum ap_var_type)type; return (AP_Param *)PGM_POINTER(&_var_info[i].ptr); From cd4fcb694e4d249860f43e2e16a2cf38ec45dd98 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 27 Feb 2012 12:14:01 +1100 Subject: [PATCH 077/122] IMU: removed unused accel_filtered code --- libraries/AP_IMU/AP_IMU_INS.cpp | 4 ---- libraries/AP_IMU/IMU.h | 7 ------- 2 files changed, 11 deletions(-) diff --git a/libraries/AP_IMU/AP_IMU_INS.cpp b/libraries/AP_IMU/AP_IMU_INS.cpp index 075678315f..bb24f36248 100644 --- a/libraries/AP_IMU/AP_IMU_INS.cpp +++ b/libraries/AP_IMU/AP_IMU_INS.cpp @@ -232,10 +232,6 @@ AP_IMU_INS::update(void) _accel.y = _calibrated(4, accels[1]); _accel.z = _calibrated(5, accels[2]); - _accel_filtered.x = _accel_filtered.x / 2 + _accel.x / 2; - _accel_filtered.y = _accel_filtered.y / 2 + _accel.y / 2; - _accel_filtered.z = _accel_filtered.z / 2 + _accel.z / 2; - // always updated return true; } diff --git a/libraries/AP_IMU/IMU.h b/libraries/AP_IMU/IMU.h index f2ccb2d4a0..8691e2663b 100644 --- a/libraries/AP_IMU/IMU.h +++ b/libraries/AP_IMU/IMU.h @@ -75,12 +75,6 @@ public: Vector3f get_accel(void) { return _accel; } - /// Fetch the current accelerometer values - /// - /// @returns vector of current accelerations in m/s/s - /// - Vector3f get_accel_filtered(void) { return _accel_filtered; } - /// return the number of seconds that the last update represents /// /// @returns number of seconds @@ -112,7 +106,6 @@ protected: /// Most recent accelerometer reading obtained by ::update Vector3f _accel; - Vector3f _accel_filtered; /// Most recent gyro reading obtained by ::update Vector3f _gyro; From efe5c0142c9b02309a3fc1aa1125e24051618420 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 27 Feb 2012 19:29:45 +1100 Subject: [PATCH 078/122] SITL: raise the ADC noise level to 8 bits when flying this is about the level of noise of a aircraft that has a lot of vibration --- libraries/Desktop/support/sitl.cpp | 9 ++++++++- libraries/Desktop/support/sitl_adc.h | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/Desktop/support/sitl.cpp b/libraries/Desktop/support/sitl.cpp index 8e4d35c904..e2207ac1bb 100644 --- a/libraries/Desktop/support/sitl.cpp +++ b/libraries/Desktop/support/sitl.cpp @@ -157,8 +157,11 @@ static void sitl_fdm_input(void) } +// used for noise generation in the ADC code +bool sitl_motor_running = false; + /* - send RC outputs to simulator for a quadcopter + send RC outputs to simulator */ static void sitl_simulator_output(void) { @@ -192,6 +195,10 @@ static void sitl_simulator_output(void) // the registers are 2x the PWM value pwm[i] = (*reg[i])/2; } + + // use pwm3 as a proxy for if the motor is running + sitl_motor_running = (pwm[2]>1200); + sendto(sitl_fd, (void*)pwm, sizeof(pwm), MSG_DONTWAIT, (const sockaddr *)&rcout_addr, sizeof(rcout_addr)); } diff --git a/libraries/Desktop/support/sitl_adc.h b/libraries/Desktop/support/sitl_adc.h index a467a20b7f..95ee7038f5 100644 --- a/libraries/Desktop/support/sitl_adc.h +++ b/libraries/Desktop/support/sitl_adc.h @@ -8,10 +8,14 @@ #include -#define NOISE_BITS 4 +#define NOISE_BITS 8 static inline float noise_generator(void) { + extern bool sitl_motor_running; + if (!sitl_motor_running) { + return 0; + } float noise = ((unsigned)random()) & ((1< Date: Mon, 27 Feb 2012 21:58:58 +1100 Subject: [PATCH 079/122] SITL: simulate noise on each ADC channel separately scale the noise based on the period of the motors --- libraries/Desktop/support/sitl.cpp | 14 ++++++-- libraries/Desktop/support/sitl_adc.h | 52 +++++++++++++++++++--------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/libraries/Desktop/support/sitl.cpp b/libraries/Desktop/support/sitl.cpp index e2207ac1bb..5e6ecfdbae 100644 --- a/libraries/Desktop/support/sitl.cpp +++ b/libraries/Desktop/support/sitl.cpp @@ -158,7 +158,8 @@ static void sitl_fdm_input(void) } // used for noise generation in the ADC code -bool sitl_motor_running = false; +// motor speed in revolutions per second +float sitl_motor_speed[4] = {0,0,0,0}; /* send RC outputs to simulator @@ -196,8 +197,15 @@ static void sitl_simulator_output(void) pwm[i] = (*reg[i])/2; } - // use pwm3 as a proxy for if the motor is running - sitl_motor_running = (pwm[2]>1200); + if (!desktop_state.quadcopter) { + // 400kV motor, 16V + sitl_motor_speed[0] = ((pwm[2]-1000)/1000.0) * 400 * 16 / 60.0; + } else { + // 850kV motor, 16V + for (i=0; i<4; i++) { + sitl_motor_speed[i] = ((pwm[i]-1000)/1000.0) * 850 * 12 / 60.0; + } + } sendto(sitl_fd, (void*)pwm, sizeof(pwm), MSG_DONTWAIT, (const sockaddr *)&rcout_addr, sizeof(rcout_addr)); } diff --git a/libraries/Desktop/support/sitl_adc.h b/libraries/Desktop/support/sitl_adc.h index 95ee7038f5..65b56315ab 100644 --- a/libraries/Desktop/support/sitl_adc.h +++ b/libraries/Desktop/support/sitl_adc.h @@ -7,18 +7,36 @@ #define _SITL_ADC_H #include +#include -#define NOISE_BITS 8 +static float noise_scale[8] = { 240, 400, 500, 200, 400, 400, 2000, 200 }; -static inline float noise_generator(void) +// generate a random float between -1 and 1 +static double rand_float(void) { - extern bool sitl_motor_running; - if (!sitl_motor_running) { + float ret = ((unsigned)random()) % 2000000; + return (ret - 1.0e6) / 1.0e6; +} + +static inline float noise_generator(uint8_t chan) +{ + extern float sitl_motor_speed[4]; + extern long unsigned int micros(void); + uint8_t i; + float noise = 0; + uint8_t noise_count=0; + double t = micros() / 1.0e6; + for (i=0; i<4; i++) { + if (sitl_motor_speed[i] > 0.0) { + float n = rand_float() * noise_scale[chan]; + noise += sin(fmod(t * sitl_motor_speed[i] * 2 * 3.14 + i, 2*3.14)) * n; + noise_count++; + } + } + if (noise_count == 0) { return 0; } - float noise = ((unsigned)random()) & ((1<= 0x1000) { next_value = 0xFFF; } From a432232db9d4f007f581acfd94ebf90cfddb275b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 28 Feb 2012 09:42:34 +1100 Subject: [PATCH 080/122] AP_Param: fixed v.load() on a sub-element of a AP_Vector3f this isn't actually used at the moment in APM, but we should get it right in case someone does try to load a single element of a vector --- libraries/AP_Common/AP_Param.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index da0ed84984..363e9d784a 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -631,8 +631,19 @@ bool AP_Param::load(void) return false; } + if (phdr.type != AP_PARAM_VECTOR3F && idx != 0) { + // only vector3f can have non-zero idx for now + return false; + } + + AP_Param *ap; + ap = this; + if (idx != 0) { + ap = (AP_Param *)((uintptr_t)ap) - (idx*sizeof(float)); + } + // found it - eeprom_read_block(this, (void*)(ofs+sizeof(phdr)), type_size((enum ap_var_type)phdr.type)); + eeprom_read_block(ap, (void*)(ofs+sizeof(phdr)), type_size((enum ap_var_type)phdr.type)); return true; } From cb52b6c6d98e538d9db72d54ba8bcc93b573e2ea Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 28 Feb 2012 09:43:11 +1100 Subject: [PATCH 081/122] AP_Param: show numerical value in eeprom dump utility --- libraries/AP_Common/tools/eedump_apparam.c | 46 +++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Common/tools/eedump_apparam.c b/libraries/AP_Common/tools/eedump_apparam.c index 3e64bb5257..6f4f7174a6 100644 --- a/libraries/AP_Common/tools/eedump_apparam.c +++ b/libraries/AP_Common/tools/eedump_apparam.c @@ -120,9 +120,53 @@ main(int argc, char *argv[]) break; } size = type_size(var->type); - printf("%04x: type %u (%s) key %u group_element %u size %d\n ", + printf("%04x: type %u (%s) key %u group_element %u size %d value ", index, var->type, type_names[var->type], var->key, var->group_element, size); index += sizeof(*var); + switch (var->type) { + case AP_PARAM_INT8: + printf("%d\n", (int)*(int8_t *)&eeprom[index]); + break; + case AP_PARAM_INT16: + printf("%d\n", (int)*(int16_t *)&eeprom[index]); + break; + case AP_PARAM_INT32: + printf("%d\n", (int)*(int32_t *)&eeprom[index]); + break; + case AP_PARAM_FLOAT: + printf("%f\n", *(float *)&eeprom[index]); + break; + case AP_PARAM_VECTOR3F: + printf("%f %f %f\n", + *(float *)&eeprom[index], + *(float *)&eeprom[index+4], + *(float *)&eeprom[index+8]); + break; + case AP_PARAM_VECTOR6F: + printf("%f %f %f %f %f %f\n", + *(float *)&eeprom[index], + *(float *)&eeprom[index+4], + *(float *)&eeprom[index+8], + *(float *)&eeprom[index+12], + *(float *)&eeprom[index+16], + *(float *)&eeprom[index+20]); + break; + case AP_PARAM_MATRIX3F: + printf("%f %f %f %f %f %f %f %f %f\n", + *(float *)&eeprom[index], + *(float *)&eeprom[index+4], + *(float *)&eeprom[index+8], + *(float *)&eeprom[index+12], + *(float *)&eeprom[index+16], + *(float *)&eeprom[index+20], + *(float *)&eeprom[index+24], + *(float *)&eeprom[index+28], + *(float *)&eeprom[index+32]); + break; + default: + printf("NONE\n"); + break; + } for (i = 0; i < size; i++) { printf(" %02x", eeprom[index + i]); } From 645fda2fb249c86da6aac3fa0b28cbcdef38c1b6 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 28 Feb 2012 21:01:11 +0900 Subject: [PATCH 082/122] Filter - added AverageFilter, removed SumFilter added FilterWithBuffer to allow removal of malloc/free without losing ability to pass around filter objects --- libraries/Filter/AverageFilter.h | 69 ++++++++++++------- libraries/Filter/Filter.h | 72 +++----------------- libraries/Filter/FilterWithBuffer.h | 102 ++++++++++++++++++++++++++++ libraries/Filter/ModeFilter.h | 83 +++++++++++++--------- libraries/Filter/SumFilter.h | 54 --------------- libraries/Filter/keywords.txt | 17 ++--- 6 files changed, 215 insertions(+), 182 deletions(-) create mode 100644 libraries/Filter/FilterWithBuffer.h delete mode 100644 libraries/Filter/SumFilter.h diff --git a/libraries/Filter/AverageFilter.h b/libraries/Filter/AverageFilter.h index df9305a745..5fa0406819 100644 --- a/libraries/Filter/AverageFilter.h +++ b/libraries/Filter/AverageFilter.h @@ -16,14 +16,16 @@ #include #include +#include // 1st parameter is the type of data being filtered. // 2nd parameter is a larger data type used during summation to prevent overflows -template -class AverageFilter : public Filter +template +class AverageFilter : public FilterWithBuffer { public: - AverageFilter(uint8_t requested_size) : Filter(requested_size) {}; + // constructor + AverageFilter() : FilterWithBuffer(), _num_samples(0) {}; // apply - Add a new raw value to the filter, retrieve the filtered result virtual T apply(T sample); @@ -32,51 +34,68 @@ class AverageFilter : public Filter virtual void reset(); private: - uint8_t _num_samples; + uint8_t _num_samples; // the number of samples in the filter, maxes out at size of the filter }; -// Typedef for convenience (1st argument is the data size, 2nd argument is a datasize that's bigger to handle overflows) -typedef AverageFilter AverageFilterInt8; -typedef AverageFilter AverageFilterUInt8; -typedef AverageFilter AverageFilterInt16; -typedef AverageFilter AverageFilterUInt16; -typedef AverageFilter AverageFilterInt32; -typedef AverageFilter AverageFilterUInt32; +// Typedef for convenience (1st argument is the data type, 2nd is a larger datatype to handle overflows, 3rd is buffer size) +typedef AverageFilter AverageFilterInt8_Size2; +typedef AverageFilter AverageFilterInt8_Size3; +typedef AverageFilter AverageFilterInt8_Size4; +typedef AverageFilter AverageFilterInt8_Size5; +typedef AverageFilter AverageFilterUInt8_Size2; +typedef AverageFilter AverageFilterUInt8_Size3; +typedef AverageFilter AverageFilterUInt8_Size4; +typedef AverageFilter AverageFilterUInt8_Size5; + +typedef AverageFilter AverageFilterInt16_Size2; +typedef AverageFilter AverageFilterInt16_Size3; +typedef AverageFilter AverageFilterInt16_Size4; +typedef AverageFilter AverageFilterInt16_Size5; +typedef AverageFilter AverageFilterUInt16_Size2; +typedef AverageFilter AverageFilterUInt16_Size3; +typedef AverageFilter AverageFilterUInt16_Size4; +typedef AverageFilter AverageFilterUInt16_Size5; + +typedef AverageFilter AverageFilterInt32_Size2; +typedef AverageFilter AverageFilterInt32_Size3; +typedef AverageFilter AverageFilterInt32_Size4; +typedef AverageFilter AverageFilterInt32_Size5; +typedef AverageFilter AverageFilterUInt32_Size2; +typedef AverageFilter AverageFilterUInt32_Size3; +typedef AverageFilter AverageFilterUInt32_Size4; +typedef AverageFilter AverageFilterUInt32_Size5; // Public Methods ////////////////////////////////////////////////////////////// -template -T AverageFilter::apply(T sample) +template +T AverageFilter::apply(T sample) { U result = 0; // call parent's apply function to get the sample into the array - Filter::apply(sample); + FilterWithBuffer::apply(sample); // increment the number of samples so far _num_samples++; - if( _num_samples > Filter::filter_size || _num_samples == 0 ) - _num_samples = Filter::filter_size; + if( _num_samples > FILTER_SIZE || _num_samples == 0 ) + _num_samples = FILTER_SIZE; // get sum of all values - there is a risk of overflow here that we ignore - for(int8_t i=0; i::filter_size; i++) - result += Filter::samples[i]; + for(uint8_t i=0; i::samples[i]; return (T)(result / _num_samples); } // reset - clear all samples -template -void AverageFilter::reset() +template +void AverageFilter::reset() { // call parent's apply function to get the sample into the array - Filter::reset(); + FilterWithBuffer::reset(); // clear our variable _num_samples = 0; } -#endif - - - +#endif \ No newline at end of file diff --git a/libraries/Filter/Filter.h b/libraries/Filter/Filter.h index 77ee3c9834..dfa45dea29 100644 --- a/libraries/Filter/Filter.h +++ b/libraries/Filter/Filter.h @@ -7,9 +7,8 @@ // /// @file Filter.h -/// @brief A base class for apply various filters to values +/// @brief A base class from which various filters classes should inherit /// -/// DO NOT CREATE AND DESTROY INSTANCES OF THIS CLASS BECAUSE THE ALLOC/MALLOC WILL LEAD TO MEMORY FRAGMENTATION #ifndef Filter_h #define Filter_h @@ -17,79 +16,28 @@ #include #include -#define FILTER_MAX_SAMPLES 10 // maximum size of the sample buffer (normally older values will be overwritten as new appear) - template class Filter { public: - Filter(uint8_t requested_size); - ~Filter(); + // constructor + Filter() {}; // apply - Add a new raw value to the filter, retrieve the filtered result - virtual T apply(T sample); + virtual T apply(T sample) { return sample; }; // reset - clear the filter - virtual void reset(); - - uint8_t filter_size; // max number of items in filter - T* samples; // buffer of samples - uint8_t sample_index; // pointer to the next empty slot in the buffer + virtual void reset() {}; - private: }; // Typedef for convenience +typedef Filter FilterInt8; +typedef Filter FilterUInt8; typedef Filter FilterInt16; - -// Constructor -template -Filter::Filter(uint8_t requested_size) : - filter_size(requested_size), sample_index(0) -{ - // check filter size - if( Filter::filter_size > FILTER_MAX_SAMPLES ) - Filter::filter_size = FILTER_MAX_SAMPLES; - - // create array - samples = (T *)malloc(Filter::filter_size * sizeof(T)); - - // clear array - reset(); -} - -// Destructor - THIS SHOULD NEVER BE CALLED OR IT COULD LEAD TO MEMORY FRAGMENTATION -template -Filter::~Filter() -{ - // free up the samples array - free(samples); -} - -// reset - clear all samples -template -void Filter::reset() -{ - for( int8_t i=0; i -T Filter::apply(T sample){ - - // add sample to array - samples[sample_index++] = sample; - - // wrap index if necessary - if( sample_index >= filter_size ) - sample_index = 0; - - // base class doesn't know what filtering to do so we just return the raw sample - return sample; -} +typedef Filter FilterUInt16; +typedef Filter FilterInt32; +typedef Filter FilterUInt32; #endif diff --git a/libraries/Filter/FilterWithBuffer.h b/libraries/Filter/FilterWithBuffer.h new file mode 100644 index 0000000000..e86ff6b81f --- /dev/null +++ b/libraries/Filter/FilterWithBuffer.h @@ -0,0 +1,102 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- +// +// This is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 2.1 of the License, or (at +// your option) any later version. +// + +/// @file FilterWithBuffer.h +/// @brief A filter with a buffer. +/// This is implemented separately to the base Filter class to get around +/// restrictions caused by the use of templates which makes different sizes essentially +/// completely different classes + +#ifndef FilterWithBuffer_h +#define FilterWithBuffer_h + +#include +#include +#include + +template +class FilterWithBuffer : public Filter +{ + public: + // constructor + FilterWithBuffer(); + + // apply - Add a new raw value to the filter, retrieve the filtered result + virtual T apply(T sample); + + // reset - clear the filter + virtual void reset(); + + // get filter size + virtual uint8_t get_filter_size() { return FILTER_SIZE; }; + + T samples[FILTER_SIZE]; // buffer of samples + uint8_t sample_index; // pointer to the next empty slot in the buffer + + private: +}; + +// Typedef for convenience +typedef FilterWithBuffer FilterWithBufferInt16_Size2; +typedef FilterWithBuffer FilterWithBufferInt16_Size3; +typedef FilterWithBuffer FilterWithBufferInt16_Size4; +typedef FilterWithBuffer FilterWithBufferInt16_Size5; +typedef FilterWithBuffer FilterWithBufferInt16_Size6; +typedef FilterWithBuffer FilterWithBufferInt16_Size7; +typedef FilterWithBuffer FilterWithBufferUInt16_Size2; +typedef FilterWithBuffer FilterWithBufferUInt16_Size3; +typedef FilterWithBuffer FilterWithBufferUInt16_Size4; +typedef FilterWithBuffer FilterWithBufferUInt16_Size5; +typedef FilterWithBuffer FilterWithBufferUInt16_Size6; +typedef FilterWithBuffer FilterWithBufferUInt16_Size7; + +// Constructor +template +FilterWithBuffer::FilterWithBuffer() : + Filter(), + sample_index(0) +{ + // clear sample buffer + reset(); +} + +// reset - clear all samples from the buffer +template +void FilterWithBuffer::reset() +{ + // call base class reset + Filter::reset(); + + // clear samples buffer + for( int8_t i=0; i +T FilterWithBuffer::apply(T sample) +{ + // add sample to array + samples[sample_index++] = sample; + + // wrap index if necessary + if( sample_index >= FILTER_SIZE ) + sample_index = 0; + + // base class doesn't know what filtering to do so we just return the raw sample + return sample; +} + +#endif + + + diff --git a/libraries/Filter/ModeFilter.h b/libraries/Filter/ModeFilter.h index b9a76b293a..bdb56a4246 100644 --- a/libraries/Filter/ModeFilter.h +++ b/libraries/Filter/ModeFilter.h @@ -17,57 +17,77 @@ #include #include +#include -template -class ModeFilter : public Filter +template +class ModeFilter : public FilterWithBuffer { public: - ModeFilter(uint8_t requested_size, uint8_t return_element); + ModeFilter(uint8_t return_element); // apply - Add a new raw value to the filter, retrieve the filtered result virtual T apply(T sample); private: - // private methods + // private methods uint8_t _return_element; - void isort(T sample, bool drop_high_sample); + void isort(T sample, bool drop_high_sample); bool drop_high_sample; // switch to determine whether to drop the highest or lowest sample when new value arrives }; // Typedef for convenience -typedef ModeFilter ModeFilterInt16; +typedef ModeFilter ModeFilterInt8_Size3; +typedef ModeFilter ModeFilterInt8_Size4; +typedef ModeFilter ModeFilterInt8_Size5; +typedef ModeFilter ModeFilterInt8_Size6; +typedef ModeFilter ModeFilterInt8_Size7; +typedef ModeFilter ModeFilterUInt8_Size3; +typedef ModeFilter ModeFilterUInt8_Size4; +typedef ModeFilter ModeFilterUInt8_Size5; +typedef ModeFilter ModeFilterUInt8_Size6; +typedef ModeFilter ModeFilterUInt8_Size7; +typedef ModeFilter ModeFilterInt16_Size3; +typedef ModeFilter ModeFilterInt16_Size4; +typedef ModeFilter ModeFilterInt16_Size5; +typedef ModeFilter ModeFilterInt16_Size6; +typedef ModeFilter ModeFilterInt16_Size7; +typedef ModeFilter ModeFilterUInt16_Size3; +typedef ModeFilter ModeFilterUInt16_Size4; +typedef ModeFilter ModeFilterUInt16_Size5; +typedef ModeFilter ModeFilterUInt16_Size6; +typedef ModeFilter ModeFilterUInt16_Size7; // Constructor ////////////////////////////////////////////////////////////// -template -ModeFilter::ModeFilter(uint8_t requested_size, uint8_t return_element) : - Filter(requested_size), +template +ModeFilter::ModeFilter(uint8_t return_element) : + FilterWithBuffer(), _return_element(return_element), drop_high_sample(true) { // ensure we have a valid return_nth_element value. if not, revert to median - if( _return_element >= Filter::filter_size ) - _return_element = Filter::filter_size / 2; + if( _return_element >= FILTER_SIZE ) + _return_element = FILTER_SIZE / 2; }; // Public Methods ////////////////////////////////////////////////////////////// -template -T ModeFilter::apply(T sample) +template +T ModeFilter::apply(T sample) { // insert the new items into the samples buffer isort(sample, drop_high_sample); - + // next time drop from the other end of the sample buffer drop_high_sample = !drop_high_sample; // return results - if( Filter::sample_index < Filter::filter_size ) { + if( FilterWithBuffer::sample_index < FILTER_SIZE ) { // middle sample if buffer is not yet full - return Filter::samples[(Filter::sample_index / 2)]; + return FilterWithBuffer::samples[(FilterWithBuffer::sample_index / 2)]; }else{ // return element specified by user in constructor - return Filter::samples[_return_element]; + return FilterWithBuffer::samples[_return_element]; } } @@ -75,49 +95,46 @@ T ModeFilter::apply(T sample) // insertion sort - takes a new sample and pushes it into the sample array // drops either the highest or lowest sample depending on the 'drop_high_sample' parameter // -template -void ModeFilter::isort(T new_sample, bool drop_high) +template +void ModeFilter::isort(T new_sample, bool drop_high) { int8_t i; // if the buffer isn't full simply increase the #items in the buffer (i.e. sample_index) // the rest is the same as dropping the high sample - if( Filter::sample_index < Filter::filter_size ) { - Filter::sample_index++; + if( FilterWithBuffer::sample_index < FILTER_SIZE ) { + FilterWithBuffer::sample_index++; drop_high = true; } if( drop_high ) { // drop highest sample from the buffer to make room for our new sample // start from top. Note: sample_index always points to the next open space so we start from sample_index-1 - i = Filter::sample_index-1; + i = FilterWithBuffer::sample_index-1; // if the next element is higher than our new sample, push it up one position - while( Filter::samples[i-1] > new_sample && i > 0 ) { - Filter::samples[i] = Filter::samples[i-1]; + while( FilterWithBuffer::samples[i-1] > new_sample && i > 0 ) { + FilterWithBuffer::samples[i] = FilterWithBuffer::samples[i-1]; i--; } // add our new sample to the buffer - Filter::samples[i] = new_sample; - + FilterWithBuffer::samples[i] = new_sample; + }else{ // drop lowest sample from the buffer to make room for our new sample // start from the bottom i = 0; // if the element is lower than our new sample, push it down one position - while( Filter::samples[i+1] < new_sample && i < Filter::sample_index-1 ) { - Filter::samples[i] = Filter::samples[i+1]; + while( FilterWithBuffer::samples[i+1] < new_sample && i < FilterWithBuffer::sample_index-1 ) { + FilterWithBuffer::samples[i] = FilterWithBuffer::samples[i+1]; i++; } // add our new sample to the buffer - Filter::samples[i] = new_sample; + FilterWithBuffer::samples[i] = new_sample; } } -#endif - - - +#endif \ No newline at end of file diff --git a/libraries/Filter/SumFilter.h b/libraries/Filter/SumFilter.h deleted file mode 100644 index cbbbcb6d89..0000000000 --- a/libraries/Filter/SumFilter.h +++ /dev/null @@ -1,54 +0,0 @@ -// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- -// -// This is free software; you can redistribute it and/or modify it under -// the terms of the GNU Lesser General Public License as published by the -// Free Software Foundation; either version 2.1 of the License, or (at -// your option) any later version. -// - -/// @file SumFilter.h -/// @brief A class to apply an average filter (but we save some calc time by not averaging the values but instead save one division by just adding the values up -/// -/// DO NOT CREATE AND DESTROY INSTANCES OF THIS CLASS BECAUSE THE ALLOC/MALLOC WILL LEAD TO MEMORY FRAGMENTATION - -#ifndef SumFilter_h -#define SumFilter_h - -#include -#include - -template -class SumFilter : public Filter -{ - public: - SumFilter(uint8_t requested_size) : Filter(requested_size) {}; - - // apply - Add a new raw value to the filter, retrieve the filtered result - virtual T apply(T sample); - - private: -}; - -// Typedef for convenience -typedef SumFilter SumFilterInt16; - -// Public Methods ////////////////////////////////////////////////////////////// -template -T SumFilter::apply(T sample){ - - T result = 0; - - // call parent's apply function to get the sample into the array - Filter::apply(sample); - - // get sum of all values - there is a risk of overflow here that we ignore - for(int8_t i=0; i::filter_size; i++) - result += Filter::samples[i]; - - return result; -} - -#endif - - - diff --git a/libraries/Filter/keywords.txt b/libraries/Filter/keywords.txt index 4061f263dd..862c2151f4 100644 --- a/libraries/Filter/keywords.txt +++ b/libraries/Filter/keywords.txt @@ -1,8 +1,9 @@ -Filter KEYWORD1 -ModeFilter KEYWORD1 -SumFilter KEYWORD1 -apply KEYWORD2 -reset KEYWORD2 -max_samples KEYWORD2 -samples KEYWORD2 -sample_index KEYWORD2 +Filter KEYWORD1 +FilterWithBuffer KEYWORD1 +ModeFilter KEYWORD1 +AverageFilter KEYWORD1 +apply KEYWORD2 +reset KEYWORD2 +get_filter_size KEYWORD2 +samples KEYWORD2 +sample_index KEYWORD2 From 033347f8eecf9446da0ca83a766c47fae2a90ce1 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 28 Feb 2012 21:01:35 +0900 Subject: [PATCH 083/122] Filter - updated example sketch to use modified library --- libraries/Filter/examples/Filter/Filter.pde | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/libraries/Filter/examples/Filter/Filter.pde b/libraries/Filter/examples/Filter/Filter.pde index 88014523d4..295389f377 100644 --- a/libraries/Filter/examples/Filter/Filter.pde +++ b/libraries/Filter/examples/Filter/Filter.pde @@ -7,27 +7,25 @@ #include #include // ArduPilot Mega Vector/Matrix math Library #include // Filter library -#include // ModeFilter library (inherits from Filter class) -#include +#include // ModeFilter class (inherits from Filter class) +#include // AverageFilter class (inherits from Filter class) //////////////////////////////////////////////////////////////////////////////// // Serial ports //////////////////////////////////////////////////////////////////////////////// FastSerialPort0(Serial); // FTDI/console -//typedef ModeFilter IntModeFilter; -//typedef SumFilter IntSumFilter; - int16_t rangevalue[] = {31000, 31000, 50, 55, 60, 55, 10, 0, 31000}; // create a global instance of the class instead of local to avoid memory fragmentation -ModeFilterInt16 mfilter(5,2); // buffer of 5 values, result will be from buffer element 2 (ie. the 3rd element which is the middle) -//SumFilterInt16 mfilter(5); +ModeFilterInt16_Size5 mfilter(2); // buffer of 5 values, result will be from buffer element 2 (ie. the 3rd element which is the middle) +//AverageFilterInt16_Size5 mfilter; // buffer of 5 values. result will be average of these 5 -//Function to print contents of a filter -void printFilter(Filter& filter) +// Function to print contents of a filter +// we need to ues FilterWithBuffer class because we want to access the individual elements +void printFilter(FilterWithBufferInt16_Size5& filter) { - for(int8_t i=0; i < filter.filter_size; i++) + for(uint8_t i=0; i < filter.get_filter_size(); i++) { Serial.printf("%d ",(int)filter.samples[i]); } @@ -49,7 +47,7 @@ void setup() //Main loop where the action takes place void loop() { - int8_t i = 0; + uint8_t i = 0; int16_t filtered_value; while( i < 9 ) { From 2b6a10d18b156de74729dfb4a77bd323264c248e Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 28 Feb 2012 21:02:10 +0900 Subject: [PATCH 084/122] AP_RangeFinder - changed example sketch to work with new Filter library --- .../examples/AP_RangeFinder_test/AP_RangeFinder_test.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde b/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde index 2d5864baef..d1a47f3804 100644 --- a/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde +++ b/libraries/AP_RangeFinder/examples/AP_RangeFinder_test/AP_RangeFinder_test.pde @@ -32,7 +32,7 @@ FastSerialPort0(Serial); // FTDI/console // declare global instances Arduino_Mega_ISR_Registry isr_registry; -ModeFilterInt16 mode_filter(5,2); +ModeFilterInt16_Size5 mode_filter(2); #ifdef USE_ADC_ADS7844 AP_TimerProcess adc_scheduler; AP_ADC_ADS7844 adc; From 17d94b61ed134914d4ced4ebe4acb90de7244009 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 28 Feb 2012 21:02:44 +0900 Subject: [PATCH 085/122] ArduCopter - modified to work with new Filter library --- ArduCopter/ArduCopter.pde | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index 10337c505c..f757600dde 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -80,6 +80,7 @@ http://code.google.com/p/ardupilot-mega/downloads/list #include // Optical Flow library #include // Filter library #include // Mode Filter from Filter library +#include // Mode Filter from Filter library #include // APM relay #include // MAVLink GCS definitions #include @@ -269,7 +270,7 @@ GCS_MAVLINK gcs3; // SONAR selection //////////////////////////////////////////////////////////////////////////////// // -ModeFilterInt16 sonar_mode_filter(5,2); +ModeFilterInt16_Size5 sonar_mode_filter(2); #if CONFIG_SONAR == ENABLED #if CONFIG_SONAR_SOURCE == SONAR_SOURCE_ADC AP_AnalogSource_ADC sonar_analog_source( &adc, CONFIG_SONAR_SOURCE_ADC_CHANNEL, 0.25); From 02cf07bb6bf593ed12655bba98799e6c211f939b Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 28 Feb 2012 21:03:04 +0900 Subject: [PATCH 086/122] ArduPlane - updated to use new filter library --- ArduPlane/ArduPlane.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArduPlane/ArduPlane.pde b/ArduPlane/ArduPlane.pde index d93670297f..4643de01b1 100644 --- a/ArduPlane/ArduPlane.pde +++ b/ArduPlane/ArduPlane.pde @@ -225,7 +225,7 @@ GCS_MAVLINK gcs3; // PITOT selection //////////////////////////////////////////////////////////////////////////////// // -ModeFilterInt16 sonar_mode_filter(5,2); +ModeFilterInt16_Size5 sonar_mode_filter(2); #if CONFIG_PITOT_SOURCE == PITOT_SOURCE_ADC AP_AnalogSource_ADC pitot_analog_source( &adc, From 4a0989f95d4ba59a3006909f87eb0950c4fda74f Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 28 Feb 2012 21:26:37 +0900 Subject: [PATCH 087/122] ArduCopter - Attitude.pde - updated get_rate_roll and get_rate_pitch to use new average filter. modified all int to int16_t in Attitude.pde --- ArduCopter/Attitude.pde | 113 ++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 61 deletions(-) diff --git a/ArduCopter/Attitude.pde b/ArduCopter/Attitude.pde index a0ba5dd413..7edfe0c5c3 100644 --- a/ArduCopter/Attitude.pde +++ b/ArduCopter/Attitude.pde @@ -1,6 +1,6 @@ /// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- -static int +static int16_t get_stabilize_roll(int32_t target_angle) { // angle error @@ -29,7 +29,7 @@ get_stabilize_roll(int32_t target_angle) #endif } -static int +static int16_t get_stabilize_pitch(int32_t target_angle) { // angle error @@ -56,7 +56,7 @@ get_stabilize_pitch(int32_t target_angle) #endif } -static int +static int16_t get_stabilize_yaw(int32_t target_angle) { // angle error @@ -85,7 +85,7 @@ get_stabilize_yaw(int32_t target_angle) #endif } -static int +static int16_t get_acro_roll(int32_t target_rate) { target_rate = target_rate * g.acro_p; @@ -93,7 +93,7 @@ get_acro_roll(int32_t target_rate) return get_rate_roll(target_rate); } -static int +static int16_t get_acro_pitch(int32_t target_rate) { target_rate = target_rate * g.acro_p; @@ -101,7 +101,7 @@ get_acro_pitch(int32_t target_rate) return get_rate_pitch(target_rate); } -static int +static int16_t get_acro_yaw(int32_t target_rate) { target_rate = g.pi_stabilize_yaw.get_p(target_rate); @@ -109,78 +109,69 @@ get_acro_yaw(int32_t target_rate) return get_rate_yaw(target_rate); } -static int +static int16_t get_rate_roll(int32_t target_rate) { - int16_t rate_d1 = 0; - static int16_t rate_d2 = 0; - static int16_t rate_d3 = 0; - static int32_t last_rate = 0; + static AverageFilterInt32_Size3 rate_d_filter; // filtered acceleration + static int32_t last_rate = 0; // previous iterations rate + int32_t current_rate; // this iteration's rate + int32_t rate_d; // roll's acceleration + int32_t output; // output from pid controller + int32_t rate_d_dampener; // value to dampen output based on acceleration - int32_t current_rate = (omega.x * DEGX100); + // get current rate + current_rate = (omega.x * DEGX100); - // History of last 3 dir - rate_d3 = rate_d2; - rate_d2 = rate_d1; - rate_d1 = current_rate - last_rate; + // calculate and filter the acceleration + rate_d = rate_d_filter.apply(current_rate - last_rate); + + // store rate for next iteration last_rate = current_rate; - // rate control - target_rate = target_rate - current_rate; - target_rate = g.pid_rate_roll.get_pid(target_rate, G_Dt); + // call pid controller + output = g.pid_rate_roll.get_pid(target_rate - current_rate, G_Dt); - // Dampening - //int16_t d_temp = (float)(current_rate - last_rate) * g.stabilize_d; - //target_rate -= constrain(d_temp, -500, 500); - //last_rate = current_rate; + // Dampening output with D term + rate_d_dampener = rate_d * g.stabilize_d; + rate_d_dampener = constrain(rate_d_dampener, -400, 400); + output -= rate_d_dampener; - // D term - // I had tried this before with little result. Recently, someone mentioned to me that - // MultiWii uses a filter of the last three to get around noise and get a stronger signal. - // Works well! Thanks! - int16_t d_temp = (rate_d1 + rate_d2 + rate_d3) * g.stabilize_d; - d_temp = constrain(d_temp, -400, 400); - target_rate -= d_temp; - - // output control: - return constrain(target_rate, -2500, 2500); + // output control + return constrain(output, -2500, 2500); } -static int +static int16_t get_rate_pitch(int32_t target_rate) { - int16_t rate_d1 = 0; - static int16_t rate_d2 = 0; - static int16_t rate_d3 = 0; - static int32_t last_rate = 0; + static AverageFilterInt32_Size3 rate_d_filter; // filtered acceleration + static int32_t last_rate = 0; // previous iterations rate + int32_t current_rate; // this iteration's rate + int32_t rate_d; // roll's acceleration + int32_t output; // output from pid controller + int32_t rate_d_dampener; // value to dampen output based on acceleration - int32_t current_rate = (omega.y * DEGX100); + // get current rate + current_rate = (omega.y * DEGX100); - // History of last 3 dir - rate_d3 = rate_d2; - rate_d2 = rate_d1; - rate_d1 = current_rate - last_rate; + // calculate and filter the acceleration + rate_d = rate_d_filter.apply(current_rate - last_rate); + + // store rate for next iteration last_rate = current_rate; - // rate control - target_rate = target_rate - current_rate; - target_rate = g.pid_rate_pitch.get_pid(target_rate, G_Dt); + // call pid controller + output = g.pid_rate_pitch.get_pid(target_rate - current_rate, G_Dt); - // Dampening - //int16_t d_temp = (float)(current_rate - last_rate) * g.stabilize_d; - //target_rate -= constrain(d_temp, -500, 500); - //last_rate = current_rate; + // Dampening output with D term + rate_d_dampener = rate_d * g.stabilize_d; + rate_d_dampener = constrain(rate_d_dampener, -400, 400); + output -= rate_d_dampener; - // D term - int16_t d_temp = (rate_d1 + rate_d2 + rate_d3) * g.stabilize_d; - d_temp = constrain(d_temp, -400, 400); - target_rate -= d_temp; - - // output control: - return constrain(target_rate, -2500, 2500); + // output control + return constrain(output, -2500, 2500); } -static int +static int16_t get_rate_yaw(int32_t target_rate) { // rate control @@ -346,7 +337,7 @@ get_nav_yaw_offset(int yaw_input, int reset) } } -static int get_angle_boost(int value) +static int16_t get_angle_boost(int16_t value) { float temp = cos_pitch_x * cos_roll_x; temp = 1.0 - constrain(temp, .5, 1.0); @@ -496,7 +487,7 @@ get_of_roll(int32_t control_roll) { #ifdef OPTFLOW_ENABLED static float tot_x_cm = 0; // total distance from target - static unsigned long last_of_roll_update = 0; + static uint32_t last_of_roll_update = 0; int32_t new_roll = 0; // check if new optflow data available @@ -530,7 +521,7 @@ get_of_pitch(int32_t control_pitch) { #ifdef OPTFLOW_ENABLED static float tot_y_cm = 0; // total distance from target - static unsigned long last_of_pitch_update = 0; + static uint32_t last_of_pitch_update = 0; int32_t new_pitch = 0; // check if new optflow data available From 744e5b8c602d4cc44d478892a2ddbdb5a4118040 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 28 Feb 2012 22:56:26 +0900 Subject: [PATCH 088/122] ArduCopter - made rate controller filters globals to fix compiler error on Arduino 022 (Arduino 1.0 was fine) --- ArduCopter/ArduCopter.pde | 3 +++ ArduCopter/Attitude.pde | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index f757600dde..87dd76004e 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -500,6 +500,9 @@ static int32_t initial_simple_bearing; // Used to control Axis lock int32_t roll_axis; int32_t pitch_axis; +// Filters +AverageFilterInt32_Size3 roll_rate_d_filter; // filtered acceleration +AverageFilterInt32_Size3 pitch_rate_d_filter; // filtered pitch acceleration //////////////////////////////////////////////////////////////////////////////// // Circle Mode / Loiter control diff --git a/ArduCopter/Attitude.pde b/ArduCopter/Attitude.pde index 7edfe0c5c3..9d973220f0 100644 --- a/ArduCopter/Attitude.pde +++ b/ArduCopter/Attitude.pde @@ -112,7 +112,6 @@ get_acro_yaw(int32_t target_rate) static int16_t get_rate_roll(int32_t target_rate) { - static AverageFilterInt32_Size3 rate_d_filter; // filtered acceleration static int32_t last_rate = 0; // previous iterations rate int32_t current_rate; // this iteration's rate int32_t rate_d; // roll's acceleration @@ -123,7 +122,7 @@ get_rate_roll(int32_t target_rate) current_rate = (omega.x * DEGX100); // calculate and filter the acceleration - rate_d = rate_d_filter.apply(current_rate - last_rate); + rate_d = roll_rate_d_filter.apply(current_rate - last_rate); // store rate for next iteration last_rate = current_rate; @@ -143,7 +142,6 @@ get_rate_roll(int32_t target_rate) static int16_t get_rate_pitch(int32_t target_rate) { - static AverageFilterInt32_Size3 rate_d_filter; // filtered acceleration static int32_t last_rate = 0; // previous iterations rate int32_t current_rate; // this iteration's rate int32_t rate_d; // roll's acceleration @@ -154,7 +152,7 @@ get_rate_pitch(int32_t target_rate) current_rate = (omega.y * DEGX100); // calculate and filter the acceleration - rate_d = rate_d_filter.apply(current_rate - last_rate); + rate_d = pitch_rate_d_filter.apply(current_rate - last_rate); // store rate for next iteration last_rate = current_rate; From 76c3cd88f04c69c63bd90ebfb7546459d92af4f8 Mon Sep 17 00:00:00 2001 From: Robert Lefebvre Date: Tue, 28 Feb 2012 10:49:19 -0500 Subject: [PATCH 089/122] Added heli_collectiveFactor array Signed-off-by: Robert Lefebvre --- ArduCopter/ArduCopter.pde | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index 87dd76004e..6cd32e4a4d 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -371,10 +371,10 @@ static uint32_t rc_override_fs_timer = 0; // Heli //////////////////////////////////////////////////////////////////////////////// #if FRAME_CONFIG == HELI_FRAME -static float heli_rollFactor[3], heli_pitchFactor[3]; // only required for 3 swashplate servos -static int16_t heli_servo_min[3], heli_servo_max[3]; // same here. for yaw servo we use heli_servo4_min/max parameter directly -static int32_t heli_servo_out[4]; // used for servo averaging for analog servos -static int16_t heli_servo_out_count; // use for servo averaging +static float heli_rollFactor[3], heli_pitchFactor[3], heli_collectiveFactor[3]; // only required for 3 swashplate servos +static int16_t heli_servo_min[3], heli_servo_max[3]; // same here. for yaw servo we use heli_servo4_min/max parameter directly +static int32_t heli_servo_out[4]; // used for servo averaging for analog servos +static int16_t heli_servo_out_count; // use for servo averaging #endif //////////////////////////////////////////////////////////////////////////////// From ff0fc264840f2ca9331fdd325128b888fb3dbcfb Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Tue, 28 Feb 2012 16:14:31 -0800 Subject: [PATCH 090/122] Cleanup: rename files with spaces in their names, replace with underscores * Skipped /Tools/ArdupilotMegaPlanner/Resources/new... and /archive/Configurator/Source/Utilities/TDMS/G... because I don't want to mess with that. --- ArduCopter/{command description.txt => command_description.txt} | 0 ArduPlane/{command description.txt => command_description.txt} | 0 .../Drivers/{Arduino MEGA 2560.inf => Arduino_MEGA_2560.inf} | 0 .../ArduTracker/{Terminal commands.txt => Terminal_commands.txt} | 0 .../{command description.txt => command_description.txt} | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename ArduCopter/{command description.txt => command_description.txt} (100%) rename ArduPlane/{command description.txt => command_description.txt} (100%) rename Tools/ArduPPM/ATMega32U2/Drivers/{Arduino MEGA 2560.inf => Arduino_MEGA_2560.inf} (100%) rename Tools/ArduTracker/{Terminal commands.txt => Terminal_commands.txt} (100%) rename Tools/ArduTracker/{command description.txt => command_description.txt} (100%) diff --git a/ArduCopter/command description.txt b/ArduCopter/command_description.txt similarity index 100% rename from ArduCopter/command description.txt rename to ArduCopter/command_description.txt diff --git a/ArduPlane/command description.txt b/ArduPlane/command_description.txt similarity index 100% rename from ArduPlane/command description.txt rename to ArduPlane/command_description.txt diff --git a/Tools/ArduPPM/ATMega32U2/Drivers/Arduino MEGA 2560.inf b/Tools/ArduPPM/ATMega32U2/Drivers/Arduino_MEGA_2560.inf similarity index 100% rename from Tools/ArduPPM/ATMega32U2/Drivers/Arduino MEGA 2560.inf rename to Tools/ArduPPM/ATMega32U2/Drivers/Arduino_MEGA_2560.inf diff --git a/Tools/ArduTracker/Terminal commands.txt b/Tools/ArduTracker/Terminal_commands.txt similarity index 100% rename from Tools/ArduTracker/Terminal commands.txt rename to Tools/ArduTracker/Terminal_commands.txt diff --git a/Tools/ArduTracker/command description.txt b/Tools/ArduTracker/command_description.txt similarity index 100% rename from Tools/ArduTracker/command description.txt rename to Tools/ArduTracker/command_description.txt From eac8b663855c1d6d92d04ed20c49cc65427f68c6 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Tue, 28 Feb 2012 15:54:40 -0800 Subject: [PATCH 091/122] AP_Param: Make nested group recursion disableable by macro * Eliminates recursive calls inside AP_Param. This is important to Pat @ Galois, but not the project in general. Recursion depth on these functions is bounded structurally using existing nested group constructors (can't create loops in finite space) and checked at init time --- libraries/AP_Common/AP_Param.cpp | 9 ++++++++- libraries/AP_Common/AP_Param.h | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index 363e9d784a..d94d5a7f60 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -118,6 +118,7 @@ bool AP_Param::check_group_info(const struct AP_Param::GroupInfo *group_info, for (uint8_t i=0; (type=PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; i++) { +#ifdef AP_NESTED_GROUPS_ENABLED if (type == AP_PARAM_GROUP) { // a nested group const struct GroupInfo *ginfo = (const struct GroupInfo *)PGM_POINTER(&group_info[i].group_info); @@ -131,6 +132,7 @@ bool AP_Param::check_group_info(const struct AP_Param::GroupInfo *group_info, } continue; } +#endif // AP_NESTED_GROUPS_ENABLED uint8_t idx = PGM_UINT8(&group_info[i].idx); if (idx >= (1<<_group_level_shift)) { // passed limit on table size @@ -234,6 +236,7 @@ const struct AP_Param::Info *AP_Param::find_by_header_group(struct Param_header for (uint8_t i=0; (type=PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; i++) { +#ifdef AP_NESTED_GROUPS_ENABLED if (type == AP_PARAM_GROUP) { // a nested group if (group_shift + _group_level_shift >= _group_bits) { @@ -250,6 +253,7 @@ const struct AP_Param::Info *AP_Param::find_by_header_group(struct Param_header } continue; } +#endif // AP_NESTED_GROUPS_ENABLED if (GROUP_ID(group_info, group_base, i, group_shift) == phdr.group_element) { // found a group element *ptr = (void*)(PGM_POINTER(&_var_info[vindex].ptr) + PGM_UINT16(&group_info[i].offset)); @@ -298,6 +302,7 @@ const struct AP_Param::Info *AP_Param::find_var_info_group(const struct GroupInf (type=PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; i++) { uintptr_t ofs = PGM_POINTER(&group_info[i].offset); +#ifdef AP_NESTED_GROUPS_ENABLED if (type == AP_PARAM_GROUP) { const struct GroupInfo *ginfo = (const struct GroupInfo *)PGM_POINTER(&group_info[i].group_info); // a nested group @@ -316,7 +321,9 @@ const struct AP_Param::Info *AP_Param::find_var_info_group(const struct GroupInf if (info != NULL) { return info; } - } else if ((uintptr_t)this == base + ofs) { + } else // Forgive the poor formatting - if continues below. +#endif // AP_NESTED_GROUPS_ENABLED + if ((uintptr_t)this == base + ofs) { *group_element = GROUP_ID(group_info, group_base, i, group_shift); *group_ret = &group_info[i]; *idx = 0; diff --git a/libraries/AP_Common/AP_Param.h b/libraries/AP_Common/AP_Param.h index 3bc2bd4329..3fa0ca1196 100644 --- a/libraries/AP_Common/AP_Param.h +++ b/libraries/AP_Common/AP_Param.h @@ -20,6 +20,7 @@ #include #define AP_MAX_NAME_SIZE 15 +#define AP_NESTED_GROUPS_ENABLED // a varient of offsetof() to work around C++ restrictions. // this can only be used when the offset of a variable in a object @@ -33,7 +34,9 @@ #define AP_GROUPINFO(name, idx, class, element) { AP_CLASSTYPE(class, element), idx, name, AP_VAROFFSET(class, element) } // declare a nested group entry in a group var_info +#ifdef AP_NESTED_GROUPS_ENABLED #define AP_NESTEDGROUPINFO(class, idx) { AP_PARAM_GROUP, idx, "", 0, class::var_info } +#endif #define AP_GROUPEND { AP_PARAM_NONE, 0xFF, "" } From 16ed16f40315d259903785e95f36e275c27bf15e Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Tue, 28 Feb 2012 16:26:39 -0800 Subject: [PATCH 092/122] Cleanup: rm ArduCopter/GCS_Mavlink\ copy.txt * Not needed, but we can always checkout an old version if it is. Hi Pat, This may have been my WIP for the Mavlink 1.0 conversion. I tried to give Tridge a head start on it. I've made small updates to it in parallel to the current Mavlink. You can delete it as he would have used it by now if he felt it was helpful. Jason On Feb 28, 2012, at 4:08 PM, Pat Hickey wrote: It looks like this file was checked in by accident, possibly, but you've made a few small changes to it since creating it. Is it important? Should we get rid of it? Git log of file below. Thanks Pat ... --- ArduCopter/GCS_Mavlink copy.txt | 2090 ------------------------------- 1 file changed, 2090 deletions(-) delete mode 100644 ArduCopter/GCS_Mavlink copy.txt diff --git a/ArduCopter/GCS_Mavlink copy.txt b/ArduCopter/GCS_Mavlink copy.txt deleted file mode 100644 index 0199b455be..0000000000 --- a/ArduCopter/GCS_Mavlink copy.txt +++ /dev/null @@ -1,2090 +0,0 @@ -// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- - -#include "Mavlink_compat.h" - -// use this to prevent recursion during sensor init -static bool in_mavlink_delay; - -// this costs us 51 bytes, but means that low priority -// messages don't block the CPU -static mavlink_statustext_t pending_status; - -// true when we have received at least 1 MAVLink packet -static bool mavlink_active; - -// check if a message will fit in the payload space available -#define CHECK_PAYLOAD_SIZE(id) if (payload_space < MAVLINK_MSG_ID_## id ##_LEN) return false - -/* - !!NOTE!! - - the use of NOINLINE separate functions for each message type avoids - a compiler bug in gcc that would cause it to use far more stack - space than is needed. Without the NOINLINE we use the sum of the - stack needed for each message type. Please be careful to follow the - pattern below when adding any new messages - */ - -static NOINLINE void send_heartbeat(mavlink_channel_t chan) -{ - #ifdef MAVLINK10 - uint8_t base_mode = MAV_MODE_FLAG_CUSTOM_MODE_ENABLED; - uint8_t system_status = MAV_STATE_ACTIVE; - uint32_t custom_mode = control_mode; - - // work out the base_mode. This value is not very useful - // for APM, but we calculate it as best we can so a generic - // MAVLink enabled ground station can work out something about - // what the MAV is up to. The actual bit values are highly - // ambiguous for most of the APM flight modes. In practice, you - // only get useful information from the custom_mode, which maps to - // the APM flight mode and has a well defined meaning in the - // ArduPlane documentation - switch (control_mode) { - case ACRO: - base_mode = MAV_MODE_FLAG_MANUAL_INPUT_ENABLED; - break; - case STABILIZE: - base_mode = MAV_MODE_FLAG_STABILIZE_ENABLED; - break; - case ALT_HOLD: - case AUTO: - case GUIDED: - case LOITER: - case RTL: - case CIRCLE: - case POSITION: - base_mode = MAV_MODE_FLAG_GUIDED_ENABLED | - MAV_MODE_FLAG_STABILIZE_ENABLED; - // note that MAV_MODE_FLAG_AUTO_ENABLED does not match what - // APM does in any mode, as that is defined as "system finds its own goal - // positions", which APM does not currently do - break; - case INITIALISING: //!!! - system_status = MAV_STATE_CALIBRATING; - break; - } - - if (control_mode != STABILIZE && control_mode != INITIALISING) { - // stabiliser of some form is enabled - base_mode |= MAV_MODE_FLAG_STABILIZE_ENABLED; - } - -#if HIL_MODE != HIL_MODE_DISABLED - base_mode |= MAV_MODE_FLAG_HIL_ENABLED; -#endif - - // we are armed if we are not initialising - if (control_mode != INITIALISING) { - base_mode |= MAV_MODE_FLAG_SAFETY_ARMED; - } - - // indicate we have set a custom mode - base_mode |= MAV_MODE_FLAG_CUSTOM_MODE_ENABLED; - - mavlink_msg_heartbeat_send( - chan, - MAV_TYPE_FIXED_WING, - MAV_AUTOPILOT_ARDUPILOTMEGA, - base_mode, - custom_mode, - system_status); -#else // MAVLINK10 - mavlink_msg_heartbeat_send( - chan, - mavlink_system.type, - MAV_AUTOPILOT_ARDUPILOTMEGA); -#endif // MAVLINK10 -} - -static NOINLINE void send_attitude(mavlink_channel_t chan) -{ - Vector3f omega = dcm.get_gyro(); - mavlink_msg_attitude_send( - chan, - micros(), - dcm.roll, - dcm.pitch, - dcm.yaw, - omega.x, - omega.y, - omega.z); -} - -static NOINLINE void send_extended_status1(mavlink_channel_t chan, uint16_t packet_drops) -{ -#ifdef MAVLINK10 - uint32_t control_sensors_present = 0; - uint32_t control_sensors_enabled; - uint32_t control_sensors_health; - - // first what sensors/controllers we have - control_sensors_present |= (1<<0); // 3D gyro present - control_sensors_present |= (1<<1); // 3D accelerometer present - - if (g.compass_enabled) { - control_sensors_present |= (1<<2); // compass present - } - - control_sensors_present |= (1<<3); // absolute pressure sensor present - - if (g_gps->fix) { - control_sensors_present |= (1<<5); // GPS present - } - - control_sensors_present |= (1<<10); // 3D angular rate control - control_sensors_present |= (1<<11); // attitude stabilisation - control_sensors_present |= (1<<12); // yaw position - control_sensors_present |= (1<<13); // altitude control - control_sensors_present |= (1<<14); // X/Y position control - control_sensors_present |= (1<<15); // motor control - - // now what sensors/controllers are enabled - - // first the sensors - control_sensors_enabled = control_sensors_present & 0x1FF; - - // now the controllers - control_sensors_enabled = control_sensors_present & 0x1FF; - - switch (control_mode) { - case STABILIZE: - control_sensors_enabled |= (1<<10); // 3D angular rate control - control_sensors_enabled |= (1<<11); // attitude stabilisation - break; - - case AUTO: - case RTL: - case LOITER: - case GUIDED: - case CIRCLE: - control_sensors_enabled |= (1<<10); // 3D angular rate control - control_sensors_enabled |= (1<<11); // attitude stabilisation - control_sensors_enabled |= (1<<12); // yaw position - control_sensors_enabled |= (1<<13); // altitude control - control_sensors_enabled |= (1<<14); // X/Y position control - control_sensors_enabled |= (1<<15); // motor control - break; - - case INITIALISING: - break; - } - - // at the moment all sensors/controllers are assumed healthy - control_sensors_health = control_sensors_present; - - uint16_t battery_current = -1; - uint8_t battery_remaining = -1; - - if (current_total != 0 && g.pack_capacity != 0) { - battery_remaining = (100.0 * (g.pack_capacity - current_total) / g.pack_capacity); - } - if (current_total != 0) { - battery_current = current_amps * 100; - } - - mavlink_msg_sys_status_send( - chan, - control_sensors_present, - control_sensors_enabled, - control_sensors_health, - 0, - battery_voltage * 1000, // mV - battery_current, // in 10mA units - battery_remaining, // in % - 0, // comm drops %, - 0, // comm drops in pkts, - 0, 0, 0, 0); - -#else // MAVLINK10 - uint8_t mode = MAV_MODE_UNINIT; - uint8_t nav_mode = MAV_NAV_VECTOR; - - switch(control_mode) { - case STABILIZE: - mode = MAV_MODE_TEST1; - break; - case GUIDED: - mode = MAV_MODE_GUIDED; - break; - case AUTO: - mode = MAV_MODE_AUTO; - nav_mode = MAV_NAV_WAYPOINT; - break; - case RTL: - mode = MAV_MODE_AUTO; - nav_mode = MAV_NAV_RETURNING; - break; - case LOITER: - mode = MAV_MODE_AUTO; - nav_mode = MAV_NAV_LOITER; - break; - case INITIALISING: - mode = MAV_MODE_UNINIT; - nav_mode = MAV_NAV_GROUNDED; - break; - } - - uint8_t status = MAV_STATE_ACTIVE; - uint16_t battery_remaining = 1000.0 * (float)(g.pack_capacity - current_total)/(float)g.pack_capacity; //Mavlink scaling 100% = 1000 - - mavlink_msg_sys_status_send( - chan, - mode, - nav_mode, - status, - 0, - battery_voltage * 1000, - battery_remaining, - packet_drops); -#endif // MAVLINK10 -} - -static void NOINLINE send_meminfo(mavlink_channel_t chan) -{ - extern unsigned __brkval; - mavlink_msg_meminfo_send(chan, __brkval, memcheck_available_memory()); -} - -static void NOINLINE send_location(mavlink_channel_t chan) -{ - Matrix3f rot = dcm.get_dcm_matrix(); // neglecting angle of attack for now - mavlink_msg_global_position_int_send( - chan, - millis(), - current_loc.lat, // in 1E7 degrees - current_loc.lng, // in 1E7 degrees - g_gps->altitude*10, // millimeters above sea level - current_loc.alt * 10, // millimeters above ground - g_gps->ground_speed * rot.a.x, // X speed cm/s - g_gps->ground_speed * rot.b.x, // Y speed cm/s - g_gps->ground_speed * rot.c.x, - g_gps->ground_course); // course in 1/100 degree -} - -static void NOINLINE send_nav_controller_output(mavlink_channel_t chan) -{ - mavlink_msg_nav_controller_output_send( - chan, - nav_roll / 1.0e2, - nav_pitch / 1.0e2, - target_bearing / 1.0e2, - dcm.yaw_sensor / 1.0e2, // was target_bearing - wp_distance / 1.0e2, - altitude_error / 1.0e2, - 0, - crosstrack_error); -} - -static void NOINLINE send_gps_raw(mavlink_channel_t chan) -{ -#ifdef MAVLINK10 - uint8_t fix = (g_gps->status() == 2) ? 3:0; - - mavlink_msg_gps_raw_int_send( - chan, - micros(), - fix, - g_gps->latitude, // in 1E7 degrees - g_gps->longitude, // in 1E7 degrees - g_gps->altitude * 10, // in mm - g_gps->hdop, - 65535, - g_gps->ground_speed, // cm/s - g_gps->ground_course, // 1/100 degrees, - g_gps->num_sats); - -#else // MAVLINK10 - mavlink_msg_gps_raw_send( - chan, - micros(), - g_gps->status(), - g_gps->latitude / 1.0e7, - g_gps->longitude / 1.0e7, - g_gps->altitude / 100.0, - g_gps->hdop, - current_loc.alt / 100.0, // was 0 - g_gps->ground_speed / 100.0, - g_gps->ground_course / 100.0); -#endif // MAVLINK10 -} - -static void NOINLINE send_servo_out(mavlink_channel_t chan) -{ - const uint8_t rssi = 1; - // normalized values scaled to -10000 to 10000 - // This is used for HIL. Do not change without discussing with HIL maintainers - mavlink_msg_rc_channels_scaled_send( - chan, - millis(), - 0, // port 0 - 10000 * g.rc_1.norm_output(), - 10000 * g.rc_2.norm_output(), - 10000 * g.rc_3.norm_output(), - 10000 * g.rc_4.norm_output(), - 0, - 0, - 0, - 0, - rssi); -} - -static void NOINLINE send_radio_in(mavlink_channel_t chan) -{ - const uint8_t rssi = 1; - mavlink_msg_rc_channels_raw_send( - chan, - millis(), - 0, // port - g.rc_1.radio_in, - g.rc_2.radio_in, - g.rc_3.radio_in, - g.rc_4.radio_in, - g.rc_5.radio_in, - g.rc_6.radio_in, - g.rc_7.radio_in, - g.rc_8.radio_in, - rssi); -} - -static void NOINLINE send_radio_out(mavlink_channel_t chan) -{ - mavlink_msg_servo_output_raw_send( - chan, - micros(), - 0, // port - motor_out[0], - motor_out[1], - motor_out[2], - motor_out[3], - motor_out[4], - motor_out[5], - motor_out[6], - motor_out[7]); -} - -static void NOINLINE send_vfr_hud(mavlink_channel_t chan) -{ - mavlink_msg_vfr_hud_send( - chan, - (float)g_gps->ground_speed / 100.0, - (float)g_gps->ground_speed / 100.0, - (dcm.yaw_sensor / 100) % 360, - g.rc_3.servo_out / 10, - current_loc.alt / 100.0, - climb_rate); -} - -#if HIL_MODE != HIL_MODE_ATTITUDE -static void NOINLINE send_raw_imu1(mavlink_channel_t chan) -{ - Vector3f accel = imu.get_accel(); - Vector3f gyro = imu.get_gyro(); - - mavlink_msg_raw_imu_send( - chan, - micros(), - accel.x * 1000.0 / gravity, - accel.y * 1000.0 / gravity, - accel.z * 1000.0 / gravity, - gyro.x * 1000.0, - gyro.y * 1000.0, - gyro.z * 1000.0, - compass.mag_x, - compass.mag_y, - compass.mag_z); -} - -static void NOINLINE send_raw_imu2(mavlink_channel_t chan) -{ - mavlink_msg_scaled_pressure_send( - chan, - micros(), - (float)barometer.Press/100.0, - (float)(barometer.Press - ground_pressure)/100.0, - (int)(barometer.Temp*10)); -} - -static void NOINLINE send_raw_imu3(mavlink_channel_t chan) -{ - Vector3f mag_offsets = compass.get_offsets(); - - mavlink_msg_sensor_offsets_send(chan, - mag_offsets.x, - mag_offsets.y, - mag_offsets.z, - compass.get_declination(), - barometer.RawPress, - barometer.RawTemp, - imu.gx(), imu.gy(), imu.gz(), - imu.ax(), imu.ay(), imu.az()); -} -#endif // HIL_MODE != HIL_MODE_ATTITUDE - -static void NOINLINE send_gps_status(mavlink_channel_t chan) -{ - mavlink_msg_gps_status_send( - chan, - g_gps->num_sats, - NULL, - NULL, - NULL, - NULL, - NULL); -} - -static void NOINLINE send_current_waypoint(mavlink_channel_t chan) -{ - mavlink_msg_waypoint_current_send( - chan, - g.command_index); -} - -static void NOINLINE send_statustext(mavlink_channel_t chan) -{ - mavlink_msg_statustext_send( - chan, - pending_status.severity, - pending_status.text); -} - - -// try to send a message, return false if it won't fit in the serial tx buffer -static bool mavlink_try_send_message(mavlink_channel_t chan, enum ap_message id, uint16_t packet_drops) -{ - int payload_space = comm_get_txspace(chan) - MAVLINK_NUM_NON_PAYLOAD_BYTES; - - if (chan == MAVLINK_COMM_1 && millis() < MAVLINK_TELEMETRY_PORT_DELAY) { - // defer any messages on the telemetry port for 1 second after - // bootup, to try to prevent bricking of Xbees - return false; - } - - switch (id) { - case MSG_HEARTBEAT: - CHECK_PAYLOAD_SIZE(HEARTBEAT); - send_heartbeat(chan); - return true; - - case MSG_EXTENDED_STATUS1: - CHECK_PAYLOAD_SIZE(SYS_STATUS); - send_extended_status1(chan, packet_drops); - break; - - case MSG_EXTENDED_STATUS2: - CHECK_PAYLOAD_SIZE(MEMINFO); - send_meminfo(chan); - break; - - case MSG_ATTITUDE: - CHECK_PAYLOAD_SIZE(ATTITUDE); - send_attitude(chan); - break; - - case MSG_LOCATION: - CHECK_PAYLOAD_SIZE(GLOBAL_POSITION_INT); - send_location(chan); - break; - - case MSG_NAV_CONTROLLER_OUTPUT: - CHECK_PAYLOAD_SIZE(NAV_CONTROLLER_OUTPUT); - send_nav_controller_output(chan); - break; - - case MSG_GPS_RAW: - #ifdef MAVLINK10 - CHECK_PAYLOAD_SIZE(GPS_RAW_INT); - #else - CHECK_PAYLOAD_SIZE(GPS_RAW); - #endif - send_gps_raw(chan); - break; - - case MSG_SERVO_OUT: - CHECK_PAYLOAD_SIZE(RC_CHANNELS_SCALED); - send_servo_out(chan); - break; - - case MSG_RADIO_IN: - CHECK_PAYLOAD_SIZE(RC_CHANNELS_RAW); - send_radio_in(chan); - break; - - case MSG_RADIO_OUT: - CHECK_PAYLOAD_SIZE(SERVO_OUTPUT_RAW); - send_radio_out(chan); - break; - - case MSG_VFR_HUD: - CHECK_PAYLOAD_SIZE(VFR_HUD); - send_vfr_hud(chan); - break; - -#if HIL_MODE != HIL_MODE_ATTITUDE - case MSG_RAW_IMU1: - CHECK_PAYLOAD_SIZE(RAW_IMU); - send_raw_imu1(chan); - break; - - case MSG_RAW_IMU2: - CHECK_PAYLOAD_SIZE(SCALED_PRESSURE); - send_raw_imu2(chan); - break; - - case MSG_RAW_IMU3: - CHECK_PAYLOAD_SIZE(SENSOR_OFFSETS); - send_raw_imu3(chan); - break; -#endif // HIL_MODE != HIL_MODE_ATTITUDE - - case MSG_GPS_STATUS: - CHECK_PAYLOAD_SIZE(GPS_STATUS); - send_gps_status(chan); - break; - - case MSG_CURRENT_WAYPOINT: - CHECK_PAYLOAD_SIZE(WAYPOINT_CURRENT); - send_current_waypoint(chan); - break; - - case MSG_NEXT_PARAM: - CHECK_PAYLOAD_SIZE(PARAM_VALUE); - if (chan == MAVLINK_COMM_0) { - gcs0.queued_param_send(); - } else { - gcs3.queued_param_send(); - } - break; - - case MSG_NEXT_WAYPOINT: - CHECK_PAYLOAD_SIZE(WAYPOINT_REQUEST); - if (chan == MAVLINK_COMM_0) { - gcs0.queued_waypoint_send(); - } else { - gcs3.queued_waypoint_send(); - } - break; - - case MSG_STATUSTEXT: - CHECK_PAYLOAD_SIZE(STATUSTEXT); - send_statustext(chan); - break; - - case MSG_RETRY_DEFERRED: - break; // just here to prevent a warning - } - return true; -} - - -#define MAX_DEFERRED_MESSAGES MSG_RETRY_DEFERRED -static struct mavlink_queue { - enum ap_message deferred_messages[MAX_DEFERRED_MESSAGES]; - uint8_t next_deferred_message; - uint8_t num_deferred_messages; -} mavlink_queue[2]; - -// send a message using mavlink -static void mavlink_send_message(mavlink_channel_t chan, enum ap_message id, uint16_t packet_drops) -{ - uint8_t i, nextid; - struct mavlink_queue *q = &mavlink_queue[(uint8_t)chan]; - - // see if we can send the deferred messages, if any - while (q->num_deferred_messages != 0) { - if (!mavlink_try_send_message(chan, - q->deferred_messages[q->next_deferred_message], - packet_drops)) { - break; - } - q->next_deferred_message++; - if (q->next_deferred_message == MAX_DEFERRED_MESSAGES) { - q->next_deferred_message = 0; - } - q->num_deferred_messages--; - } - - if (id == MSG_RETRY_DEFERRED) { - return; - } - - // this message id might already be deferred - for (i=0, nextid = q->next_deferred_message; i < q->num_deferred_messages; i++) { - if (q->deferred_messages[nextid] == id) { - // its already deferred, discard - return; - } - nextid++; - if (nextid == MAX_DEFERRED_MESSAGES) { - nextid = 0; - } - } - - if (q->num_deferred_messages != 0 || - !mavlink_try_send_message(chan, id, packet_drops)) { - // can't send it now, so defer it - if (q->num_deferred_messages == MAX_DEFERRED_MESSAGES) { - // the defer buffer is full, discard - return; - } - nextid = q->next_deferred_message + q->num_deferred_messages; - if (nextid >= MAX_DEFERRED_MESSAGES) { - nextid -= MAX_DEFERRED_MESSAGES; - } - q->deferred_messages[nextid] = id; - q->num_deferred_messages++; - } -} - -void mavlink_send_text(mavlink_channel_t chan, gcs_severity severity, const char *str) -{ - if (chan == MAVLINK_COMM_1 && millis() < MAVLINK_TELEMETRY_PORT_DELAY) { - // don't send status MAVLink messages for 2 seconds after - // bootup, to try to prevent Xbee bricking - return; - } - - if (severity == SEVERITY_LOW) { - // send via the deferred queuing system - pending_status.severity = (uint8_t)severity; - strncpy((char *)pending_status.text, str, sizeof(pending_status.text)); - mavlink_send_message(chan, MSG_STATUSTEXT, 0); - } else { - // send immediately - mavlink_msg_statustext_send( - chan, - severity, - (const int8_t*) str); - } -} - - -GCS_MAVLINK::GCS_MAVLINK(AP_Var::Key key) : -packet_drops(0), - -// parameters -// note, all values not explicitly initialised here are zeroed -waypoint_send_timeout(1000), // 1 second -waypoint_receive_timeout(1000), // 1 second - -// stream rates -_group (key, key == Parameters::k_param_streamrates_port0 ? PSTR("SR0_"): PSTR("SR3_")), - // AP_VAR //ref //index, default, name - streamRateRawSensors (&_group, 0, 0, PSTR("RAW_SENS")), - streamRateExtendedStatus (&_group, 1, 0, PSTR("EXT_STAT")), - streamRateRCChannels (&_group, 2, 0, PSTR("RC_CHAN")), - streamRateRawController (&_group, 3, 0, PSTR("RAW_CTRL")), - streamRatePosition (&_group, 4, 0, PSTR("POSITION")), - streamRateExtra1 (&_group, 5, 0, PSTR("EXTRA1")), - streamRateExtra2 (&_group, 6, 0, PSTR("EXTRA2")), - streamRateExtra3 (&_group, 7, 0, PSTR("EXTRA3")) -{ - -} - -void -GCS_MAVLINK::init(FastSerial * port) -{ - GCS_Class::init(port); - if (port == &Serial) { - mavlink_comm_0_port = port; - chan = MAVLINK_COMM_0; - }else{ - mavlink_comm_1_port = port; - chan = MAVLINK_COMM_1; - } - _queued_parameter = NULL; -} - -void -GCS_MAVLINK::update(void) -{ - // receive new packets - mavlink_message_t msg; - mavlink_status_t status; - status.packet_rx_drop_count = 0; - - // process received bytes - while(comm_get_available(chan)) - { - uint8_t c = comm_receive_ch(chan); - -#if CLI_ENABLED == ENABLED - /* allow CLI to be started by hitting enter 3 times, if no - heartbeat packets have been received */ - if (mavlink_active == false) { - if (c == '\n' || c == '\r') { - crlf_count++; - } else { - crlf_count = 0; - } - if (crlf_count == 3) { - run_cli(); - } - } -#endif - - // Try to get a new message - if (mavlink_parse_char(chan, c, &msg, &status)) { - mavlink_active = true; - handleMessage(&msg); - } - } - - // Update packet drops counter - packet_drops += status.packet_rx_drop_count; - - // send out queued params/ waypoints - if (NULL != _queued_parameter) { - send_message(MSG_NEXT_PARAM); - } - - if (!waypoint_receiving && !waypoint_sending) { - return; - } - - uint32_t tnow = millis(); - - if (waypoint_receiving && - waypoint_request_i < (unsigned)g.command_total && - tnow > waypoint_timelast_request + 500) { - waypoint_timelast_request = tnow; - send_message(MSG_NEXT_WAYPOINT); - } - - // stop waypoint sending if timeout - if (waypoint_sending && (tnow - waypoint_timelast_send) > waypoint_send_timeout){ - waypoint_sending = false; - } - - // stop waypoint receiving if timeout - if (waypoint_receiving && (tnow - waypoint_timelast_receive) > waypoint_receive_timeout){ - waypoint_receiving = false; - } -} - -void -GCS_MAVLINK::data_stream_send(uint16_t freqMin, uint16_t freqMax) -{ - if (waypoint_sending == false && waypoint_receiving == false && _queued_parameter == NULL) { - - if (freqLoopMatch(streamRateRawSensors, freqMin, freqMax)){ - send_message(MSG_RAW_IMU1); - send_message(MSG_RAW_IMU2); - send_message(MSG_RAW_IMU3); - } - - if (freqLoopMatch(streamRateExtendedStatus, freqMin, freqMax)) { - send_message(MSG_EXTENDED_STATUS1); - send_message(MSG_EXTENDED_STATUS2); - send_message(MSG_GPS_STATUS); - send_message(MSG_CURRENT_WAYPOINT); - send_message(MSG_GPS_RAW); // TODO - remove this message after location message is working - send_message(MSG_NAV_CONTROLLER_OUTPUT); - //Serial.printf("mav2 %d\n", (int)streamRateExtendedStatus.get()); - } - - if (freqLoopMatch(streamRatePosition, freqMin, freqMax)) { - // sent with GPS read - send_message(MSG_LOCATION); - } - - if (freqLoopMatch(streamRateRawController, freqMin, freqMax)) { - // This is used for HIL. Do not change without discussing with HIL maintainers - send_message(MSG_SERVO_OUT); - } - - if (freqLoopMatch(streamRateRCChannels, freqMin, freqMax)) { - send_message(MSG_RADIO_OUT); - send_message(MSG_RADIO_IN); - } - - if (freqLoopMatch(streamRateExtra1, freqMin, freqMax)){ // Use Extra 1 for AHRS info - send_message(MSG_ATTITUDE); - } - - if (freqLoopMatch(streamRateExtra2, freqMin, freqMax)){ // Use Extra 2 for additional HIL info - send_message(MSG_VFR_HUD); - } - - if (freqLoopMatch(streamRateExtra3, freqMin, freqMax)){ - // Available datastream - } - } -} - - - -void -GCS_MAVLINK::send_message(enum ap_message id) -{ - mavlink_send_message(chan, id, packet_drops); -} - -void -GCS_MAVLINK::send_text(gcs_severity severity, const char *str) -{ - mavlink_send_text(chan, severity, str); -} - -void -GCS_MAVLINK::send_text(gcs_severity severity, const prog_char_t *str) -{ - mavlink_statustext_t m; - uint8_t i; - for (i = 0; i < sizeof(m.text); i++) { - m.text[i] = pgm_read_byte((const prog_char *)(str++)); - } - if (i < sizeof(m.text)) m.text[i] = 0; - mavlink_send_text(chan, severity, (const char *)m.text); -} - -void GCS_MAVLINK::handleMessage(mavlink_message_t* msg) -{ - struct Location tell_command = {}; // command for telemetry - static uint8_t mav_nav = 255; // For setting mode (some require receipt of 2 messages...) - - switch (msg->msgid) { - - case MAVLINK_MSG_ID_REQUEST_DATA_STREAM: - { - // decode - mavlink_request_data_stream_t packet; - mavlink_msg_request_data_stream_decode(msg, &packet); - - if (mavlink_check_target(packet.target_system, packet.target_component)) - break; - - int freq = 0; // packet frequency - - if (packet.start_stop == 0) - freq = 0; // stop sending - else if (packet.start_stop == 1) - freq = packet.req_message_rate; // start sending - else - break; - - switch(packet.req_stream_id){ - - case MAV_DATA_STREAM_ALL: - streamRateRawSensors = freq; - streamRateExtendedStatus = freq; - streamRateRCChannels = freq; - streamRateRawController = freq; - streamRatePosition = freq; - streamRateExtra1 = freq; - streamRateExtra2 = freq; - //streamRateExtra3.set_and_save(freq); // We just do set and save on the last as it takes care of the whole group. - streamRateExtra3 = freq; // Don't save!! - break; - - case MAV_DATA_STREAM_RAW_SENSORS: - streamRateRawSensors = freq; // We do not set and save this one so that if HIL is shut down incorrectly - // we will not continue to broadcast raw sensor data at 50Hz. - break; - case MAV_DATA_STREAM_EXTENDED_STATUS: - streamRateExtendedStatus = freq; - break; - - case MAV_DATA_STREAM_RC_CHANNELS: - streamRateRCChannels = freq; - break; - - case MAV_DATA_STREAM_RAW_CONTROLLER: - streamRateRawController = freq; - break; - - //case MAV_DATA_STREAM_RAW_SENSOR_FUSION: - // streamRateRawSensorFusion.set_and_save(freq); - // break; - - case MAV_DATA_STREAM_POSITION: - streamRatePosition = freq; - break; - - case MAV_DATA_STREAM_EXTRA1: - streamRateExtra1 = freq; - break; - - case MAV_DATA_STREAM_EXTRA2: - streamRateExtra2 = freq; - break; - - case MAV_DATA_STREAM_EXTRA3: - streamRateExtra3 = freq; - break; - - default: - break; - } - break; - } - -#ifdef MAVLINK10 - case MAVLINK_MSG_ID_COMMAND_LONG: - { - // decode - mavlink_command_long_t packet; - mavlink_msg_command_long_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - - uint8_t result; - - // do command - send_text(SEVERITY_LOW,PSTR("command received: ")); - - switch(packet.command) { - - case MAV_CMD_NAV_LOITER_UNLIM: - set_mode(LOITER); - result = MAV_RESULT_ACCEPTED; - break; - - case MAV_CMD_NAV_RETURN_TO_LAUNCH: - set_mode(RTL); - result = MAV_RESULT_ACCEPTED; - break; - - #if 0 - // not implemented yet, but could implement some of them - case MAV_CMD_NAV_LAND: - case MAV_CMD_NAV_TAKEOFF: - case MAV_CMD_NAV_ROI: - case MAV_CMD_NAV_PATHPLANNING: - break; - #endif - - - case MAV_CMD_PREFLIGHT_CALIBRATION: - if (packet.param1 == 1 || - packet.param2 == 1 || - packet.param3 == 1) { - startup_ground(); - } - if (packet.param4 == 1) { - trim_radio(); - } - result = MAV_RESULT_ACCEPTED; - break; - - - default: - result = MAV_RESULT_UNSUPPORTED; - break; - } - - mavlink_msg_command_ack_send( - chan, - packet.command, - result); - - break; - } - -#else // MAVLINK10 - case MAVLINK_MSG_ID_ACTION: - { - // decode - mavlink_action_t packet; - mavlink_msg_action_decode(msg, &packet); - if (mavlink_check_target(packet.target, packet.target_component)) break; - - if (in_mavlink_delay) { - // don't execute action commands while in sensor - // initialisation - break; - } - - uint8_t result = 0; - - // do action - send_text(SEVERITY_LOW,PSTR("action received: ")); -//Serial.println(packet.action); - switch(packet.action){ - - case MAV_ACTION_LAUNCH: - //set_mode(TAKEOFF); - break; - - case MAV_ACTION_RETURN: - set_mode(RTL); - result = 1; - break; - - case MAV_ACTION_EMCY_LAND: - //set_mode(LAND); - break; - - case MAV_ACTION_HALT: - do_loiter_at_location(); - result = 1; - break; - - /* No mappable implementation in APM 2.0 - case MAV_ACTION_MOTORS_START: - case MAV_ACTION_CONFIRM_KILL: - case MAV_ACTION_EMCY_KILL: - case MAV_ACTION_MOTORS_STOP: - case MAV_ACTION_SHUTDOWN: - break; - */ - - case MAV_ACTION_CONTINUE: - //process_command_queue(); - result = 1; - break; - - case MAV_ACTION_SET_MANUAL: - set_mode(STABILIZE); - result = 1; - break; - - case MAV_ACTION_SET_AUTO: - set_mode(AUTO); - result = 1; - break; - - case MAV_ACTION_STORAGE_READ: - AP_Var::load_all(); - result = 1; - break; - - case MAV_ACTION_STORAGE_WRITE: - AP_Var::save_all(); - result = 1; - break; - - case MAV_ACTION_CALIBRATE_RC: break; - trim_radio(); - result = 1; - break; - - case MAV_ACTION_CALIBRATE_GYRO: - case MAV_ACTION_CALIBRATE_MAG: - case MAV_ACTION_CALIBRATE_PRESSURE: - //case MAV_ACTION_REBOOT: // this is a rough interpretation - startup_ground(); - result=1; - break; - - case MAV_ACTION_CALIBRATE_ACC: - imu.init_accel(mavlink_delay); - result = 1; - break; - - /* For future implemtation - case MAV_ACTION_REC_START: break; - case MAV_ACTION_REC_PAUSE: break; - case MAV_ACTION_REC_STOP: break; - */ - - /* Takeoff is not an implemented flight mode in APM 2.0 - case MAV_ACTION_TAKEOFF: - set_mode(TAKEOFF); - break; - */ - - case MAV_ACTION_NAVIGATE: - set_mode(AUTO); - result = 1; - break; - - /* Land is not an implemented flight mode in APM 2.0 - case MAV_ACTION_LAND: - set_mode(LAND); - break; - */ - - case MAV_ACTION_LOITER: - set_mode(LOITER); - result = 1; - break; - - default: break; - } - - mavlink_msg_action_ack_send( - chan, - packet.action, - result - ); - - break; - } -#endif - - case MAVLINK_MSG_ID_SET_MODE: - { - // decode - mavlink_set_mode_t packet; - mavlink_msg_set_mode_decode(msg, &packet); - -#ifdef MAVLINK10 - if (!(packet.base_mode & MAV_MODE_FLAG_CUSTOM_MODE_ENABLED)) { - // we ignore base_mode as there is no sane way to map - // from that bitmap to a APM flight mode. We rely on - // custom_mode instead. - break; - } - switch (packet.custom_mode) { - case CIRCLE: - case STABILIZE: - case AUTO: - case RTL: - case LOITER: - set_mode(packet.custom_mode); - break; - } - -#else // MAVLINK10 - - switch(packet.mode){ - - case MAV_MODE_MANUAL: - set_mode(STABILIZE); - break; - - case MAV_MODE_GUIDED: - set_mode(GUIDED); - break; - - case MAV_MODE_AUTO: - if(mav_nav == 255 || mav_nav == MAV_NAV_WAYPOINT) - set_mode(AUTO); - if(mav_nav == MAV_NAV_RETURNING) - set_mode(RTL); - if(mav_nav == MAV_NAV_LOITER) - set_mode(LOITER); - mav_nav = 255; - break; - - case MAV_MODE_TEST1: - set_mode(STABILIZE); - break; - } -#endif - break; - } - -#ifndef MAVLINK10 - case MAVLINK_MSG_ID_SET_NAV_MODE: - { - // decode - mavlink_set_nav_mode_t packet; - mavlink_msg_set_nav_mode_decode(msg, &packet); - // To set some flight modes we must first receive a "set nav mode" message and then a "set mode" message - mav_nav = packet.nav_mode; - break; - } -#endif // MAVLINK10 - - - case MAVLINK_MSG_ID_WAYPOINT_REQUEST_LIST: - { - // decode - mavlink_waypoint_request_list_t packet; - mavlink_msg_waypoint_request_list_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) - break; - - // Start sending waypoints - mavlink_msg_waypoint_count_send( - chan, msg->sysid, - msg->compid, - g.command_total); // includes home - - waypoint_timelast_send = millis(); - waypoint_sending = true; - waypoint_receiving = false; - waypoint_dest_sysid = msg->sysid; - waypoint_dest_compid = msg->compid; - break; - } - - // XXX read a WP from EEPROM and send it to the GCS - case MAVLINK_MSG_ID_WAYPOINT_REQUEST: - { - // Check if sending waypiont - //if (!waypoint_sending) break; - // 5/10/11 - We are trying out relaxing the requirement that we be in waypoint sending mode to respond to a waypoint request. DEW - - // decode - mavlink_waypoint_request_t packet; - mavlink_msg_waypoint_request_decode(msg, &packet); - - if (mavlink_check_target(packet.target_system, packet.target_component)) - break; - - // send waypoint - tell_command = get_cmd_with_index(packet.seq); - - // set frame of waypoint - uint8_t frame; - - if (tell_command.options & MASK_OPTIONS_RELATIVE_ALT) { - frame = MAV_FRAME_GLOBAL_RELATIVE_ALT; // reference frame - } else { - frame = MAV_FRAME_GLOBAL; // reference frame - } - - float param1 = 0, param2 = 0 , param3 = 0, param4 = 0; - - // time that the mav should loiter in milliseconds - uint8_t current = 0; // 1 (true), 0 (false) - - if (packet.seq == (uint16_t)g.command_index) - current = 1; - - uint8_t autocontinue = 1; // 1 (true), 0 (false) - - float x = 0, y = 0, z = 0; - - if (tell_command.id < MAV_CMD_NAV_LAST || tell_command.id == MAV_CMD_CONDITION_CHANGE_ALT) { - // command needs scaling - x = tell_command.lat / 1.0e7; // local (x), global (latitude) - y = tell_command.lng / 1.0e7; // local (y), global (longitude) - // ACM is processing alt inside each command. so we save and load raw values. - this is diffrent to APM - z = tell_command.alt / 1.0e2; // local (z), global / relative (altitude) - } - - // Switch to map APM command fields inot MAVLink command fields - switch (tell_command.id) { - - case MAV_CMD_NAV_LOITER_TURNS: - case MAV_CMD_CONDITION_CHANGE_ALT: - case MAV_CMD_DO_SET_HOME: - param1 = tell_command.p1; - break; - - case MAV_CMD_CONDITION_YAW: - param3 = tell_command.p1; - param1 = tell_command.alt; - param2 = tell_command.lat; - param4 = tell_command.lng; - break; - - case MAV_CMD_NAV_TAKEOFF: - param1 = 0; - break; - - case MAV_CMD_NAV_LOITER_TIME: - param1 = tell_command.p1; // ACM loiter time is in 1 second increments - break; - - case MAV_CMD_CONDITION_DELAY: - case MAV_CMD_CONDITION_DISTANCE: - param1 = tell_command.lat; - break; - - case MAV_CMD_DO_JUMP: - param2 = tell_command.lat; - param1 = tell_command.p1; - break; - - case MAV_CMD_DO_REPEAT_SERVO: - param4 = tell_command.lng; - case MAV_CMD_DO_REPEAT_RELAY: - case MAV_CMD_DO_CHANGE_SPEED: - param3 = tell_command.lat; - param2 = tell_command.alt; - param1 = tell_command.p1; - break; - - case MAV_CMD_NAV_WAYPOINT: - param1 = tell_command.p1; - break; - - case MAV_CMD_DO_SET_PARAMETER: - case MAV_CMD_DO_SET_RELAY: - case MAV_CMD_DO_SET_SERVO: - param2 = tell_command.alt; - param1 = tell_command.p1; - break; - } - - mavlink_msg_waypoint_send(chan, msg->sysid, - msg->compid, - packet.seq, - frame, - tell_command.id, - current, - autocontinue, - param1, - param2, - param3, - param4, - x, - y, - z); - - // update last waypoint comm stamp - waypoint_timelast_send = millis(); - break; - } - - case MAVLINK_MSG_ID_WAYPOINT_ACK: - { - // decode - mavlink_waypoint_ack_t packet; - mavlink_msg_waypoint_ack_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - - // turn off waypoint send - waypoint_sending = false; - break; - } - - case MAVLINK_MSG_ID_PARAM_REQUEST_LIST: - { - // decode - mavlink_param_request_list_t packet; - mavlink_msg_param_request_list_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - - // Start sending parameters - next call to ::update will kick the first one out - - _queued_parameter = AP_Var::first(); - _queued_parameter_index = 0; - _queued_parameter_count = _count_parameters(); - break; - } - - case MAVLINK_MSG_ID_WAYPOINT_CLEAR_ALL: - { - // decode - mavlink_waypoint_clear_all_t packet; - mavlink_msg_waypoint_clear_all_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - - // clear all commands - g.command_total.set_and_save(1); - - // note that we don't send multiple acks, as otherwise a - // GCS that is doing a clear followed by a set may see - // the additional ACKs as ACKs of the set operations - mavlink_msg_waypoint_ack_send(chan, msg->sysid, msg->compid, MAV_MISSION_ACCEPTED); - break; - } - - case MAVLINK_MSG_ID_WAYPOINT_SET_CURRENT: - { - // decode - mavlink_waypoint_set_current_t packet; - mavlink_msg_waypoint_set_current_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - - // set current command - change_command(packet.seq); - - mavlink_msg_waypoint_current_send(chan, g.command_index); - break; - } - - case MAVLINK_MSG_ID_WAYPOINT_COUNT: - { - // decode - mavlink_waypoint_count_t packet; - mavlink_msg_waypoint_count_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - - // start waypoint receiving - if (packet.count > MAX_WAYPOINTS) { - packet.count = MAX_WAYPOINTS; - } - g.command_total.set_and_save(packet.count); - - waypoint_timelast_receive = millis(); - waypoint_receiving = true; - waypoint_sending = false; - waypoint_request_i = 0; - waypoint_timelast_request = 0; - break; - } - -#ifdef MAVLINK_MSG_ID_SET_MAG_OFFSETS - case MAVLINK_MSG_ID_SET_MAG_OFFSETS: - { - mavlink_set_mag_offsets_t packet; - mavlink_msg_set_mag_offsets_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - compass.set_offsets(Vector3f(packet.mag_ofs_x, packet.mag_ofs_y, packet.mag_ofs_z)); - break; - } -#endif - - // XXX receive a WP from GCS and store in EEPROM - case MAVLINK_MSG_ID_WAYPOINT: - { - // decode - mavlink_waypoint_t packet; - uint8_t result = MAV_MISSION_ACCEPTED; - - mavlink_msg_waypoint_decode(msg, &packet); - if (mavlink_check_target(packet.target_system, packet.target_component)) break; - - // defaults - tell_command.id = packet.command; - - switch (packet.frame) - { - case MAV_FRAME_MISSION: - case MAV_FRAME_GLOBAL: - { - tell_command.lat = 1.0e7*packet.x; // in as DD converted to * t7 - tell_command.lng = 1.0e7*packet.y; // in as DD converted to * t7 - tell_command.alt = packet.z*1.0e2; // in as m converted to cm - tell_command.options = 0; // absolute altitude - break; - } - - #ifdef MAV_FRAME_LOCAL_NED - case MAV_FRAME_LOCAL_NED: // local (relative to home position) - { - tell_command.lat = 1.0e7*ToDeg(packet.x/ - (radius_of_earth*cos(ToRad(home.lat/1.0e7)))) + home.lat; - tell_command.lng = 1.0e7*ToDeg(packet.y/radius_of_earth) + home.lng; - tell_command.alt = -packet.z*1.0e2; - tell_command.options = MASK_OPTIONS_RELATIVE_ALT; - break; - } - #endif - - #ifdef MAV_FRAME_LOCAL - case MAV_FRAME_LOCAL: // local (relative to home position) - { - tell_command.lat = 1.0e7*ToDeg(packet.x/ - (radius_of_earth*cos(ToRad(home.lat/1.0e7)))) + home.lat; - tell_command.lng = 1.0e7*ToDeg(packet.y/radius_of_earth) + home.lng; - tell_command.alt = packet.z*1.0e2; - tell_command.options = MASK_OPTIONS_RELATIVE_ALT; - break; - } - #endif - - case MAV_FRAME_GLOBAL_RELATIVE_ALT: // absolute lat/lng, relative altitude - { - tell_command.lat = 1.0e7 * packet.x; // in as DD converted to * t7 - tell_command.lng = 1.0e7 * packet.y; // in as DD converted to * t7 - tell_command.alt = packet.z * 1.0e2; - tell_command.options = MASK_OPTIONS_RELATIVE_ALT; // store altitude relative!! Always!! - break; - } - - default: - result = MAV_MISSION_UNSUPPORTED_FRAME; - break; - } - - - if (result != MAV_MISSION_ACCEPTED) goto mission_failed; - - switch (tell_command.id) { // Switch to map APM command fields inot MAVLink command fields - - case MAV_CMD_NAV_LOITER_UNLIM: - case MAV_CMD_NAV_RETURN_TO_LAUNCH: - case MAV_CMD_NAV_LAND: - break; - - case MAV_CMD_NAV_LOITER_TURNS: - case MAV_CMD_DO_SET_HOME: - case MAV_CMD_DO_SET_ROI: - tell_command.p1 = packet.param1; - break; - - case MAV_CMD_CONDITION_YAW: - tell_command.p1 = packet.param3; - tell_command.alt = packet.param1; - tell_command.lat = packet.param2; - tell_command.lng = packet.param4; - break; - - case MAV_CMD_NAV_TAKEOFF: - tell_command.p1 = 0; - break; - - case MAV_CMD_CONDITION_CHANGE_ALT: - tell_command.p1 = packet.param1 * 100; - break; - - case MAV_CMD_NAV_LOITER_TIME: - tell_command.p1 = packet.param1; // ACM is in seconds - break; - - case MAV_CMD_CONDITION_DELAY: - case MAV_CMD_CONDITION_DISTANCE: - tell_command.lat = packet.param1; - break; - - case MAV_CMD_DO_JUMP: - tell_command.lat = packet.param2; - tell_command.p1 = packet.param1; - break; - - case MAV_CMD_DO_REPEAT_SERVO: - tell_command.lng = packet.param4; - case MAV_CMD_DO_REPEAT_RELAY: - case MAV_CMD_DO_CHANGE_SPEED: - tell_command.lat = packet.param3; - tell_command.alt = packet.param2; - tell_command.p1 = packet.param1; - break; - - case MAV_CMD_NAV_WAYPOINT: - tell_command.p1 = packet.param1; - break; - - case MAV_CMD_DO_SET_PARAMETER: - case MAV_CMD_DO_SET_RELAY: - case MAV_CMD_DO_SET_SERVO: - tell_command.alt = packet.param2; - tell_command.p1 = packet.param1; - break; - - default: - #ifdef MAVLINK10 - result = MAV_MISSION_UNSUPPORTED; - #endif - break; - } - - if (result != MAV_MISSION_ACCEPTED) goto mission_failed; - - if(packet.current == 2){ //current = 2 is a flag to tell us this is a "guided mode" waypoint and not for the mission - guided_WP = tell_command; - - // add home alt if needed - if (guided_WP.options & MASK_OPTIONS_RELATIVE_ALT){ - guided_WP.alt += home.alt; - } - - set_mode(GUIDED); - - // make any new wp uploaded instant (in case we are already in Guided mode) - set_next_WP(&guided_WP); - - // verify we recevied the command - mavlink_msg_waypoint_ack_send( - chan, - msg->sysid, - msg->compid, - 0); - - } else { - // Check if receiving waypoints (mission upload expected) - if (!waypoint_receiving) { - result = MAV_MISSION_ERROR; - goto mission_failed; - } - - // check if this is the requested waypoint - if (packet.seq != waypoint_request_i) { - result = MAV_MISSION_INVALID_SEQUENCE; - goto mission_failed; - } - - if(packet.seq != 0) - set_cmd_with_index(tell_command, packet.seq); - - // update waypoint receiving state machine - waypoint_timelast_receive = millis(); - waypoint_timelast_request = 0; - waypoint_request_i++; - - if (waypoint_request_i == (uint16_t)g.command_total){ - mavlink_msg_waypoint_ack_send( - chan, - msg->sysid, - msg->compid, - result); - - send_text(SEVERITY_LOW,PSTR("flight plan received")); - waypoint_receiving = false; - // XXX ignores waypoint radius for individual waypoints, can - // only set WP_RADIUS parameter - } - } - break; - - mission_failed: - // we are rejecting the mission/waypoint - mavlink_msg_waypoint_ack_send( - chan, - msg->sysid, - msg->compid, - result); - break; - } - - case MAVLINK_MSG_ID_PARAM_SET: - { - AP_Var *vp; - AP_Meta_class::Type_id var_type; - - // decode - mavlink_param_set_t packet; - mavlink_msg_param_set_decode(msg, &packet); - - if (mavlink_check_target(packet.target_system, packet.target_component)) - break; - - // set parameter - - char key[ONBOARD_PARAM_NAME_LENGTH + 1]; - strncpy(key, (char *)packet.param_id, ONBOARD_PARAM_NAME_LENGTH); - key[ONBOARD_PARAM_NAME_LENGTH] = 0; - - // find the requested parameter - vp = AP_Var::find(key); - - if ((NULL != vp) && // exists - !isnan(packet.param_value) && // not nan - !isinf(packet.param_value)) { // not inf - - // add a small amount before casting parameter values - // from float to integer to avoid truncating to the - // next lower integer value. - float rounding_addition = 0.01; - - // fetch the variable type ID - var_type = vp->meta_type_id(); - - // handle variables with standard type IDs - if (var_type == AP_Var::k_typeid_float) { - ((AP_Float *)vp)->set_and_save(packet.param_value); - Log_Write_Data(1, (float)((AP_Float *)vp)->get()); - - } else if (var_type == AP_Var::k_typeid_float16) { - ((AP_Float16 *)vp)->set_and_save(packet.param_value); - Log_Write_Data(2, (float)((AP_Float *)vp)->get()); - - } else if (var_type == AP_Var::k_typeid_int32) { - if (packet.param_value < 0) rounding_addition = -rounding_addition; - ((AP_Int32 *)vp)->set_and_save(packet.param_value + rounding_addition); - Log_Write_Data(3, (int32_t)((AP_Float *)vp)->get()); - - } else if (var_type == AP_Var::k_typeid_int16) { - if (packet.param_value < 0) rounding_addition = -rounding_addition; - ((AP_Int16 *)vp)->set_and_save(packet.param_value + rounding_addition); - Log_Write_Data(4, (int32_t)((AP_Float *)vp)->get()); - - } else if (var_type == AP_Var::k_typeid_int8) { - if (packet.param_value < 0) rounding_addition = -rounding_addition; - ((AP_Int8 *)vp)->set_and_save(packet.param_value + rounding_addition); - Log_Write_Data(5, (int32_t)((AP_Float *)vp)->get()); - - } else { - // we don't support mavlink set on this parameter - break; - } - - // Report back the new value if we accepted the change - // we send the value we actually set, which could be - // different from the value sent, in case someone sent - // a fractional value to an integer type - mavlink_msg_param_value_send( - chan, - key, - vp->cast_to_float(), - mav_var_type(vp->meta_type_id()), - _count_parameters(), - -1); // XXX we don't actually know what its index is... - } - - break; - } // end case - - case MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE: - { - // allow override of RC channel values for HIL - // or for complete GCS control of switch position - // and RC PWM values. - if(msg->sysid != g.sysid_my_gcs) break; // Only accept control from our gcs - mavlink_rc_channels_override_t packet; - int16_t v[8]; - mavlink_msg_rc_channels_override_decode(msg, &packet); - - if (mavlink_check_target(packet.target_system, packet.target_component)) - break; - - v[0] = packet.chan1_raw; - v[1] = packet.chan2_raw; - v[2] = packet.chan3_raw; - v[3] = packet.chan4_raw; - v[4] = packet.chan5_raw; - v[5] = packet.chan6_raw; - v[6] = packet.chan7_raw; - v[7] = packet.chan8_raw; - //rc_override_active = APM_RC.setHIL(v); - rc_override_fs_timer = millis(); - break; - } - - case MAVLINK_MSG_ID_HEARTBEAT: - { - // We keep track of the last time we received a heartbeat from our GCS for failsafe purposes - if(msg->sysid != g.sysid_my_gcs) break; - rc_override_fs_timer = millis(); - break; - } - - #if HIL_MODE != HIL_MODE_DISABLED - // This is used both as a sensor and to pass the location - // in HIL_ATTITUDE mode. -#ifdef MAVLINK10 - case MAVLINK_MSG_ID_GPS_RAW_INT: - { - // decode - mavlink_gps_raw_int_t packet; - mavlink_msg_gps_raw_int_decode(msg, &packet); - - // set gps hil sensor - g_gps->setHIL(packet.time_usec/1000.0, - packet.lat*1.0e-7, packet.lon*1.0e-7, packet.alt*1.0e-3, - packet.vel*1.0e-2, packet.cog*1.0e-2, 0, 0); - break; - } -#else // MAVLINK10 - case MAVLINK_MSG_ID_GPS_RAW: - { - // decode - mavlink_gps_raw_t packet; - mavlink_msg_gps_raw_decode(msg, &packet); - - // set gps hil sensor - g_gps->setHIL(packet.usec / 1000.0, packet.lat, packet.lon, packet.alt, - packet.v, packet.hdg, 0, 0); - break; - } -#endif // MAVLINK10 - - // Is this resolved? - MAVLink protocol change..... - case MAVLINK_MSG_ID_VFR_HUD: - { - // decode - mavlink_vfr_hud_t packet; - mavlink_msg_vfr_hud_decode(msg, &packet); - - // set airspeed - //airspeed = 100 * packet.airspeed; - break; - } -#ifdef MAVLINK10 - case MAVLINK_MSG_ID_HIL_STATE: - { - mavlink_hil_state_t packet; - mavlink_msg_hil_state_decode(msg, &packet); - - float vel = sqrt((packet.vx * packet.vx) + (packet.vy * packet.vy)); - float cog = wrap_360(ToDeg(atan2(packet.vx, packet.vy)) * 100); - - // set gps hil sensor - g_gps->setHIL(packet.time_usec/1000.0, - packet.lat*1.0e-7, packet.lon*1.0e-7, packet.alt*1.0e-3, - vel*1.0e-2, cog*1.0e-2, 0, 0); - - #if HIL_MODE == HIL_MODE_SENSORS - - // rad/sec - Vector3f gyros; - gyros.x = (float)packet.xgyro / 1000.0; - gyros.y = (float)packet.ygyro / 1000.0; - gyros.z = (float)packet.zgyro / 1000.0; - // m/s/s - Vector3f accels; - accels.x = (float)packet.xacc / 1000.0; - accels.y = (float)packet.yacc / 1000.0; - accels.z = (float)packet.zacc / 1000.0; - - imu.set_gyro(gyros); - - imu.set_accel(accels); - - #else - - // set dcm hil sensor - dcm.setHil(packet.roll,packet.pitch,packet.yaw,packet.rollspeed, - packet.pitchspeed,packet.yawspeed); - - #endif - - break; - } -#endif // MAVLINK10 -#endif -#if HIL_MODE == HIL_MODE_ATTITUDE - case MAVLINK_MSG_ID_ATTITUDE: - { - // decode - mavlink_attitude_t packet; - mavlink_msg_attitude_decode(msg, &packet); - - // set dcm hil sensor - dcm.setHil(packet.roll, packet.pitch, packet.yaw, packet.rollspeed, - packet.pitchspeed, packet.yawspeed); - break; - } -#endif -#if HIL_MODE == HIL_MODE_SENSORS - - case MAVLINK_MSG_ID_RAW_IMU: - { - // decode - mavlink_raw_imu_t packet; - mavlink_msg_raw_imu_decode(msg, &packet); - - // set imu hil sensors - // TODO: check scaling for temp/absPress - float temp = 70; - float absPress = 1; - // Serial.printf_P(PSTR("accel:\t%d\t%d\t%d\n"), packet.xacc, packet.yacc, packet.zacc); - // Serial.printf_P(PSTR("gyro:\t%d\t%d\t%d\n"), packet.xgyro, packet.ygyro, packet.zgyro); - - // rad/sec - Vector3f gyros; - gyros.x = (float)packet.xgyro / 1000.0; - gyros.y = (float)packet.ygyro / 1000.0; - gyros.z = (float)packet.zgyro / 1000.0; - // m/s/s - Vector3f accels; - accels.x = (float)packet.xacc / 1000.0; - accels.y = (float)packet.yacc / 1000.0; - accels.z = (float)packet.zacc / 1000.0; - - imu.set_gyro(gyros); - - imu.set_accel(accels); - - compass.setHIL(packet.xmag, packet.ymag, packet.zmag); - break; - } - - case MAVLINK_MSG_ID_RAW_PRESSURE: - { - // decode - mavlink_raw_pressure_t packet; - mavlink_msg_raw_pressure_decode(msg, &packet); - - // set pressure hil sensor - // TODO: check scaling - float temp = 70; - barometer.setHIL(temp,packet.press_diff1 + 101325); - break; - } -#endif // HIL_MODE - -#if MOUNT == ENABLED - case MAVLINK_MSG_ID_MOUNT_CONFIGURE: - { - camera_mount.configure_msg(msg); - break; - } - - case MAVLINK_MSG_ID_MOUNT_CONTROL: - { - camera_mount.control_msg(msg); - break; - } - - case MAVLINK_MSG_ID_MOUNT_STATUS: - { - camera_mount.status_msg(msg); - break; - } -#endif // MOUNT == ENABLED - } // end switch -} // end handle mavlink - -uint16_t -GCS_MAVLINK::_count_parameters() -{ - // if we haven't cached the parameter count yet... - if (0 == _parameter_count) { - AP_Var *vp; - - vp = AP_Var::first(); - do { - // if a parameter responds to cast_to_float then we are going to be able to report it - if (!isnan(vp->cast_to_float())) { - _parameter_count++; - } - } while (NULL != (vp = vp->next())); - } - return _parameter_count; -} - -AP_Var * -GCS_MAVLINK::_find_parameter(uint16_t index) -{ - AP_Var *vp; - - vp = AP_Var::first(); - while (NULL != vp) { - - // if the parameter is reportable - if (!(isnan(vp->cast_to_float()))) { - // if we have counted down to the index we want - if (0 == index) { - // return the parameter - return vp; - } - // count off this parameter, as it is reportable but not - // the one we want - index--; - } - // and move to the next parameter - vp = vp->next(); - } - return NULL; -} - -/** -* @brief Send the next pending parameter, called from deferred message -* handling code -*/ -void -GCS_MAVLINK::queued_param_send() -{ - // Check to see if we are sending parameters - if (NULL == _queued_parameter) return; - - AP_Var *vp; - float value; - - // copy the current parameter and prepare to move to the next - vp = _queued_parameter; - _queued_parameter = _queued_parameter->next(); - - // if the parameter can be cast to float, report it here and break out of the loop - value = vp->cast_to_float(); - if (!isnan(value)) { - char param_name[ONBOARD_PARAM_NAME_LENGTH]; // / XXX HACK - vp->copy_name(param_name, sizeof(param_name)); - - mavlink_msg_param_value_send( - chan, - param_name, - value, - mav_var_type(vp->meta_type_id()), - _queued_parameter_count, - _queued_parameter_index); - - _queued_parameter_index++; - } -} - -/** -* @brief Send the next pending waypoint, called from deferred message -* handling code -*/ -void -GCS_MAVLINK::queued_waypoint_send() -{ - if (waypoint_receiving && - waypoint_request_i < (unsigned)g.command_total) { - mavlink_msg_waypoint_request_send( - chan, - waypoint_dest_sysid, - waypoint_dest_compid, - waypoint_request_i); - } -} - -/* - a delay() callback that processes MAVLink packets. We set this as the - callback in long running library initialisation routines to allow - MAVLink to process packets while waiting for the initialisation to - complete -*/ -static void mavlink_delay(unsigned long t) -{ - uint32_t tstart; - static uint32_t last_1hz, last_50hz; - - if (in_mavlink_delay) { - // this should never happen, but let's not tempt fate by - // letting the stack grow too much - delay(t); - return; - } - - in_mavlink_delay = true; - - tstart = millis(); - do { - uint32_t tnow = millis(); - if (tnow - last_1hz > 1000) { - last_1hz = tnow; - gcs_send_message(MSG_HEARTBEAT); - gcs_send_message(MSG_EXTENDED_STATUS1); - } - if (tnow - last_50hz > 20) { - last_50hz = tnow; - gcs_update(); - } - delay(1); - } while (millis() - tstart < t); - - in_mavlink_delay = false; -} - -/* - send a message on both GCS links - */ -static void gcs_send_message(enum ap_message id) -{ - gcs0.send_message(id); - gcs3.send_message(id); -} - -/* - send data streams in the given rate range on both links - */ -static void gcs_data_stream_send(uint16_t freqMin, uint16_t freqMax) -{ - gcs0.data_stream_send(freqMin, freqMax); - gcs3.data_stream_send(freqMin, freqMax); -} - -/* - look for incoming commands on the GCS links - */ -static void gcs_update(void) -{ - gcs0.update(); - gcs3.update(); -} - -static void gcs_send_text(gcs_severity severity, const char *str) -{ - gcs0.send_text(severity, str); - gcs3.send_text(severity, str); -} - -static void gcs_send_text_P(gcs_severity severity, const prog_char_t *str) -{ - gcs0.send_text(severity, str); - gcs3.send_text(severity, str); -} - -/* - send a low priority formatted message to the GCS - only one fits in the queue, so if you send more than one before the - last one gets into the serial buffer then the old one will be lost - */ -static void gcs_send_text_fmt(const prog_char_t *fmt, ...) -{ - char fmtstr[40]; - va_list ap; - uint8_t i; - for (i = 0; i < sizeof(fmtstr)-1; i++) { - fmtstr[i] = pgm_read_byte((const prog_char *)(fmt++)); - if (fmtstr[i] == 0) break; - } - fmtstr[i] = 0; - pending_status.severity = (uint8_t)SEVERITY_LOW; - va_start(ap, fmt); - vsnprintf((char *)pending_status.text, sizeof(pending_status.text), fmtstr, ap); - va_end(ap); - mavlink_send_message(MAVLINK_COMM_0, MSG_STATUSTEXT, 0); - mavlink_send_message(MAVLINK_COMM_1, MSG_STATUSTEXT, 0); -} From ca34d7b7c2b88cb536f964448ff556f5047bee02 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 28 Feb 2012 20:12:25 -0800 Subject: [PATCH 093/122] Added test for stab_d gain scheduling. --- ArduCopter/test.pde | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/ArduCopter/test.pde b/ArduCopter/test.pde index 74037faf08..766b23205d 100644 --- a/ArduCopter/test.pde +++ b/ArduCopter/test.pde @@ -16,6 +16,7 @@ static int8_t test_imu(uint8_t argc, const Menu::arg *argv); //static int8_t test_dcm_eulers(uint8_t argc, const Menu::arg *argv); //static int8_t test_dcm(uint8_t argc, const Menu::arg *argv); //static int8_t test_omega(uint8_t argc, const Menu::arg *argv); +//static int8_t test_stab_d(uint8_t argc, const Menu::arg *argv); static int8_t test_battery(uint8_t argc, const Menu::arg *argv); //static int8_t test_boost(uint8_t argc, const Menu::arg *argv); //static int8_t test_wp_nav(uint8_t argc, const Menu::arg *argv); @@ -65,6 +66,7 @@ const struct Menu::command test_menu_commands[] PROGMEM = { {"imu", test_imu}, // {"dcm", test_dcm_eulers}, //{"omega", test_omega}, +// {"stab_d", test_stab_d}, {"battery", test_battery}, {"tune", test_tuning}, //{"tri", test_tri}, @@ -592,6 +594,42 @@ test_gps(uint8_t argc, const Menu::arg *argv) return 0; } +// used to test the gain scheduler for Stab_D +/* +static int8_t +test_stab_d(uint8_t argc, const Menu::arg *argv) +{ + int16_t i = 0; + g.stabilize_d = 1; + + g.stabilize_d_schedule = 1 + for (i = -4600; i < 4600; i+=10) { + new_radio_frame = true; + g.rc_1.control_in = i; + g.rc_2.control_in = i; + update_roll_pitch_mode(); + Serial.printf("rin:%d, d:%1.6f \tpin:%d, d:%1.6f\n",g.rc_1.control_in, roll_scale_d, g.rc_2.control_in, pitch_scale_d); + } + g.stabilize_d_schedule = .5 + for (i = -4600; i < 4600; i+=10) { + new_radio_frame = true; + g.rc_1.control_in = i; + g.rc_2.control_in = i; + update_roll_pitch_mode(); + Serial.printf("rin:%d, d:%1.6f \tpin:%d, d:%1.6f\n",g.rc_1.control_in, roll_scale_d, g.rc_2.control_in, pitch_scale_d); + } + + g.stabilize_d_schedule = 0 + for (i = -4600; i < 4600; i+=10) { + new_radio_frame = true; + g.rc_1.control_in = i; + g.rc_2.control_in = i; + update_roll_pitch_mode(); + Serial.printf("rin:%d, d:%1.6f \tpin:%d, d:%1.6f\n",g.rc_1.control_in, roll_scale_d, g.rc_2.control_in, pitch_scale_d); + } + +}*/ + /* //static int8_t //test_dcm(uint8_t argc, const Menu::arg *argv) From efdf6ee79ffaadd6994d50d8fdc414c08559a7aa Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 28 Feb 2012 20:13:10 -0800 Subject: [PATCH 094/122] added option for stab_d gain scheduling --- ArduCopter/Parameters.pde | 1 + 1 file changed, 1 insertion(+) diff --git a/ArduCopter/Parameters.pde b/ArduCopter/Parameters.pde index a96133c922..dbf0bd41fb 100644 --- a/ArduCopter/Parameters.pde +++ b/ArduCopter/Parameters.pde @@ -110,6 +110,7 @@ static const AP_Param::Info var_info[] PROGMEM = { GSCALAR(camera_pitch_gain, "CAM_P_G"), GSCALAR(camera_roll_gain, "CAM_R_G"), GSCALAR(stabilize_d, "STAB_D"), + GSCALAR(stabilize_d_schedule, "STAB_D_S"), GSCALAR(acro_p, "ACRO_P"), GSCALAR(axis_lock_p, "AXIS_P"), GSCALAR(axis_enabled, "AXIS_ENABLE"), From b76c4ecb228a79a93cd7125f6e9d34f5a979f051 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 28 Feb 2012 20:13:36 -0800 Subject: [PATCH 095/122] added stab_d gain scheduling --- ArduCopter/Parameters.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ArduCopter/Parameters.h b/ArduCopter/Parameters.h index ea7f91f255..2692e44ac7 100644 --- a/ArduCopter/Parameters.h +++ b/ArduCopter/Parameters.h @@ -171,6 +171,7 @@ public: // // 220: PI/D Controllers // + k_param_stabilize_d_schedule = 219, k_param_stabilize_d = 220, k_param_acro_p, k_param_axis_lock_p, @@ -296,6 +297,7 @@ public: AP_Float camera_pitch_gain; AP_Float camera_roll_gain; AP_Float stabilize_d; + AP_Float stabilize_d_schedule; // PI/D controllers AP_Float acro_p; @@ -402,6 +404,7 @@ public: camera_pitch_gain (CAM_PITCH_GAIN), camera_roll_gain (CAM_ROLL_GAIN), stabilize_d (STABILIZE_D), + stabilize_d_schedule (STABILIZE_D_SCHEDULE), acro_p (ACRO_P), axis_lock_p (AXIS_LOCK_P), From ceef8070ac99a9cba7550e981b8b2f0df0212db9 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 28 Feb 2012 20:14:49 -0800 Subject: [PATCH 096/122] added stab_d gain scheduling --- ArduCopter/ArduCopter.pde | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index 6cd32e4a4d..d7b95c700e 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -400,6 +400,8 @@ static boolean motor_auto_armed; static Vector3f omega; // This is used to hold radio tuning values for in-flight CH6 tuning float tuning_value; +// This will keep track of the percent of roll or pitch the user is applying +float roll_scale_d, pitch_scale_d; //////////////////////////////////////////////////////////////////////////////// // LED output @@ -1487,8 +1489,20 @@ void update_roll_pitch_mode(void) //reset_stability_I(); } - // clear new radio frame info - new_radio_frame = false; + if(new_radio_frame){ + // clear new radio frame info + new_radio_frame = false; + + // These values can be used to scale the PID gains + // This allows for a simple gain scheduling implementation + roll_scale_d = g.stabilize_d_schedule * (float)abs(g.rc_1.control_in); + roll_scale_d = (1 - (roll_scale_d / 4500.0)); + roll_scale_d = constrain(roll_scale_d, 0, 1) * g.stabilize_d; + + pitch_scale_d = g.stabilize_d_schedule * (float)abs(g.rc_2.control_in); + pitch_scale_d = (1 - (pitch_scale_d / 4500.0)); + pitch_scale_d = constrain(pitch_scale_d, 0, 1) * g.stabilize_d; + } } // new radio frame is used to make sure we only call this at 50hz From a3879568148a309a7ec30550932fefafef327c3f Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 28 Feb 2012 20:15:03 -0800 Subject: [PATCH 097/122] added stab_d gain scheduling --- ArduCopter/Attitude.pde | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ArduCopter/Attitude.pde b/ArduCopter/Attitude.pde index 9d973220f0..a986a3ccaa 100644 --- a/ArduCopter/Attitude.pde +++ b/ArduCopter/Attitude.pde @@ -131,7 +131,7 @@ get_rate_roll(int32_t target_rate) output = g.pid_rate_roll.get_pid(target_rate - current_rate, G_Dt); // Dampening output with D term - rate_d_dampener = rate_d * g.stabilize_d; + rate_d_dampener = rate_d * roll_scale_d; rate_d_dampener = constrain(rate_d_dampener, -400, 400); output -= rate_d_dampener; @@ -161,7 +161,7 @@ get_rate_pitch(int32_t target_rate) output = g.pid_rate_pitch.get_pid(target_rate - current_rate, G_Dt); // Dampening output with D term - rate_d_dampener = rate_d * g.stabilize_d; + rate_d_dampener = rate_d * pitch_scale_d; rate_d_dampener = constrain(rate_d_dampener, -400, 400); output -= rate_d_dampener; From 7c09e4a5e6a0cc75d15f2592a34649924116e894 Mon Sep 17 00:00:00 2001 From: Jason Short Date: Tue, 28 Feb 2012 20:15:18 -0800 Subject: [PATCH 098/122] added stab_d gain scheduling - off by default --- ArduCopter/config.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 32cdd18337..3583645efd 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -644,7 +644,11 @@ #ifndef STABILIZE_D -# define STABILIZE_D 0.05 +# define STABILIZE_D 0.1 +#endif + +#ifndef STABILIZE_D_SCHEDULE +# define STABILIZE_D_SCHEDULE 0.0 #endif ////////////////////////////////////////////////////////////////////////////// From a5e3f8d32491318d62ffad158ff3c0e2ea98f862 Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Wed, 29 Feb 2012 21:19:54 +0800 Subject: [PATCH 099/122] APM Planner 1.1.44 mod antenna tracker code add extra ch 6 options cleanup message dialogs better fix auto fill ch6 and ch7 mode options add progress to upload and dl wp's fix disconnect bug on mono --- Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs | 26 +- .../Antenna/Tracker.Designer.cs | 126 +++---- Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs | 29 +- .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 1 + Tools/ArdupilotMegaPlanner/Common.cs | 18 +- Tools/ArdupilotMegaPlanner/CurrentState.cs | 20 +- .../GCSViews/Configuration.cs | 52 +-- .../GCSViews/FlightPlanner.cs | 308 ++++++++++-------- Tools/ArdupilotMegaPlanner/MAVLink.cs | 2 +- Tools/ArdupilotMegaPlanner/MainV2.cs | 131 ++++---- Tools/ArdupilotMegaPlanner/Program.cs | 3 + .../Properties/AssemblyInfo.cs | 2 +- Tools/ArdupilotMegaPlanner/Speech.cs | 70 ++++ .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 964096 -> 968192 bytes 14 files changed, 446 insertions(+), 342 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/Speech.cs diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs index 172853c1fe..bccd3695db 100644 --- a/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs +++ b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs @@ -65,7 +65,7 @@ namespace ArdupilotMega.Antenna ComPort.Write(buffer, 0, buffer.Length); // accel - target = 3; + target = 5; buffer = new byte[] { 0x89, PanAddress, (byte)(target & 0x7F), (byte)((target >> 7) & 0x7F) }; ComPort.Write(buffer, 0, buffer.Length); @@ -84,19 +84,31 @@ namespace ArdupilotMega.Antenna return input; } + double wrap_range(double input,double range) + { + if (input > range) + return input - 360; + if (input < -range) + return input + 360; + return input; + } + public bool Pan(double Angle) { - // using a byte so it will autowrap - double range = Math.Abs(PanStartRange - PanEndRange); - double centerrange = (range / 2) - TrimPan; + // get relative center based on tracking center + double rangeleft = PanStartRange - TrimPan; + double rangeright = PanEndRange - TrimPan; + double centerpos = 127; + // get the output angle the tracker needs to point and constrain the output to the allowed options short PointAtAngle = Constrain(wrap_180(Angle - TrimPan), PanStartRange, PanEndRange); - byte target = (byte)((((PointAtAngle / range) * 2.0) * 127 + 127) * _panreverse); + // conver the angle into a 0-255 value + byte target = (byte)((((PointAtAngle / range) * 2.0) * 127 + centerpos) * _panreverse); - Console.WriteLine("P " + Angle + " " + target + " " + PointAtAngle); + //Console.WriteLine("P " + Angle + " " + target + " " + PointAtAngle); var buffer = new byte[] { 0xff,PanAddress,target}; ComPort.Write(buffer, 0, buffer.Length); @@ -108,7 +120,7 @@ namespace ArdupilotMega.Antenna { double range = Math.Abs(TiltStartRange - TiltEndRange); - short PointAtAngle = Constrain((Angle - TrimTilt), TiltStartRange - TrimTilt, TiltEndRange - TrimTilt); + short PointAtAngle = Constrain((Angle - TrimTilt), TiltStartRange, TiltEndRange); byte target = (byte)((((PointAtAngle / range ) * 2) * 127 + 127) * _tiltreverse); diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs index b81d0f868e..361db2dea5 100644 --- a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs +++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs @@ -35,17 +35,15 @@ this.CMB_serialport = new System.Windows.Forms.ComboBox(); this.BUT_connect = new ArdupilotMega.MyButton(); this.TRK_pantrim = new System.Windows.Forms.TrackBar(); - this.TXT_panstart = new System.Windows.Forms.TextBox(); - this.TXT_panstop = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); + this.TXT_panrange = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label(); - this.label7 = new System.Windows.Forms.Label(); - this.TXT_tiltstop = new System.Windows.Forms.TextBox(); - this.TXT_tiltstart = new System.Windows.Forms.TextBox(); + this.TXT_tiltrange = new System.Windows.Forms.TextBox(); this.TRK_tilttrim = new System.Windows.Forms.TrackBar(); + this.label2 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.TRK_pantrim)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.TRK_tilttrim)).BeginInit(); this.SuspendLayout(); @@ -109,7 +107,7 @@ // // TRK_pantrim // - this.TRK_pantrim.Location = new System.Drawing.Point(83, 65); + this.TRK_pantrim.Location = new System.Drawing.Point(153, 65); this.TRK_pantrim.Maximum = 180; this.TRK_pantrim.Minimum = -180; this.TRK_pantrim.Name = "TRK_pantrim"; @@ -117,35 +115,18 @@ this.TRK_pantrim.TabIndex = 6; this.TRK_pantrim.Scroll += new System.EventHandler(this.TRK_pantrim_Scroll); // - // TXT_panstart + // TXT_panrange // - this.TXT_panstart.Location = new System.Drawing.Point(13, 65); - this.TXT_panstart.Name = "TXT_panstart"; - this.TXT_panstart.Size = new System.Drawing.Size(64, 20); - this.TXT_panstart.TabIndex = 7; - this.TXT_panstart.Text = "-90"; - // - // TXT_panstop - // - this.TXT_panstop.Location = new System.Drawing.Point(464, 65); - this.TXT_panstop.Name = "TXT_panstop"; - this.TXT_panstop.Size = new System.Drawing.Size(64, 20); - this.TXT_panstop.TabIndex = 8; - this.TXT_panstop.Text = "90"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(461, 49); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(32, 13); - this.label2.TabIndex = 9; - this.label2.Text = "Right"; + this.TXT_panrange.Location = new System.Drawing.Point(83, 65); + this.TXT_panrange.Name = "TXT_panrange"; + this.TXT_panrange.Size = new System.Drawing.Size(64, 20); + this.TXT_panrange.TabIndex = 7; + this.TXT_panrange.Text = "180"; // // label3 // this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(261, 49); + this.label3.Location = new System.Drawing.Point(331, 49); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(38, 13); this.label3.TabIndex = 10; @@ -154,58 +135,41 @@ // label4 // this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(13, 49); + this.label4.Location = new System.Drawing.Point(83, 49); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(25, 13); + this.label4.Size = new System.Drawing.Size(56, 13); this.label4.TabIndex = 11; - this.label4.Text = "Left"; + this.label4.Text = "Range -/+"; // // label5 // this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(13, 125); + this.label5.Location = new System.Drawing.Point(83, 125); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(35, 13); + this.label5.Size = new System.Drawing.Size(56, 13); this.label5.TabIndex = 17; - this.label5.Text = "Down"; + this.label5.Text = "Range -/+"; // // label6 // this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(261, 125); + this.label6.Location = new System.Drawing.Point(331, 125); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(38, 13); this.label6.TabIndex = 16; this.label6.Text = "Center"; // - // label7 + // TXT_tiltrange // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(461, 125); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(21, 13); - this.label7.TabIndex = 15; - this.label7.Text = "Up"; - // - // TXT_tiltstop - // - this.TXT_tiltstop.Location = new System.Drawing.Point(464, 141); - this.TXT_tiltstop.Name = "TXT_tiltstop"; - this.TXT_tiltstop.Size = new System.Drawing.Size(64, 20); - this.TXT_tiltstop.TabIndex = 14; - this.TXT_tiltstop.Text = "90"; - // - // TXT_tiltstart - // - this.TXT_tiltstart.Location = new System.Drawing.Point(13, 141); - this.TXT_tiltstart.Name = "TXT_tiltstart"; - this.TXT_tiltstart.Size = new System.Drawing.Size(64, 20); - this.TXT_tiltstart.TabIndex = 13; - this.TXT_tiltstart.Text = "0"; + this.TXT_tiltrange.Location = new System.Drawing.Point(83, 141); + this.TXT_tiltrange.Name = "TXT_tiltrange"; + this.TXT_tiltrange.Size = new System.Drawing.Size(64, 20); + this.TXT_tiltrange.TabIndex = 13; + this.TXT_tiltrange.Text = "90"; // // TRK_tilttrim // - this.TRK_tilttrim.Location = new System.Drawing.Point(83, 141); + this.TRK_tilttrim.Location = new System.Drawing.Point(153, 141); this.TRK_tilttrim.Maximum = 90; this.TRK_tilttrim.Minimum = -90; this.TRK_tilttrim.Name = "TRK_tilttrim"; @@ -214,22 +178,38 @@ this.TRK_tilttrim.Value = 45; this.TRK_tilttrim.Scroll += new System.EventHandler(this.TRK_tilttrim_Scroll); // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(13, 68); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(26, 13); + this.label2.TabIndex = 18; + this.label2.Text = "Pan"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(13, 144); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(21, 13); + this.label7.TabIndex = 19; + this.label7.Text = "Tilt"; + // // Tracker // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(569, 195); + this.Controls.Add(this.label7); + this.Controls.Add(this.label2); this.Controls.Add(this.label5); this.Controls.Add(this.label6); - this.Controls.Add(this.label7); - this.Controls.Add(this.TXT_tiltstop); - this.Controls.Add(this.TXT_tiltstart); + this.Controls.Add(this.TXT_tiltrange); this.Controls.Add(this.TRK_tilttrim); this.Controls.Add(this.label4); this.Controls.Add(this.label3); - this.Controls.Add(this.label2); - this.Controls.Add(this.TXT_panstop); - this.Controls.Add(this.TXT_panstart); + this.Controls.Add(this.TXT_panrange); this.Controls.Add(this.TRK_pantrim); this.Controls.Add(this.CMB_baudrate); this.Controls.Add(this.BUT_connect); @@ -254,16 +234,14 @@ private MyButton BUT_connect; private System.Windows.Forms.ComboBox CMB_serialport; private System.Windows.Forms.TrackBar TRK_pantrim; - private System.Windows.Forms.TextBox TXT_panstart; - private System.Windows.Forms.TextBox TXT_panstop; - private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox TXT_panrange; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label7; - private System.Windows.Forms.TextBox TXT_tiltstop; - private System.Windows.Forms.TextBox TXT_tiltstart; + private System.Windows.Forms.TextBox TXT_tiltrange; private System.Windows.Forms.TrackBar TRK_tilttrim; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label7; } } \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs index 5f5635c41e..ad65cecda1 100644 --- a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs +++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs @@ -39,6 +39,11 @@ namespace ArdupilotMega.Antenna return; } + if (tracker != null && tracker.ComPort != null && tracker.ComPort.IsOpen) + { + tracker.ComPort.Close(); + } + tracker = new ArdupilotMega.Antenna.Maestro(); try @@ -53,12 +58,12 @@ namespace ArdupilotMega.Antenna try { - tracker.PanStartRange = int.Parse(TXT_panstart.Text); - tracker.PanEndRange = int.Parse(TXT_panstop.Text); + tracker.PanStartRange = int.Parse(TXT_panrange.Text) / 2 * -1; + tracker.PanEndRange = int.Parse(TXT_panrange.Text) / 2; tracker.TrimPan = TRK_pantrim.Value; - tracker.TiltStartRange = int.Parse(TXT_tiltstart.Text); - tracker.TiltEndRange = int.Parse(TXT_tiltstop.Text); + tracker.TiltStartRange = int.Parse(TXT_tiltrange.Text) / 2 * -1; + tracker.TiltEndRange = int.Parse(TXT_tiltrange.Text) / 2; tracker.TrimTilt = TRK_tilttrim.Value; } @@ -75,21 +80,7 @@ namespace ArdupilotMega.Antenna IsBackground = true, Name = "Antenna Tracker" }; - t12.Start(); - - /* - for (int a = ting.PanStartRange; a < ting.PanEndRange; a++) - { - System.Threading.Thread.Sleep(100); - ting.Pan(a); - } - - for (int a = ting.TiltStartRange; a < ting.TiltEndRange; a++) - { - System.Threading.Thread.Sleep(100); - ting.Tilt(a); - } - */ + t12.Start(); } } } diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 46560d91e3..5806ac70d5 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -442,6 +442,7 @@ Setup.cs + Form diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs index ed1c1a99c9..2e16ee37a8 100644 --- a/Tools/ArdupilotMegaPlanner/Common.cs +++ b/Tools/ArdupilotMegaPlanner/Common.cs @@ -379,7 +379,9 @@ namespace ArdupilotMega CH6_OPTFLOW_KI = 18, CH6_OPTFLOW_KD = 19, - CH6_NAV_I = 20 + CH6_NAV_I = 20, + + CH6_LOITER_RATE_P = 22 } @@ -706,7 +708,11 @@ namespace ArdupilotMega MainV2.fixtheme(form); - return form.ShowDialog(); + DialogResult dialogResult =form.ShowDialog(); + + form.Dispose(); + + return dialogResult; } static void chk_CheckStateChanged(object sender, EventArgs e) @@ -756,11 +762,17 @@ namespace ArdupilotMega MainV2.fixtheme(form); - DialogResult dialogResult = form.ShowDialog(); + DialogResult dialogResult = DialogResult.Cancel; + + dialogResult = form.ShowDialog(); + if (dialogResult == DialogResult.OK) { value = textBox.Text; } + + form.Dispose(); + return dialogResult; } diff --git a/Tools/ArdupilotMegaPlanner/CurrentState.cs b/Tools/ArdupilotMegaPlanner/CurrentState.cs index 9f1c63087f..2ac2a6abe6 100644 --- a/Tools/ArdupilotMegaPlanner/CurrentState.cs +++ b/Tools/ArdupilotMegaPlanner/CurrentState.cs @@ -197,7 +197,7 @@ namespace ArdupilotMega public float DistToMAV { get - { + { // shrinking factor for longitude going to poles direction double rads = Math.Abs(HomeLocation.Lat) * 0.0174532925; double scaleLongDown = Math.Cos(rads); @@ -227,7 +227,7 @@ namespace ArdupilotMega public float AZToMAV { get - { + { // shrinking factor for longitude going to poles direction double rads = Math.Abs(HomeLocation.Lat) * 0.0174532925; double scaleLongDown = Math.Cos(rads); @@ -317,11 +317,11 @@ namespace ArdupilotMega try { - while (messages.Count > 5) - { - messages.RemoveAt(0); - } - messages.Add(logdata + "\n"); + while (messages.Count > 5) + { + messages.RemoveAt(0); + } + messages.Add(logdata + "\n"); } catch { } @@ -581,7 +581,7 @@ namespace ArdupilotMega packetdropremote = sysstatus.packet_drop; - if (oldmode != mode && MainV2.speechenable && MainV2.getConfig("speechmodeenabled") == "True") + if (oldmode != mode && MainV2.speechenable && MainV2.talk != null && MainV2.getConfig("speechmodeenabled") == "True") { MainV2.talk.SpeakAsync(Common.speechConversion(MainV2.getConfig("speechmode"))); } @@ -732,7 +732,7 @@ namespace ArdupilotMega wpno = wpcur.seq; - if (oldwp != wpno && MainV2.speechenable && MainV2.getConfig("speechwaypointenabled") == "True") + if (oldwp != wpno && MainV2.speechenable && MainV2.talk != null && MainV2.getConfig("speechwaypointenabled") == "True") { MainV2.talk.SpeakAsync(Common.speechConversion(MainV2.getConfig("speechwaypoint"))); } @@ -901,4 +901,4 @@ namespace ArdupilotMega //low pass the outputs for better results! } } -} +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs index ff0a1614a0..6ef519fefa 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs @@ -95,6 +95,10 @@ namespace ArdupilotMega.GCSViews if (tooltips.Count == 0) readToolTips(); + // ensure the fields are populated before setting them + CH7_OPT.DataSource = Enum.GetNames(typeof(Common.ac2ch7modes)); + TUNE.DataSource = Enum.GetNames(typeof(Common.ac2ch6modes)); + // prefill all fields param = MainV2.comPort.param; processToScreen(); @@ -165,9 +169,6 @@ namespace ArdupilotMega.GCSViews CMB_distunits.DataSource = Enum.GetNames(typeof(Common.distances)); CMB_speedunits.DataSource = Enum.GetNames(typeof(Common.speeds)); - CH7_OPT.DataSource = Enum.GetNames(typeof(Common.ac2ch7modes)); - TUNE.DataSource = Enum.GetNames(typeof(Common.ac2ch6modes)); - if (MainV2.config["distunits"] != null) CMB_distunits.Text = MainV2.config["distunits"].ToString(); if (MainV2.config["speedunits"] != null) @@ -184,13 +185,13 @@ namespace ArdupilotMega.GCSViews CMB_language.DisplayMember = "DisplayName"; CMB_language.DataSource = languages; - ci = Thread.CurrentThread.CurrentUICulture; + ci = Thread.CurrentThread.CurrentUICulture; for (int i = 0; i < languages.Count; i++) - { + { if (ci.IsChildOf(languages[i])) - { - CMB_language.SelectedIndex = i; - break; + { + CMB_language.SelectedIndex = i; + break; } } CMB_language.SelectedIndexChanged += CMB_language_SelectedIndexChanged; @@ -555,23 +556,23 @@ namespace ArdupilotMega.GCSViews if (text.Length > 0) { if (text[0].GetType() == typeof(NumericUpDown)) - { - decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((NumericUpDown)text[0]).Value = option; - ((NumericUpDown)text[0]).BackColor = Color.Green; - } + { + decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((NumericUpDown)text[0]).Value = option; + ((NumericUpDown)text[0]).BackColor = Color.Green; + } else if (text[0].GetType() == typeof(ComboBox)) - { - int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((ComboBox)text[0]).SelectedIndex = option; - ((ComboBox)text[0]).BackColor = Color.Green; - } + { + int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((ComboBox)text[0]).SelectedIndex = option; + ((ComboBox)text[0]).BackColor = Color.Green; + } } } catch { ((Control)text[0]).BackColor = Color.Red; } Params.Focus(); - } + } private void BUT_load_Click(object sender, EventArgs e) { @@ -599,12 +600,12 @@ namespace ArdupilotMega.GCSViews continue; if (index2 != -1) - line = line.Replace(',','.'); + line = line.Replace(',', '.'); string name = line.Substring(0, index); float value = float.Parse(line.Substring(index + 1), new System.Globalization.CultureInfo("en-US")); - MAVLink.modifyParamForDisplay(true,name,ref value); + MAVLink.modifyParamForDisplay(true, name, ref value); // set param table as well foreach (DataGridViewRow row in Params.Rows) @@ -815,9 +816,10 @@ namespace ArdupilotMega.GCSViews { DsError.ThrowExceptionForHR(hr); } - catch (Exception ex) { - MessageBox.Show("Can not add video source\n" + ex.ToString()); - return; + catch (Exception ex) + { + MessageBox.Show("Can not add video source\n" + ex.ToString()); + return; } // Find the stream config interface @@ -947,7 +949,7 @@ namespace ArdupilotMega.GCSViews - + } catch { MessageBox.Show("Error: getting param list"); } diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs index d6d4d55d5a..8a446a2516 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs @@ -1195,69 +1195,82 @@ namespace ArdupilotMega.GCSViews /// /// internal void BUT_read_Click(object sender, EventArgs e) + { + Controls.ProgressReporterDialogue frmProgressReporter = new Controls.ProgressReporterDialogue + { + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen, + Text = "Receiving WP's" + }; + + frmProgressReporter.DoWork += getWPs; + frmProgressReporter.UpdateProgressAndStatus(-1, "Receiving WP's"); + + MainV2.fixtheme(frmProgressReporter); + + frmProgressReporter.RunBackgroundOperationAsync(); + } + + void getWPs(object sender, Controls.ProgressWorkerEventArgs e) { List cmds = new List(); int error = 0; - System.Threading.Thread t12 = new System.Threading.Thread(delegate() + try { - try + MAVLink port = MainV2.comPort; + + if (!port.BaseStream.IsOpen) { - MAVLink port = MainV2.comPort; - - if (!port.BaseStream.IsOpen) - { - throw new Exception("Please Connect First!"); - } - - MainV2.givecomport = true; - - param = port.param; - - log.Info("Getting WP #"); - int cmdcount = port.getWPCount(); - - for (ushort a = 0; a < cmdcount; a++) - { - log.Info("Getting WP" + a); - cmds.Add(port.getWP(a)); - } - - port.setWPACK(); - - log.Info("Done"); + throw new Exception("Please Connect First!"); } - catch (Exception ex) { error = 1; MessageBox.Show("Error : " + ex.ToString()); } - try + + MainV2.givecomport = true; + + param = port.param; + + log.Info("Getting WP #"); + + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(0, "Getting WP count"); + + int cmdcount = port.getWPCount(); + + for (ushort a = 0; a < cmdcount; a++) { - this.BeginInvoke((System.Threading.ThreadStart)delegate() + log.Info("Getting WP" + a); + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(a * 100 / cmdcount, "Getting WP " + a); + cmds.Add(port.getWP(a)); + } + + port.setWPACK(); + + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(100, "Done"); + + log.Info("Done"); + } + catch (Exception ex) { error = 1; MessageBox.Show("Error : " + ex.ToString()); } + try + { + this.BeginInvoke((System.Threading.ThreadStart)delegate() + { + if (error == 0) { - if (error == 0) + try { - try - { - processToScreen(cmds); - } - catch (Exception exx) { log.Info(exx.ToString()); } + processToScreen(cmds); } + catch (Exception exx) { log.Info(exx.ToString()); } + } - MainV2.givecomport = false; + MainV2.givecomport = false; - BUT_read.Enabled = true; + BUT_read.Enabled = true; - writeKML(); + writeKML(); - }); - } - catch (Exception exx) { log.Info(exx.ToString()); } - }); - t12.IsBackground = true; - t12.Name = "Read wps"; - t12.Start(); - MainV2.threads.Add(t12); - - BUT_read.Enabled = false; + }); + } + catch (Exception exx) { log.Info(exx.ToString()); } } ///

@@ -1292,111 +1305,118 @@ namespace ArdupilotMega.GCSViews } } - System.Threading.Thread t12 = new System.Threading.Thread(delegate() + Controls.ProgressReporterDialogue frmProgressReporter = new Controls.ProgressReporterDialogue { - try - { - MAVLink port = MainV2.comPort; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen, + Text = "Sending WP's" + }; - if (!port.BaseStream.IsOpen) - { - throw new Exception("Please Connect First!"); - } + frmProgressReporter.DoWork += saveWPs; + frmProgressReporter.UpdateProgressAndStatus(-1, "Sending WP's"); - MainV2.givecomport = true; + MainV2.fixtheme(frmProgressReporter); - Locationwp home = new Locationwp(); + frmProgressReporter.RunBackgroundOperationAsync(); - try - { - home.id = (byte)MAVLink.MAV_CMD.WAYPOINT; - home.lat = (float.Parse(TXT_homelat.Text)); - home.lng = (float.Parse(TXT_homelng.Text)); - home.alt = (float.Parse(TXT_homealt.Text) / MainV2.cs.multiplierdist); // use saved home - } - catch { throw new Exception("Your home location is invalid"); } - - port.setWPTotal((ushort)(Commands.Rows.Count + 1)); // + home - - port.setWP(home, (ushort)0, MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL, 0); - - MAVLink.MAV_FRAME frame = MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL_RELATIVE_ALT; - - // process grid to memory eeprom - for (int a = 0; a < Commands.Rows.Count - 0; a++) - { - Locationwp temp = new Locationwp(); - temp.id = (byte)(int)Enum.Parse(typeof(MAVLink.MAV_CMD), Commands.Rows[a].Cells[Command.Index].Value.ToString(), false); - temp.p1 = float.Parse(Commands.Rows[a].Cells[Param1.Index].Value.ToString()); - if (temp.id < (byte)MAVLink.MAV_CMD.LAST || temp.id == (byte)MAVLink.MAV_CMD.DO_SET_HOME) - { - if (CHK_altmode.Checked) - { - frame = MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL; - } - else - { - frame = MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL_RELATIVE_ALT; - } - } - - temp.alt = (float)(double.Parse(Commands.Rows[a].Cells[Alt.Index].Value.ToString()) / MainV2.cs.multiplierdist); - temp.lat = (float)(double.Parse(Commands.Rows[a].Cells[Lat.Index].Value.ToString())); - temp.lng = (float)(double.Parse(Commands.Rows[a].Cells[Lon.Index].Value.ToString())); - - temp.p2 = (float)(double.Parse(Commands.Rows[a].Cells[Param2.Index].Value.ToString())); - temp.p3 = (float)(double.Parse(Commands.Rows[a].Cells[Param3.Index].Value.ToString())); - temp.p4 = (float)(double.Parse(Commands.Rows[a].Cells[Param4.Index].Value.ToString())); - - port.setWP(temp, (ushort)(a + 1), frame, 0); - } - - port.setWPACK(); - - - if (CHK_holdalt.Checked) - { - port.setParam("ALT_HOLD_RTL", int.Parse(TXT_DefaultAlt.Text) / MainV2.cs.multiplierdist); - } - else - { - port.setParam("ALT_HOLD_RTL", -1); - } - - port.setParam("WP_RADIUS", (byte)int.Parse(TXT_WPRad.Text) / MainV2.cs.multiplierdist); - - try - { - port.setParam("WP_LOITER_RAD", (byte)(int.Parse(TXT_loiterrad.Text) / MainV2.cs.multiplierdist)); - } - catch - { - port.setParam("LOITER_RAD", (byte)int.Parse(TXT_loiterrad.Text) / MainV2.cs.multiplierdist); - } - - } - catch (Exception ex) { MessageBox.Show("Error : " + ex.ToString()); } - - MainV2.givecomport = false; - - try - { - this.BeginInvoke((System.Threading.ThreadStart)delegate() - { - BUT_write.Enabled = true; - }); - } - catch { } - - }); - t12.IsBackground = true; - t12.Name = "Write wps"; - t12.Start(); - MainV2.threads.Add(t12); MainMap.Focus(); - BUT_write.Enabled = false; + } + + void saveWPs(object sender, Controls.ProgressWorkerEventArgs e) + { + try + { + MAVLink port = MainV2.comPort; + + if (!port.BaseStream.IsOpen) + { + throw new Exception("Please Connect First!"); + } + + MainV2.givecomport = true; + + Locationwp home = new Locationwp(); + + try + { + home.id = (byte)MAVLink.MAV_CMD.WAYPOINT; + home.lat = (float.Parse(TXT_homelat.Text)); + home.lng = (float.Parse(TXT_homelng.Text)); + home.alt = (float.Parse(TXT_homealt.Text) / MainV2.cs.multiplierdist); // use saved home + } + catch { throw new Exception("Your home location is invalid"); } + + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(0, "Set Total WPs "); + + port.setWPTotal((ushort)(Commands.Rows.Count + 1)); // + home + + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(0, "Set Home"); + + port.setWP(home, (ushort)0, MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL, 0); + + MAVLink.MAV_FRAME frame = MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL_RELATIVE_ALT; + + // process grid to memory eeprom + for (int a = 0; a < Commands.Rows.Count - 0; a++) + { + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(a * 100 / Commands.Rows.Count, "Setting WP " + a); + + Locationwp temp = new Locationwp(); + temp.id = (byte)(int)Enum.Parse(typeof(MAVLink.MAV_CMD), Commands.Rows[a].Cells[Command.Index].Value.ToString(), false); + temp.p1 = float.Parse(Commands.Rows[a].Cells[Param1.Index].Value.ToString()); + if (temp.id < (byte)MAVLink.MAV_CMD.LAST || temp.id == (byte)MAVLink.MAV_CMD.DO_SET_HOME) + { + if (CHK_altmode.Checked) + { + frame = MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL; + } + else + { + frame = MAVLink.MAV_FRAME.MAV_FRAME_GLOBAL_RELATIVE_ALT; + } + } + + temp.alt = (float)(double.Parse(Commands.Rows[a].Cells[Alt.Index].Value.ToString()) / MainV2.cs.multiplierdist); + temp.lat = (float)(double.Parse(Commands.Rows[a].Cells[Lat.Index].Value.ToString())); + temp.lng = (float)(double.Parse(Commands.Rows[a].Cells[Lon.Index].Value.ToString())); + + temp.p2 = (float)(double.Parse(Commands.Rows[a].Cells[Param2.Index].Value.ToString())); + temp.p3 = (float)(double.Parse(Commands.Rows[a].Cells[Param3.Index].Value.ToString())); + temp.p4 = (float)(double.Parse(Commands.Rows[a].Cells[Param4.Index].Value.ToString())); + + port.setWP(temp, (ushort)(a + 1), frame, 0); + } + + port.setWPACK(); + + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(95, "Setting Params"); + + if (CHK_holdalt.Checked) + { + port.setParam("ALT_HOLD_RTL", int.Parse(TXT_DefaultAlt.Text) / MainV2.cs.multiplierdist); + } + else + { + port.setParam("ALT_HOLD_RTL", -1); + } + + port.setParam("WP_RADIUS", (byte)int.Parse(TXT_WPRad.Text) / MainV2.cs.multiplierdist); + + try + { + port.setParam("WP_LOITER_RAD", (byte)(int.Parse(TXT_loiterrad.Text) / MainV2.cs.multiplierdist)); + } + catch + { + port.setParam("LOITER_RAD", (byte)int.Parse(TXT_loiterrad.Text) / MainV2.cs.multiplierdist); + } + + ((Controls.ProgressReporterDialogue)sender).UpdateProgressAndStatus(100, "Done."); + } + catch (Exception ex) { MainV2.givecomport = false; throw ex; } + + MainV2.givecomport = false; } /// diff --git a/Tools/ArdupilotMegaPlanner/MAVLink.cs b/Tools/ArdupilotMegaPlanner/MAVLink.cs index 0256f119ea..e5cb32bc07 100644 --- a/Tools/ArdupilotMegaPlanner/MAVLink.cs +++ b/Tools/ArdupilotMegaPlanner/MAVLink.cs @@ -308,7 +308,7 @@ namespace ArdupilotMega // Progress(-1, "Connect Failed\n" + e.Message); if (string.IsNullOrEmpty(progressWorkerEventArgs.ErrorMessage)) progressWorkerEventArgs.ErrorMessage = "Connect Failed"; - throw; + throw e; } //frmProgressReporter.Close(); MainV2.givecomport = false; diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index bbd83439a3..89af4071ef 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -27,7 +27,7 @@ namespace ArdupilotMega { public partial class MainV2 : Form { - private static readonly ILog log = + private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); [DllImport("user32.dll")] public static extern int FindWindow(string szClass, string szTitle); @@ -45,7 +45,7 @@ namespace ArdupilotMega public static bool MONO = false; public static bool speechenable = false; - public static SpeechSynthesizer talk = new SpeechSynthesizer(); + public static Speech talk = null; public static Joystick joystick = null; DateTime lastjoystick = DateTime.Now; @@ -105,6 +105,9 @@ namespace ArdupilotMega var t = Type.GetType("Mono.Runtime"); MONO = (t != null); + if (!MONO) + talk = new Speech(); + //talk.SpeakAsync("Welcome to APM Planner"); MyRenderer.currentpressed = MenuFlightData; @@ -261,7 +264,7 @@ namespace ArdupilotMega if (Directory.Exists("/dev/")) { if (Directory.Exists("/dev/serial/by-id/")) - devs = Directory.GetFiles("/dev/serial/by-id/","*usb*"); + devs = Directory.GetFiles("/dev/serial/by-id/", "*usb*"); devs = Directory.GetFiles("/dev/", "*ACM*"); devs = Directory.GetFiles("/dev/", "ttyUSB*"); } @@ -667,8 +670,12 @@ namespace ArdupilotMega { try { - if (talk != null) // cancel all pending speech - talk.SpeakAsyncCancelAll(); + try + { + if (talk != null) // cancel all pending speech + talk.SpeakAsyncCancelAll(); + } + catch { } if (comPort.logfile != null) comPort.logfile.Close(); @@ -676,7 +683,7 @@ namespace ArdupilotMega comPort.BaseStream.DtrEnable = false; comPort.Close(); } - catch { } + catch (Exception ex) { log.Debug(ex.ToString()); } this.MenuConnect.BackgroundImage = global::ArdupilotMega.Properties.Resources.connect; } @@ -789,6 +796,7 @@ namespace ArdupilotMega } } catch { } + log.Debug(ex.ToString()); //MessageBox.Show("Can not establish a connection\n\n" + ex.ToString()); return; } @@ -1281,15 +1289,15 @@ namespace ArdupilotMega t11.Start(); if (Debugger.IsAttached) - { + { log.Info("Skipping update test as it appears we are debugging"); } else { - try - { + try + { CheckForUpdate(); - } + } catch (Exception ex) { log.Error("Update check failed", ex); @@ -1466,12 +1474,19 @@ namespace ArdupilotMega pmplane.Geometry = model; - SharpKml.Dom.LookAt la = new SharpKml.Dom.LookAt() - { Altitude = loc.Altitude.Value, Latitude = loc.Latitude.Value, Longitude = loc.Longitude.Value, Tilt = 80, - Heading = cs.yaw, AltitudeMode = SharpKml.Dom.AltitudeMode.Absolute, Range = 50}; + SharpKml.Dom.LookAt la = new SharpKml.Dom.LookAt() + { + Altitude = loc.Altitude.Value, + Latitude = loc.Latitude.Value, + Longitude = loc.Longitude.Value, + Tilt = 80, + Heading = cs.yaw, + AltitudeMode = SharpKml.Dom.AltitudeMode.Absolute, + Range = 50 + }; kml.Viewpoint = la; - + kml.AddFeature(pmplane); SharpKml.Base.Serializer serializer = new SharpKml.Base.Serializer(); @@ -1645,7 +1660,7 @@ namespace ArdupilotMega } } if (loadinglabel != null) - UpdateLabel(loadinglabel,"Starting Updater"); + UpdateLabel(loadinglabel, "Starting Updater"); log.Info("Starting new process: " + process.StartInfo.FileName + " with " + process.StartInfo.Arguments); process.Start(); log.Info("Quitting existing process"); @@ -1677,81 +1692,81 @@ namespace ArdupilotMega private static void CheckForUpdate() { var baseurl = ConfigurationManager.AppSettings["UpdateLocation"]; - string path = Path.GetFileNameWithoutExtension(Application.ExecutablePath) + ".exe"; + string path = Path.GetFileName(Application.ExecutablePath); - // Create a request using a URL that can receive a post. + // Create a request using a URL that can receive a post. string requestUriString = baseurl + path; log.Debug("Checking for update at: " + requestUriString); var webRequest = WebRequest.Create(requestUriString); webRequest.Timeout = 5000; - // Set the Method property of the request to POST. + // Set the Method property of the request to POST. webRequest.Method = "HEAD"; ((HttpWebRequest)webRequest).IfModifiedSince = File.GetLastWriteTimeUtc(path); - // Get the response. + // Get the response. var response = webRequest.GetResponse(); - // Display the status. + // Display the status. log.Debug("Response status: " + ((HttpWebResponse)response).StatusDescription); - // Get the stream containing content returned by the server. - //dataStream = response.GetResponseStream(); - // Open the stream using a StreamReader for easy access. + // Get the stream containing content returned by the server. + //dataStream = response.GetResponseStream(); + // Open the stream using a StreamReader for easy access. bool shouldGetFile = false; - if (File.Exists(path)) - { + if (File.Exists(path)) + { var fi = new FileInfo(path); log.Info(response.Headers[HttpResponseHeader.ETag]); - if (fi.Length != response.ContentLength) // && response.Headers[HttpResponseHeader.ETag] != "0") - { + if (fi.Length != response.ContentLength) // && response.Headers[HttpResponseHeader.ETag] != "0") + { using (var sw = new StreamWriter(path + ".etag")) { sw.WriteLine(response.Headers[HttpResponseHeader.ETag]); sw.Close(); } shouldGetFile = true; - log.Info("Newer file found: " + path); - } + log.Info("Newer file found: " + path + " " + fi.Length + " vs " + response.ContentLength); + } + } + else + { + shouldGetFile = true; + log.Info("File does not exist: Getting " + path); + // get it + } + + response.Close(); + + if (shouldGetFile) + { + var dr = MessageBox.Show("Update Found\n\nDo you wish to update now?", "Update Now", MessageBoxButtons.YesNo); + if (dr == DialogResult.Yes) + { + DoUpdate(); } else { - shouldGetFile = true; - log.Info("Newer file found: " + path); - // get it - } - - response.Close(); - - if (shouldGetFile) - { - var dr = MessageBox.Show("Update Found\n\nDo you wish to update now?", "Update Now", MessageBoxButtons.YesNo); - if (dr == DialogResult.Yes) - { - DoUpdate(); - } - else - { - return; - } + return; } + } } public static void DoUpdate() { var loading = new Form - { + { - Width = 400, - Height = 150, - StartPosition = FormStartPosition.CenterScreen, - TopMost = true, - MinimizeBox = false, - MaximizeBox = false - }; + Width = 400, + Height = 150, + StartPosition = FormStartPosition.CenterScreen, + TopMost = true, + MinimizeBox = false, + MaximizeBox = false + }; var resources = new ComponentResourceManager(typeof(MainV2)); loading.Icon = ((Icon)(resources.GetObject("$this.Icon"))); @@ -1774,7 +1789,7 @@ namespace ArdupilotMega catch (Exception ex) { log.Error("Error in updatecheck", ex); - } + } //); //t12.Name = "Update check thread"; //t12.Start(); @@ -1836,7 +1851,7 @@ namespace ArdupilotMega } if (file.EndsWith("/")) { - update = updatecheck(loadinglabel, baseurl + file, subdir.Replace("/", "\\") + file) && update; + update = updatecheck(loadinglabel, baseurl + file, subdir.Replace('/', Path.DirectorySeparatorChar) + file) && update; continue; } if (loadinglabel != null) @@ -1919,7 +1934,7 @@ namespace ArdupilotMega log.Info(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); - + long contlen = bytes; byte[] buf1 = new byte[1024]; diff --git a/Tools/ArdupilotMegaPlanner/Program.cs b/Tools/ArdupilotMegaPlanner/Program.cs index a5e6e44931..4dd0cef969 100644 --- a/Tools/ArdupilotMegaPlanner/Program.cs +++ b/Tools/ArdupilotMegaPlanner/Program.cs @@ -57,6 +57,9 @@ namespace ArdupilotMega static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { Exception ex = e.Exception; + + log.Debug(ex.ToString()); + if (ex.Message == "The port is closed.") { MessageBox.Show("Serial connection has been lost"); return; diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index 30ef544ee3..d8f39f2103 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.1.43")] +[assembly: AssemblyFileVersion("1.1.44")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/Speech.cs b/Tools/ArdupilotMegaPlanner/Speech.cs new file mode 100644 index 0000000000..7e5c50ba87 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Speech.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Speech.Synthesis; + +namespace ArdupilotMega +{ + public class Speech + { + SpeechSynthesizer _speechwindows; + System.Diagnostics.Process _speechlinux; + + bool MONO = false; + + public SynthesizerState State { + get { + if (MONO) + { + return SynthesizerState.Ready; + } + else + { + return _speechwindows.State; + } + } + private set { } + } + + public Speech() + { + var t = Type.GetType("Mono.Runtime"); + MONO = (t != null); + + if (MONO) + { + _speechlinux = new System.Diagnostics.Process(); + _speechlinux.StartInfo.FileName = "festival"; + } + else + { + _speechwindows = new SpeechSynthesizer(); + } + } + + public void SpeakAsync(string text) + { + if (MONO) + { + + } + else + { + _speechwindows.SpeakAsync(text); + } + } + + public void SpeakAsyncCancelAll() + { + if (MONO) + { + + } + else + { + _speechwindows.SpeakAsyncCancelAll(); + } + } + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index 74eff8d1e24c53f28a6e6207ca6c18239d9d80db..39326966bce269b353513e8b6549884de3dfa5d9 100644 GIT binary patch delta 222368 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%0Dc|AGk#8L=`UbnBlBznjN;u4i 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�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 z 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 L4_L2-=%)Vv Type (0=as 1=gs) - Throttle(%) - Speed (m/s) + Speed (m/s) + Throttle(%) diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/runme b/Tools/ArdupilotMegaPlanner/bin/Release/runme new file mode 100644 index 0000000000..3f0a4f763d --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/bin/Release/runme @@ -0,0 +1,3 @@ +#!/bin/bash + +gdb --args mono ArdupilotMegaPlanner.exe diff --git a/Tools/ArdupilotMegaPlanner/mavcmd.xml b/Tools/ArdupilotMegaPlanner/mavcmd.xml index a1912a3368..1ae20b7986 100644 --- a/Tools/ArdupilotMegaPlanner/mavcmd.xml +++ b/Tools/ArdupilotMegaPlanner/mavcmd.xml @@ -377,8 +377,8 @@ Type (0=as 1=gs) - Throttle(%) - Speed (m/s) + Speed (m/s) + Throttle(%) From e49c2d28719897586c560f48282d5be0074b4266 Mon Sep 17 00:00:00 2001 From: Robert Lefebvre Date: Thu, 1 Mar 2012 22:04:45 -0500 Subject: [PATCH 110/122] Rescale TradHeli roll_out and pitch_out into the min and max ranges to provide linear motion across the input range instead of stopping when the input hits the constrain value. These calculations are based on an assumption of the user specified roll_max and pitch_max coming into this equation at 4500 or less, and based on the original assumption of the total g.heli_servo_x.servo_out range being -4500 to 4500. Signed-off-by: Robert Lefebvre --- ArduCopter/heli.pde | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ArduCopter/heli.pde b/ArduCopter/heli.pde index 95ee7a660b..4f1cea1d7d 100644 --- a/ArduCopter/heli.pde +++ b/ArduCopter/heli.pde @@ -141,6 +141,15 @@ static void heli_move_swash(int roll_out, int pitch_out, int coll_out, int yaw_o pitch_out = constrain(pitch_out, (int)-g.heli_pitch_max, (int)g.heli_pitch_max); coll_out = constrain(coll_out, 0, 1000); coll_out_scaled = coll_out * heli_collective_scalar + g.heli_collective_min - 1000; + + // rescale roll_out and pitch-out into the min and max ranges to provide linear motion + // across the input range instead of stopping when the input hits the constrain value + // these calculations are based on an assumption of the user specified roll_max and pitch_max + // coming into this equation at 4500 or less, and based on the original assumption of the + // total g.heli_servo_x.servo_out range being -4500 to 4500. + roll_out = (-g.heli_roll_max + (float)( 2 * g.heli_roll_max * (roll_out + 4500.0)/9000.0)); + pitch_out = (-g.heli_pitch_max + (float)(2 * g.heli_pitch_max * (pitch_out + 4500.0)/9000.0)); + // rudder feed forward based on collective #if HIL_MODE == HIL_MODE_DISABLED // don't do rudder feed forward in simulator From 37275d229d8f8dcc761adebeb14abd9b42c19068 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 28 Feb 2012 18:05:05 +1100 Subject: [PATCH 111/122] SITL: implement cli()/sei() properly for desktop build this disables simulated hardware interrupts during critical sections --- libraries/Desktop/include/avr/interrupt.h | 6 ++++-- libraries/Desktop/support/Arduino.cpp | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/libraries/Desktop/include/avr/interrupt.h b/libraries/Desktop/include/avr/interrupt.h index 09ac4f1494..db18edeba0 100644 --- a/libraries/Desktop/include/avr/interrupt.h +++ b/libraries/Desktop/include/avr/interrupt.h @@ -6,7 +6,9 @@ #define ISR(vector,...) void vector(void); \ void vector(void) -#define cli() -#define sei() +extern "C" { +void cli(void); +void sei(void); +} #endif diff --git a/libraries/Desktop/support/Arduino.cpp b/libraries/Desktop/support/Arduino.cpp index 134bdc635d..ab4caa7d83 100644 --- a/libraries/Desktop/support/Arduino.cpp +++ b/libraries/Desktop/support/Arduino.cpp @@ -5,6 +5,7 @@ #include "avr/pgmspace.h" #include #include +#include #include "desktop.h" extern "C" { @@ -14,6 +15,24 @@ volatile uint8_t __iomem[1024]; unsigned __brkval = 0x2000; unsigned __bss_end = 0x1000; +// disable interrupts +void cli(void) +{ + sigset_t set; + sigemptyset(&set); + sigaddset(&set, SIGALRM); + sigprocmask(SIG_BLOCK,&set,NULL); +} + +// enable interrupts +void sei(void) +{ + sigset_t set; + sigemptyset(&set); + sigaddset(&set, SIGALRM); + sigprocmask(SIG_UNBLOCK,&set,NULL); +} + void pinMode(uint8_t pin, uint8_t mode) { From 1e8d98cdda4e456489d9904bb934a9c49d67f020 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 1 Mar 2012 15:21:13 +1100 Subject: [PATCH 112/122] I2C: added lockup_count() interface used for reporting I2C problems --- libraries/I2C/I2C.cpp | 6 ++++++ libraries/I2C/I2C.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/libraries/I2C/I2C.cpp b/libraries/I2C/I2C.cpp index 2b699b8cc8..254670138f 100644 --- a/libraries/I2C/I2C.cpp +++ b/libraries/I2C/I2C.cpp @@ -536,6 +536,12 @@ void I2C::lockUp() { TWCR = 0; //releases SDA and SCL lines to high impedance TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); //reinitialize TWI + _lockup_count++; +} + +uint8_t I2C::lockup_count(void) +{ + return _lockup_count; } SIGNAL(TWI_vect) diff --git a/libraries/I2C/I2C.h b/libraries/I2C/I2C.h index ca957312ad..0400b39e03 100644 --- a/libraries/I2C/I2C.h +++ b/libraries/I2C/I2C.h @@ -97,6 +97,7 @@ class I2C uint8_t read(uint8_t, uint8_t, uint8_t*); uint8_t read(uint8_t, uint8_t, uint8_t, uint8_t*); uint8_t receive(); + uint8_t lockup_count(); private: uint8_t start(); @@ -108,6 +109,8 @@ class I2C uint8_t returnStatus; uint8_t nack; uint8_t data[MAX_BUFFER_SIZE]; + uint8_t _lockup_count; + static uint8_t bytesAvailable; static uint8_t bufferIndex; static uint8_t totalBytes; From b20084af7d799b70bf446d809956b3e2b7ec09a6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 1 Mar 2012 15:21:32 +1100 Subject: [PATCH 113/122] APM: added board_voltage() function --- ArduPlane/system.pde | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ArduPlane/system.pde b/ArduPlane/system.pde index 39017f4248..571006aa15 100644 --- a/ArduPlane/system.pde +++ b/ArduPlane/system.pde @@ -565,3 +565,36 @@ void flash_leds(bool on) digitalWrite(A_LED_PIN, on?LED_OFF:LED_ON); digitalWrite(C_LED_PIN, on?LED_ON:LED_OFF); } + +#ifndef DESKTOP_BUILD +/* + * Read Vcc vs 1.1v internal reference + * + * This call takes about 150us total. ADC conversion is 13 cycles of + * 125khz default changes the mux if it isn't set, and return last + * reading (allows necessary settle time) otherwise trigger the + * conversion + */ +uint16_t board_voltage(void) +{ + static uint16_t vcc = 5000; + const uint8_t mux = (_BV(REFS0)|_BV(MUX4)|_BV(MUX3)|_BV(MUX2)|_BV(MUX1)); + + if (ADMUX == mux) { + ADCSRA |= _BV(ADSC); // Convert + uint16_t counter=4000; // normally takes about 1700 loops + while (bit_is_set(ADCSRA, ADSC) && counter) // Wait + counter--; + if (counter == 0) { + // we don't actually expect this timeout to happen, + // but we don't want any more code that could hang + return vcc; + } + uint32_t result = ADCL | ADCH<<8; + vcc = 1126400L / result; // Read and back-calculate Vcc in mV + } else { + ADMUX = mux; // switch mux, settle time is needed + } + return vcc; // in mV +} +#endif From cb874d60971d00a648d0589bd06698a952497a8f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 1 Mar 2012 23:36:51 +1100 Subject: [PATCH 114/122] ACM: added board_voltage() --- ArduCopter/system.pde | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ArduCopter/system.pde b/ArduCopter/system.pde index db35cae76c..fdea7be828 100644 --- a/ArduCopter/system.pde +++ b/ArduCopter/system.pde @@ -663,3 +663,36 @@ void flash_leds(bool on) digitalWrite(A_LED_PIN, on?LED_OFF:LED_ON); digitalWrite(C_LED_PIN, on?LED_ON:LED_OFF); } + +#ifndef DESKTOP_BUILD +/* + * Read Vcc vs 1.1v internal reference + * + * This call takes about 150us total. ADC conversion is 13 cycles of + * 125khz default changes the mux if it isn't set, and return last + * reading (allows necessary settle time) otherwise trigger the + * conversion + */ +uint16_t board_voltage(void) +{ + static uint16_t vcc = 5000; + const uint8_t mux = (_BV(REFS0)|_BV(MUX4)|_BV(MUX3)|_BV(MUX2)|_BV(MUX1)); + + if (ADMUX == mux) { + ADCSRA |= _BV(ADSC); // Convert + uint16_t counter=4000; // normally takes about 1700 loops + while (bit_is_set(ADCSRA, ADSC) && counter) // Wait + counter--; + if (counter == 0) { + // we don't actually expect this timeout to happen, + // but we don't want any more code that could hang + return vcc; + } + uint32_t result = ADCL | ADCH<<8; + vcc = 1126400L / result; // Read and back-calculate Vcc in mV + } else { + ADMUX = mux; // switch mux, settle time is needed + } + return vcc; // in mV +} +#endif From f4329d2680e66ea94c92213ca380d4d940bd5b4c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 2 Mar 2012 15:45:18 +1100 Subject: [PATCH 115/122] AP_Param: ensure we can't have duplicate keys in Parameters.h this is O(n^2), but only at startup, and takes less than 1ms to run. It catches a very nasty coding error --- libraries/AP_Common/AP_Param.cpp | 17 +++++++++++++++++ libraries/AP_Common/AP_Param.h | 1 + 2 files changed, 18 insertions(+) diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index 3beb585ee3..95e81a076a 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -153,6 +153,19 @@ bool AP_Param::check_group_info(const struct AP_Param::GroupInfo *group_info, return true; } +// check for duplicate key values +bool AP_Param::duplicate_key(uint8_t vindex, uint8_t key) +{ + for (uint8_t i=vindex+1; i<_num_vars; i++) { + uint8_t key2 = PGM_UINT8(&_var_info[i].key); + if (key2 == key) { + // no duplicate keys allowed + return true; + } + } + return false; +} + // validate the _var_info[] table bool AP_Param::check_var_info(void) { @@ -160,6 +173,7 @@ bool AP_Param::check_var_info(void) for (uint8_t i=0; i<_num_vars; i++) { uint8_t type = PGM_UINT8(&_var_info[i].type); + uint8_t key = PGM_UINT8(&_var_info[i].key); if (type == AP_PARAM_GROUP) { if (i == 0) { // first element can't be a group, for first() call @@ -179,6 +193,9 @@ bool AP_Param::check_var_info(void) } total_size += size + sizeof(struct Param_header); } + if (duplicate_key(i, key)) { + return false; + } } if (total_size > _eeprom_size) { serialDebug("total_size %u exceeds _eeprom_size %u", diff --git a/libraries/AP_Common/AP_Param.h b/libraries/AP_Common/AP_Param.h index 3fa0ca1196..596b07c29e 100644 --- a/libraries/AP_Common/AP_Param.h +++ b/libraries/AP_Common/AP_Param.h @@ -189,6 +189,7 @@ private: static const uint8_t _sentinal_group = 0xFF; static bool check_group_info(const struct GroupInfo *group_info, uint16_t *total_size, uint8_t max_bits); + static bool duplicate_key(uint8_t vindex, uint8_t key); static bool check_var_info(void); const struct Info *find_var_info_group(const struct GroupInfo *group_info, uint8_t vindex, From f781bd735babca3149cdbd0d9dd9e943ddf32860 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 2 Mar 2012 15:45:43 +1100 Subject: [PATCH 116/122] ACM: fixed Parameters.h to avoid duplicate keys unfortunately everyone needs to reload --- ArduCopter/Parameters.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ArduCopter/Parameters.h b/ArduCopter/Parameters.h index 2692e44ac7..9d8ef08d01 100644 --- a/ArduCopter/Parameters.h +++ b/ArduCopter/Parameters.h @@ -17,7 +17,7 @@ public: // The increment will prevent old parameters from being used incorrectly // by newer code. // - static const uint16_t k_format_version = 116; + static const uint16_t k_format_version = 117; // The parameter software_type is set up solely for ground station use // and identifies the software type (eg ArduPilotMega versus ArduCopterMega) @@ -121,9 +121,9 @@ public: // - // 180: Radio settings + // 170: Radio settings // - k_param_rc_1 = 180, + k_param_rc_1 = 170, k_param_rc_2, k_param_rc_3, k_param_rc_4, From 5f749325f0a70a44ad4cd4b762a86691dedd364e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 2 Mar 2012 17:23:22 +1100 Subject: [PATCH 117/122] APM_RC: allow the fast RC speed to be passed as a parameter this will allow users to test different speeds --- libraries/APM_RC/APM_RC.h | 11 ++-- libraries/APM_RC/APM_RC_APM1.cpp | 94 ++++++++------------------------ libraries/APM_RC/APM_RC_APM1.h | 14 ++--- libraries/APM_RC/APM_RC_APM2.cpp | 71 ++++-------------------- libraries/APM_RC/APM_RC_APM2.h | 8 +-- 5 files changed, 46 insertions(+), 152 deletions(-) diff --git a/libraries/APM_RC/APM_RC.h b/libraries/APM_RC/APM_RC.h index d388dcb412..7bfea34fd8 100644 --- a/libraries/APM_RC/APM_RC.h +++ b/libraries/APM_RC/APM_RC.h @@ -39,10 +39,13 @@ class APM_RC_Class virtual uint16_t InputCh(uint8_t ch) = 0; virtual uint8_t GetState() = 0; virtual void clearOverride(void) = 0; - virtual void Force_Out() = 0; - virtual void SetFastOutputChannels( uint32_t channelmask ) = 0; - virtual void enable_out(uint8_t) = 0; - virtual void disable_out(uint8_t) = 0; + virtual void Force_Out() = 0; + virtual void SetFastOutputChannels( uint32_t channelmask, uint16_t speed_hz = 400 ) = 0; + virtual void enable_out(uint8_t) = 0; + virtual void disable_out(uint8_t) = 0; + +protected: + uint16_t _map_speed(uint16_t speed_hz) { return 2000000UL / speed_hz; } }; diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp index dab7d05cd9..add4693172 100644 --- a/libraries/APM_RC/APM_RC_APM1.cpp +++ b/libraries/APM_RC/APM_RC_APM1.cpp @@ -247,84 +247,34 @@ void APM_RC_APM1::Force_Out6_Out7(void) /* --------------------- OUTPUT SPEED CONTROL --------------------- */ -// Output rate options: -#define OUTPUT_SPEED_50HZ 0 -#define OUTPUT_SPEED_200HZ 1 -#define OUTPUT_SPEED_490HZ 2 - -void APM_RC_APM1::SetFastOutputChannels(uint32_t chmask) +void APM_RC_APM1::SetFastOutputChannels(uint32_t chmask, uint16_t speed_hz) { - if ((chmask & ( _BV(CH_1) | _BV(CH_2) | _BV(CH_9))) != 0) - _set_speed_ch1_ch2_ch9(OUTPUT_SPEED_490HZ); + uint16_t icr = _map_speed(speed_hz); - if ((chmask & ( _BV(CH_3) | _BV(CH_4) | _BV(CH_10))) != 0) - _set_speed_ch3_ch4_ch10(OUTPUT_SPEED_490HZ); + if ((chmask & ( _BV(CH_1) | _BV(CH_2) | _BV(CH_9))) != 0) { + ICR1 = icr; + } - if ((chmask & ( _BV(CH_5) | _BV(CH_6))) != 0) - _set_speed_ch5_ch6(OUTPUT_SPEED_490HZ); + if ((chmask & ( _BV(CH_3) | _BV(CH_4) | _BV(CH_10))) != 0) { + ICR5 = icr; + } - if ((chmask & ( _BV(CH_7) | _BV(CH_8) | _BV(CH_11))) != 0) - _set_speed_ch7_ch8_ch11(OUTPUT_SPEED_490HZ); +#if 0 + if ((chmask & ( _BV(CH_5) | _BV(CH_6))) != 0) { + /* These channels intentionally left blank: + * Can't change output speed of ch5 (OCR4B) and ch6 (OCR4C). + * Timer 4 period controlled by OCR4A, and used for input + * capture on ICR4. + * If the period of Timer 4 must be changed, the input capture + * code will have to be adjusted as well + */ + } +#endif -} + if ((chmask & ( _BV(CH_7) | _BV(CH_8) | _BV(CH_11))) != 0) { + ICR3 = icr; + } -void APM_RC_APM1::_set_speed_ch1_ch2_ch9(uint8_t speed) -{ - switch(speed) { - case OUTPUT_SPEED_490HZ: - ICR1= 4096; - break; - case OUTPUT_SPEED_200HZ: - ICR1= 10000; - break; - case OUTPUT_SPEED_50HZ: - default: - ICR1 = 40000; - break; - } -} - -void APM_RC_APM1::_set_speed_ch3_ch4_ch10(uint8_t speed) -{ - switch(speed) { - case OUTPUT_SPEED_490HZ: - ICR5= 4096; - break; - case OUTPUT_SPEED_200HZ: - ICR5= 10000; - break; - case OUTPUT_SPEED_50HZ: - default: - ICR5 = 40000; - break; - } -} - -void APM_RC_APM1::_set_speed_ch7_ch8_ch11(uint8_t speed) -{ - switch(speed) { - case OUTPUT_SPEED_490HZ: - ICR3 = 4096; - break; - case OUTPUT_SPEED_200HZ: - ICR3 = 10000; - break; - case OUTPUT_SPEED_50HZ: - default: - ICR3 = 40000; - break; - } -} - -void APM_RC_APM1::_set_speed_ch5_ch6(uint8_t speed) -{ - /* This function intentionally left blank: - * Can't change output speed of ch5 (OCR4B) and ch6 (OCR4C). - * Timer 4 period controlled by OCR4A, and used for input - * capture on ICR4. - * If the period of Timer 4 must be changed, the input capture - * code will have to be adjusted as well - */ } // allow HIL override of RC values diff --git a/libraries/APM_RC/APM_RC_APM1.h b/libraries/APM_RC/APM_RC_APM1.h index 8ea59d353a..c448a3eddd 100644 --- a/libraries/APM_RC/APM_RC_APM1.h +++ b/libraries/APM_RC/APM_RC_APM1.h @@ -18,10 +18,10 @@ class APM_RC_APM1 : public APM_RC_Class bool setHIL(int16_t v[NUM_CHANNELS]); void clearOverride(void); void Force_Out(void); - void SetFastOutputChannels(uint32_t chmask); + void SetFastOutputChannels(uint32_t chmask, uint16_t speed_hz = 400); - void enable_out(uint8_t); - void disable_out(uint8_t); + void enable_out(uint8_t); + void disable_out(uint8_t); void Force_Out0_Out1(void); void Force_Out2_Out3(void); @@ -34,13 +34,7 @@ class APM_RC_APM1 : public APM_RC_Class static volatile uint16_t _PWM_RAW[NUM_CHANNELS]; static volatile uint8_t _radio_status; - int16_t _HIL_override[NUM_CHANNELS]; - - void _set_speed_ch1_ch2_ch9(uint8_t speed); - void _set_speed_ch3_ch4_ch10(uint8_t speed); - void _set_speed_ch5_ch6(uint8_t speed); - void _set_speed_ch7_ch8_ch11(uint8_t speed); - + int16_t _HIL_override[NUM_CHANNELS]; }; #endif diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp index ca3a2da94d..c76c71c08c 100644 --- a/libraries/APM_RC/APM_RC_APM2.cpp +++ b/libraries/APM_RC/APM_RC_APM2.cpp @@ -227,71 +227,22 @@ void APM_RC_APM2::Force_Out2_Out3(void) { } void APM_RC_APM2::Force_Out6_Out7(void) { } /* ---------------- OUTPUT SPEED CONTROL ------------------ */ -// Output rate options: -#define OUTPUT_SPEED_50HZ 0 -#define OUTPUT_SPEED_200HZ 1 -#define OUTPUT_SPEED_490HZ 2 -void APM_RC_APM2::SetFastOutputChannels(uint32_t chmask) +void APM_RC_APM2::SetFastOutputChannels(uint32_t chmask, uint16_t speed_hz) { - if ((chmask & ( _BV(CH_1) | _BV(CH_2))) != 0) - _set_speed_ch1_ch2(OUTPUT_SPEED_490HZ); + uint16_t icr = _map_speed(speed_hz); - if ((chmask & ( _BV(CH_3) | _BV(CH_4) | _BV(CH_5))) != 0) - _set_speed_ch3_ch4_ch5(OUTPUT_SPEED_490HZ); + if ((chmask & ( _BV(CH_1) | _BV(CH_2))) != 0) { + ICR1 = icr; + } - if ((chmask & ( _BV(CH_6) | _BV(CH_7) | _BV(CH_8))) != 0) - _set_speed_ch6_ch7_ch8(OUTPUT_SPEED_490HZ); -} - -void APM_RC_APM2::_set_speed_ch1_ch2(uint8_t speed) -{ - switch(speed) { - case OUTPUT_SPEED_490HZ: - ICR1 = 4096; - break; - case OUTPUT_SPEED_200HZ: - ICR1 = 10000; - break; - case OUTPUT_SPEED_50HZ: - default: - ICR1 = 40000; - break; - } -} - -void APM_RC_APM2::_set_speed_ch3_ch4_ch5(uint8_t speed) -{ - switch(speed) { - case OUTPUT_SPEED_490HZ: - ICR4 = 4096; - break; - case OUTPUT_SPEED_200HZ: - ICR4 = 10000; - break; - case OUTPUT_SPEED_50HZ: - default: - ICR4 = 40000; - break; - } - -} - -void APM_RC_APM2::_set_speed_ch6_ch7_ch8(uint8_t speed) -{ - switch(speed) { - case OUTPUT_SPEED_490HZ: - ICR3 = 4096; - break; - case OUTPUT_SPEED_200HZ: - ICR3 = 10000; - break; - case OUTPUT_SPEED_50HZ: - default: - ICR3 = 40000; - break; - } + if ((chmask & ( _BV(CH_3) | _BV(CH_4) | _BV(CH_5))) != 0) { + ICR4 = icr; + } + if ((chmask & ( _BV(CH_6) | _BV(CH_7) | _BV(CH_8))) != 0) { + ICR3 = icr; + } } // allow HIL override of RC values diff --git a/libraries/APM_RC/APM_RC_APM2.h b/libraries/APM_RC/APM_RC_APM2.h index 17ca5503dc..f2a93a1f07 100644 --- a/libraries/APM_RC/APM_RC_APM2.h +++ b/libraries/APM_RC/APM_RC_APM2.h @@ -19,8 +19,8 @@ class APM_RC_APM2 : public APM_RC_Class unsigned char GetState(); bool setHIL(int16_t v[NUM_CHANNELS]); void clearOverride(void); - void Force_Out(void); - void SetFastOutputChannels(uint32_t chmask); + void Force_Out(void); + void SetFastOutputChannels(uint32_t chmask, uint16_t speed_hz = 400); void enable_out(uint8_t); void disable_out(uint8_t); @@ -35,10 +35,6 @@ class APM_RC_APM2 : public APM_RC_Class static volatile uint16_t _PWM_RAW[NUM_CHANNELS]; static volatile uint8_t _radio_status; int16_t _HIL_override[NUM_CHANNELS]; - - void _set_speed_ch1_ch2(uint8_t speed); - void _set_speed_ch3_ch4_ch5(uint8_t speed); - void _set_speed_ch6_ch7_ch8(uint8_t speed); }; From e213f6780edb1444aa21008bf943b08246d0388b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 2 Mar 2012 17:24:18 +1100 Subject: [PATCH 118/122] ACM: added RC_SPEED MAVLink parameter this will set the speed for APM_RC.SetFastOutputChannels() --- ArduCopter/Parameters.h | 4 ++++ ArduCopter/Parameters.pde | 3 +++ 2 files changed, 7 insertions(+) diff --git a/ArduCopter/Parameters.h b/ArduCopter/Parameters.h index 9d8ef08d01..f2e6ccfe88 100644 --- a/ArduCopter/Parameters.h +++ b/ArduCopter/Parameters.h @@ -145,6 +145,7 @@ public: k_param_radio_tuning_low, k_param_camera_pitch_gain, k_param_camera_roll_gain, + k_param_rc_speed, // // 200: flight modes @@ -293,6 +294,7 @@ public: RC_Channel rc_8; RC_Channel rc_camera_pitch; RC_Channel rc_camera_roll; + AP_Int16 rc_speed; // speed of fast RC Channels in Hz AP_Float camera_pitch_gain; AP_Float camera_roll_gain; @@ -401,6 +403,8 @@ public: heli_collective_yaw_effect (0), #endif + rc_speed(RC_FAST_SPEED), + camera_pitch_gain (CAM_PITCH_GAIN), camera_roll_gain (CAM_ROLL_GAIN), stabilize_d (STABILIZE_D), diff --git a/ArduCopter/Parameters.pde b/ArduCopter/Parameters.pde index dbf0bd41fb..cfe4170285 100644 --- a/ArduCopter/Parameters.pde +++ b/ArduCopter/Parameters.pde @@ -105,6 +105,9 @@ static const AP_Param::Info var_info[] PROGMEM = { GGROUP(rc_camera_pitch, "CAM_P_", RC_Channel), GGROUP(rc_camera_roll, "CAM_R_", RC_Channel), + // speed of fast RC channels in Hz + GSCALAR(rc_speed, "RC_SPEED"), + // variable //--------- GSCALAR(camera_pitch_gain, "CAM_P_G"), From 0fc646d666a07aae55f6318a61c4ef661b53325d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 2 Mar 2012 17:24:44 +1100 Subject: [PATCH 119/122] ACM: set default RC fast speed to 400Hz --- ArduCopter/config.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 3583645efd..3435cec68c 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -105,6 +105,11 @@ # define INSTANT_PWM DISABLED #endif +// default RC speed in Hz if INSTANT_PWM is not used +#ifndef RC_FAST_SPEED +# define RC_FAST_SPEED 400 +#endif + // LED and IO Pins // #if CONFIG_APM_HARDWARE == APM_HARDWARE_APM1 From 0ff44563ec6a45f7e545f6c29c6bde07b2c15272 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 2 Mar 2012 17:25:07 +1100 Subject: [PATCH 120/122] ACM: use g.rc_speed for all APM_RC.SetFastOutputChannels calls --- ArduCopter/heli.pde | 2 +- ArduCopter/motors_hexa.pde | 4 ++-- ArduCopter/motors_octa.pde | 3 ++- ArduCopter/motors_octa_quad.pde | 3 ++- ArduCopter/motors_quad.pde | 3 ++- ArduCopter/motors_tri.pde | 3 ++- ArduCopter/motors_y6.pde | 3 ++- 7 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ArduCopter/heli.pde b/ArduCopter/heli.pde index 4f1cea1d7d..6e5a0a621b 100644 --- a/ArduCopter/heli.pde +++ b/ArduCopter/heli.pde @@ -218,7 +218,7 @@ static void heli_move_swash(int roll_out, int pitch_out, int coll_out, int yaw_o static void init_motors_out() { #if INSTANT_PWM == 0 - APM_RC.SetFastOutputChannels( _BV(CH_1) | _BV(CH_2) | _BV(CH_3) | _BV(CH_4) ); + APM_RC.SetFastOutputChannels( _BV(CH_1) | _BV(CH_2) | _BV(CH_3) | _BV(CH_4), g.rc_speed ); #endif } diff --git a/ArduCopter/motors_hexa.pde b/ArduCopter/motors_hexa.pde index 64d3e52d34..ad7435148c 100644 --- a/ArduCopter/motors_hexa.pde +++ b/ArduCopter/motors_hexa.pde @@ -6,7 +6,7 @@ static void init_motors_out() { #if INSTANT_PWM == 0 APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4) - | _BV(MOT_5) | _BV(MOT_6)); + | _BV(MOT_5) | _BV(MOT_6), g.rc_speed); #endif } @@ -238,4 +238,4 @@ static void output_motor_test() APM_RC.OutputCh(MOT_6, motor_out[MOT_6]); } -#endif \ No newline at end of file +#endif diff --git a/ArduCopter/motors_octa.pde b/ArduCopter/motors_octa.pde index 475c0a6768..f4e78a99df 100644 --- a/ArduCopter/motors_octa.pde +++ b/ArduCopter/motors_octa.pde @@ -6,7 +6,8 @@ static void init_motors_out() { #if INSTANT_PWM == 0 APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4) - | _BV(MOT_5) | _BV(MOT_6) | _BV(MOT_7) | _BV(MOT_8)); + | _BV(MOT_5) | _BV(MOT_6) | _BV(MOT_7) | _BV(MOT_8), + g.rc_speed); #endif } diff --git a/ArduCopter/motors_octa_quad.pde b/ArduCopter/motors_octa_quad.pde index 0d22507c66..034cb72dfe 100644 --- a/ArduCopter/motors_octa_quad.pde +++ b/ArduCopter/motors_octa_quad.pde @@ -6,7 +6,8 @@ static void init_motors_out() { #if INSTANT_PWM == 0 APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4) - | _BV(MOT_5) | _BV(MOT_6) | _BV(MOT_7) | _BV(MOT_8)); + | _BV(MOT_5) | _BV(MOT_6) | _BV(MOT_7) | _BV(MOT_8), + g.rc_speed); #endif } diff --git a/ArduCopter/motors_quad.pde b/ArduCopter/motors_quad.pde index 418da33d6b..54992683bd 100644 --- a/ArduCopter/motors_quad.pde +++ b/ArduCopter/motors_quad.pde @@ -5,7 +5,8 @@ static void init_motors_out() { #if INSTANT_PWM == 0 - APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4)); + APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4), + g.rc_speed); #endif } diff --git a/ArduCopter/motors_tri.pde b/ArduCopter/motors_tri.pde index b34fda09b5..9371201557 100644 --- a/ArduCopter/motors_tri.pde +++ b/ArduCopter/motors_tri.pde @@ -4,7 +4,8 @@ static void init_motors_out() { #if INSTANT_PWM == 0 - APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_4)); + APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_4), + g.rc_speed); #endif } diff --git a/ArduCopter/motors_y6.pde b/ArduCopter/motors_y6.pde index 1c91b1fa70..2824648bb6 100644 --- a/ArduCopter/motors_y6.pde +++ b/ArduCopter/motors_y6.pde @@ -8,7 +8,8 @@ static void init_motors_out() { #if INSTANT_PWM == 0 APM_RC.SetFastOutputChannels(_BV(MOT_1) | _BV(MOT_2) | _BV(MOT_3) | _BV(MOT_4) - | _BV(MOT_5) | _BV(MOT_6)); + | _BV(MOT_5) | _BV(MOT_6), + g.rc_speed); #endif } From 73dafe537eb86dbd4f1ee9d9793f6a6f0cb112c6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 2 Mar 2012 18:29:27 +1100 Subject: [PATCH 121/122] SITL: use the new noise model use the new noise model at a low level for master until we sort out DCM noise handling --- libraries/Desktop/support/sitl_adc.h | 46 ++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/libraries/Desktop/support/sitl_adc.h b/libraries/Desktop/support/sitl_adc.h index 65b56315ab..da6ab87455 100644 --- a/libraries/Desktop/support/sitl_adc.h +++ b/libraries/Desktop/support/sitl_adc.h @@ -9,7 +9,12 @@ #include #include -static float noise_scale[8] = { 240, 400, 500, 200, 400, 400, 2000, 200 }; +static const float vibration_level = 0.1; +// order zgyro, xgyro, ygyro, temp, xacc, yacc, zacc, aspd +static const float noise_scale[8] = { 150, 150, 150, 0, 400, 400, 400, 0 }; +static const float noise_offset[8]= { 0, 0, 0, 0, 0, 0, 0, 0 }; +static const float drift_rate[8] = { 0.7, 1.0, 0.5, 0, 0, 0, 0, 0 }; +static const float base_noise = 2; // generate a random float between -1 and 1 static double rand_float(void) @@ -18,25 +23,43 @@ static double rand_float(void) return (ret - 1.0e6) / 1.0e6; } +static inline float gyro_drift(uint8_t chan) +{ + if (drift_rate[chan] == 0) { + return 0; + } + extern long unsigned int micros(void); + double period = 10*drift_rate[chan]; + double minutes = fmod(micros() / 60.0e6, period); + if (minutes < period/2) { + return minutes; + } + return period - minutes; + +} + static inline float noise_generator(uint8_t chan) { extern float sitl_motor_speed[4]; - extern long unsigned int micros(void); uint8_t i; float noise = 0; uint8_t noise_count=0; - double t = micros() / 1.0e6; + extern long unsigned int micros(void); for (i=0; i<4; i++) { if (sitl_motor_speed[i] > 0.0) { - float n = rand_float() * noise_scale[chan]; - noise += sin(fmod(t * sitl_motor_speed[i] * 2 * 3.14 + i, 2*3.14)) * n; + float n = rand_float() * noise_scale[chan] * vibration_level; + //double t = micros() / 1.0e6; + //float freq = (rand_float() + 1.0) * sitl_motor_speed[i]; + //noise += sin(fmod(t * freq * 2 * M_PI + i, + //2*M_PI)) * n; + noise += n + noise_offset[chan]; noise_count++; } } if (noise_count == 0) { - return 0; + return rand_float() * base_noise; } - return noise/noise_count; + return gyro_drift(chan) + noise/noise_count; } // this implements the UDR2 register @@ -75,11 +98,10 @@ struct ADC_UDR2 { } next_analog = channels[chan]; idx = 1; - next_value = (unsigned)(next_analog + noise_generator(chan) + 0.5); - if (next_value >= 0x1000) { - next_value = 0xFFF; - } - next_value = (next_value << 3); + next_analog += noise_generator(chan) + 0.5; + if (next_analog > 0xFFF) next_analog = 0xFFF; + if (next_analog < 0) next_analog = 0; + next_value = ((unsigned)next_analog) << 3; return *this; } From c2fa44d24ee84dfe4c3577a5a066c7c836933bfa Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Fri, 2 Mar 2012 18:40:20 +0800 Subject: [PATCH 122/122] APM Planner 1.1.46 update to request extra3 stream. --- Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs | 8 ++++++-- .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 4 ++-- .../Controls/ProgressReporterDialogue.cs | 1 + .../GCSViews/FlightData.cs | 1 + Tools/ArdupilotMegaPlanner/HUD.cs | 15 ++++++++++++++- .../Properties/AssemblyInfo.cs | 2 +- .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 972288 -> 972288 bytes 7 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs index bccd3695db..f69c713875 100644 --- a/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs +++ b/Tools/ArdupilotMegaPlanner/Antenna/Maestro.cs @@ -124,7 +124,7 @@ namespace ArdupilotMega.Antenna byte target = (byte)((((PointAtAngle / range ) * 2) * 127 + 127) * _tiltreverse); - Console.WriteLine("T " + Angle + " " + target + " " + PointAtAngle); + //Console.WriteLine("T " + Angle + " " + target + " " + PointAtAngle); var buffer = new byte[] { 0xff, TiltAddress, target }; ComPort.Write(buffer, 0, buffer.Length); @@ -142,7 +142,11 @@ namespace ArdupilotMega.Antenna public bool Close() { - ComPort.Close(); + try + { + ComPort.Close(); + } + catch { } return true; } diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 8d80840653..c76303df54 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -51,7 +51,7 @@ false false true - 1024 + 512 x86 @@ -68,7 +68,7 @@ true false true - 1024 + 512 ArdupilotMega.Program diff --git a/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs index 4cc19161ff..4a055197cd 100644 --- a/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs +++ b/Tools/ArdupilotMegaPlanner/Controls/ProgressReporterDialogue.cs @@ -42,6 +42,7 @@ namespace ArdupilotMega.Controls private void RunBackgroundOperation(object o) { + Thread.CurrentThread.Name = "ProgressReporterDialogue Background thread"; try { if (this.DoWork != null) this.DoWork(this, doWorkArgs); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs index a2498585e3..0d98ff5403 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs @@ -275,6 +275,7 @@ namespace ArdupilotMega.GCSViews comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.MAV_DATA_STREAM_POSITION, MainV2.cs.rateposition); // request gps comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.MAV_DATA_STREAM_EXTRA1, MainV2.cs.rateattitude); // request attitude comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.MAV_DATA_STREAM_EXTRA2, MainV2.cs.rateattitude); // request vfr + comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.MAV_DATA_STREAM_EXTRA3, MainV2.cs.ratesensors); // request extra stuff - tridge comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.MAV_DATA_STREAM_RAW_SENSORS, MainV2.cs.ratesensors); // request raw sensor comPort.requestDatastream((byte)ArdupilotMega.MAVLink.MAV_DATA_STREAM.MAV_DATA_STREAM_RC_CHANNELS, MainV2.cs.raterc); // request rc info } diff --git a/Tools/ArdupilotMegaPlanner/HUD.cs b/Tools/ArdupilotMegaPlanner/HUD.cs index df2536e459..4c3795a886 100644 --- a/Tools/ArdupilotMegaPlanner/HUD.cs +++ b/Tools/ArdupilotMegaPlanner/HUD.cs @@ -46,6 +46,8 @@ namespace hud bool started = false; + public bool SixteenXNine = false; + public HUD() { if (this.DesignMode) @@ -1552,7 +1554,18 @@ namespace hud { if (DesignMode || !started) return; - this.Height = (int)(this.Width / 1.333f); + + + if (SixteenXNine) + { + this.Height = (int)(this.Width / 1.777f); + } + else + { + // 4x3 + this.Height = (int)(this.Width / 1.333f); + } + base.OnResize(e); graphicsObjectGDIP = Graphics.FromImage(objBitmap); diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index a45540e1e7..798018a819 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.1.45")] +[assembly: AssemblyFileVersion("1.1.46")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index 1edad2b768fbd41d7eb1eed16b382927768e69b8..55b77aa8312582e870d5ec5997310ad613dcd35e 100644 GIT binary patch delta 77252 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

K83gcLd+ni*!7hl=gb~G6 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 z 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 K9gq26cK<(y|4^v_ From c444cdb3f489c1d8e3ff8c757ad6f991064a79c6 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Wed, 29 Feb 2012 22:43:46 +0900 Subject: [PATCH 100/122] AP_ADC - removed small compiler warning --- libraries/AP_ADC/AP_ADC_ADS7844.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/AP_ADC/AP_ADC_ADS7844.cpp b/libraries/AP_ADC/AP_ADC_ADS7844.cpp index 96e3751d23..6e65527519 100644 --- a/libraries/AP_ADC/AP_ADC_ADS7844.cpp +++ b/libraries/AP_ADC/AP_ADC_ADS7844.cpp @@ -127,8 +127,8 @@ void AP_ADC_ADS7844::read(uint32_t tnow) // Constructors //////////////////////////////////////////////////////////////// AP_ADC_ADS7844::AP_ADC_ADS7844() : - _filter_index_accel(0), - filter_result(false) + filter_result(false), + _filter_index_accel(0) { } From 82f81295a7cd9b6a529bb6f0b9f30face7b92d63 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Wed, 29 Feb 2012 22:44:29 +0900 Subject: [PATCH 101/122] RC_Channel - fixed small compiler warning --- libraries/RC_Channel/RC_Channel.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libraries/RC_Channel/RC_Channel.h b/libraries/RC_Channel/RC_Channel.h index 80d2c99101..be7c3def60 100644 --- a/libraries/RC_Channel/RC_Channel.h +++ b/libraries/RC_Channel/RC_Channel.h @@ -22,12 +22,11 @@ class RC_Channel{ radio_min (1100), radio_trim(1500), radio_max (1900), - _high(1), + scale_output(1.0), _filter(false), _reverse(1), _dead_zone(0), - scale_output(1.0) - {} + _high(1) {} // setup min and max radio values in CLI void update_min_max(); From 5026b5c1928344b869bea621421c6d346ad64e56 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Wed, 29 Feb 2012 22:45:26 +0900 Subject: [PATCH 102/122] AP_DCM - fixed small compiler warning to do with order of parameters in constructor --- libraries/AP_DCM/AP_DCM.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/AP_DCM/AP_DCM.h b/libraries/AP_DCM/AP_DCM.h index ca2c30b657..4a3ba3df7b 100644 --- a/libraries/AP_DCM/AP_DCM.h +++ b/libraries/AP_DCM/AP_DCM.h @@ -25,6 +25,11 @@ class AP_DCM public: // Constructors AP_DCM(IMU *imu, GPS *&gps, Compass *withCompass = NULL) : + _clamp(3), + _kp_roll_pitch(0.05967), + _ki_roll_pitch(0.00001278), + _kp_yaw(0.8), // .8 + _ki_yaw(0.00004), // 0.00004 _compass(withCompass), _gps(gps), _imu(imu), @@ -32,12 +37,7 @@ public: 0, 1, 0, 0, 0, 1), _health(1.), - _kp_roll_pitch(0.05967), - _ki_roll_pitch(0.00001278), - _kp_yaw(0.8), // .8 - _ki_yaw(0.00004), // 0.00004 - _toggle(0), - _clamp(3) + _toggle(0) {} // Accessors From c819a0f68ab4410854e6a13ab48c2b1c62616e30 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Wed, 29 Feb 2012 22:45:49 +0900 Subject: [PATCH 103/122] AP_Compass - fixed small compiler warning to do with order of parameters in constructor --- libraries/AP_Compass/Compass.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/AP_Compass/Compass.cpp b/libraries/AP_Compass/Compass.cpp index 9a9ef77569..ec5a0470ce 100644 --- a/libraries/AP_Compass/Compass.cpp +++ b/libraries/AP_Compass/Compass.cpp @@ -16,10 +16,10 @@ const AP_Param::GroupInfo Compass::var_info[] PROGMEM = { // Compass::Compass(void) : _declination (0.0), - _null_init_done(false), - _null_enable(false), _learn(1), _use_for_yaw(1), + _null_enable(false), + _null_init_done(false), product_id(AP_COMPASS_TYPE_UNKNOWN) { // Default the orientation matrix to none - will be overridden at group load time From d81c95184901b5e878d7a8455572081bd0fb5c91 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Wed, 29 Feb 2012 22:46:29 +0900 Subject: [PATCH 104/122] AP_Baro - fixed small compiler warning to do with order of parameters in constructor --- libraries/AP_Baro/AP_Baro_BMP085.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/AP_Baro/AP_Baro_BMP085.h b/libraries/AP_Baro/AP_Baro_BMP085.h index 06cd3ff1d1..b7d5ede9b5 100644 --- a/libraries/AP_Baro/AP_Baro_BMP085.h +++ b/libraries/AP_Baro/AP_Baro_BMP085.h @@ -11,9 +11,9 @@ class AP_Baro_BMP085 : public AP_Baro { public: AP_Baro_BMP085(bool apm2_hardware): + _apm2_hardware(apm2_hardware), _temp_index(0), - _press_index(0), - _apm2_hardware(apm2_hardware){}; // Constructor + _press_index(0){}; // Constructor /* AP_Baro public interface: */ From fa34ac076ebf4d54d31611271bd735e321a5ba4c Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Wed, 29 Feb 2012 22:57:35 +0900 Subject: [PATCH 105/122] AP_Compass - fixed compile warning --- libraries/AP_Compass/Compass.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/AP_Compass/Compass.cpp b/libraries/AP_Compass/Compass.cpp index ec5a0470ce..4e06ac6d12 100644 --- a/libraries/AP_Compass/Compass.cpp +++ b/libraries/AP_Compass/Compass.cpp @@ -15,12 +15,12 @@ const AP_Param::GroupInfo Compass::var_info[] PROGMEM = { // their values. // Compass::Compass(void) : + product_id(AP_COMPASS_TYPE_UNKNOWN), _declination (0.0), _learn(1), _use_for_yaw(1), _null_enable(false), - _null_init_done(false), - product_id(AP_COMPASS_TYPE_UNKNOWN) + _null_init_done(false) { // Default the orientation matrix to none - will be overridden at group load time // if an orientation has previously been saved. From 2648694489abb5f5a284dbfff6af181aa5049688 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Wed, 29 Feb 2012 18:48:54 -0800 Subject: [PATCH 106/122] AP_Param: One more nexted group recursion disableable by macro * c.f. e5515bb6ef82 --- libraries/AP_Common/AP_Param.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index d94d5a7f60..6648c6fc84 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -492,13 +492,16 @@ AP_Param::find_group(const char *name, uint8_t vindex, const struct GroupInfo *g for (uint8_t i=0; (type=PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; i++) { +#ifdef AP_NESTED_GROUPS_ENABLED if (type == AP_PARAM_GROUP) { const struct GroupInfo *ginfo = (const struct GroupInfo *)PGM_POINTER(&group_info[i].group_info); AP_Param *ap = find_group(name, vindex, ginfo, ptype); if (ap != NULL) { return ap; } - } else if (strcasecmp_P(name, group_info[i].name) == 0) { + } else +#endif // AP_NESTED_GROUPS_ENABLED + if (strcasecmp_P(name, group_info[i].name) == 0) { uintptr_t p = PGM_POINTER(&_var_info[vindex].ptr); *ptype = (enum ap_var_type)type; return (AP_Param *)(p + PGM_POINTER(&group_info[i].offset)); From 337af0c7a2f5483e15356cc362ae294380cae3ae Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Wed, 29 Feb 2012 19:48:43 -0800 Subject: [PATCH 107/122] AP_Param: nested group recursion into next_group disableable by macro * c.f. 0251932c81fe7eb, e5515bb6ef82 --- libraries/AP_Common/AP_Param.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Common/AP_Param.cpp b/libraries/AP_Common/AP_Param.cpp index 6648c6fc84..3beb585ee3 100644 --- a/libraries/AP_Common/AP_Param.cpp +++ b/libraries/AP_Common/AP_Param.cpp @@ -719,6 +719,7 @@ AP_Param *AP_Param::next_group(uint8_t vindex, const struct GroupInfo *group_inf for (uint8_t i=0; (type=(enum ap_var_type)PGM_UINT8(&group_info[i].type)) != AP_PARAM_NONE; i++) { +#ifdef AP_NESTED_GROUPS_ENABLED if (type == AP_PARAM_GROUP) { // a nested group const struct GroupInfo *ginfo = (const struct GroupInfo *)PGM_POINTER(&group_info[i].group_info); @@ -728,7 +729,9 @@ AP_Param *AP_Param::next_group(uint8_t vindex, const struct GroupInfo *group_inf if (ap != NULL) { return ap; } - } else { + } else +#endif // AP_NESTED_GROUPS_ENABLED + { if (*found_current) { // got a new one token->key = vindex; From 41b435a4879b0ce8a23d0c6ad35a7ee5cd70884b Mon Sep 17 00:00:00 2001 From: Jason Short Date: Wed, 29 Feb 2012 22:15:13 -0800 Subject: [PATCH 108/122] Updated fastPWM to 490Hz --- libraries/APM_RC/APM_RC_APM1.cpp | 22 +++++++++++----------- libraries/APM_RC/APM_RC_APM2.cpp | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp index fa4995f8c8..dab7d05cd9 100644 --- a/libraries/APM_RC/APM_RC_APM1.cpp +++ b/libraries/APM_RC/APM_RC_APM1.cpp @@ -250,29 +250,29 @@ void APM_RC_APM1::Force_Out6_Out7(void) // Output rate options: #define OUTPUT_SPEED_50HZ 0 #define OUTPUT_SPEED_200HZ 1 -#define OUTPUT_SPEED_400HZ 2 +#define OUTPUT_SPEED_490HZ 2 void APM_RC_APM1::SetFastOutputChannels(uint32_t chmask) { if ((chmask & ( _BV(CH_1) | _BV(CH_2) | _BV(CH_9))) != 0) - _set_speed_ch1_ch2_ch9(OUTPUT_SPEED_400HZ); + _set_speed_ch1_ch2_ch9(OUTPUT_SPEED_490HZ); if ((chmask & ( _BV(CH_3) | _BV(CH_4) | _BV(CH_10))) != 0) - _set_speed_ch3_ch4_ch10(OUTPUT_SPEED_400HZ); + _set_speed_ch3_ch4_ch10(OUTPUT_SPEED_490HZ); if ((chmask & ( _BV(CH_5) | _BV(CH_6))) != 0) - _set_speed_ch5_ch6(OUTPUT_SPEED_400HZ); + _set_speed_ch5_ch6(OUTPUT_SPEED_490HZ); if ((chmask & ( _BV(CH_7) | _BV(CH_8) | _BV(CH_11))) != 0) - _set_speed_ch7_ch8_ch11(OUTPUT_SPEED_400HZ); + _set_speed_ch7_ch8_ch11(OUTPUT_SPEED_490HZ); } void APM_RC_APM1::_set_speed_ch1_ch2_ch9(uint8_t speed) { switch(speed) { - case OUTPUT_SPEED_400HZ: - ICR1= 5000; + case OUTPUT_SPEED_490HZ: + ICR1= 4096; break; case OUTPUT_SPEED_200HZ: ICR1= 10000; @@ -287,8 +287,8 @@ void APM_RC_APM1::_set_speed_ch1_ch2_ch9(uint8_t speed) void APM_RC_APM1::_set_speed_ch3_ch4_ch10(uint8_t speed) { switch(speed) { - case OUTPUT_SPEED_400HZ: - ICR5= 5000; + case OUTPUT_SPEED_490HZ: + ICR5= 4096; break; case OUTPUT_SPEED_200HZ: ICR5= 10000; @@ -303,8 +303,8 @@ void APM_RC_APM1::_set_speed_ch3_ch4_ch10(uint8_t speed) void APM_RC_APM1::_set_speed_ch7_ch8_ch11(uint8_t speed) { switch(speed) { - case OUTPUT_SPEED_400HZ: - ICR3 = 5000; + case OUTPUT_SPEED_490HZ: + ICR3 = 4096; break; case OUTPUT_SPEED_200HZ: ICR3 = 10000; diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp index d0a480a0e9..ca3a2da94d 100644 --- a/libraries/APM_RC/APM_RC_APM2.cpp +++ b/libraries/APM_RC/APM_RC_APM2.cpp @@ -230,25 +230,25 @@ void APM_RC_APM2::Force_Out6_Out7(void) { } // Output rate options: #define OUTPUT_SPEED_50HZ 0 #define OUTPUT_SPEED_200HZ 1 -#define OUTPUT_SPEED_400HZ 2 +#define OUTPUT_SPEED_490HZ 2 void APM_RC_APM2::SetFastOutputChannels(uint32_t chmask) { if ((chmask & ( _BV(CH_1) | _BV(CH_2))) != 0) - _set_speed_ch1_ch2(OUTPUT_SPEED_400HZ); + _set_speed_ch1_ch2(OUTPUT_SPEED_490HZ); if ((chmask & ( _BV(CH_3) | _BV(CH_4) | _BV(CH_5))) != 0) - _set_speed_ch3_ch4_ch5(OUTPUT_SPEED_400HZ); + _set_speed_ch3_ch4_ch5(OUTPUT_SPEED_490HZ); if ((chmask & ( _BV(CH_6) | _BV(CH_7) | _BV(CH_8))) != 0) - _set_speed_ch6_ch7_ch8(OUTPUT_SPEED_400HZ); + _set_speed_ch6_ch7_ch8(OUTPUT_SPEED_490HZ); } void APM_RC_APM2::_set_speed_ch1_ch2(uint8_t speed) { switch(speed) { - case OUTPUT_SPEED_400HZ: - ICR1 = 5000; + case OUTPUT_SPEED_490HZ: + ICR1 = 4096; break; case OUTPUT_SPEED_200HZ: ICR1 = 10000; @@ -263,8 +263,8 @@ void APM_RC_APM2::_set_speed_ch1_ch2(uint8_t speed) void APM_RC_APM2::_set_speed_ch3_ch4_ch5(uint8_t speed) { switch(speed) { - case OUTPUT_SPEED_400HZ: - ICR4 = 5000; + case OUTPUT_SPEED_490HZ: + ICR4 = 4096; break; case OUTPUT_SPEED_200HZ: ICR4 = 10000; @@ -280,8 +280,8 @@ void APM_RC_APM2::_set_speed_ch3_ch4_ch5(uint8_t speed) void APM_RC_APM2::_set_speed_ch6_ch7_ch8(uint8_t speed) { switch(speed) { - case OUTPUT_SPEED_400HZ: - ICR3 = 5000; + case OUTPUT_SPEED_490HZ: + ICR3 = 4096; break; case OUTPUT_SPEED_200HZ: ICR3 = 10000; From ee5e331f3c3334ef62112012d2cbdbf3e4cb3145 Mon Sep 17 00:00:00 2001 From: Michael Oborne Date: Thu, 1 Mar 2012 21:27:03 +0800 Subject: [PATCH 109/122] APM Planner 1.1.45 add tcp and udp port remeber issue 533 add udp listern wait issue 534 fix wp receive on mono part issue 530 allow logging of unknown packets mav 0.9 do_speed_change fix issue 531 remember last video res issue 521 fix issue 528 - ch 6 and ch 7 options --- .../ArdupilotMegaPlanner/ArdupilotMega.csproj | 1 + Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs | 10 ++ Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs | 70 ++++++--- .../GCSViews/FlightPlanner.cs | 23 ++- Tools/ArdupilotMegaPlanner/MAVLink.cs | 17 ++- Tools/ArdupilotMegaPlanner/MagCalib.cs | 138 ++++++++++++++++++ Tools/ArdupilotMegaPlanner/MainV2.cs | 2 +- Tools/ArdupilotMegaPlanner/Program.cs | 4 + .../Properties/AssemblyInfo.cs | 2 +- Tools/ArdupilotMegaPlanner/Protocol.cs | 65 +++++++++ Tools/ArdupilotMegaPlanner/Speech.cs | 27 +++- .../ArdupilotMegaPlanner/bin/Release/.gdbinit | 29 ++++ .../bin/Release/ArdupilotMegaPlanner.pdb | Bin 968192 -> 972288 bytes .../bin/Release/mavcmd.xml | 4 +- Tools/ArdupilotMegaPlanner/bin/Release/runme | 3 + Tools/ArdupilotMegaPlanner/mavcmd.xml | 4 +- 16 files changed, 361 insertions(+), 38 deletions(-) create mode 100644 Tools/ArdupilotMegaPlanner/MagCalib.cs create mode 100644 Tools/ArdupilotMegaPlanner/Protocol.cs create mode 100644 Tools/ArdupilotMegaPlanner/bin/Release/.gdbinit create mode 100644 Tools/ArdupilotMegaPlanner/bin/Release/runme diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index 5806ac70d5..8d80840653 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -243,6 +243,7 @@ ProgressReporterDialogue.cs + Form diff --git a/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs b/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs index b9c2fbc5b8..aa42322d42 100644 --- a/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs +++ b/Tools/ArdupilotMegaPlanner/CommsTCPSerial.cs @@ -82,6 +82,13 @@ namespace System.IO.Ports string dest = Port; string host = "127.0.0.1"; + + if (ArdupilotMega.MainV2.config["TCP_port"] != null) + dest = ArdupilotMega.MainV2.config["TCP_port"].ToString(); + + if (ArdupilotMega.MainV2.config["TCP_host"] != null) + host = ArdupilotMega.MainV2.config["TCP_host"].ToString(); + if (Windows.Forms.DialogResult.Cancel == ArdupilotMega.Common.InputBox("remote host", "Enter host name/ip (ensure remote end is already started)", ref host)) { throw new Exception("Canceled by request"); @@ -92,6 +99,9 @@ namespace System.IO.Ports } Port = dest; + ArdupilotMega.MainV2.config["TCP_port"] = Port; + ArdupilotMega.MainV2.config["TCP_host"] = host; + client = new TcpClient(host, int.Parse(Port)); client.NoDelay = true; diff --git a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs index e446c4df94..a5ac6dbf51 100644 --- a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs +++ b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs @@ -3,6 +3,7 @@ using System.Text; using System.Net; // dns, ip address using System.Net.Sockets; // tcplistner using log4net; +using ArdupilotMega.Controls; namespace System.IO.Ports { @@ -59,7 +60,7 @@ namespace System.IO.Ports get { return client.Available + rbuffer.Length - rbufferread; } } - public bool IsOpen { get { return client.Client.Connected; } } + public bool IsOpen { get { if (client.Client == null) return false; return client.Client.Connected; } } public bool DtrEnable { @@ -75,22 +76,59 @@ namespace System.IO.Ports return; } + ProgressReporterDialogue frmProgressReporter = new ProgressReporterDialogue + { + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen, + Text = "Connecting Mavlink UDP" + }; + + frmProgressReporter.DoWork += frmProgressReporter_DoWork; + + frmProgressReporter.UpdateProgressAndStatus(-1, "Connecting Mavlink UDP"); + + ArdupilotMega.MainV2.fixtheme(frmProgressReporter); + + frmProgressReporter.RunBackgroundOperationAsync(); + + + } + + void frmProgressReporter_DoWork(object sender, ArdupilotMega.Controls.ProgressWorkerEventArgs e) + { string dest = Port; + + if (ArdupilotMega.MainV2.config["UDP_port"] != null) + dest = ArdupilotMega.MainV2.config["UDP_port"].ToString(); + ArdupilotMega.Common.InputBox("Listern Port", "Enter Local port (ensure remote end is already sending)", ref dest); Port = dest; + ArdupilotMega.MainV2.config["UDP_port"] = Port; + client = new UdpClient(int.Parse(Port)); - int timeout = 5; - while (timeout > 0) - { - if (BytesToRead > 0) - break; - System.Threading.Thread.Sleep(1000); - timeout--; - } - if (BytesToRead == 0) - return; + while (true) + { + ((ProgressReporterDialogue)sender).UpdateProgressAndStatus(-1, "Waiting for UDP"); + System.Threading.Thread.Sleep(500); + + if (((ProgressReporterDialogue)sender).doWorkArgs.CancelRequested) + { + ((ProgressReporterDialogue)sender).doWorkArgs.CancelAcknowledged = true; + try + { + client.Close(); + } + catch { } + return; + } + + if (BytesToRead > 0) + break; + } + + if (BytesToRead == 0) + return; try { @@ -98,18 +136,16 @@ namespace System.IO.Ports log.InfoFormat("NetSerial connecting to {0} : {1}", RemoteIpEndPoint.Address, RemoteIpEndPoint.Port); client.Connect(RemoteIpEndPoint); } - catch (Exception e) - { + catch (Exception ex) + { if (client != null && client.Client.Connected) { client.Close(); } - log.Info(e.ToString()); + log.Info(ex.ToString()); System.Windows.Forms.MessageBox.Show("Please check your Firewall settings\nPlease try running this command\n1. Run the following command in an elevated command prompt to disable Windows Firewall temporarily:\n \nNetsh advfirewall set allprofiles state off\n \nNote: This is just for test; please turn it back on with the command 'Netsh advfirewall set allprofiles state on'.\n"); throw new Exception("The socket/serialproxy is closed " + e); } - - return; } void VerifyConnected() @@ -251,7 +287,7 @@ namespace System.IO.Ports public void Close() { - if (client.Client.Connected) + if (client.Client != null && client.Client.Connected) { client.Client.Close(); client.Close(); diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs index 8a446a2516..04e5e0de87 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightPlanner.cs @@ -1251,7 +1251,7 @@ namespace ArdupilotMega.GCSViews catch (Exception ex) { error = 1; MessageBox.Show("Error : " + ex.ToString()); } try { - this.BeginInvoke((System.Threading.ThreadStart)delegate() + this.BeginInvoke((MethodInvoker)delegate() { if (error == 0) { @@ -1508,29 +1508,44 @@ namespace ArdupilotMega.GCSViews } } + log.Info("Setting wp params"); + string hold_alt = ((int)((float)param["ALT_HOLD_RTL"] * MainV2.cs.multiplierdist)).ToString(); + log.Info("param ALT_HOLD_RTL " + hold_alt); + if (!hold_alt.Equals("-1")) { TXT_DefaultAlt.Text = hold_alt; } TXT_WPRad.Text = ((int)((float)param["WP_RADIUS"] * MainV2.cs.multiplierdist)).ToString(); + + log.Info("param WP_RADIUS " + TXT_WPRad.Text); + try { - TXT_loiterrad.Text = ((int)((float)param["LOITER_RADIUS"] * MainV2.cs.multiplierdist)).ToString(); + if (param["LOITER_RADIUS"] != null) + TXT_loiterrad.Text = ((int)((float)param["LOITER_RADIUS"] * MainV2.cs.multiplierdist)).ToString(); + + if (param["WP_LOITER_RAD"] != null) + TXT_loiterrad.Text = ((int)((float)param["WP_LOITER_RAD"] * MainV2.cs.multiplierdist)).ToString(); + + log.Info("param LOITER_RADIUS " + TXT_loiterrad.Text); } catch { - TXT_loiterrad.Text = ((int)((float)param["WP_LOITER_RAD"] * MainV2.cs.multiplierdist)).ToString(); + } CHK_holdalt.Checked = Convert.ToBoolean((float)param["ALT_HOLD_RTL"] > 0); + log.Info("param ALT_HOLD_RTL " + CHK_holdalt.Checked.ToString()); } - catch (Exception) { } // if there is no valid home + catch (Exception ex) { log.Info(ex.ToString()); } // if there is no valid home if (Commands.RowCount > 0) { + log.Info("remove home from list"); Commands.Rows.Remove(Commands.Rows[0]); // remove home row } diff --git a/Tools/ArdupilotMegaPlanner/MAVLink.cs b/Tools/ArdupilotMegaPlanner/MAVLink.cs index e5cb32bc07..36b70180b2 100644 --- a/Tools/ArdupilotMegaPlanner/MAVLink.cs +++ b/Tools/ArdupilotMegaPlanner/MAVLink.cs @@ -178,6 +178,7 @@ namespace ArdupilotMega lock (objlock) // so we dont have random traffic { + log.Info("Open port with " + BaseStream.PortName + " " + BaseStream.BaudRate); BaseStream.Open(); @@ -222,7 +223,7 @@ namespace ArdupilotMega // incase we are in setup mode BaseStream.WriteLine("planner\rgcs\r"); - log.Info(DateTime.Now.Millisecond + " start "); + log.Info(DateTime.Now.Millisecond + " Start connect loop "); if (lastbad[0] == '!' && lastbad[1] == 'G' || lastbad[0] == 'G' && lastbad[1] == '!') // waiting for gps lock { @@ -257,7 +258,7 @@ namespace ArdupilotMega try { - log.Info("MAv Data: len " + buffer.Length + " btr " + BaseStream.BytesToRead); + log.Debug("MAv Data: len " + buffer.Length + " btr " + BaseStream.BytesToRead); } catch { } @@ -325,6 +326,7 @@ namespace ArdupilotMega byte[] buffer = readPacket(); if (buffer.Length > 5) { + log.Info("getHB packet received: " + buffer.Length + " btr " + BaseStream.BytesToRead + " type " + buffer[5] ); if (buffer[5] == MAVLINK_MSG_ID_HEARTBEAT) { return buffer; @@ -2074,12 +2076,19 @@ namespace ArdupilotMega if (temp.Length > 5 && temp[1] != MAVLINK_MESSAGE_LENGTHS[temp[5]]) { - log.InfoFormat("Mavlink Bad Packet (Len Fail) len {0} pkno {1}", temp.Length, temp[5]); + if (MAVLINK_MESSAGE_LENGTHS[temp[5]] == 0) // pass for unknown packets + { + + } + else + { + log.InfoFormat("Mavlink Bad Packet (Len Fail) len {0} pkno {1}", temp.Length, temp[5]); #if MAVLINK10 if (temp.Length == 11 && temp[0] == 'U' && temp[5] == 0) throw new Exception("Mavlink 0.9 Heartbeat, Please upgrade your AP, This planner is for Mavlink 1.0\n\n"); #endif - return new byte[0]; + return new byte[0]; + } } if (temp.Length < 5 || temp[temp.Length - 1] != (crc >> 8) || temp[temp.Length - 2] != (crc & 0xff)) diff --git a/Tools/ArdupilotMegaPlanner/MagCalib.cs b/Tools/ArdupilotMegaPlanner/MagCalib.cs new file mode 100644 index 0000000000..5edd807b18 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/MagCalib.cs @@ -0,0 +1,138 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.IO; + +namespace ArdupilotMega +{ + public class MagCalib + { + + //alglib.lsfit. + + public static void doWork() + { + /* + double[,] x = new double[,] { { -1 }, { -0.8 }, { -0.6 }, { -0.4 }, { -0.2 }, { 0 }, { 0.2 }, { 0.4 }, { 0.6 }, { 0.8 }, { 1.0 } }; + double[] y = new double[] { 0.223130, 0.382893, 0.582748, 0.786628, 0.941765, 1.000000, 0.941765, 0.786628, 0.582748, 0.382893, 0.223130 }; + double[] c = new double[] { 0.3 }; + double epsf = 0; + double epsx = 0.000001; + int maxits = 0; + int info; + alglib.lsfitstate state; + alglib.lsfitreport rep; + double diffstep = 0.0001; + + // + // Fitting without weights + // + alglib.lsfitcreatef(x, y, c, diffstep, out state); + alglib.lsfitsetcond(state, epsf, epsx, maxits); + alglib.lsfitfit(state, function_cx_1_func, null, null); + alglib.lsfitresults(state, out info, out c, out rep); + System.Console.WriteLine("{0}", info); // EXPECTED: 2 + System.Console.WriteLine("{0}", alglib.ap.format(c, 1)); // EXPECTED: [1.5] + */ + + // based of tridge's work + + Tuple offset = new Tuple(0, 0, 0); + List> data = new List>(); + + + OpenFileDialog openFileDialog1 = new OpenFileDialog(); + openFileDialog1.Filter = "*.tlog|*.tlog"; + openFileDialog1.FilterIndex = 2; + openFileDialog1.RestoreDirectory = true; + openFileDialog1.Multiselect = true; + try + { + openFileDialog1.InitialDirectory = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"logs" + Path.DirectorySeparatorChar; + } + catch { } // incase dir doesnt exist + + if (openFileDialog1.ShowDialog() == DialogResult.OK) + { + foreach (string logfile in openFileDialog1.FileNames) + { + + MAVLink mine = new MAVLink(); + mine.logplaybackfile = new BinaryReader(File.Open(logfile, FileMode.Open, FileAccess.Read, FileShare.Read)); + mine.logreadmode = true; + + mine.packets.Initialize(); // clear + + // gather data + while (mine.logplaybackfile.BaseStream.Position < mine.logplaybackfile.BaseStream.Length) + { + // bar moves to 100 % in this step + //progressBar1.Value = (int)((float)mine.logplaybackfile.BaseStream.Position / (float)mine.logplaybackfile.BaseStream.Length * 100.0f / 1.0f); + + //progressBar1.Refresh(); + //Application.DoEvents(); + + byte[] packet = mine.readPacket(); + + var pack = mine.DebugPacket(packet); + + if (pack.GetType() == typeof(MAVLink.__mavlink_sensor_offsets_t)) + { + offset = new Tuple( + ((MAVLink.__mavlink_sensor_offsets_t)pack).mag_ofs_x, + ((MAVLink.__mavlink_sensor_offsets_t)pack).mag_ofs_y, + ((MAVLink.__mavlink_sensor_offsets_t)pack).mag_ofs_z); + } + else if (pack.GetType() == typeof(MAVLink.__mavlink_raw_imu_t)) + { + data.Add(new Tuple( + ((MAVLink.__mavlink_raw_imu_t)pack).xmag - offset.Item1, + ((MAVLink.__mavlink_raw_imu_t)pack).ymag - offset.Item2, + ((MAVLink.__mavlink_raw_imu_t)pack).zmag - offset.Item3)); + } + + } + + + + + + + //progressBar1.Value = 100; + + mine.logreadmode = false; + mine.logplaybackfile.Close(); + mine.logplaybackfile = null; + + } + } + } + + public static List sphere_error(double[,] p, double[] data) + { + double xofs = p[0, 0]; + double yofs = p[0, 1]; + double zofs = p[0, 2]; + double r = p[0, 3]; + List ret = new List(); + foreach (var d in data) + { + //double x, y, z = d; + //double err = r - Math.Sqrt(Math.Pow((x + xofs), 2) + Math.Pow((y + yofs), 2) + Math.Pow((z + zofs), 2)); + //ret.Add(err); + } + return ret; + } + + public static void function_cx_1_func(double[] c, double[] x, ref double func, object obj) + { + // this callback calculates f(c,x)=exp(-c0*sqr(x0)) + // where x is a position on X-axis and c is adjustable parameter + func = System.Math.Exp(-c[0] * x[0] * x[0]); + } + + + } +} \ No newline at end of file diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index 89af4071ef..3ab2c80f11 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -264,7 +264,7 @@ namespace ArdupilotMega if (Directory.Exists("/dev/")) { if (Directory.Exists("/dev/serial/by-id/")) - devs = Directory.GetFiles("/dev/serial/by-id/", "*usb*"); + devs = Directory.GetFiles("/dev/serial/by-id/", "*"); devs = Directory.GetFiles("/dev/", "*ACM*"); devs = Directory.GetFiles("/dev/", "ttyUSB*"); } diff --git a/Tools/ArdupilotMegaPlanner/Program.cs b/Tools/ArdupilotMegaPlanner/Program.cs index 4dd0cef969..a0792ca57c 100644 --- a/Tools/ArdupilotMegaPlanner/Program.cs +++ b/Tools/ArdupilotMegaPlanner/Program.cs @@ -28,6 +28,10 @@ namespace ArdupilotMega Application.Idle += Application_Idle; + //MagCalib.doWork(); + + //return; + //MessageBox.Show("NOTE: This version may break advanced mission scripting"); //Common.linearRegression(); diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs index d8f39f2103..a45540e1e7 100644 --- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs +++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs @@ -34,5 +34,5 @@ using System.Resources; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.1.44")] +[assembly: AssemblyFileVersion("1.1.45")] [assembly: NeutralResourcesLanguageAttribute("")] diff --git a/Tools/ArdupilotMegaPlanner/Protocol.cs b/Tools/ArdupilotMegaPlanner/Protocol.cs new file mode 100644 index 0000000000..395fb2aeda --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Protocol.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Collections; +using System.IO; + +namespace ArdupilotMega +{ + partial interface Protocol + { + byte[][] packets { get; set; } + + PointLatLngAlt[] wps { get; set; } + + ICommsSerial BaseStream { get; set; } + + int bps { get; set; } + bool debugmavlink { get; set; } + + DateTime lastvalidpacket {get;set;} + + bool logreadmode { get; set; } + DateTime lastlogread { get; set; } + BinaryReader logplaybackfile { get; set; } + BinaryWriter logfile { get; set; } + + byte sysid { get; set; } + byte compid { get; set; } + Hashtable param { get; set; } + + void UpdateCurrentSettings(ref CurrentState cs); + + void Close(); + + void Open(); + void Open(bool getparams); + + void sendPacket(object indata); + bool Write(string line); + bool setParam(string paramname, float value); + Hashtable getParamList(); + void modifyParamForDisplay(bool fromapm, string paramname, ref float value); + + void stopall(bool forget); + void setWPACK(); + bool setWPCurrent(ushort index); + bool doAction(byte actionid); // MAV_ACTION + + void requestDatastream(byte id, byte hzrate); + byte getWPCount(); + Locationwp getWP(ushort index); + object DebugPacket(byte[] datin); + object DebugPacket(byte[] datin, ref string text); + void setWPTotal(ushort wp_total); + void setWP(Locationwp loc, ushort index, byte frame, byte current); //MAV_FRAME + + void setMountConfigure(byte mountmode, bool stabroll, bool stabpitch, bool stabyaw); //MAV_MOUNT_MODE + void setMountControl(double pa, double pb, double pc, bool islatlng); + void setMode(string modein); + byte[] readPacket(); + + bool translateMode(string modein, ref object navmode, ref object mode); + } +} diff --git a/Tools/ArdupilotMegaPlanner/Speech.cs b/Tools/ArdupilotMegaPlanner/Speech.cs index 7e5c50ba87..baa8cd0b0e 100644 --- a/Tools/ArdupilotMegaPlanner/Speech.cs +++ b/Tools/ArdupilotMegaPlanner/Speech.cs @@ -11,20 +11,21 @@ namespace ArdupilotMega SpeechSynthesizer _speechwindows; System.Diagnostics.Process _speechlinux; + System.Speech.Synthesis.SynthesizerState _state = SynthesizerState.Ready; + bool MONO = false; public SynthesizerState State { get { if (MONO) { - return SynthesizerState.Ready; + return _state; } else { return _speechwindows.State; } - } - private set { } + } } public Speech() @@ -34,8 +35,7 @@ namespace ArdupilotMega if (MONO) { - _speechlinux = new System.Diagnostics.Process(); - _speechlinux.StartInfo.FileName = "festival"; + _state = SynthesizerState.Ready; } else { @@ -47,7 +47,14 @@ namespace ArdupilotMega { if (MONO) { - + if (_speechlinux == null || _speechlinux.HasExited) + { + _state = SynthesizerState.Speaking; + _speechlinux = new System.Diagnostics.Process(); + _speechlinux.StartInfo.FileName = "echo " + text + " | festival --tts"; + _speechlinux.Start(); + _speechlinux.Exited += new EventHandler(_speechlinux_Exited); + } } else { @@ -55,11 +62,17 @@ namespace ArdupilotMega } } + void _speechlinux_Exited(object sender, EventArgs e) + { + _state = SynthesizerState.Ready; + } + public void SpeakAsyncCancelAll() { if (MONO) { - + _speechlinux.Close(); + _state = SynthesizerState.Ready; } else { diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/.gdbinit b/Tools/ArdupilotMegaPlanner/bin/Release/.gdbinit new file mode 100644 index 0000000000..c8b95361b0 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/bin/Release/.gdbinit @@ -0,0 +1,29 @@ +handle SIGXCPU SIG33 SIG35 SIGPWR nostop noprint + +define mono_backtrace + select-frame 0 + set $i = 0 + while ($i < $arg0) + set $foo = (char*) mono_pmip ($pc) + if ($foo) + printf "#%d %p in %s\n", $i, $pc, $foo + else + frame + end + up-silently + set $i = $i + 1 + end +end + + +define mono_stack + set $mono_thread = mono_thread_current () + if ($mono_thread == 0x00) + printf "No mono thread associated with this thread\n" + else + set $ucp = malloc (sizeof (ucontext_t)) + call (void) getcontext ($ucp) + call (void) mono_print_thread_dump ($ucp) + call (void) free ($ucp) + end +end diff --git a/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb b/Tools/ArdupilotMegaPlanner/bin/Release/ArdupilotMegaPlanner.pdb index 39326966bce269b353513e8b6549884de3dfa5d9..1edad2b768fbd41d7eb1eed16b382927768e69b8 100644 GIT binary patch delta 172329 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 MB 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 P&lC7$lq4Q-A2k0D$oAeM delta 168015 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