diff --git a/files/ardupilotmega/arduplane.pdef.xml b/files/ardupilotmega/arduplane.pdef.xml new file mode 100644 index 0000000000000000000000000000000000000000..f157f70e5def73265770b2d6c7a42ca3e9341d7f --- /dev/null +++ b/files/ardupilotmega/arduplane.pdef.xml @@ -0,0 +1,2999 @@ + + + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 + + + +0 10 +1 +seconds + + +0 1 +0.01 + + +0 1 +0.01 + + +0 5 +0.01 + + +0 5 +0.01 + + + +Disabled +Enabled + + + + +Disabled +FBWMixing +DirectMixing + + + +0 30 +0.1 +m/s + + +0 30 +0.1 +m/s/s + + +0 45 +1 +degrees + + +centi-Degrees + + +0.1 +meters + + +0.1 +seconds + + + +Legacy +L1Controller + + + +0 1 +0.1 +Percent + + + +Default Method +non-airspeed + + + +-32767 32767 +1 +Meters + + +1 32767 +1 +Meters + + +1 32767 +1 +Meters + + + +None +GuidedMode +ReportOnly + + + + + + + +0 32767 +1 +meters + + +0 32767 +1 +meters + + +5 50 +1 +m/s + + +5 50 +1 +m/s + + + +Disabled +Enabled + + + +1-10 +0.1 + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + + +0 100 +1 +Percent + + + +Disabled +Enabled + + + + +None +ReturnToLaunch + + + + +None +ReturnToLaunch + + + + +Disabled +Enabled + + + + + + +Manual +CIRCLE +STABILIZE +TRAINING +FBWA +FBWB +Auto +RTL +Loiter +Guided + + + + +Manual +CIRCLE +STABILIZE +TRAINING +FBWA +FBWB +Auto +RTL +Loiter +Guided + + + + +Manual +CIRCLE +STABILIZE +TRAINING +FBWA +FBWB +Auto +RTL +Loiter +Guided + + + + +Manual +CIRCLE +STABILIZE +TRAINING +FBWA +FBWB +Auto +RTL +Loiter +Guided + + + + +Manual +CIRCLE +STABILIZE +TRAINING +FBWA +FBWB +Auto +RTL +Loiter +Guided + + + + +Manual +CIRCLE +STABILIZE +TRAINING +FBWA +FBWB +Auto +RTL +Loiter +Guided + + + +0 9000 +1 +centi-Degrees + + +0 9000 +1 +centi-Degrees + + +-9000 0 +1 +centi-Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +UpUp +UpDown +DownUp +DownDown + + + + + + + + + + + +cm/s + + +m/s + + +cm/s + + +centi-Degrees + + +centimeters + + +centimeters + + + +Disabled +Enabled + + + +A/V + + +Volts + + +mAh + + + +Disabled +A0 +A1 +A13 + + + + +Disabled +A1 +A2 +A12 + + + + +Disabled +A0 +A1 +A13 + + + + +Disabled +Channel1 +Channel2 +Channel3 +Channel4 +Channel5 +Channel6 +Channel7 +Channel8 + + + + +Disabled +Enabled + + + + + + + + + + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 + + + +0 10 +1 +seconds + + +0 4000 +1 +Centimeters + + + +Disabled +Enabled + + + + +XL-EZ0 +LV-EZ0 +XLL-EZ0 +HRLV + + + + +Disabled +Voltage Only +Voltage and Current + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + + + + +mAh + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 20 +.1 + + + +Disabled +Enabled + + + +-1 1000 +1 +Centimeters + + + +Disabled +A0 +A1 +A13 + + + + +Disabled +A1 +A2 +A12 + + + + +Disabled +A0 +A1 +A2 +A13 + + + + +Disabled +Enabled + + + + +At Next WP +On Mission Restart + + + + + + + +1 127 +1 +Meters + + +0 60000 +1000 +ms + + +10 200 +10 +Centimeters/Second + + +-500 -50 +10 +Centimeters/Second + + +50 500 +10 +Centimeters/Second + + +10 500 +10 +Centimeters/Second + + +0 1000 +1 +ms + + +0 1000 +1 +ms + + + +Disabled +Enabled always RTL +Enabled Continue with Mission in Auto Mode + + + + + +0 1000 +PWM + + +300 700 +1 + + + + + + + + + + + + + + + + + + +1 10 + + + +Normal Start-up +Start-up in ESC Calibration mode + + + + +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_WP_SPEED +CH6_LOITER_KP +CH6_HELI_EXTERNAL_GYRO +CH6_THR_HOLD_KP +CH6_OPTFLOW_KP +CH6_OPTFLOW_KI +CH6_OPTFLOW_KD +CH6_RATE_KD +CH6_LOITER_RATE_KP +CH6_LOITER_RATE_KD +CH6_YAW_KI +CH6_ACRO_KP +CH6_YAW_RATE_KD +CH6_LOITER_KI +CH6_LOITER_RATE_KI +CH6_STABILIZE_KD +CH6_AHRS_YAW_KP +CH6_AHRS_KP +CH6_INAV_TC +CH6_THROTTLE_KI +CH6_THR_ACCEL_KP +CH6_THR_ACCEL_KI +CH6_THR_ACCEL_KD +CH6_DECLINATION + + + +0 32767 + + +0 32767 + + +0 32767 + +Plus +X +V + + + + +Do Nothing +Flip +Simple Mode +RTL +Save Trim +Save WP +Camera Trigger +Sonar + + + +1 90 +1 +Degrees/Second + + +125,400,490 +Hertz (Hz) + + +1 10 + + + +Disabled +Enabled + + + +0 300 +1 + + +0 300 +1 + + + +Disabled +Enabled + + + + +Disabled +Enable +GPS On +Aux +Buzzer +Oscillate +Nav Blink +GPS Nav Blink + + + +0.001 0.008 + + +0.001 0.008 + + +0.000 0.001 + + +0.200 0.600 + + +0.200 0.600 + + +0.000 0.400 + + +0.000 0.400 + + +0.100 0.140 + + +0.100 0.140 + + +0 4500 + + +0 4500 + + +0 4500 + + +0 500 + + +0 3000 + + +0 3000 + + + + + +Disabled +A0 +A1 +A13 + + + + +Disabled +A0 +A1 +A13 + + + + +Disabled +A1 +A2 +A12 + + + + + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 + + + + +1200 +2400 +4800 +9600 +19200 +38400 +57600 +111100 +115200 + + + +0 10 +1 +seconds + + + +Disabled +Enabled + + + + +Disabled +Voltage Only +Voltage and Current + + + + + + + +mAh + + +0 2000 +1 + + +0 9000 +1 +centi-Degrees + + + +Disabled +TiggerPin + + + +0 20 +0.1 +m/s/s + + +0 100 +0.1 +m/s + + +0 100 +1 +percent + + +0 100 +0.1 +meters + + + +Nothing +LearnWaypoint + + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + +0 100 +1 +Percent + + + +Disabled +SkidSteeringOutput + + + + +Disabled +SkidSteeringInput + + + + +Nothing +RTL +HOLD + + + +seconds + + + +Disabled +Enabled + + + + + + +Disabled +Enabled + + + +0 1000 +1 +centimeters + + +-45 45 +1 +centimeters + + +0 100 +0.1 +seconds + + +1 100 +1 + + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + + +Manual +LEARNING +STEERING +HOLD +Auto +RTL +Guided + + + +0 1000 +0.1 +meters + + + + + +Servo +Relay +Servo and turn off throttle +Servo when 3m from waypoint +transistor + + + +0 50 + + +1000 2000 + + +1000 2000 + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +-400 400 +1 + + +-3.142 3.142 +0.01 +Radians + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + +1 + + +-1000 1000 +1 + + + + + + +-300 300 +m/s/s + + +rad/s + + + +Default +5Hz +10Hz +20Hz +42Hz +98Hz + +Hz + + + + +0.0 1.0 +.01 + + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s + + +Radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 + + + +0.001 0.5 +.01 + + + + + +Disable +Enable + + + + +Use +Don't Use + + + +0.1 + + +0.1 + + + + +1-60 +1 +seconds + + +0.6-1.0 +0.05 + + + + + +retract +neutral +MavLink_targeting +RC_targeting +GPS_point + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0 100 +1 + + + + + +retract +neutral +MavLink_targeting +RC_targeting +GPS_point + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0 100 +1 + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + +800 2200 +1 +ms + + + +Reversed +Normal + + + + + + +Disabled +Manual +Flap +Flap_auto +Aileron +flaperon +mount_pan +mount_tilt +mount_roll +mount_open +camera_trigger +release +mount2_pan +mount2_tilt +mount2_roll +mount2_open +DifferentialSpoiler1 +DifferentialSpoiler2 +AileronWithInput +Elevator +ElevatorWithInput + + + + + + +Servo +Relay +Servo and turn off throttle +Servo when 3m from waypoint +transistor + + + +0 50 + + +1000 2000 + + +1000 2000 + + + + +-400 400 +1 + + +-3.142 3.142 +0.01 +Radians + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Use Throttle +Use Current + +1 + + +-1000 1000 +1 + + + + +0 10 +0.1 + + +0 10 +0.1 + + + + +0 1000 +100 +Centimeters/Second + + +100 1000 +1 +Centimeters + + + + +0 1000 +100 +Centimeters/Second + + +100 1000 +1 +Centimeters + + + + +0 1000 +100 +Centimeters/Second + + +100 1000 +1 +Centimeters + + + + +0.0 1.0 +.01 + + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s + + +Radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 + + + +0.001 0.5 +.01 + + + + + +retract +neutral +MavLink_targeting +RC_targeting +GPS_point + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0 100 +1 + + + + + +retract +neutral +MavLink_targeting +RC_targeting +GPS_point + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + + +Disabled +RC5 +RC6 +RC7 +RC8 + + + +-18000 17999 +1 +Centi-Degrees + + +-18000 17999 +1 +Centi-Degrees + + +0 100 +1 + + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Seconds before returning control + + + +1-8 + + + +RTL mode + Bounce mode + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 32767 +1 +Meters + + +0 6 +1 + + + +Disabled +Enabled + + + + +Disabled +Enabled + + + +0 250000 +1 +Meters + + +0 250000 +1 +Meters + + + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +-180 180 +1 +Degrees + + +0 18000 +1 +Degrees + + +0 18000 +1 +Degrees + + +1000 2000 +1 +PWM + + +1000 2000 +1 +PWM + + +1000 2000 +1 +PWM + + + +Disabled +Enabled + + + + + +1000 2000 +1 +PWM + + + +Disabled +Enabled + + + +-90 90 +1 +Degrees + + +0 5 + + +1000 2000 +10 +PWM + + +1 3 + + +0 6000 +Seconds + + +0 1 + + +0 50 +1 +1% + + +50 100 +1 +1% + + + + + + + +Disabled +Enable + + + +20 80 + + +20 80 + + + + + + +meters/Volt +0.001 + + +Volts +0.001 + + + +Linear +Inverted +Hyperbolic + + + +centimeters +1 + + +centimeters +1 + + + +Disabled +Enabled + + + + + + + +-300 300 +m/s/s + + +rad/s + + + +Default +5Hz +10Hz +20Hz +42Hz +98Hz + +Hz + + + + +0.0 1.0 +.01 + + + + +0.1 0.4 +.01 + + +0.1 0.4 +.01 + + +0 127 +1 +m/s + + +Radians + + + +None +Yaw45 +Yaw90 +Yaw135 +Yaw180 +Yaw225 +Yaw270 +Yaw315 +Roll180 +Roll180Yaw45 +Roll180Yaw90 +Roll180Yaw135 +Pitch180 +Roll180Yaw225 +Roll180Yaw270 +Roll180Yaw315 +Roll90 +Roll90Yaw45 +Roll90Yaw135 +Roll270 +Roll270Yaw45 +Roll270Yaw90 +Roll270Yaw136 +Pitch90 +Pitch270 + + + +0.001 0.5 +.01 + + + diff --git a/files/ardupilotmega/fixed_wing/widgets/Failsafe/failsafes.qgw b/files/ardupilotmega/fixed_wing/widgets/Failsafe/failsafes.qgw new file mode 100644 index 0000000000000000000000000000000000000000..122798bf155b37bd24ea44fa9566d9736f070dd8 --- /dev/null +++ b/files/ardupilotmega/fixed_wing/widgets/Failsafe/failsafes.qgw @@ -0,0 +1,53 @@ +[Fixed%20Wing%20Failsafe%20Configuration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=GCS failsafe enable +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FS_GCS_ENABL +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=GCS Short (1 second) Failsafe Enable +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=FS_SHORT_ACTN +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_DESCRIPTION=GCS Long (20 seconds) Failsafe Enable +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_PARAMID=FS_LONG_ACTN +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Throttle Failsafe Enable +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=THR_FAILSAFE +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=Throttle Failsafe Action +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=THR_FS_ACTION +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=Throttle Failsafe Value (PWM) +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=THR_FS_VALUE +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=1200 +QGC_TOOL_WIDGET_ITEMS\size=6 diff --git a/files/ardupilotmega/fixed_wing/widgets/servo_pitch.qgw b/files/ardupilotmega/fixed_wing/widgets/servo_pitch.qgw new file mode 100644 index 0000000000000000000000000000000000000000..55b97dd78d589e2bd12869ce04167f7c43fa8cac --- /dev/null +++ b/files/ardupilotmega/fixed_wing/widgets/servo_pitch.qgw @@ -0,0 +1,26 @@ +[Servo%20Pitch%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=P Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=PTCH2SRV_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=I Gain +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=PTCH2SRV_I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=D Gain +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=PTCH2SRV_D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=I Max +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=PTCH2SRV_IMAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/fixed_wing/widgets/servo_roll.qgw b/files/ardupilotmega/fixed_wing/widgets/servo_roll.qgw new file mode 100644 index 0000000000000000000000000000000000000000..273d779e57c4998803d5824fe704df3862da7e93 --- /dev/null +++ b/files/ardupilotmega/fixed_wing/widgets/servo_roll.qgw @@ -0,0 +1,26 @@ +[Servo%20Roll%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=P Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=RLL2SRV_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=I Gain +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=RLL2SRV_I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=D Gain +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=RLL2SRV_D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=I Max +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=RLL2SRV_IMAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/fixed_wing/widgets/servo_yaw.qgw b/files/ardupilotmega/fixed_wing/widgets/servo_yaw.qgw new file mode 100644 index 0000000000000000000000000000000000000000..54650b4539a43c54dbddc9723eb79fc745114149 --- /dev/null +++ b/files/ardupilotmega/fixed_wing/widgets/servo_yaw.qgw @@ -0,0 +1,26 @@ +[Servo%20Yaw] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=P Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=YW2SRV_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=I Gain +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=YW2SRV_I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=D Gain +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=YW2SRV_D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=I Max +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=YW2SRV_IMAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/general/calibration/calibration.qgw b/files/ardupilotmega/general/calibration/calibration.qgw new file mode 100644 index 0000000000000000000000000000000000000000..04355429c018edb64ebc898a83e3a1438bf22d13 --- /dev/null +++ b/files/ardupilotmega/general/calibration/calibration.qgw @@ -0,0 +1,92 @@ +[Calibration%20Tool] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=Reboot (only in standby) +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=REBOOT +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=246 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 + +QGC_TOOL_WIDGET_ITEMS\2\TYPE=TEXT +QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_SOURCE=NONE +QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_ID=MAG_LABEL +QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_TEXT= +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_LABEL=MAG_TEXT +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=TEXT +QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_SOURCE=MAV +QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_ID=MAG_TEXT +QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_TEXT= + +QGC_TOOL_WIDGET_ITEMS\5\TYPE=TEXT +QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_SOURCE=NONE +QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_ID=ACCEL_LABEL +QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_TEXT= +QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_LABEL=ACCEL_TEXT +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM5=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=TEXT +QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_SOURCE=MAV +QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_ID=ACCEL_TEXT +QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_TEXT= + +QGC_TOOL_WIDGET_ITEMS\8\TYPE=TEXT +QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_SOURCE=NONE +QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_ID=GYRO_LABEL +QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_TEXT= +QGC_TOOL_WIDGET_ITEMS\9\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_LABEL=GYRO_TEXT +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\10\TYPE=TEXT +QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_SOURCE=MAV +QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_ID=GYRO_TEXT +QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_TEXT= + +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM4=1 +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\size=11 diff --git a/files/ardupilotmega/general/calibration/description.txt b/files/ardupilotmega/general/calibration/description.txt new file mode 100644 index 0000000000000000000000000000000000000000..a765ab72db8c337d25796a1ad300c8bfbf7911e1 --- /dev/null +++ b/files/ardupilotmega/general/calibration/description.txt @@ -0,0 +1,19 @@ + + +

Sensor Calibration

+ +The APM sensors can be calibrated with the buttons on the right. Gyroscope (GYRO) and Magnometer (MAG) calibrations have to be performed with a static, unmoved system. The Accelerometer (ACCEL) calibrations involve rotating the vehicle around. Please ensure all props are removed and motor power is off. + +

Magnetometer Calibration

+ +Ensure the vehicle is clear of any metal, magnetic, or ferrus materials, and sitting on a flat surface. Click the MAG button and wait for the calibration to complete. + +

Accelerometer Calibration

+ +Ensure the vehicle is on a absolutely level surface and click ACCEL. Follow the instructions that will show up below the button. This calibration procedure will require moving the vehicle at 90 degree angles (upright, left, right, front, back, and upside down), then clicking the button to save that position. + +

Gyroscope Calibration

+ +Place the vehicle on an absolutely flat surface, and click the GYRO button. wait for the system to calibrate. + + \ No newline at end of file diff --git a/files/ardupilotmega/general/widgets/Battery_Monitor/battery_monitoring.qgw b/files/ardupilotmega/general/widgets/Battery_Monitor/battery_monitoring.qgw new file mode 100644 index 0000000000000000000000000000000000000000..dd5e52dc58e40c406943c668775a7cebedf5a885 --- /dev/null +++ b/files/ardupilotmega/general/widgets/Battery_Monitor/battery_monitoring.qgw @@ -0,0 +1,109 @@ +[Battery%20Monitor] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Battery Monitor +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=BATT_MONITOR +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=3 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Voltage Only +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=3 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Voltage And Current +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=4 + +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=Battery Current sensing pin +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=BATT_CURR_PIN +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=14 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=A0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=A1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=A2 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=A3 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=A4 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=A5 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_5_VAL=5 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=A6 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=A7 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=A8 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=A9 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=A10 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_10_VAL=10 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_11_TEXT=A11 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_11_VAL=11 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_12_TEXT=A12 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_12_VAL=12 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_13_TEXT=A13 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_13_VAL=13 + +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_DESCRIPTION=Battery Voltage sensing pin +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_PARAMID=BATT_VOLT_PIN +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COUNT=14 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=A0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=A1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=A2 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=A3 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=A4 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=A5 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_5_VAL=5 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=A6 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=A7 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=A8 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=A9 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=A10 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_10_VAL=10 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_11_TEXT=A11 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_11_VAL=11 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_12_TEXT=A12 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_12_VAL=12 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_13_TEXT=A3 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_13_VAL=13 + +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=APM Input Voltage +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=INPUT_VOLTS +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=24 + +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Battery Capacity +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=BATT_CAPACITY +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=10000 + +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=Voltage Divider +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=VOLT_DIVIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=10 + +QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=Amps per Volt +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=AMP_PER_VOLT +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=7 diff --git a/files/ardupilotmega/general/widgets/Camera_Mount/camera_pan.qgw b/files/ardupilotmega/general/widgets/Camera_Mount/camera_pan.qgw new file mode 100644 index 0000000000000000000000000000000000000000..342622517d40344f1f359505eaba63f9e4eae7d7 --- /dev/null +++ b/files/ardupilotmega/general/widgets/Camera_Mount/camera_pan.qgw @@ -0,0 +1,224 @@ +[Camera%20Pan] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=RC5_MIN +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=RC5_MAX +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=RC6_MIN +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=RC6_MAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=RC7_MIN +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=RC7_MAX +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=RC8_MIN +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=RC8_MAX +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=RC9_MIN +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=RC9_MAX +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\11\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_PARAMID=RC10_MIN +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\12\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_PARAMID=RC10_MAX +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\13\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_PARAMID=RC11_MIN +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\14\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_PARAMID=RC11_MAX +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MAX=2200 + +QGC_TOOL_WIDGET_ITEMS\15\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_DESCRIPTION=Tilt Min Angle Limit +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_PARAMID=MNT_ANGMIN_PAN +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MIN=-90 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MAX=0 +QGC_TOOL_WIDGET_ITEMS\16\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_DESCRIPTION=Tilt Max Angle Limit +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_PARAMID=MNT_ANGMAX_PAN +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MAX=90 + +QGC_TOOL_WIDGET_ITEMS\17\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_DESCRIPTION=RC5 Invert +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_PARAMID=RC5_REV +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\18\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_DESCRIPTION=RC6 Invert +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_PARAMID=RC6_REV +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\19\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_DESCRIPTION=RC7 Invert +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_PARAMID=RC7_REV +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\20\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_DESCRIPTION=RC8 Invert +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_PARAMID=RC8_REV +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\21\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_DESCRIPTION=RC9 Invert +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_PARAMID=RC9_REV +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\22\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_DESCRIPTION=RC10 Invert +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_PARAMID=RC10_REV +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\23\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_DESCRIPTION=RC11 Invert +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_PARAMID=RC11_REV +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_VISIBLE_VAL=6 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 + +QGC_TOOL_WIDGET_ITEMS\24\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_DESCRIPTION=RC Input +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_PARAMID=MNT_RC_IN_PAN +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disable +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=RC5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_1_VAL=5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=RC6 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_2_VAL=6 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=RC7 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_3_VAL=7 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=RC8 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_4_VAL=8 + + + +QGC_TOOL_WIDGET_ITEMS\size=24 diff --git a/files/ardupilotmega/general/widgets/Camera_Mount/camera_rc_select.qgw b/files/ardupilotmega/general/widgets/Camera_Mount/camera_rc_select.qgw new file mode 100644 index 0000000000000000000000000000000000000000..5c0a8c26c8721b5378d09e567bef2b2516ca8528 --- /dev/null +++ b/files/ardupilotmega/general/widgets/Camera_Mount/camera_rc_select.qgw @@ -0,0 +1,107 @@ +[RC%20Select] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=RC5 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Unused +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Camera Pan +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=6 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Camera Tilt +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=7 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Camera Roll +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_3_VAL=8 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Camera Shutter +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_4_VAL=10 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=RC6 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Unused +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Camera Pan +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=6 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Camera Tilt +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_VAL=7 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Camera Roll +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_VAL=8 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Camera Shutter +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_VAL=10 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_DESCRIPTION=RC7 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_PARAMID=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Unused +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Camera Pan +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_VAL=6 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Camera Tilt +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_VAL=7 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Camera Roll +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_VAL=8 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Camera Shutter +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_VAL=10 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=RC8 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Unused +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Camera Pan +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=6 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Camera Tilt +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_VAL=7 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Camera Roll +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_VAL=8 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Camera Shutter +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_VAL=10 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=RC9 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Unused +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Camera Pan +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=6 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Camera Tilt +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_VAL=7 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Camera Roll +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_VAL=8 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Camera Shutter +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_VAL=10 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=RC10 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Unused +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Camera Pan +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=6 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Camera Tilt +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_VAL=7 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Camera Roll +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_VAL=8 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Camera Shutter +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_VAL=10 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_DESCRIPTION=RC11 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_PARAMID=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Unused +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Camera Pan +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_VAL=6 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Camera Tilt +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_2_VAL=7 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Camera Roll +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_3_VAL=8 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Camera Shutter +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_4_VAL=10 +QGC_TOOL_WIDGET_ITEMS\size=7 diff --git a/files/ardupilotmega/general/widgets/Camera_Mount/camera_roll.qgw b/files/ardupilotmega/general/widgets/Camera_Mount/camera_roll.qgw new file mode 100644 index 0000000000000000000000000000000000000000..4ef21e4d58ff342be6899aee53c4959ff0982e37 --- /dev/null +++ b/files/ardupilotmega/general/widgets/Camera_Mount/camera_roll.qgw @@ -0,0 +1,224 @@ +[Camera%20Roll] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=RC5_MIN +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=RC5_MAX +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=RC6_MIN +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=RC6_MAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=RC7_MIN +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=RC7_MAX +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=RC8_MIN +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=RC8_MAX +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=RC9_MIN +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=RC9_MAX +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\11\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_PARAMID=RC10_MIN +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\12\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_PARAMID=RC10_MAX +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\13\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_PARAMID=RC11_MIN +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\14\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_PARAMID=RC11_MAX +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MAX=2200 + +QGC_TOOL_WIDGET_ITEMS\15\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_DESCRIPTION=Tilt Min Angle Limit +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_PARAMID=MNT_ANGMIN_ROL +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MIN=-90 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MAX=0 +QGC_TOOL_WIDGET_ITEMS\16\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_DESCRIPTION=Tilt Max Angle Limit +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_PARAMID=MNT_ANGMAX_ROL +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MAX=90 + +QGC_TOOL_WIDGET_ITEMS\17\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_DESCRIPTION=RC5 Invert +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_PARAMID=RC5_REV +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\18\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_DESCRIPTION=RC6 Invert +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_PARAMID=RC6_REV +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\19\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_DESCRIPTION=RC7 Invert +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_PARAMID=RC7_REV +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\20\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_DESCRIPTION=RC8 Invert +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_PARAMID=RC8_REV +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\21\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_DESCRIPTION=RC9 Invert +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_PARAMID=RC9_REV +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\22\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_DESCRIPTION=RC10 Invert +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_PARAMID=RC10_REV +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\23\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_DESCRIPTION=RC11 Invert +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_PARAMID=RC11_REV +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_VISIBLE_VAL=8 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 + +QGC_TOOL_WIDGET_ITEMS\24\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_DESCRIPTION=RC Input +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_PARAMID=MNT_RC_IN_ROLL +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disable +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=RC5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_1_VAL=5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=RC6 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_2_VAL=6 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=RC7 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_3_VAL=7 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=RC8 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_4_VAL=8 + + + +QGC_TOOL_WIDGET_ITEMS\size=24 diff --git a/files/ardupilotmega/general/widgets/Camera_Mount/camera_shutter.qgw b/files/ardupilotmega/general/widgets/Camera_Mount/camera_shutter.qgw new file mode 100644 index 0000000000000000000000000000000000000000..c92c77d1685537bb95087905e782befe425e9c07 --- /dev/null +++ b/files/ardupilotmega/general/widgets/Camera_Mount/camera_shutter.qgw @@ -0,0 +1,134 @@ +[Camera%20Shutter] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=RC5_MIN +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=RC5_MAX +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=RC6_MIN +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=RC6_MAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=RC7_MIN +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=RC7_MAX +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=RC8_MIN +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=RC8_MAX +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=RC9_MIN +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=RC9_MAX +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\11\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_PARAMID=RC10_MIN +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\12\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_PARAMID=RC10_MAX +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\13\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_PARAMID=RC11_MIN +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\14\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_PARAMID=RC11_MAX +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_VAL=10 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MAX=2200 + +QGC_TOOL_WIDGET_ITEMS\15\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_DESCRIPTION=Shutter Pushed +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_PARAMID=CAM_SERVO_ON +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\16\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_DESCRIPTION=Shutter Not Pushed +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_PARAMID=CAM_SERVO_OFF +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\17\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_SLIDER_DESCRIPTION=Duration (1/10th sec) +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_SLIDER_PARAMID=CAM_DURATION +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_SLIDER_MIN=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_SLIDER_MAX=200 + +QGC_TOOL_WIDGET_ITEMS\size=17 diff --git a/files/ardupilotmega/general/widgets/Camera_Mount/camera_tilt.qgw b/files/ardupilotmega/general/widgets/Camera_Mount/camera_tilt.qgw new file mode 100644 index 0000000000000000000000000000000000000000..280f2a0ed589b77bb7e9b65d64c0447702cc2639 --- /dev/null +++ b/files/ardupilotmega/general/widgets/Camera_Mount/camera_tilt.qgw @@ -0,0 +1,224 @@ +[Camera%20Tilt] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=RC5_MIN +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=RC5 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=RC5_MAX +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=RC6_MIN +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=RC6 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=RC6_MAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=RC7_MIN +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=RC7 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=RC7_MAX +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=RC8_MIN +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=RC8 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=RC8_MAX +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=RC9_MIN +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=RC9 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=RC9_MAX +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\11\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_PARAMID=RC10_MIN +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\11\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\12\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_DESCRIPTION=RC10 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_PARAMID=RC10_MAX +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\12\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\13\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Min Servo Limit +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_PARAMID=RC11_MIN +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\13\QGC_PARAM_SLIDER_MAX=2200 +QGC_TOOL_WIDGET_ITEMS\14\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_DESCRIPTION=RC11 Max Servo Limit +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_PARAMID=RC11_MAX +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MIN=800 +QGC_TOOL_WIDGET_ITEMS\14\QGC_PARAM_SLIDER_MAX=2200 + +QGC_TOOL_WIDGET_ITEMS\15\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_DESCRIPTION=Tilt Min Angle Limit +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_PARAMID=MNT_ANGMIN_TIL +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MIN=-90 +QGC_TOOL_WIDGET_ITEMS\15\QGC_PARAM_SLIDER_MAX=0 +QGC_TOOL_WIDGET_ITEMS\16\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_DESCRIPTION=Tilt Max Angle Limit +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_PARAMID=MNT_ANGMAX_TIL +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\16\QGC_PARAM_SLIDER_MAX=90 + +QGC_TOOL_WIDGET_ITEMS\17\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_DESCRIPTION=RC5 Invert +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_PARAMID=RC5_REV +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC5_FUNCTION +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\17\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\18\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_DESCRIPTION=RC6 Invert +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_PARAMID=RC6_REV +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC6_FUNCTION +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\18\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\19\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_DESCRIPTION=RC7 Invert +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_PARAMID=RC7_REV +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC7_FUNCTION +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\19\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\20\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_DESCRIPTION=RC8 Invert +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_PARAMID=RC8_REV +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC8_FUNCTION +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\20\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\21\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_DESCRIPTION=RC9 Invert +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_PARAMID=RC9_REV +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC9_FUNCTION +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\21\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\22\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_DESCRIPTION=RC10 Invert +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_PARAMID=RC10_REV +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC10_FUNCTION +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\22\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 +QGC_TOOL_WIDGET_ITEMS\23\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_DESCRIPTION=RC11 Invert +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_PARAMID=RC11_REV +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_VISIBLE_PARAM=RC11_FUNCTION +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_VISIBLE_VAL=7 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Normal +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Inverted +QGC_TOOL_WIDGET_ITEMS\23\QGC_PARAM_COMBOBOX_ITEM_1_VAL=-1 + +QGC_TOOL_WIDGET_ITEMS\24\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_DESCRIPTION=RC Input +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_PARAMID=MNT_RC_IN_TILT +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_COUNT=5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disable +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=RC5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_1_VAL=5 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=RC6 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_2_VAL=6 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=RC7 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_3_VAL=7 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=RC8 +QGC_TOOL_WIDGET_ITEMS\24\QGC_PARAM_COMBOBOX_ITEM_4_VAL=8 + + + +QGC_TOOL_WIDGET_ITEMS\size=24 diff --git a/files/ardupilotmega/general/widgets/Hardware_Options/extra_sensors.qgw b/files/ardupilotmega/general/widgets/Hardware_Options/extra_sensors.qgw new file mode 100644 index 0000000000000000000000000000000000000000..41768c060895a07c6275c916ce34db764ce197ab --- /dev/null +++ b/files/ardupilotmega/general/widgets/Hardware_Options/extra_sensors.qgw @@ -0,0 +1,75 @@ +[Extra%20Sensors] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Compass Enable +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=MAG_ENABLE +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=Auto Declination +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=COMPASS_AUTODEC +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Compass Declination +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=COMPASS_DEC +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Sonar Enable +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=SONAR_ENABLE +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=Sonar Type +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=SONAR_TYPE +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=4 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=XL-EZ0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=LV-EZ0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=XL-EZL0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=HRLV +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Air speed Enable +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=ARSPD_ENABLE +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_DESCRIPTION=Air speed use +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_PARAMID=AIRSPD_USE +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Do Not Use +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Use +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\8\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_DESCRIPTION=Optical Flow Enable +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_PARAMID=FLOW_ENABLE +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\size=8 diff --git a/files/ardupilotmega/general/widgets/ardupilot-heading-pid.qgw b/files/ardupilotmega/general/widgets/ardupilot-heading-pid.qgw new file mode 100644 index 0000000000000000000000000000000000000000..20a6d1c1f4d3577486afcd03fafb266baa9b6512 --- /dev/null +++ b/files/ardupilotmega/general/widgets/ardupilot-heading-pid.qgw @@ -0,0 +1,26 @@ +[Heading%20PID%20Tuning] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Heading D Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_D +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=200 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Heading P Gain +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_P +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=200 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=5 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Heading I Gain +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_I +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=200 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Heading I Limit +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_IMAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=200 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=3000 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/general/widgets/general.qgw b/files/ardupilotmega/general/widgets/general.qgw new file mode 100644 index 0000000000000000000000000000000000000000..d0fcc6e5ecdd01db785846cf082112054fdc0bef --- /dev/null +++ b/files/ardupilotmega/general/widgets/general.qgw @@ -0,0 +1,105 @@ +[General] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Channel 7 Option +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=CH7_OPTION +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Nothing +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Learn Waypoint +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Target cruise speed in auto modes +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=CRUISE_SPEED +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Base throttle percentage in auto +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=CRUISE_THROTTLE +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Receiver RSSI sensing pin +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=RSSI_PIN +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=14 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=A0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=A1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=A2 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=A3 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=A4 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=A5 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_VAL=5 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=A6 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=A7 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=A8 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=A9 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=A10 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_VAL=10 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_11_TEXT=A11 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_11_VAL=11 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_12_TEXT=A12 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_12_VAL=12 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_13_TEXT=A13 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_13_VAL=13 + +QGC_TOOL_WIDGET_ITEMS\5\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=USB Console Baud Rate +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=SERIAL0_BAUD +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=9 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=1200 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=2400 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=2 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=4800 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_VAL=4 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=9600 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_VAL=9 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=19200 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_VAL=19 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=38400 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_VAL=38 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=57600 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_VAL=57 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=111100 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_VAL=111 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=115200 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_VAL=115 + +QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Telemetry Baud Rate +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=SERIAL3_BAUD +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=9 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=1200 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=2400 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=2 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=4800 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_VAL=4 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=9600 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_VAL=9 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=19200 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_VAL=19 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=38400 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_VAL=38 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=57600 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_VAL=57 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=111100 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_VAL=111 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=115200 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_VAL=115 + +QGC_TOOL_WIDGET_ITEMS\size=6 diff --git a/files/ardupilotmega/ground_rover/widgets/energyaltpid.qgw b/files/ardupilotmega/ground_rover/widgets/energyaltpid.qgw new file mode 100644 index 0000000000000000000000000000000000000000..0fb12400ec79f2fb6d7829f13013d0d335a21d8f --- /dev/null +++ b/files/ardupilotmega/ground_rover/widgets/energyaltpid.qgw @@ -0,0 +1,26 @@ +[Energy%20Alt%20Pid%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=ENRGY2THR_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=ENRGY2THR_I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=ENRGY2THR_D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=INT_MAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=ENRGY2THR_IMAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/ground_rover/widgets/nav_roll_pid.qgw b/files/ardupilotmega/ground_rover/widgets/nav_roll_pid.qgw new file mode 100644 index 0000000000000000000000000000000000000000..2e2a52c1bbe27867fd1b2287d1590d422332f5dd --- /dev/null +++ b/files/ardupilotmega/ground_rover/widgets/nav_roll_pid.qgw @@ -0,0 +1,26 @@ +[Nav%20Roll%20Pid%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=INT_MAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=HDNG2RLL_IMAX +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/ground_rover/widgets/navigationangles.qgw b/files/ardupilotmega/ground_rover/widgets/navigationangles.qgw new file mode 100644 index 0000000000000000000000000000000000000000..a3acce4b7e123a0124f56c7735adf3e962df335b --- /dev/null +++ b/files/ardupilotmega/ground_rover/widgets/navigationangles.qgw @@ -0,0 +1,20 @@ +[Nav%20Angles%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Bank Max +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=LIM_ROLL_CD +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Pitch Mac +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=LIM_PITCH_MAX +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Pitch Min +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=LIM_PITCH_MIN +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=3 diff --git a/files/ardupilotmega/ground_rover/widgets/rover.qgw b/files/ardupilotmega/ground_rover/widgets/rover.qgw new file mode 100644 index 0000000000000000000000000000000000000000..8e8c10c6ff52366cd786572c1b88240561331bce --- /dev/null +++ b/files/ardupilotmega/ground_rover/widgets/rover.qgw @@ -0,0 +1,53 @@ +[Rover%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Auto WP Rad +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=ROV_AWPR_NAV +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Booster +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=ROV_BOOSTER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Closed Loop Nav +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=ROV_CL_NAV +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Turn Gain +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=ROV_GAIN +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Sonar Trigger Dist +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=ROV_SONAR_TRIG +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=100 + + +QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Skid Steering Input +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=SKID_STEER_IN +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_DESCRIPTION=Skid Steering Output +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_PARAMID=SKID_STEER_OUT +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 + +QGC_TOOL_WIDGET_ITEMS\size=6 \ No newline at end of file diff --git a/files/ardupilotmega/ground_rover/widgets/speedcontrol.qgw b/files/ardupilotmega/ground_rover/widgets/speedcontrol.qgw new file mode 100644 index 0000000000000000000000000000000000000000..6ebbddadb3fdc90c04940f8e0a85305ce75f8633 --- /dev/null +++ b/files/ardupilotmega/ground_rover/widgets/speedcontrol.qgw @@ -0,0 +1,26 @@ +[Speed%20Control%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Cruise +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=TRIM_ARSPD_CM +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=FBW min +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=ARSPD_FBW_MIN +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=FBW max +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=ARSPD_FBW_MAX +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Ratio +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=ARSPD_RATIO +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/ground_rover/widgets/throttle.qgw b/files/ardupilotmega/ground_rover/widgets/throttle.qgw new file mode 100644 index 0000000000000000000000000000000000000000..3b603afbdfd56e8299e474ee3ec6c36673400571 --- /dev/null +++ b/files/ardupilotmega/ground_rover/widgets/throttle.qgw @@ -0,0 +1,26 @@ +[Throttle%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Cruise +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=TRIM_THROTTLE +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Min +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=THR_MIN +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Max +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=THR_MAX +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=FS Value +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=THR_FS_VALUE +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=4 diff --git a/files/ardupilotmega/ground_rover/widgets/xtrackpids.qgw b/files/ardupilotmega/ground_rover/widgets/xtrackpids.qgw new file mode 100644 index 0000000000000000000000000000000000000000..7315b39504ee775d2f813ae69606d94ab1497102 --- /dev/null +++ b/files/ardupilotmega/ground_rover/widgets/xtrackpids.qgw @@ -0,0 +1,14 @@ +[XTrack%20Pids%20Calibration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Gain (cm) +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=XTRK_GAIN_SC +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Entry Angle +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=XTRK_ANGLE_CD +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\size=2 diff --git a/files/ardupilotmega/quadrotor/calibration/calibration.qgw b/files/ardupilotmega/quadrotor/calibration/calibration.qgw new file mode 100644 index 0000000000000000000000000000000000000000..d8e24e661ce667f8148ae2f0928ab527ae4dfdcd --- /dev/null +++ b/files/ardupilotmega/quadrotor/calibration/calibration.qgw @@ -0,0 +1,17 @@ +[QuadCoptor%20Frame Setup] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Quadcoptor Frame Type +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FRAME +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=3 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Plus +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_IMG=files/images/mavs/frames_plus.png +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=X +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_IMG=files/images/mavs/frames_x.png +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=V +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_IMG=files/images/mavs/frames-05.png +QGC_TOOL_WIDGET_ITEMS\size=1 + \ No newline at end of file diff --git a/files/ardupilotmega/quadrotor/widgets/Failsafe/failsafes.qgw b/files/ardupilotmega/quadrotor/widgets/Failsafe/failsafes.qgw new file mode 100644 index 0000000000000000000000000000000000000000..392d1a5d6723533ab44743e9f6be347e1a2919f8 --- /dev/null +++ b/files/ardupilotmega/quadrotor/widgets/Failsafe/failsafes.qgw @@ -0,0 +1,43 @@ +[Failsafe%20Configuration] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Failsafe Action +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FS_ACTION +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=3 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=RTL +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Hold +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=GCS failsafe enable +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=FS_GCS_ENABLE +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Failsafe timeout (In Seconds) +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=FS_TIMEOUT +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Throttle Failsafe Enable +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=FS_THR_ENABLE +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=2 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Throttle Failsafe Value (PWM) +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=FS_THR_VALUE +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=1000 +QGC_TOOL_WIDGET_ITEMS\size=5 diff --git a/files/ardupilotmega/quadrotor/widgets/Flight_Modes/driving_modes.qgw b/files/ardupilotmega/quadrotor/widgets/Flight_Modes/driving_modes.qgw new file mode 100644 index 0000000000000000000000000000000000000000..194a8b7b6e4f5374f79abea338ce3b979f61a140 --- /dev/null +++ b/files/ardupilotmega/quadrotor/widgets/Flight_Modes/driving_modes.qgw @@ -0,0 +1,193 @@ +[Flight%20Modes] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode Channel +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE_CH +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=12 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=RC 1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=RC 2 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=2 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=RC 3 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=3 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=RC 4 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_3_VAL=4 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=RC 5 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_4_VAL=5 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=RC 6 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RC 7 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_6_VAL=7 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=RC 8 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_7_VAL=8 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=RC 9 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_8_VAL=9 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=RC 10 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_9_VAL=10 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=RC 11 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_11_TEXT=RC 12 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_11_VAL=12 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 1 (PWM 0-1230) +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=11 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 2 (PWM 1231-1360) +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE2 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COUNT=11 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_10_VAL=1 +1QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 3 (PWM 1361-1490) +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE3 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=11 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 4 (PWM 1491-1620) +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE4 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=11 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 5 (PWM 1621-1749) +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE5 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=11 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 6 (PWM 1750+) +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE6 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COUNT=11 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11 +QGC_TOOL_WIDGET_ITEMS\size=7 diff --git a/files/ardupilotmega/quadrotor/widgets/airframe_config.qgw b/files/ardupilotmega/quadrotor/widgets/airframe_config.qgw new file mode 100644 index 0000000000000000000000000000000000000000..336d2532c81eb0125ad8b0648ed707444e4f56a0 --- /dev/null +++ b/files/ardupilotmega/quadrotor/widgets/airframe_config.qgw @@ -0,0 +1,13 @@ +[Airframe%20Config] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Quadcoptor Configuration +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FRAME +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=3 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Plus +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=X +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=V +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2 +QGC_TOOL_WIDGET_ITEMS\size=1 diff --git a/files/images/mavs/frames-05.png b/files/images/mavs/frames-05.png new file mode 100644 index 0000000000000000000000000000000000000000..39ef8ec4e8ea30b910fa4536cbc1b4050ba6e4d4 Binary files /dev/null and b/files/images/mavs/frames-05.png differ diff --git a/files/images/mavs/frames_plus.png b/files/images/mavs/frames_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..614770ebb13fd06ea6137dbefc5059f17a4cffe9 Binary files /dev/null and b/files/images/mavs/frames_plus.png differ diff --git a/files/images/mavs/frames_x.png b/files/images/mavs/frames_x.png new file mode 100644 index 0000000000000000000000000000000000000000..6d13983b4be288a8f0581992e3d514ad761e4057 Binary files /dev/null and b/files/images/mavs/frames_x.png differ diff --git a/files/px4/general/calibration/calibration.qgw b/files/px4/general/calibration/calibration.qgw new file mode 100644 index 0000000000000000000000000000000000000000..2a498a3ebfdd93c12a8a8e89738eb3cf75496281 --- /dev/null +++ b/files/px4/general/calibration/calibration.qgw @@ -0,0 +1,61 @@ +[PX4%20Calibration%20Tool] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=Reboot (only in standby) +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=REBOOT +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=246 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM4=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\size=5 diff --git a/files/px4/general/calibration/description.txt b/files/px4/general/calibration/description.txt new file mode 100644 index 0000000000000000000000000000000000000000..c243d4ef8aa7e07b93b0f77256986e98eb98f299 --- /dev/null +++ b/files/px4/general/calibration/description.txt @@ -0,0 +1,19 @@ + + +

Sensor Calibration

+


+

The PX4FMU sensors can be calibrated with the buttons on the right. Gyroscope (GYRO) and Accelerometer (ACCEL) calibrations have to be performed with a static, unmoved system. The magnetometer calibration needs to be performed while moving the device.

+


+

Magnetometer Calibration

+


+

Carefully follow the instructions. Click on MAG to start the calibration. Watch the communication console for further instructions (Available through Main Menu -> Tool Widgets -> Communication Console). Do not calibrate the vehicle in vincinity of metal, e.g. from a table or chair. Start the calibration, leave the system unmoved on the table. Wait for the double beep. Next move the system in a figure eight, roll and pitch it strongly, rotate around all axes and perform the figure eight also upside-down. The calibration is finished after the triple beep.

+


+

Accelerometer Calibration

+


+

Put the system on an absolutely level surface and press ACCEL, wait for the the triple beep. Do not move the system. If no flat surface is available, rather not calibrate the system.

+


+

Gyroscope Calibration

+


+

The orientation is not important for this calibration, but do not move the system until the triple beep or the matching text message in the console.

\ No newline at end of file diff --git a/files/px4/general/widgets/px4_fw_attitude_pid_params.qgw b/files/px4/general/widgets/px4_fw_attitude_pid_params.qgw new file mode 100644 index 0000000000000000000000000000000000000000..6f3186e78f3544c718ee98a9d5f02d205f3fc85b --- /dev/null +++ b/files/px4/general/widgets/px4_fw_attitude_pid_params.qgw @@ -0,0 +1,8 @@ +[PX4%20Fixed%20Wing%20Attitude%20Control] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Roll Rate P Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=FW_ROLLRATE_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2 +QGC_TOOL_WIDGET_ITEMS\size=1 diff --git a/files/px4/general/widgets/px4_fw_position_pid_params.qgw b/files/px4/general/widgets/px4_fw_position_pid_params.qgw new file mode 100644 index 0000000000000000000000000000000000000000..e99f9890e9beb6984c4932c9a2be46cad04bb521 --- /dev/null +++ b/files/px4/general/widgets/px4_fw_position_pid_params.qgw @@ -0,0 +1,8 @@ +[PX4%20Fixed%20Wing%20Position%20Control] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Heading P Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=FW_HEADING_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2 +QGC_TOOL_WIDGET_ITEMS\size=1 diff --git a/files/px4/general/widgets/px4_mc_attitude_pid_params.qgw b/files/px4/general/widgets/px4_mc_attitude_pid_params.qgw new file mode 100644 index 0000000000000000000000000000000000000000..1931dfa3b912adac6f5185a7bfee217e3dee332a --- /dev/null +++ b/files/px4/general/widgets/px4_mc_attitude_pid_params.qgw @@ -0,0 +1,72 @@ +[PX4%20Multirotor%20Attitude%20Control] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Attitude P Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=MC_ATT_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=1.5 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Attitude I Gain +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=MC_ATT_I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Attitude D Gain +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=MC_ATT_D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Anti-Windup +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=MC_ATT_AWU +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Output Limit +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=MC_ATT_LIM +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=3 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw P Gain +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_P +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=1.2 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw D Gain +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_D +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate P Gain +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_P +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=1.5 +QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate D Gain +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_D +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=0.3 +QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=Yaw Rate P Gain +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=MC_YAWRATE_P +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DISPLAY_INFO=false +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\size=10 diff --git a/files/px4/general/widgets/px4_mc_position_pid_params.qgw b/files/px4/general/widgets/px4_mc_position_pid_params.qgw new file mode 100644 index 0000000000000000000000000000000000000000..1931dfa3b912adac6f5185a7bfee217e3dee332a --- /dev/null +++ b/files/px4/general/widgets/px4_mc_position_pid_params.qgw @@ -0,0 +1,72 @@ +[PX4%20Multirotor%20Attitude%20Control] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Attitude P Gain +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=MC_ATT_P +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=1.5 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Attitude I Gain +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=MC_ATT_I +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Attitude D Gain +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=MC_ATT_D +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Anti-Windup +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=MC_ATT_AWU +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Output Limit +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=MC_ATT_LIM +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=3 +QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw P Gain +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_P +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=1.2 +QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw D Gain +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_D +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate P Gain +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_P +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=1.5 +QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate D Gain +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_D +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=0.3 +QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=Yaw Rate P Gain +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=MC_YAWRATE_P +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=50 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=0 +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DISPLAY_INFO=false +QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DISPLAY_INFO=true +QGC_TOOL_WIDGET_ITEMS\size=10 diff --git a/files/px4/widgets/px4_calibration.qgw b/files/px4/widgets/px4_calibration.qgw index f6754edcf4e37fcc8df24b1ff6b97f92338c2c47..2a498a3ebfdd93c12a8a8e89738eb3cf75496281 100644 --- a/files/px4/widgets/px4_calibration.qgw +++ b/files/px4/widgets/px4_calibration.qgw @@ -1,61 +1,61 @@ -[PX4%20Calibration%20Tool] -QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=Reboot (only in standby) -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=REBOOT -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=246 -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=1 -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0 -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=0 -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0 -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=1 -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0 -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0 -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=1 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMMANDBUTTON -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM1=1 -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM2=0 -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM4=0 -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM5=0 -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_COMMANDID=241 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM1=1 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM2=0 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM3=0 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM4=1 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM5=0 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM6=0 -QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM7=0 -QGC_TOOL_WIDGET_ITEMS\size=5 +[PX4%20Calibration%20Tool] +QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=Reboot (only in standby) +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=REBOOT +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=246 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=1 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=1 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMMANDBUTTON +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM4=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_COMMANDID=241 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM1=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM2=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM3=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM4=1 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM5=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM6=0 +QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM7=0 +QGC_TOOL_WIDGET_ITEMS\size=5 diff --git a/libs/mavlink/include/mavlink/v1.0/mavlink_types.h b/libs/mavlink/include/mavlink/v1.0/mavlink_types.h index 5fbde97f7363ad203981483c7bf88828e4bf5faf..704e77f81fc4783372631bb701a3f3bcf3a69e67 100644 --- a/libs/mavlink/include/mavlink/v1.0/mavlink_types.h +++ b/libs/mavlink/include/mavlink/v1.0/mavlink_types.h @@ -35,6 +35,8 @@ typedef struct param_union { uint32_t param_uint32; uint8_t param_uint8; uint8_t bytes[4]; + int16_t param_int16; + int8_t param_int8; }; uint8_t type; } mavlink_param_union_t; diff --git a/qgroundcontrol.pri b/qgroundcontrol.pri index ff4497c7b64a6fc00d0401201069c3dd5c1f0c8b..30f3aa68aba25d82fc6631f9664315d804a68382 100644 --- a/qgroundcontrol.pri +++ b/qgroundcontrol.pri @@ -19,7 +19,7 @@ message(Qt version $$[QT_VERSION]) -win32-msvc2008|win32-msvc2010 { +win32-msvc2008|win32-msvc2010|win32-msvc2012 { QMAKE_POST_LINK += $$quote(echo "Copying files"$$escape_expand(\\n)) } else { QMAKE_POST_LINK += $$quote(echo "Copying files") @@ -261,7 +261,7 @@ linux-g++-64 { } # Windows (32bit), Visual Studio -win32-msvc2008|win32-msvc2010 { +win32-msvc2008|win32-msvc2010|win32-msvc2012 { win32-msvc2008 { message(Building for Windows Visual Studio 2008 (32bit)) diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 3e80875e5624fe376aebbae7536d902bd7f15f91..d52beb03bcd04e60d13545188088e24d9311fde5 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -148,7 +148,6 @@ INCLUDEPATH += . \ libs/thirdParty/qserialport/include/QtSerialPort \ libs/thirdParty/qserialport/src \ libs/qextserialport - # Include serial port library (QSerial) include(qserialport.pri) @@ -156,9 +155,7 @@ include(qserialport.pri) macx|macx-g++|macx-g++42::SOURCES += libs/qextserialport/qextserialenumerator_osx.cpp linux-g++::SOURCES += libs/qextserialport/qextserialenumerator_unix.cpp linux-g++-64::SOURCES += libs/qextserialport/qextserialenumerator_unix.cpp -win32::SOURCES += libs/qextserialport/qextserialenumerator_win.cpp -win32-msvc2008|win32-msvc2010::SOURCES += libs/qextserialport/qextserialenumerator_win.cpp - +win32-msvc2008|win32-msvc2010|win32-msvc2012::SOURCES += libs/qextserialport/qextserialenumerator_win.cpp # Input FORMS += src/ui/MainWindow.ui \ src/ui/CommSettings.ui \ @@ -227,7 +224,9 @@ FORMS += src/ui/MainWindow.ui \ src/ui/QGCHilConfiguration.ui \ src/ui/QGCHilFlightGearConfiguration.ui \ src/ui/QGCHilJSBSimConfiguration.ui \ - src/ui/QGCHilXPlaneConfiguration.ui + src/ui/QGCHilXPlaneConfiguration.ui \ + src/ui/designer/QGCComboBox.ui \ + src/ui/designer/QGCTextLabel.ui INCLUDEPATH += src \ src/ui \ src/ui/linechart \ @@ -370,10 +369,13 @@ HEADERS += src/MG.h \ src/ui/QGCHilConfiguration.h \ src/ui/QGCHilFlightGearConfiguration.h \ src/ui/QGCHilJSBSimConfiguration.h \ - src/ui/QGCHilXPlaneConfiguration.h + src/ui/QGCHilXPlaneConfiguration.h \ + src/ui/designer/QGCComboBox.h \ + src/ui/designer/QGCTextLabel.h \ + src/ui/submainwindow.h # Google Earth is only supported on Mac OS and Windows with Visual Studio Compiler -macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010::HEADERS += src/ui/map3D/QGCGoogleEarthView.h +macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::HEADERS += src/ui/map3D/QGCGoogleEarthView.h contains(DEPENDENCIES_PRESENT, osg) { message("Including headers for OpenSceneGraph") @@ -532,10 +534,13 @@ SOURCES += src/main.cc \ src/ui/QGCHilConfiguration.cc \ src/ui/QGCHilFlightGearConfiguration.cc \ src/ui/QGCHilJSBSimConfiguration.cc \ - src/ui/QGCHilXPlaneConfiguration.cc + src/ui/QGCHilXPlaneConfiguration.cc \ + src/ui/designer/QGCComboBox.cc \ + src/ui/designer/QGCTextLabel.cc \ + src/ui/submainwindow.cpp # Enable Google Earth only on Mac OS and Windows with Visual Studio compiler -macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc +macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc # Enable OSG only if it has been found contains(DEPENDENCIES_PRESENT, osg) { @@ -616,7 +621,7 @@ TRANSLATIONS += es-MX.ts \ # xbee support # libxbee only supported by linux and windows systems -win32-msvc2008|win32-msvc2010|linux { +win32-msvc2008|win32-msvc2010|win32-msvc2012|linux { HEADERS += src/comm/XbeeLinkInterface.h \ src/comm/XbeeLink.h \ src/comm/HexSpinBox.h \ @@ -628,8 +633,7 @@ win32-msvc2008|win32-msvc2010|linux { DEFINES += XBEELINK INCLUDEPATH += libs/thirdParty/libxbee # TO DO: build library when it does not exist already - LIBS += -Llibs/thirdParty/libxbee/lib \ - -llibxbee + LIBS += -llibs/thirdParty/libxbee/lib/libxbee } ################################################################### @@ -652,7 +656,7 @@ linux-g++|linux-g++-64{ # Support for Windows systems # You have to install the official 3DxWare driver for Windows to use the 3D mouse support on Windows systems! -win32-msvc2008|win32-msvc2010 { +win32-msvc2008|win32-msvc2010|win32-msvc2012 { message("Including support for 3DxWare for Windows system.") SOURCES += libs/thirdParty/3DMouse/win/MouseParameters.cpp \ libs/thirdParty/3DMouse/win/Mouse3DInput.cpp \ diff --git a/qserialport.pri b/qserialport.pri index 53ba338244c7536256229fe379a71a0490c76194..bb0560cb20163bba661690aeaef8beb4806b3a3f 100644 --- a/qserialport.pri +++ b/qserialport.pri @@ -26,7 +26,7 @@ macx|linux-g++|linux-g++-64 { HEADERS += $$QSERIALPORT_ROOT/src/posix/termioshelper.h } -win32-msvc2008|win32-msvc2010|win32-g++ { +win32-msvc2008|win32-msvc2010|win32-msvc2012|win32-g++ { HEADERS += $$QSERIALPORT_ROOT/src/win32/commdcbhelper.h \ $$QSERIALPORT_ROOT/src/win32/qwincommevtnotifier.h \ $$QSERIALPORT_ROOT/src/win32/wincommevtbreaker.h \ @@ -43,7 +43,7 @@ SOURCES += $$QSERIALPORT_ROOT/src/posix/qserialportnative_posix.cpp \ $$QSERIALPORT_ROOT/src/posix/termioshelper.cpp } -win32-msvc2008|win32-msvc2010|win32-g++ { +win32-msvc2008|win32-msvc2010|win32-msvc2012|win32-g++ { SOURCES += $$QSERIALPORT_ROOT/src/win32/commdcbhelper.cpp \ $$QSERIALPORT_ROOT/src/win32/qserialportnative_win32.cpp \ $$QSERIALPORT_ROOT/src/win32/qwincommevtnotifier.cpp \ diff --git a/src/input/JoystickInput.cc b/src/input/JoystickInput.cc index fbfe0faa12fcfd9ee0ea4ddeb51cb040d11332fa..074e3c1a753288ec7cadd3828f7a2ea83203dd1d 100644 --- a/src/input/JoystickInput.cc +++ b/src/input/JoystickInput.cc @@ -130,7 +130,7 @@ void JoystickInput::init() int numJoysticks = SDL_NumJoysticks(); // Wait for joysticks if none is connected - while (numJoysticks == 0) + while (numJoysticks == 0 && !done) { QGC::SLEEP::msleep(400); // INITIALIZE SDL Joystick support @@ -140,6 +140,10 @@ void JoystickInput::init() } numJoysticks = SDL_NumJoysticks(); } + if (done) + { + return; + } printf("%d Input devices found:\n", numJoysticks); for(int i=0; i < SDL_NumJoysticks(); i++ ) @@ -157,6 +161,10 @@ void JoystickInput::init() // Make sure active UAS is set setActiveUAS(UASManager::instance()->getActiveUAS()); } +void JoystickInput::shutdown() +{ + done = true; +} /** * @brief Execute the Joystick process @@ -169,8 +177,9 @@ void JoystickInput::run() { if (done) { - done = false; - exit(); + done = false; + exit(); + return; } while(SDL_PollEvent(&event)) { diff --git a/src/input/JoystickInput.h b/src/input/JoystickInput.h index 2bcba7dfb42706bee5fefb03192c90b287af47d0..6315b55e9cc117e7fa02c69e4bc1c3150f920dd2 100644 --- a/src/input/JoystickInput.h +++ b/src/input/JoystickInput.h @@ -55,6 +55,7 @@ public: JoystickInput(); ~JoystickInput(); void run(); + void shutdown(); const QString& getName(); diff --git a/src/uas/ArduPilotMegaMAV.cc b/src/uas/ArduPilotMegaMAV.cc index 767c084ce1c32626f0acf35c92c53ff41d7dd989..61dfced8b1a653349db4646f91eebcea8ee3307c 100644 --- a/src/uas/ArduPilotMegaMAV.cc +++ b/src/uas/ArduPilotMegaMAV.cc @@ -27,7 +27,6 @@ This file is part of the QGROUNDCONTROL project */ #include "ArduPilotMegaMAV.h" - ArduPilotMegaMAV::ArduPilotMegaMAV(MAVLinkProtocol* mavlink, int id) : UAS(mavlink, id)//, // place other initializers here @@ -63,3 +62,23 @@ void ArduPilotMegaMAV::receiveMessage(LinkInterface* link, mavlink_message_t mes } } } +void ArduPilotMegaMAV::setMountConfigure(unsigned char mode, bool stabilize_roll,bool stabilize_pitch,bool stabilize_yaw) +{ + //Only supported by APM + mavlink_message_t msg; + mavlink_msg_mount_configure_pack(255,1,&msg,this->uasId,1,mode,stabilize_roll,stabilize_pitch,stabilize_yaw); + sendMessage(msg); +} +void ArduPilotMegaMAV::setMountControl(double pa,double pb,double pc,bool islatlong) +{ + mavlink_message_t msg; + if (islatlong) + { + mavlink_msg_mount_control_pack(255,1,&msg,this->uasId,1,pa*10000000.0,pb*10000000.0,pc*10000000.0,0); + } + else + { + mavlink_msg_mount_control_pack(255,1,&msg,this->uasId,1,pa,pb,pc,0); + } + sendMessage(msg); +} diff --git a/src/uas/ArduPilotMegaMAV.h b/src/uas/ArduPilotMegaMAV.h index 00866830defc5fd9f9d559670f609ebb95151e0e..9137c4931725de87396346575963840b71dd258c 100644 --- a/src/uas/ArduPilotMegaMAV.h +++ b/src/uas/ArduPilotMegaMAV.h @@ -25,12 +25,18 @@ This file is part of the QGROUNDCONTROL project #define ARDUPILOTMEGAMAV_H #include "UAS.h" - +#include "ardupilotmega/mavlink_msg_mount_configure.h" +#include "ardupilotmega/mavlink_msg_mount_control.h" +#include "ardupilotmega/mavlink_msg_mount_status.h" class ArduPilotMegaMAV : public UAS { Q_OBJECT public: ArduPilotMegaMAV(MAVLinkProtocol* mavlink, int id = 0); + /** @brief Set camera mount stabilization modes */ + void setMountConfigure(unsigned char mode, bool stabilize_roll,bool stabilize_pitch,bool stabilize_yaw); + /** @brief Set camera mount control */ + void setMountControl(double pa,double pb,double pc,bool islatlong); public slots: /** @brief Receive a MAVLink message from this MAV */ void receiveMessage(LinkInterface* link, mavlink_message_t message); diff --git a/src/uas/QGCUASParamManager.h b/src/uas/QGCUASParamManager.h index 069edc8a8c77a68520d654dcca892b4ebc82616d..69dee9eb444e6253cee3f3cc80b718b6ea1c938c 100644 --- a/src/uas/QGCUASParamManager.h +++ b/src/uas/QGCUASParamManager.h @@ -43,6 +43,7 @@ public: virtual double getParamMax(const QString& param) = 0; virtual double getParamDefault(const QString& param) = 0; virtual QString getParamInfo(const QString& param) = 0; + virtual void setParamInfo(const QMap& param) = 0; /** @brief Request an update for the parameter list */ void requestParameterListUpdate(int component = 0); diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 009fe5793fd68e863d2ecb9614b233ed4f5e1f0e..c56992bc9795ae7872fa1f0f439cb2af116306b3 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -881,12 +881,21 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) if (parameters.value(component)->contains(parameterName)) parameters.value(component)->remove(parameterName); // Insert with correct type + // TODO: This is a hack for MAV_AUTOPILOT_ARDUPILOTMEGA until the new version of MAVLink and a fix for their param handling. switch (value.param_type) { case MAV_PARAM_TYPE_REAL32: { // Variant - QVariant param(val.param_float); + QVariant param; + if (getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + param = QVariant(val.param_float); + } + else + { + param = QVariant(val.param_float); + } parameters.value(component)->insert(parameterName, param); // Emit change emit parameterChanged(uasId, message.compid, parameterName, param); @@ -897,17 +906,72 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) case MAV_PARAM_TYPE_UINT8: { // Variant - QVariant param(val.param_uint8); + QVariant param; + if (getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + param = QVariant(QChar((unsigned char)val.param_float)); + } + else + { + param = QVariant(QChar((unsigned char)val.param_uint8)); + } + parameters.value(component)->insert(parameterName, param); + // Emit change + emit parameterChanged(uasId, message.compid, parameterName, param); + emit parameterChanged(uasId, message.compid, value.param_count, value.param_index, parameterName, param); + //qDebug() << "RECEIVED PARAM:" << param; + } + break; + case MAV_PARAM_TYPE_INT8: + { + // Variant + QVariant param; + if (getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + param = QVariant(QChar((char)val.param_float)); + } + else + { + param = QVariant(QChar((char)val.param_int8)); + } parameters.value(component)->insert(parameterName, param); // Emit change emit parameterChanged(uasId, message.compid, parameterName, param); emit parameterChanged(uasId, message.compid, value.param_count, value.param_index, parameterName, param); //qDebug() << "RECEIVED PARAM:" << param; } + break; + case MAV_PARAM_TYPE_INT16: + { + // Variant + QVariant param; + if (getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + param = QVariant((short)val.param_float); + } + else + { + param = QVariant(val.param_int16); + } + parameters.value(component)->insert(parameterName, param); + // Emit change + emit parameterChanged(uasId, message.compid, parameterName, param); + emit parameterChanged(uasId, message.compid, value.param_count, value.param_index, parameterName, param); + //qDebug() << "RECEIVED PARAM:" << param; + } + break; case MAV_PARAM_TYPE_UINT32: { // Variant - QVariant param(val.param_uint32); + QVariant param; + if (getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + param = QVariant((unsigned int)val.param_float); + } + else + { + param = QVariant(val.param_uint32); + } parameters.value(component)->insert(parameterName, param); // Emit change emit parameterChanged(uasId, message.compid, parameterName, param); @@ -917,7 +981,15 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) case MAV_PARAM_TYPE_INT32: { // Variant - QVariant param(val.param_int32); + QVariant param; + if (getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + param = QVariant((int)val.param_float); + } + else + { + param = QVariant(val.param_int32); + } parameters.value(component)->insert(parameterName, param); // Emit change emit parameterChanged(uasId, message.compid, parameterName, param); @@ -927,7 +999,7 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) break; default: qCritical() << "INVALID DATA TYPE USED AS PARAMETER VALUE: " << value.param_type; - } + } //switch (value.param_type) } break; case MAVLINK_MSG_ID_COMMAND_ACK: @@ -2263,23 +2335,56 @@ void UAS::setParameter(const int component, const QString& id, const QVariant& v mavlink_param_union_t union_value; // Assign correct value based on QVariant - switch (value.type()) + // TODO: This is a hack for MAV_AUTOPILOT_ARDUPILOTMEGA until the new version of MAVLink and a fix for their param handling. + if (getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) { - case QVariant::Int: - union_value.param_int32 = value.toInt(); - p.param_type = MAV_PARAM_TYPE_INT32; - break; - case QVariant::UInt: - union_value.param_uint32 = value.toUInt(); - p.param_type = MAV_PARAM_TYPE_UINT32; - break; - case QMetaType::Float: - union_value.param_float = value.toFloat(); - p.param_type = MAV_PARAM_TYPE_REAL32; - break; - default: - qCritical() << "ABORTED PARAM SEND, NO VALID QVARIANT TYPE"; - return; + switch (value.type()) + { + case QVariant::Char: + union_value.param_float = (unsigned char)value.toChar().toAscii(); + p.param_type = MAV_PARAM_TYPE_INT8; + break; + case QVariant::Int: + union_value.param_float = value.toInt(); + p.param_type = MAV_PARAM_TYPE_INT32; + break; + case QVariant::UInt: + union_value.param_float = value.toUInt(); + p.param_type = MAV_PARAM_TYPE_UINT32; + break; + case QMetaType::Float: + union_value.param_float = value.toFloat(); + p.param_type = MAV_PARAM_TYPE_REAL32; + break; + default: + qCritical() << "ABORTED PARAM SEND, NO VALID QVARIANT TYPE"; + return; + } + } + else + { + switch (value.type()) + { + case QVariant::Char: + union_value.param_int8 = (unsigned char)value.toChar().toAscii(); + p.param_type = MAV_PARAM_TYPE_INT8; + break; + case QVariant::Int: + union_value.param_int32 = value.toInt(); + p.param_type = MAV_PARAM_TYPE_INT32; + break; + case QVariant::UInt: + union_value.param_uint32 = value.toUInt(); + p.param_type = MAV_PARAM_TYPE_UINT32; + break; + case QMetaType::Float: + union_value.param_float = value.toFloat(); + p.param_type = MAV_PARAM_TYPE_REAL32; + break; + default: + qCritical() << "ABORTED PARAM SEND, NO VALID QVARIANT TYPE"; + return; + } } p.param_value = union_value.param_float; diff --git a/src/uas/UASWaypointManager.cc b/src/uas/UASWaypointManager.cc index 66a9d57a321517b7cfc4a7f88fb711276ff3e70e..570103295c4dfee3ffaa7969bfd9418edb6d2483 100644 --- a/src/uas/UASWaypointManager.cc +++ b/src/uas/UASWaypointManager.cc @@ -799,6 +799,40 @@ void UASWaypointManager::readWaypoints(bool readToEdit) } } +bool UASWaypointManager::guidedModeSupported() +{ + return (uas->getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA); +} + +void UASWaypointManager::goToWaypoint(Waypoint *wp) +{ + //Don't try to send a guided mode message to an AP that does not support it. + if (uas->getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + mavlink_mission_item_t mission; + memset(&mission, 0, sizeof(mavlink_mission_item_t)); //initialize with zeros + //const Waypoint *cur_s = waypointsEditable.at(i); + + mission.autocontinue = 0; + mission.current = 2; //2 for guided mode + mission.param1 = wp->getParam1(); + mission.param2 = wp->getParam2(); + mission.param3 = wp->getParam3(); + mission.param4 = wp->getParam4(); + mission.frame = wp->getFrame(); + mission.command = wp->getAction(); + mission.seq = 0; // don't read out the sequence number of the waypoint class + mission.x = wp->getX(); + mission.y = wp->getY(); + mission.z = wp->getZ(); + mavlink_message_t message; + mission.target_system = uasid; + mission.target_component = MAV_COMP_ID_MISSIONPLANNER; + mavlink_msg_mission_item_encode(uas->mavlink->getSystemId(), uas->mavlink->getComponentId(), &message, &mission); + uas->sendMessage(message); + QGC::SLEEP::msleep(PROTOCOL_DELAY_MS); + } +} void UASWaypointManager::writeWaypoints() { diff --git a/src/uas/UASWaypointManager.h b/src/uas/UASWaypointManager.h index 1ae6d7586ebd559671a34703962a29c81403e2e4..755de2b9b5da2447e41d01a724e41dbe4294f790 100644 --- a/src/uas/UASWaypointManager.h +++ b/src/uas/UASWaypointManager.h @@ -66,7 +66,9 @@ private: public: UASWaypointManager(UAS* uas=NULL); ///< Standard constructor ~UASWaypointManager(); + bool guidedModeSupported(); + void goToWaypoint(Waypoint *wp); /** @name Received message handlers */ /*@{*/ void handleWaypointCount(quint8 systemId, quint8 compId, quint16 count); ///< Handles received waypoint count messages diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index 530744b1bbe31ce959fc1379004aece14ed95be4..d0753f1f8085b7dc51d9545394dbb254ba0de8a2 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -94,7 +94,7 @@ MainWindow* MainWindow::instance(QSplashScreen* screen) **/ MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), - currentView(VIEW_UNCONNECTED), + currentView(VIEW_MISSION), currentStyle(QGC_MAINWINDOW_STYLE_INDOOR), aboutToCloseFlag(false), changingViewsFlag(false), @@ -104,8 +104,14 @@ MainWindow::MainWindow(QWidget *parent): lowPowerMode(false) { hide(); + isAdvancedMode = false; emit initStatusChanged("Loading UI Settings.."); loadSettings(); + if (settings.contains("ADVANCED_MODE")) + { + isAdvancedMode = settings.value("ADVANCED_MODE").toBool(); + } + if (!settings.contains("CURRENT_VIEW")) { // Set this view as default view @@ -116,8 +122,8 @@ MainWindow::MainWindow(QWidget *parent): // LOAD THE LAST VIEW VIEW_SECTIONS currentViewCandidate = (VIEW_SECTIONS) settings.value("CURRENT_VIEW", currentView).toInt(); if (currentViewCandidate != VIEW_ENGINEER && - currentViewCandidate != VIEW_OPERATOR && - currentViewCandidate != VIEW_PILOT && + currentViewCandidate != VIEW_MISSION && + currentViewCandidate != VIEW_FLIGHT && currentViewCandidate != VIEW_FULL) { currentView = currentViewCandidate; @@ -159,16 +165,18 @@ MainWindow::MainWindow(QWidget *parent): QList actions; - actions << ui.actionOperatorsView; - actions << ui.actionPilotsView; + actions << ui.actionMissionView; + actions << ui.actionFlightView; actions << ui.actionEngineersView; actions << ui.actionSimulation_View; + actions << ui.actionConfiguration_2; toolBar->setPerspectiveChangeActions(actions); customStatusBar = new QGCStatusBar(this); setStatusBar(customStatusBar); statusBar()->setSizeGripEnabled(true); + emit initStatusChanged("Building common widgets."); buildCommonWidgets(); @@ -276,6 +284,8 @@ MainWindow::~MainWindow() // } if (joystick) { + joystick->shutdown(); + joystick->wait(5000); delete joystick; joystick = NULL; } @@ -380,76 +390,91 @@ void MainWindow::buildCommonWidgets() logPlayer = new QGCMAVLinkLogPlayer(mavlink, customStatusBar); customStatusBar->setLogPlayer(logPlayer); - // Dock widgets - if (!controlDockWidget) + + // Center widgets + if (!plannerView) { - controlDockWidget = new QDockWidget(tr("Control"), this); - controlDockWidget->setObjectName("UNMANNED_SYSTEM_CONTROL_DOCKWIDGET"); - controlDockWidget->setWidget( new UASControlWidget(this) ); - addTool(controlDockWidget, tr("Control"), Qt::LeftDockWidgetArea); + plannerView = new SubMainWindow(this); + plannerView->setCentralWidget(new QGCMapTool(this)); + //mapWidget = new QGCMapTool(this); + addCentralWidget(plannerView, "Maps"); } - if (!listDockWidget) + //pilotView + if (!pilotView) { - listDockWidget = new QDockWidget(tr("Unmanned Systems"), this); - listDockWidget->setWidget( new UASListWidget(this) ); - listDockWidget->setObjectName("UNMANNED_SYSTEMS_LIST_DOCKWIDGET"); - addTool(listDockWidget, tr("Unmanned Systems"), Qt::RightDockWidgetArea); + pilotView = new SubMainWindow(this); + pilotView->setObjectName("VIEW_FLIGHT"); + pilotView->setCentralWidget(new HUD(320,240,this)); + //hudWidget = new HUD(320, 240, this); + //addCentralWidget(hudWidget, tr("Head Up Display")); + //mapWidget = new QGCMapTool(this); + addCentralWidget(pilotView, "Pilot"); } + if (!configView) + { + configView = new SubMainWindow(this); + configView->setObjectName("VIEW_CONFIGURATION"); + configView->setCentralWidget(new QGCVehicleConfig(this)); + addCentralWidget(configView,"Config"); + centralWidgetToDockWidgetsMap[VIEW_CONFIGURATION] = QMap(); - if (!waypointsDockWidget) + } + if (!engineeringView) { - waypointsDockWidget = new QDockWidget(tr("Mission Plan"), this); - waypointsDockWidget->setWidget( new QGCWaypointListMulti(this) ); - waypointsDockWidget->setObjectName("WAYPOINT_LIST_DOCKWIDGET"); - addTool(waypointsDockWidget, tr("Mission Plan"), Qt::BottomDockWidgetArea); + engineeringView = new SubMainWindow(this); + engineeringView->setObjectName("VIEW_ENGINEER"); + engineeringView->setCentralWidget(new XMLCommProtocolWidget(this)); + addCentralWidget(engineeringView,"Mavlink Generator"); } - - if (!infoDockWidget) + if (!dataView) { - infoDockWidget = new QDockWidget(tr("Status Details"), this); - infoDockWidget->setWidget( new UASInfoWidget(this) ); - infoDockWidget->setObjectName("UAS_STATUS_DETAILS_DOCKWIDGET"); - addTool(infoDockWidget, tr("Status Details"), Qt::RightDockWidgetArea); + dataView = new SubMainWindow(this); + dataView->setObjectName("VIEW_DATA"); + dataView->setCentralWidget(new QGCDataPlot2D(this)); + addCentralWidget(dataView,tr("Logfile Plot")); } - - if (!debugConsoleDockWidget) + if (!simView) { - debugConsoleDockWidget = new QDockWidget(tr("Communication Console"), this); - debugConsoleDockWidget->setWidget( new DebugConsole(this) ); - debugConsoleDockWidget->setObjectName("COMMUNICATION_DEBUG_CONSOLE_DOCKWIDGET"); + simView = new SubMainWindow(this); + simView->setObjectName("VIEW_SIMULATOR"); + simView->setCentralWidget(new QGCMapTool(this)); + addCentralWidget(simView,tr("Simulation View")); + } - DebugConsole *debugConsole = dynamic_cast(debugConsoleDockWidget->widget()); - connect(mavlinkDecoder, SIGNAL(textMessageReceived(int, int, int, const QString)), debugConsole, SLOT(receiveTextMessage(int, int, int, const QString))); + // Dock widgets + QAction* tempAction = ui.menuTools->addAction(tr("Control")); + tempAction->setCheckable(true); + connect(tempAction,SIGNAL(triggered(bool)),this, SLOT(showTool(bool))); - addTool(debugConsoleDockWidget, tr("Communication Console"), Qt::BottomDockWidgetArea); - } + createDockWidget(simView,new UASControlWidget(this),tr("Control"),"UNMANNED_SYSTEM_CONTROL_DOCKWIDGET",VIEW_SIMULATION,Qt::LeftDockWidgetArea); + createDockWidget(pilotView,new UASListWidget(this),tr("Unmanned Systems"),"UNMANNED_SYSTEM_LIST_DOCKWIDGET",VIEW_FLIGHT,Qt::LeftDockWidgetArea); + createDockWidget(plannerView,new UASListWidget(this),tr("Unmanned Systems"),"UNMANNED_SYSTEM_LIST_DOCKWIDGET",VIEW_MISSION,Qt::LeftDockWidgetArea); + createDockWidget(plannerView,new QGCWaypointListMulti(this),tr("Mission Plan"),"WAYPOINT_LIST_DOCKWIDGET",VIEW_MISSION,Qt::BottomDockWidgetArea); + createDockWidget(simView,new QGCWaypointListMulti(this),tr("Mission Plan"),"WAYPOINT_LIST_DOCKWIDGET",VIEW_SIMULATION,Qt::BottomDockWidgetArea); + createDockWidget(engineeringView,new QGCMAVLinkInspector(mavlink,this),tr("MAVLink Inspector"),"MAVLINK_INSPECTOR_DOCKWIDGET",VIEW_ENGINEER,Qt::RightDockWidgetArea); -// if (!logPlayerDockWidget) -// { -// logPlayerDockWidget = new QDockWidget(tr("MAVLink Log Player"), this); -// logPlayer = new QGCMAVLinkLogPlayer(mavlink, this); -// customStatusBar->setLogPlayer(logPlayer); -// logPlayerDockWidget->setWidget(logPlayer); -// logPlayerDockWidget->setObjectName("MAVLINK_LOG_PLAYER_DOCKWIDGET"); -// addTool(logPlayerDockWidget, tr("MAVLink Log Replay"), Qt::RightDockWidgetArea); -// } + createDockWidget(engineeringView,new ParameterInterface(this),tr("Onboard Parameters"),"PARAMETER_INTERFACE_DOCKWIDGET",VIEW_ENGINEER,Qt::RightDockWidgetArea); + createDockWidget(simView,new ParameterInterface(this),tr("Onboard Parameters"),"PARAMETER_INTERFACE_DOCKWIDGET",VIEW_SIMULATION,Qt::RightDockWidgetArea); + + + { + QAction* tempAction = ui.menuTools->addAction(tr("Status Details")); + menuToDockNameMap[tempAction] = "UAS_STATUS_DETAILS_DOCKWIDGET"; + tempAction->setCheckable(true); + connect(tempAction,SIGNAL(triggered(bool)),this, SLOT(showTool(bool))); + } + { + QAction* tempAction = ui.menuTools->addAction(tr("Communication Console")); + menuToDockNameMap[tempAction] = "COMMUNICATION_DEBUG_CONSOLE_DOCKWIDGET"; + tempAction->setCheckable(true); + connect(tempAction,SIGNAL(triggered(bool)),this, SLOT(showTool(bool))); + } + + createDockWidget(pilotView,new HSIDisplay(this),tr("Horizontal Situation"),"HORIZONTAL_SITUATION_INDICATOR_DOCKWIDGET",VIEW_FLIGHT,Qt::BottomDockWidgetArea); + createDockWidget(simView,new HSIDisplay(this),tr("Horizontal Situation"),"HORIZONTAL_SITUATION_INDICATOR_DOCKWIDGET",VIEW_SIMULATION,Qt::BottomDockWidgetArea); - if (!mavlinkInspectorWidget) - { - mavlinkInspectorWidget = new QDockWidget(tr("MAVLink Message Inspector"), this); - mavlinkInspectorWidget->setWidget( new QGCMAVLinkInspector(mavlink, this) ); - mavlinkInspectorWidget->setObjectName("MAVLINK_INSPECTOR_DOCKWIDGET"); - addTool(mavlinkInspectorWidget, tr("MAVLink Inspector"), Qt::RightDockWidgetArea); - } - if (!mavlinkSenderWidget) - { -// mavlinkSenderWidget = new QDockWidget(tr("MAVLink Message Sender"), this); -// mavlinkSenderWidget->setWidget( new QGCMAVLinkMessageSender(mavlink, this) ); -// mavlinkSenderWidget->setObjectName("MAVLINK_SENDER_DOCKWIDGET"); -// addTool(mavlinkSenderWidget, tr("MAVLink Sender"), Qt::RightDockWidgetArea); - } //FIXME: memory of acceptList will never be freed again QStringList* acceptList = new QStringList(); @@ -461,119 +486,34 @@ void MainWindow::buildCommonWidgets() QStringList* acceptList2 = new QStringList(); acceptList2->append("0,RAW_PRESSURE.pres_abs,hPa,65500"); - if (!parametersDockWidget) - { - parametersDockWidget = new QDockWidget(tr("Onboard Parameters"), this); - parametersDockWidget->setWidget( new ParameterInterface(this) ); - parametersDockWidget->setObjectName("PARAMETER_INTERFACE_DOCKWIDGET"); - addTool(parametersDockWidget, tr("Onboard Parameters"), Qt::RightDockWidgetArea); - } - - if (!hsiDockWidget) - { - hsiDockWidget = new QDockWidget(tr("Horizontal Situation Indicator"), this); - hsiDockWidget->setWidget( new HSIDisplay(this) ); - hsiDockWidget->setObjectName("HORIZONTAL_SITUATION_INDICATOR_DOCK_WIDGET"); - addTool(hsiDockWidget, tr("Horizontal Situation"), Qt::BottomDockWidgetArea); - } - - if (!headDown1DockWidget) - { - headDown1DockWidget = new QDockWidget(tr("Flight Display"), this); - HDDisplay* hdDisplay = new HDDisplay(acceptList, "Flight Display", this); - hdDisplay->addSource(mavlinkDecoder); - headDown1DockWidget->setWidget(hdDisplay); - headDown1DockWidget->setObjectName("HEAD_DOWN_DISPLAY_1_DOCK_WIDGET"); - addTool(headDown1DockWidget, tr("Flight Display"), Qt::RightDockWidgetArea); - } - if (!headDown2DockWidget) - { - headDown2DockWidget = new QDockWidget(tr("Actuator Status"), this); - HDDisplay* hdDisplay = new HDDisplay(acceptList2, "Actuator Status", this); - hdDisplay->addSource(mavlinkDecoder); - headDown2DockWidget->setWidget(hdDisplay); - headDown2DockWidget->setObjectName("HEAD_DOWN_DISPLAY_2_DOCK_WIDGET"); - addTool(headDown2DockWidget, tr("Actuator Status"), Qt::RightDockWidgetArea); - } - - if (!rcViewDockWidget) - { - rcViewDockWidget = new QDockWidget(tr("Radio Control"), this); - rcViewDockWidget->setWidget( new QGCRemoteControlView(this) ); - rcViewDockWidget->setObjectName("RADIO_CONTROL_CHANNELS_DOCK_WIDGET"); - addTool(rcViewDockWidget, tr("Radio Control"), Qt::BottomDockWidgetArea); - } + HDDisplay* hdDisplay = new HDDisplay(acceptList, "Flight Display", this); + hdDisplay->addSource(mavlinkDecoder); + createDockWidget(pilotView,hdDisplay,tr("Flight Display"),"HEAD_DOWN_DISPLAY_1_DOCKWIDGET",VIEW_FLIGHT,Qt::RightDockWidgetArea); - if (!headUpDockWidget) - { - headUpDockWidget = new QDockWidget(tr("HUD"), this); - headUpDockWidget->setWidget( new HUD(320, 240, this)); - headUpDockWidget->setObjectName("HEAD_UP_DISPLAY_DOCK_WIDGET"); - addTool(headUpDockWidget, tr("Head Up Display"), Qt::RightDockWidgetArea); - } - - if (!video1DockWidget) - { - video1DockWidget = new QDockWidget(tr("Video Stream 1"), this); - QGCRGBDView* video1 = new QGCRGBDView(160, 120, this); - video1->enableHUDInstruments(false); - video1->enableVideo(false); - // FIXME select video stream as well - video1DockWidget->setWidget(video1); - video1DockWidget->setObjectName("VIDEO_STREAM_1_DOCK_WIDGET"); - addTool(video1DockWidget, tr("Video Stream 1"), Qt::LeftDockWidgetArea); - } + HDDisplay* hdDisplay2 = new HDDisplay(acceptList2, "Actuator Status", this); + hdDisplay2->addSource(mavlinkDecoder); + createDockWidget(pilotView,hdDisplay2,tr("Actuator Status"),"HEAD_DOWN_DISPLAY_2_DOCKWIDGET",VIEW_FLIGHT,Qt::RightDockWidgetArea); - if (!video2DockWidget) { - video2DockWidget = new QDockWidget(tr("Video Stream 2"), this); - QGCRGBDView* video2 = new QGCRGBDView(160, 120, this); - video2->enableHUDInstruments(false); - video2->enableVideo(false); - // FIXME select video stream as well - video2DockWidget->setWidget(video2); - video2DockWidget->setObjectName("VIDEO_STREAM_2_DOCK_WIDGET"); - addTool(video2DockWidget, tr("Video Stream 2"), Qt::LeftDockWidgetArea); + QAction* tempAction = ui.menuTools->addAction(tr("Radio Control")); + tempAction->setCheckable(true); + connect(tempAction,SIGNAL(triggered(bool)),this, SLOT(showTool(bool))); } + createDockWidget(simView,new HUD(320,240,this),tr("Head Up Display"),"HEAD_UP_DISPLAY_DOCKWIDGET",VIEW_SIMULATION,Qt::RightDockWidgetArea,this->width()/1.5); -// if (!rgbd1DockWidget) { -// rgbd1DockWidget = new QDockWidget(tr("Video Stream 1"), this); -// HUD* video1 = new HUD(160, 120, this); -// video1->enableHUDInstruments(false); -// video1->enableVideo(true); -// // FIXME select video stream as well -// video1DockWidget->setWidget(video1); -// video1DockWidget->setObjectName("VIDEO_STREAM_1_DOCK_WIDGET"); -// addTool(video1DockWidget, tr("Video Stream 1"), Qt::LeftDockWidgetArea); -// } - -// if (!rgbd2DockWidget) { -// video2DockWidget = new QDockWidget(tr("Video Stream 2"), this); -// HUD* video2 = new HUD(160, 120, this); -// video2->enableHUDInstruments(false); -// video2->enableVideo(true); -// // FIXME select video stream as well -// video2DockWidget->setWidget(video2); -// video2DockWidget->setObjectName("VIDEO_STREAM_2_DOCK_WIDGET"); -// addTool(video2DockWidget, tr("Video Stream 2"), Qt::LeftDockWidgetArea); -// } // Custom widgets, added last to all menus and layouts buildCustomWidget(); - // Center widgets - if (!mapWidget) - { - mapWidget = new QGCMapTool(this); - addCentralWidget(mapWidget, "Maps"); - } - if (!protocolWidget) + + /*if (!protocolWidget) { protocolWidget = new XMLCommProtocolWidget(this); addCentralWidget(protocolWidget, "Mavlink Generator"); - } + }*/ + // if (!firmwareUpdateWidget) // { @@ -581,23 +521,24 @@ void MainWindow::buildCommonWidgets() // addCentralWidget(firmwareUpdateWidget, "Firmware Update"); // } - if (!hudWidget) + /*if (!hudWidget) { hudWidget = new HUD(320, 240, this); addCentralWidget(hudWidget, tr("Head Up Display")); - } + }*/ - if (!configWidget) + /*if (!configWidget) { configWidget = new QGCVehicleConfig(this); addCentralWidget(configWidget, tr("Vehicle Configuration")); - } + }*/ + - if (!dataplotWidget) + /*if (!dataplotWidget) { dataplotWidget = new QGCDataPlot2D(this); addCentralWidget(dataplotWidget, tr("Logfile Plot")); - } + }*/ #ifdef QGC_OSG_ENABLED if (!_3DWidget) @@ -616,28 +557,185 @@ void MainWindow::buildCommonWidgets() #endif } -void MainWindow::addTool(QDockWidget* widget, const QString& title, Qt::DockWidgetArea area) +void MainWindow::addTool(SubMainWindow *parent,VIEW_SECTIONS view,QDockWidget* widget, const QString& title, Qt::DockWidgetArea area) { - QAction* tempAction = ui.menuTools->addAction(title); - - tempAction->setCheckable(true); - QVariant var; - var.setValue((QWidget*)widget); - tempAction->setData(var); - connect(tempAction,SIGNAL(triggered(bool)),this, SLOT(showTool(bool))); - connect(widget, SIGNAL(visibilityChanged(bool)), tempAction, SLOT(setChecked(bool))); - tempAction->setChecked(widget->isVisible()); - addDockWidget(area, widget); + QList actionlist = ui.menuTools->actions(); + bool found = false; + QAction *targetAction; + for (int i=0;itext() == title) + { + found = true; + targetAction = actionlist[i]; + } + } + if (!found) + { + QAction* tempAction = ui.menuTools->addAction(title); + tempAction->setCheckable(true); + menuToDockNameMap[tempAction] = widget->objectName(); + if (!centralWidgetToDockWidgetsMap.contains(view)) + { + centralWidgetToDockWidgetsMap[view] = QMap(); + } + centralWidgetToDockWidgetsMap[view][widget->objectName()]= widget; + connect(tempAction,SIGNAL(triggered(bool)),this, SLOT(showTool(bool))); + connect(widget, SIGNAL(visibilityChanged(bool)), tempAction, SLOT(setChecked(bool))); + tempAction->setChecked(widget->isVisible()); + } + else + { + if (!menuToDockNameMap.contains(targetAction)) + { + menuToDockNameMap[targetAction] = widget->objectName(); + //menuToDockNameMap[targetAction] = title; + } + if (!centralWidgetToDockWidgetsMap.contains(view)) + { + centralWidgetToDockWidgetsMap[view] = QMap(); + } + centralWidgetToDockWidgetsMap[view][widget->objectName()]= widget; + connect(widget, SIGNAL(visibilityChanged(bool)), targetAction, SLOT(setChecked(bool))); + } + parent->addDockWidget(area,widget); } +void MainWindow::createDockWidget(QWidget *parent,QWidget *child,QString title,QString objectname,VIEW_SECTIONS view,Qt::DockWidgetArea area,int minwidth,int minheight) +{ + QDockWidget *widget = new QDockWidget(title,this); + if (!isAdvancedMode) + { + dockToTitleBarMap[widget] = widget->titleBarWidget(); + widget->setTitleBarWidget(new QWidget(this)); + } + else + { + dockToTitleBarMap[widget] = new QWidget(this); + } + widget->setObjectName(objectname); + widget->setWidget(child); + if (minheight != 0 || minwidth != 0) + { + widget->setMinimumHeight(minheight); + widget->setMinimumWidth(minwidth); + } + addTool(qobject_cast(parent),view,widget,title,area); +} +void MainWindow::loadDockWidget(QString name) +{ + if (centralWidgetToDockWidgetsMap[currentView].contains(name)) + { + return; + } + if (name == "UNMANNED_SYSTEM_CONTROL_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new UASControlWidget(this),tr("Control"),"UNMANNED_SYSTEM_CONTROL_DOCKWIDGET",currentView,Qt::LeftDockWidgetArea); + } + else if (name == "UNMANNED_SYSTEM_LIST_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new UASListWidget(this),tr("Unmanned Systems"),"UNMANNED_SYSTEM_LIST_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else if (name == "WAYPOINT_LIST_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new QGCWaypointListMulti(this),tr("Mission Plan"),"WAYPOINT_LIST_DOCKWIDGET",currentView,Qt::BottomDockWidgetArea); + } + else if (name == "MAVLINK_INSPECTOR_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new QGCMAVLinkInspector(mavlink,this),tr("MAVLink Inspector"),"MAVLINK_INSPECTOR_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else if (name == "PARAMETER_INTERFACE_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new ParameterInterface(this),tr("Onboard Parameters"),"PARAMETER_INTERFACE_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else if (name == "UAS_STATUS_DETAILS_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new UASInfoWidget(this),tr("Status Details"),"UAS_STATUS_DETAILS_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else if (name == "COMMUNICATION_DEBUG_CONSOLE_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new DebugConsole(this),tr("Communication Console"),"COMMUNICATION_DEBUG_CONSOLE_DOCKWIDGET",currentView,Qt::BottomDockWidgetArea); + } + else if (name == "HORIZONTAL_SITUATION_INDICATOR_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new HSIDisplay(this),tr("Horizontal Situation"),"HORIZONTAL_SITUATION_INDICATOR_DOCKWIDGET",currentView,Qt::BottomDockWidgetArea); + } + else if (name == "HEAD_DOWN_DISPLAY_1_DOCKWIDGET") + { + //FIXME: memory of acceptList will never be freed again + QStringList* acceptList = new QStringList(); + acceptList->append("-3.3,ATTITUDE.roll,rad,+3.3,s"); + acceptList->append("-3.3,ATTITUDE.pitch,deg,+3.3,s"); + acceptList->append("-3.3,ATTITUDE.yaw,deg,+3.3,s"); + HDDisplay *hddisplay = new HDDisplay(acceptList,"Flight Display",this); + hddisplay->addSource(mavlinkDecoder); + createDockWidget(centerStack->currentWidget(),hddisplay,tr("Flight Display"),"HEAD_DOWN_DISPLAY_1_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else if (name == "HEAD_DOWN_DISPLAY_2_DOCKWIDGET") + { + //FIXME: memory of acceptList2 will never be freed again + QStringList* acceptList2 = new QStringList(); + acceptList2->append("0,RAW_PRESSURE.pres_abs,hPa,65500"); + HDDisplay *hddisplay = new HDDisplay(acceptList2,"Actuator Status",this); + hddisplay->addSource(mavlinkDecoder); + createDockWidget(centerStack->currentWidget(),hddisplay,tr("Actuator Status"),"HEAD_DOWN_DISPLAY_2_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else if (name == "Radio Control") + { + qDebug() << "Error loading window:" << name << "Unknown window type"; + //createDockWidget(centerStack->currentWidget(),hddisplay,tr("Actuator Status"),"HEADS_DOWN_DISPLAY_2_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else if (name == "HEAD_UP_DISPLAY_DOCKWIDGET") + { + createDockWidget(centerStack->currentWidget(),new HUD(320,240,this),tr("Head Up Display"),"HEAD_UP_DISPLAY_DOCKWIDGET",currentView,Qt::RightDockWidgetArea); + } + else + { + qDebug() << "Error loading window:" << name; + } +} void MainWindow::showTool(bool show) { + //Called when a menu item is clicked on, regardless of view. + QAction* act = qobject_cast(sender()); - QWidget* widget = qVariantValue(act->data()); - widget->setVisible(show); + if (menuToDockNameMap.contains(act)) + { + QString name = menuToDockNameMap[act]; + if (centralWidgetToDockWidgetsMap.contains(currentView)) + { + if (centralWidgetToDockWidgetsMap[currentView].contains(name)) + { + if (show) + { + centralWidgetToDockWidgetsMap[currentView][name]->show(); + } + else + { + centralWidgetToDockWidgetsMap[currentView][name]->hide(); + } + } + else if (show) + { + loadDockWidget(name); + } + } + } + //QWidget* widget = qVariantValue(act->data()); + //widget->setVisible(show); } - +/*void addToolByName(QString name,SubMainWindow parent,const QString& title, Qt::DockWidgetArea area) +{ + if (name == "Control") + { + QDockWidget *widget = new QDockWidget(tr("Control"),this); + dockToTitleBarMap[widget] = widget->titleBarWidget(); + widget->setObjectName("UNMANNED_SYSTEM_CONTROL_DOCKWIDGET"); + widget->setWidget(new UASControlWidget(this)); + addTool(parent,VIEW_SIMULATION,widget,tr("Control"),area); + } +}*/ void MainWindow::addCentralWidget(QWidget* widget, const QString& title) { // Check if this widget already has been added @@ -653,7 +751,7 @@ void MainWindow::addCentralWidget(QWidget* widget, const QString& title) tempAction->setData(var); centerStackActionGroup->addAction(tempAction); connect(tempAction,SIGNAL(triggered()),this, SLOT(showCentralWidget())); - connect(widget, SIGNAL(visibilityChanged(bool)), tempAction, SLOT(setChecked(bool))); + //connect(widget, SIGNAL(visibilityChanged(bool)), tempAction, SLOT(setChecked(bool))); tempAction->setChecked(widget->isVisible()); } } @@ -678,7 +776,7 @@ void MainWindow::showHILConfigurationWidget(UASInterface* uas) QDockWidget* hilDock = new QDockWidget(hilDockName, this); hilDock->setWidget(hconf); hilDock->setObjectName(QString("HIL_CONFIG_%1").arg(uas->getUASID())); - addTool(hilDock, hilDockName, Qt::LeftDockWidgetArea); + //addTool(hilDock, hilDockName, Qt::LeftDockWidgetArea); hilDocks.insert(mav->getUASID(), hilDock); if (currentView != VIEW_SIMULATION) @@ -1043,9 +1141,10 @@ void MainWindow::connectCommonActions() QActionGroup* perspectives = new QActionGroup(ui.menuPerspectives); perspectives->addAction(ui.actionEngineersView); perspectives->addAction(ui.actionMavlinkView); - perspectives->addAction(ui.actionPilotsView); + perspectives->addAction(ui.actionFlightView); perspectives->addAction(ui.actionSimulation_View); - perspectives->addAction(ui.actionOperatorsView); + perspectives->addAction(ui.actionMissionView); + perspectives->addAction(ui.actionConfiguration_2); perspectives->addAction(ui.actionFirmwareUpdateView); perspectives->addAction(ui.actionUnconnectedView); perspectives->setExclusive(true); @@ -1053,9 +1152,10 @@ void MainWindow::connectCommonActions() // Mark the right one as selected if (currentView == VIEW_ENGINEER) ui.actionEngineersView->setChecked(true); if (currentView == VIEW_MAVLINK) ui.actionMavlinkView->setChecked(true); - if (currentView == VIEW_PILOT) ui.actionPilotsView->setChecked(true); + if (currentView == VIEW_FLIGHT) ui.actionFlightView->setChecked(true); if (currentView == VIEW_SIMULATION) ui.actionSimulation_View->setChecked(true); - if (currentView == VIEW_OPERATOR) ui.actionOperatorsView->setChecked(true); + if (currentView == VIEW_MISSION) ui.actionMissionView->setChecked(true); + if (currentView == VIEW_CONFIGURATION) ui.actionConfiguration_2->setChecked(true); if (currentView == VIEW_FIRMWAREUPDATE) ui.actionFirmwareUpdateView->setChecked(true); if (currentView == VIEW_UNCONNECTED) ui.actionUnconnectedView->setChecked(true); @@ -1068,6 +1168,7 @@ void MainWindow::connectCommonActions() // Connect actions from ui connect(ui.actionAdd_Link, SIGNAL(triggered()), this, SLOT(addLink())); + connect(ui.actionAdvanced_Mode,SIGNAL(triggered()),this,SLOT(setAdvancedMode())); // Connect internal actions connect(UASManager::instance(), SIGNAL(UASCreated(UASInterface*)), this, SLOT(UASCreated(UASInterface*))); @@ -1082,11 +1183,12 @@ void MainWindow::connectCommonActions() connect(ui.actionConfiguration, SIGNAL(triggered()), UASManager::instance(), SLOT(configureActiveUAS())); // Views actions - connect(ui.actionPilotsView, SIGNAL(triggered()), this, SLOT(loadPilotView())); + connect(ui.actionFlightView, SIGNAL(triggered()), this, SLOT(loadPilotView())); connect(ui.actionSimulation_View, SIGNAL(triggered()), this, SLOT(loadSimulationView())); connect(ui.actionEngineersView, SIGNAL(triggered()), this, SLOT(loadEngineerView())); - connect(ui.actionOperatorsView, SIGNAL(triggered()), this, SLOT(loadOperatorView())); + connect(ui.actionMissionView, SIGNAL(triggered()), this, SLOT(loadOperatorView())); connect(ui.actionUnconnectedView, SIGNAL(triggered()), this, SLOT(loadUnconnectedView())); + connect(ui.actionConfiguration_2,SIGNAL(triggered()),this,SLOT(loadConfigurationView())); connect(ui.actionFirmwareUpdateView, SIGNAL(triggered()), this, SLOT(loadFirmwareUpdateView())); connect(ui.actionMavlinkView, SIGNAL(triggered()), this, SLOT(loadMAVLinkView())); @@ -1288,8 +1390,8 @@ void MainWindow::UASCreated(UASInterface* uas) //if (uas != NULL) //{ // The pilot, operator and engineer views were not available on startup, enable them now - ui.actionPilotsView->setEnabled(true); - ui.actionOperatorsView->setEnabled(true); + ui.actionFlightView->setEnabled(true); + ui.actionMissionView->setEnabled(true); ui.actionEngineersView->setEnabled(true); // The UAS actions are not enabled without connection to system ui.actionLiftoff->setEnabled(true); @@ -1403,13 +1505,13 @@ void MainWindow::UASCreated(UASInterface* uas) showHILConfigurationWidget(uas); // Line chart - if (!linechartWidget) + /*if (!linechartWidget) { // Center widgets linechartWidget = new Linecharts(this); linechartWidget->addSource(mavlinkDecoder); addCentralWidget(linechartWidget, tr("Realtime Plot")); - } + }*/ // Load default custom widgets for this autopilot type loadCustomWidgetsFromDefaults(uas->getSystemTypeName(), uas->getAutopilotTypeName()); @@ -1423,7 +1525,7 @@ void MainWindow::UASCreated(UASInterface* uas) detectionDockWidget = new QDockWidget(tr("Object Recognition"), this); detectionDockWidget->setWidget( new ObjectDetectionView("files/images/patterns", this) ); detectionDockWidget->setObjectName("OBJECT_DETECTION_DOCK_WIDGET"); - addTool(detectionDockWidget, tr("Object Recognition"), Qt::RightDockWidgetArea); + //addTool(detectionDockWidget, tr("Object Recognition"), Qt::RightDockWidgetArea); } if (!watchdogControlDockWidget) @@ -1431,7 +1533,7 @@ void MainWindow::UASCreated(UASInterface* uas) watchdogControlDockWidget = new QDockWidget(tr("Process Control"), this); watchdogControlDockWidget->setWidget( new WatchdogControl(this) ); watchdogControlDockWidget->setObjectName("WATCHDOG_CONTROL_DOCKWIDGET"); - addTool(watchdogControlDockWidget, tr("Process Control"), Qt::BottomDockWidgetArea); + //addTool(watchdogControlDockWidget, tr("Process Control"), Qt::BottomDockWidgetArea); } } @@ -1456,7 +1558,7 @@ void MainWindow::UASCreated(UASInterface* uas) case VIEW_FIRMWAREUPDATE: loadFirmwareUpdateView(); break; - case VIEW_PILOT: + case VIEW_FLIGHT: loadPilotView(); break; case VIEW_SIMULATION: @@ -1465,7 +1567,7 @@ void MainWindow::UASCreated(UASInterface* uas) case VIEW_UNCONNECTED: loadUnconnectedView(); break; - case VIEW_OPERATOR: + case VIEW_MISSION: default: loadOperatorView(); break; @@ -1513,7 +1615,17 @@ void MainWindow::storeViewState() if (!aboutToCloseFlag) { // Save current state - settings.setValue(getWindowStateKey(), saveState(QGC::applicationVersion())); + SubMainWindow *win = qobject_cast(centerStack->currentWidget()); + QList widgets = win->findChildren(); + QString widgetnames = ""; + for (int i=0;iobjectName() + ","; + } + widgetnames = widgetnames.mid(0,widgetnames.length()-1); + + settings.setValue(getWindowStateKey() + "WIDGETS",widgetnames); + settings.setValue(getWindowStateKey(), win->saveState(QGC::applicationVersion())); settings.setValue(getWindowStateKey()+"CENTER_WIDGET", centerStack->currentIndex()); // Although we want save the state of the window, we do not want to change the top-leve state (minimized, maximized, etc) // therefore this state is stored here and restored after applying the rest of the settings in the new @@ -1528,10 +1640,10 @@ void MainWindow::loadViewState() // Restore center stack state int index = settings.value(getWindowStateKey()+"CENTER_WIDGET", -1).toInt(); // The offline plot view is usually the consequence of a logging run, always show the realtime view first - if (centerStack->indexOf(dataplotWidget) == index) + if (centerStack->indexOf(dataView) == index) { // Rewrite to realtime plot - index = centerStack->indexOf(linechartWidget); + //index = centerStack->indexOf(linechartWidget); } if (index != -1) @@ -1547,137 +1659,94 @@ void MainWindow::loadViewState() // Load defaults switch (currentView) { + case VIEW_CONFIGURATION: + centerStack->setCurrentWidget(configView); + break; case VIEW_ENGINEER: - centerStack->setCurrentWidget(linechartWidget); - controlDockWidget->hide(); - listDockWidget->hide(); - waypointsDockWidget->hide(); - infoDockWidget->hide(); - debugConsoleDockWidget->show(); - //mavlinkInspectorWidget->show(); - //mavlinkSenderWidget->show(); - parametersDockWidget->show(); - hsiDockWidget->hide(); - headDown1DockWidget->hide(); - headDown2DockWidget->hide(); - rcViewDockWidget->hide(); - headUpDockWidget->hide(); - video1DockWidget->hide(); - video2DockWidget->hide(); + centerStack->setCurrentWidget(dataView); break; - case VIEW_PILOT: - centerStack->setCurrentWidget(hudWidget); - controlDockWidget->hide(); - listDockWidget->hide(); - waypointsDockWidget->hide(); - infoDockWidget->hide(); - debugConsoleDockWidget->hide(); -// logPlayerDockWidget->hide(); - mavlinkInspectorWidget->hide(); - parametersDockWidget->hide(); - hsiDockWidget->show(); - headDown1DockWidget->show(); - headDown2DockWidget->show(); - rcViewDockWidget->hide(); - headUpDockWidget->hide(); - video1DockWidget->hide(); - video2DockWidget->hide(); + case VIEW_FLIGHT: + centerStack->setCurrentWidget(pilotView); break; case VIEW_MAVLINK: - centerStack->setCurrentWidget(protocolWidget); - controlDockWidget->hide(); - listDockWidget->hide(); - waypointsDockWidget->hide(); - infoDockWidget->hide(); - debugConsoleDockWidget->hide(); -// logPlayerDockWidget->hide(); - mavlinkInspectorWidget->show(); - //mavlinkSenderWidget->show(); - parametersDockWidget->hide(); - hsiDockWidget->hide(); - headDown1DockWidget->hide(); - headDown2DockWidget->hide(); - rcViewDockWidget->hide(); - headUpDockWidget->hide(); - video1DockWidget->hide(); - video2DockWidget->hide(); + centerStack->setCurrentWidget(engineeringView); break; case VIEW_FIRMWAREUPDATE: centerStack->setCurrentWidget(firmwareUpdateWidget); - controlDockWidget->hide(); - listDockWidget->hide(); - waypointsDockWidget->hide(); - infoDockWidget->hide(); - debugConsoleDockWidget->hide(); -// logPlayerDockWidget->hide(); - mavlinkInspectorWidget->hide(); - //mavlinkSenderWidget->hide(); - parametersDockWidget->hide(); - hsiDockWidget->hide(); - headDown1DockWidget->hide(); - headDown2DockWidget->hide(); - rcViewDockWidget->hide(); - headUpDockWidget->hide(); - video1DockWidget->hide(); - video2DockWidget->hide(); break; - case VIEW_OPERATOR: - centerStack->setCurrentWidget(mapWidget); - controlDockWidget->hide(); - listDockWidget->show(); - waypointsDockWidget->show(); - infoDockWidget->hide(); - debugConsoleDockWidget->show(); -// logPlayerDockWidget->show(); - parametersDockWidget->hide(); - hsiDockWidget->hide(); - headDown1DockWidget->hide(); - headDown2DockWidget->hide(); - rcViewDockWidget->hide(); - headUpDockWidget->show(); - video1DockWidget->hide(); - video2DockWidget->hide(); - mavlinkInspectorWidget->hide(); + case VIEW_MISSION: + centerStack->setCurrentWidget(plannerView); break; case VIEW_SIMULATION: - centerStack->setCurrentWidget(mapWidget); - controlDockWidget->show(); - waypointsDockWidget->show(); - parametersDockWidget->show(); - mavlinkInspectorWidget->hide(); - foreach (int key, hilDocks.keys()) { - hilDocks.value(key)->show(); - } + centerStack->setCurrentWidget(simView); break; case VIEW_UNCONNECTED: case VIEW_FULL: default: - centerStack->setCurrentWidget(mapWidget); - controlDockWidget->hide(); - listDockWidget->show(); - waypointsDockWidget->hide(); - infoDockWidget->hide(); - debugConsoleDockWidget->show(); -// logPlayerDockWidget->show(); - parametersDockWidget->hide(); - hsiDockWidget->hide(); - headDown1DockWidget->hide(); - headDown2DockWidget->hide(); - rcViewDockWidget->hide(); - headUpDockWidget->show(); - video1DockWidget->hide(); - video2DockWidget->hide(); - mavlinkInspectorWidget->hide(); + //centerStack->setCurrentWidget(mapWidget); + if (controlDockWidget) + { + controlDockWidget->hide(); + } + if (listDockWidget) + { + listDockWidget->show(); + } break; } } // Restore the widget positions and size + if (settings.contains(getWindowStateKey() + "WIDGETS")) + { + QString widgetstr = settings.value(getWindowStateKey() + "WIDGETS").toString(); + QStringList split = widgetstr.split(","); + foreach (QString widgetname,split) + { + if (widgetname != "") + { + loadDockWidget(widgetname); + } + } + } if (settings.contains(getWindowStateKey())) { - restoreState(settings.value(getWindowStateKey()).toByteArray(), QGC::applicationVersion()); + SubMainWindow *win = qobject_cast(centerStack->currentWidget()); + //settings.setValue(getWindowStateKey(), win->saveState(QGC::applicationVersion())) + win->restoreState(settings.value(getWindowStateKey()).toByteArray(), QGC::applicationVersion()); + } +} +void MainWindow::setAdvancedMode() +{ + if (!isAdvancedMode) + { + ui.actionAdvanced_Mode->setChecked(true); + isAdvancedMode = true; + settings.setValue("ADVANCED_MODE",true); + for (QMap::const_iterator i=dockToTitleBarMap.constBegin();i!=dockToTitleBarMap.constEnd();i++) + { + //QWidget *widget = i.value(); + QWidget *widget = i.key()->titleBarWidget(); + i.key()->setTitleBarWidget(i.value()); + dockToTitleBarMap[i.key()] = widget; + + } + } + else + { + ui.actionAdvanced_Mode->setChecked(false); + isAdvancedMode = false; + settings.setValue("ADVANCED_MODE",false); + for (QMap::const_iterator i=dockToTitleBarMap.constBegin();i!=dockToTitleBarMap.constEnd();i++) + { + //QWidget *widget = i.value(); + QWidget *widget = i.key()->titleBarWidget(); + i.key()->setTitleBarWidget(i.value()); + dockToTitleBarMap[i.key()] = widget; + + } } } @@ -1694,11 +1763,21 @@ void MainWindow::loadEngineerView() void MainWindow::loadOperatorView() { - if (currentView != VIEW_OPERATOR) + if (currentView != VIEW_MISSION) { storeViewState(); - currentView = VIEW_OPERATOR; - ui.actionOperatorsView->setChecked(true); + currentView = VIEW_MISSION; + ui.actionMissionView->setChecked(true); + loadViewState(); + } +} +void MainWindow::loadConfigurationView() +{ + if (currentView != VIEW_CONFIGURATION) + { + storeViewState(); + currentView = VIEW_CONFIGURATION; + ui.actionConfiguration_2->setChecked(true); loadViewState(); } } @@ -1716,11 +1795,11 @@ void MainWindow::loadUnconnectedView() void MainWindow::loadPilotView() { - if (currentView != VIEW_PILOT) + if (currentView != VIEW_FLIGHT) { storeViewState(); - currentView = VIEW_PILOT; - ui.actionPilotsView->setChecked(true); + currentView = VIEW_FLIGHT; + ui.actionFlightView->setChecked(true); loadViewState(); } } @@ -1761,16 +1840,21 @@ void MainWindow::loadFirmwareUpdateView() void MainWindow::loadDataView(QString fileName) { // Plot is now selected, now load data from file - if (dataplotWidget) + if (dataView) { - dataplotWidget->loadFile(fileName); + //dataView->setCentralWidget(new QGCDataPlot2D(this)); + QGCDataPlot2D *plot = qobject_cast(dataView->centralWidget()); + if (plot) + { + plot->loadFile(fileName); + } } - QStackedWidget *centerStack = dynamic_cast(centralWidget()); + /*QStackedWidget *centerStack = dynamic_cast(centralWidget()); if (centerStack) { - centerStack->setCurrentWidget(dataplotWidget); + centerStack->setCurrentWidget(dataView); dataplotWidget->loadFile(fileName); - } + }*/ } diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h index c66cad8da26b6550b5995b9e27cf14f6dd90cc9b..1e65684f01119d252a489169b10553273dff86fb 100644 --- a/src/ui/MainWindow.h +++ b/src/ui/MainWindow.h @@ -52,6 +52,7 @@ This file is part of the QGROUNDCONTROL project #include "MAVLinkSimulationLink.h" #include "ObjectDetectionView.h" #include "HUD.h" +#include "submainwindow.h" #include "JoystickWidget.h" #include "input/JoystickInput.h" #if (defined MOUSE_ENABLED_WIN) | (defined MOUSE_ENABLED_LINUX) @@ -127,7 +128,6 @@ public: QList listLinkMenuActions(void); public slots: - /** @brief Shows a status message on the bottom status bar */ void showStatusMessage(const QString& status, int timeout); /** @brief Shows a status message on the bottom status bar */ @@ -156,6 +156,10 @@ public slots: void stopVideoCapture(); void saveScreen(); + /** @brief Sets advanced mode, allowing for editing of tool widget locations */ + void setAdvancedMode(); + /** @brief Load configuration view */ + void loadConfigurationView(); /** @brief Load default view when no MAV is connected */ void loadUnconnectedView(); /** @brief Load view for pilot */ @@ -224,6 +228,7 @@ public slots: */ void showTool(bool visible); + /** * @brief Shows a Widget from the center stack based on the action sender * @@ -261,11 +266,12 @@ protected: typedef enum _VIEW_SECTIONS { VIEW_ENGINEER, - VIEW_OPERATOR, - VIEW_PILOT, + VIEW_MISSION, + VIEW_FLIGHT, VIEW_SIMULATION, VIEW_MAVLINK, VIEW_FIRMWAREUPDATE, + VIEW_CONFIGURATION, VIEW_UNCONNECTED, ///< View in unconnected mode, when no UAS is available VIEW_FULL ///< All widgets shown at once } VIEW_SECTIONS; @@ -281,8 +287,9 @@ protected: * @param title The entry that will appear in the Menu and in the QDockedWidget title bar * @param location The default location for the QDockedWidget in case there is no previous key in the settings */ - void addTool(QDockWidget* widget, const QString& title, Qt::DockWidgetArea location=Qt::RightDockWidgetArea); - + void addTool(SubMainWindow *parent,VIEW_SECTIONS view,QDockWidget* widget, const QString& title, Qt::DockWidgetArea area); + void loadDockWidget(QString name); +void createDockWidget(QWidget *parent,QWidget *child,QString title,QString objectname,VIEW_SECTIONS view,Qt::DockWidgetArea area,int minwidth=0,int minheight=0); /** * @brief Adds an already instantiated QWidget to the center stack * @@ -328,12 +335,20 @@ protected: QActionGroup* centerStackActionGroup; // Center widgets - QPointer linechartWidget; - QPointer hudWidget; - QPointer configWidget; - QPointer mapWidget; - QPointer protocolWidget; - QPointer dataplotWidget; + QPointer plannerView; + QPointer pilotView; + QPointer configView; + QPointer dataView; + QPointer engineeringView; + QPointer simView; + + // Center widgets + //QPointer linechartWidget; + //QPointer hudWidget; + //QPointer configWidget; + //QPointer mapWidget; + //QPointer protocolWidget; + //QPointer dataplotWidget; #ifdef QGC_OSG_ENABLED QPointer _3DWidget; #endif @@ -417,6 +432,10 @@ protected: QTimer windowNameUpdateTimer; private: + QMap menuToDockNameMap; + QMap dockToTitleBarMap; + QMap > centralWidgetToDockWidgetsMap; + bool isAdvancedMode; Ui::MainWindow ui; QString getWindowStateKey(); diff --git a/src/ui/MainWindow.ui b/src/ui/MainWindow.ui index 6226dc3b7d59bc0005f2feea44985100220408d6..96b8aa259858b71c8f6b5cc3b8cef23c20e3b9ea 100644 --- a/src/ui/MainWindow.ui +++ b/src/ui/MainWindow.ui @@ -51,7 +51,7 @@ 0 0 800 - 22 + 21 @@ -72,6 +72,7 @@ + @@ -101,9 +102,11 @@ Perspectives - + + + - + @@ -279,7 +282,7 @@ Developer Credits - + true @@ -333,7 +336,7 @@ Select Stylesheet - + true @@ -468,6 +471,31 @@ Open the simulation view + + + true + + + + :/files/images/categories/preferences-system.svg:/files/images/categories/preferences-system.svg + + + Configuration + + + + + true + + + Advanced Mode + + + + + Simulation + + diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index 9658249bcb9c01b71fdd7dcff8ba2a0fba3c90b2..068dbebb9d1cdd7c0bf0971e47f23c8ca3722667 100644 --- a/src/ui/QGCParamWidget.cc +++ b/src/ui/QGCParamWidget.cc @@ -400,6 +400,7 @@ void QGCParamWidget::addParameter(int uas, int component, int paramCount, int pa if (map && map->contains(parameterName)) { justWritten = true; + QVariant newval = map->value(parameterName); if (map->value(parameterName) != value) { writeMismatch = true; @@ -551,7 +552,14 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, { //qDebug() << "UPDATED CHILD"; parameterItem = child; - parameterItem->setData(1, Qt::DisplayRole, value); + if (value.type() == QVariant::Char) + { + parameterItem->setData(1, Qt::DisplayRole, value.toUInt()); + } + else + { + parameterItem->setData(1, Qt::DisplayRole, value); + } found = true; } } @@ -564,7 +572,14 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, // CREATE PARAMETER ITEM parameterItem = new QTreeWidgetItem(plist); // CONFIGURE PARAMETER ITEM - parameterItem->setData(1, Qt::DisplayRole, value); + if (value.type() == QVariant::Char) + { + parameterItem->setData(1, Qt::DisplayRole, value.toUInt()); + } + else + { + parameterItem->setData(1, Qt::DisplayRole, value); + } compParamGroups->value(parent)->addChild(parameterItem); parameterItem->setFlags(parameterItem->flags() | Qt::ItemIsEditable); @@ -708,6 +723,12 @@ void QGCParamWidget::parameterItemChanged(QTreeWidgetItem* current, int column) parameters.value(key)->insert(str, fixedValue); } break; + case QMetaType::QChar: + { + QVariant fixedValue(QChar((unsigned char)value.toUInt())); + parameters.value(key)->insert(str, fixedValue); + } + break; default: qCritical() << "ABORTED PARAM UPDATE, NO VALID QVARIANT TYPE"; return; @@ -999,6 +1020,13 @@ void QGCParamWidget::setParameter(int component, QString parameterName, QVariant switch (parameters.value(component)->value(parameterName).type()) { + case QVariant::Char: + { + QVariant fixedValue(QChar((unsigned char)value.toInt())); + emit parameterChanged(component, parameterName, fixedValue); + //qDebug() << "PARAM WIDGET SENT:" << fixedValue; + } + break; case QVariant::Int: { QVariant fixedValue(value.toInt()); diff --git a/src/ui/QGCParamWidget.h b/src/ui/QGCParamWidget.h index 8dc801e5778d77ed768abed00736714ae098fb7f..f62227d015ddc7079443ea4e3c5fe31182c52a2e 100644 --- a/src/ui/QGCParamWidget.h +++ b/src/ui/QGCParamWidget.h @@ -58,6 +58,7 @@ public: double getParamMax(const QString& param) { return paramMax.value(param, 0.0f); } double getParamDefault(const QString& param) { return paramDefault.value(param, 0.0f); } QString getParamInfo(const QString& param) { return paramToolTips.value(param, ""); } + void setParamInfo(const QMap& param) { paramToolTips = param; } signals: /** @brief A parameter was changed in the widget, NOT onboard */ diff --git a/src/ui/QGCVehicleConfig.cc b/src/ui/QGCVehicleConfig.cc index b4d291707cc08c1d7f25a39e6d80bec7a7d2b75c..10947cafcba563ebc052a61b2a93b2afcf873037 100644 --- a/src/ui/QGCVehicleConfig.cc +++ b/src/ui/QGCVehicleConfig.cc @@ -8,6 +8,8 @@ #endif #include +#include +#include #include "QGCVehicleConfig.h" #include "UASManager.h" @@ -32,6 +34,12 @@ QGCVehicleConfig::QGCVehicleConfig(QWidget *parent) : calibrationEnabled(false), ui(new Ui::QGCVehicleConfig) { + doneLoadingConfig = false; + systemTypeToParamMap["FIXED_WING"] = new QMap(); + systemTypeToParamMap["QUADROTOR"] = new QMap(); + systemTypeToParamMap["GROUND_ROVER"] = new QMap(); + libParamToWidgetMap = new QMap(); + setObjectName("QGC_VEHICLECONFIG"); ui->setupUi(this); @@ -149,6 +157,521 @@ void QGCVehicleConfig::stopCalibrationRC() ui->rcCalibrationButton->setText(tr("Start RC Calibration")); } +void QGCVehicleConfig::loadQgcConfig(bool primary) +{ + QDir autopilotdir(qApp->applicationDirPath() + "/files/" + mav->getAutopilotTypeName().toLower()); + QDir generaldir = QDir(autopilotdir.absolutePath() + "/general/widgets"); + QDir vehicledir = QDir(autopilotdir.absolutePath() + "/" + mav->getSystemTypeName().toLower() + "/widgets"); + if (!autopilotdir.exists("general")) + { + //TODO: Throw some kind of error here. There is no general configuration directory + qWarning() << "Invalid general dir. no general configuration will be loaded."; + } + if (!autopilotdir.exists(mav->getAutopilotTypeName().toLower())) + { + //TODO: Throw an error here too, no autopilot specific configuration + qWarning() << "Invalid vehicle dir, no vehicle specific configuration will be loaded."; + } + QGCToolWidget *tool; + bool left = true; + foreach (QString file,generaldir.entryList(QDir::Files | QDir::NoDotAndDotDot)) + { + if (file.toLower().endsWith(".qgw")) { + tool = new QGCToolWidget("", this); + if (tool->loadSettings(generaldir.absoluteFilePath(file), false)) + { + toolWidgets.append(tool); + //ui->sensorLayout->addWidget(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + if (left) + { + left = false; + ui->leftGeneralLayout->addWidget(box); + } + else + { + left = true; + ui->rightGeneralLayout->addWidget(box); + } + } else { + delete tool; + } + } + } + left = true; + foreach (QString file,vehicledir.entryList(QDir::Files | QDir::NoDotAndDotDot)) + { + if (file.toLower().endsWith(".qgw")) { + tool = new QGCToolWidget("", this); + if (tool->loadSettings(vehicledir.absoluteFilePath(file), false)) + { + toolWidgets.append(tool); + //ui->sensorLayout->addWidget(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + if (left) + { + left = false; + ui->leftAdvancedLayout->addWidget(box); + } + else + { + left = true; + ui->rightAdvancedLayout->addWidget(box); + } + } else { + delete tool; + } + } + } + + //Load tabs for general configuration + foreach (QString dir,generaldir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) + { + QWidget *tab = new QWidget(ui->tabWidget); + ui->tabWidget->insertTab(2,tab,dir); + tab->setLayout(new QVBoxLayout()); + tab->show(); + QScrollArea *area = new QScrollArea(); + tab->layout()->addWidget(area); + QWidget *scrollArea = new QWidget(); + scrollArea->setLayout(new QVBoxLayout()); + area->setWidget(scrollArea); + area->setWidgetResizable(true); + area->show(); + scrollArea->show(); + QDir newdir = QDir(generaldir.absoluteFilePath(dir)); + foreach (QString file,newdir.entryList(QDir::Files| QDir::NoDotAndDotDot)) + { + if (file.toLower().endsWith(".qgw")) { + tool = new QGCToolWidget("", this); + if (tool->loadSettings(newdir.absoluteFilePath(file), false)) + { + toolWidgets.append(tool); + //ui->sensorLayout->addWidget(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + scrollArea->layout()->addWidget(box); + } else { + delete tool; + } + } + } + } + + //Load tabs for vehicle specific configuration + foreach (QString dir,vehicledir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) + { + QWidget *tab = new QWidget(ui->tabWidget); + ui->tabWidget->insertTab(2,tab,dir); + tab->setLayout(new QVBoxLayout()); + tab->show(); + QScrollArea *area = new QScrollArea(); + tab->layout()->addWidget(area); + QWidget *scrollArea = new QWidget(); + scrollArea->setLayout(new QVBoxLayout()); + area->setWidget(scrollArea); + area->setWidgetResizable(true); + area->show(); + scrollArea->show(); + + QDir newdir = QDir(vehicledir.absoluteFilePath(dir)); + foreach (QString file,newdir.entryList(QDir::Files| QDir::NoDotAndDotDot)) + { + if (file.toLower().endsWith(".qgw")) { + tool = new QGCToolWidget("", this); + tool->addUAS(mav); + if (tool->loadSettings(newdir.absoluteFilePath(file), false)) + { + toolWidgets.append(tool); + //ui->sensorLayout->addWidget(tool); + QGroupBox *box = new QGroupBox(); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + scrollArea->layout()->addWidget(box); + box->show(); + //gbox->layout()->addWidget(box); + } else { + delete tool; + } + } + } + } + + + // Load calibration + //TODO: Handle this more gracefully, maybe have it scan the directory for multiple calibration entries? + tool = new QGCToolWidget("", this); + tool->addUAS(mav); + if (tool->loadSettings(autopilotdir.absolutePath() + "/general/calibration/calibration.qgw", false)) + { + toolWidgets.append(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + ui->sensorLayout->addWidget(box); + } else { + delete tool; + } + + + tool = new QGCToolWidget("", this); + tool->addUAS(mav); + if (tool->loadSettings(autopilotdir.absolutePath() + "/" + mav->getSystemTypeName().toLower() + "/calibration/calibration.qgw", false)) + { + toolWidgets.append(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + ui->sensorLayout->addWidget(box); + } else { + delete tool; + } + //description.txt + QFile sensortipsfile(autopilotdir.absolutePath() + "/general/calibration/description.txt"); + sensortipsfile.open(QIODevice::ReadOnly); + ui->sensorTips->setHtml(sensortipsfile.readAll()); + sensortipsfile.close(); + + + + + +} + +void QGCVehicleConfig::loadConfig() +{ + QGCToolWidget* tool; + + QDir autopilotdir(qApp->applicationDirPath() + "/files/" + mav->getAutopilotTypeName().toLower()); + QDir generaldir = QDir(autopilotdir.absolutePath() + "/general/widgets"); + QDir vehicledir = QDir(autopilotdir.absolutePath() + "/" + mav->getSystemTypeName().toLower() + "/widgets"); + if (!autopilotdir.exists("general")) + { + //TODO: Throw some kind of error here. There is no general configuration directory + qWarning() << "Invalid general dir. no general configuration will be loaded."; + } + if (!autopilotdir.exists(mav->getAutopilotTypeName().toLower())) + { + //TODO: Throw an error here too, no autopilot specific configuration + qWarning() << "Invalid vehicle dir, no vehicle specific configuration will be loaded."; + } + qDebug() << autopilotdir.absolutePath(); + qDebug() << generaldir.absolutePath(); + qDebug() << vehicledir.absolutePath(); + QFile xmlfile(autopilotdir.absolutePath() + "/arduplane.pdef.xml"); + if (xmlfile.exists() && !xmlfile.open(QIODevice::ReadOnly)) + { + loadQgcConfig(false); + doneLoadingConfig = true; + return; + } + loadQgcConfig(true); + + QXmlStreamReader xml(xmlfile.readAll()); + xmlfile.close(); + + //TODO: Testing to ensure that incorrectly formated XML won't break this. + while (!xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "paramfile") + { + xml.readNext(); + while ((xml.name() != "paramfile") && !xml.atEnd()) + { + QString valuetype = ""; + if (xml.isStartElement() && (xml.name() == "vehicles" || xml.name() == "libraries")) //Enter into the vehicles loop + { + valuetype = xml.name().toString(); + xml.readNext(); + while ((xml.name() != valuetype) && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "parameters") //This is a parameter block + { + QString parametersname = ""; + if (xml.attributes().hasAttribute("name")) + { + parametersname = xml.attributes().value("name").toString(); + } + QVariantMap genset; + QVariantMap advset; + + QString setname = parametersname; + xml.readNext(); + int genarraycount = 0; + int advarraycount = 0; + while ((xml.name() != "parameters") && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "param") + { + QString humanname = xml.attributes().value("humanName").toString(); + QString name = xml.attributes().value("name").toString(); + QString tab= xml.attributes().value("user").toString(); + if (tab == "Advanced") + { + advset["title"] = parametersname; + } + else + { + genset["title"] = parametersname; + } + if (name.contains(":")) + { + name = name.split(":")[1]; + } + QString docs = xml.attributes().value("documentation").toString(); + paramTooltips[name] = name + " - " + docs; + + int type = -1; //Type of item + QMap fieldmap; + xml.readNext(); + while ((xml.name() != "param") && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "values") + { + type = 1; //1 is a combobox + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "TYPE"] = "COMBO"; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_DESCRIPTION"] = humanname; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_PARAMID"] = name; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COMPONENTID"] = 1; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "TYPE"] = "COMBO"; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_DESCRIPTION"] = humanname; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_PARAMID"] = name; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COMPONENTID"] = 1; + } + int paramcount = 0; + xml.readNext(); + while ((xml.name() != "values") && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "value") + { + + QString code = xml.attributes().value("code").toString(); + QString arg = xml.readElementText(); + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_TEXT"] = arg; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_VAL"] = code.toInt(); + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_TEXT"] = arg; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_VAL"] = code.toInt(); + } + paramcount++; + } + xml.readNext(); + } + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COUNT"] = paramcount; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COUNT"] = paramcount; + } + } + if (xml.isStartElement() && xml.name() == "field") + { + type = 2; //2 is a slider + QString fieldtype = xml.attributes().value("name").toString(); + QString text = xml.readElementText(); + fieldmap[fieldtype] = text; + } + xml.readNext(); + } + if (type == -1) + { + //Nothing inside! Assume it's a value, give it a default range. + type = 2; + QString fieldtype = "Range"; + QString text = "0 100"; //TODO: Determine a better way of figuring out default ranges. + fieldmap[fieldtype] = text; + } + if (type == 2) + { + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "TYPE"] = "SLIDER"; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_DESCRIPTION"] = humanname; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_PARAMID"] = name; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_COMPONENTID"] = 1; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "TYPE"] = "SLIDER"; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_DESCRIPTION"] = humanname; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_PARAMID"] = name; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_COMPONENTID"] = 1; + } + if (fieldmap.contains("Range")) + { + float min = 0; + float max = 0; + //Some range fields list "0-10" and some list "0 10". Handle both. + if (fieldmap["Range"].split(" ").size() > 1) + { + min = fieldmap["Range"].split(" ")[0].trimmed().toFloat(); + max = fieldmap["Range"].split(" ")[1].trimmed().toFloat(); + } + else if (fieldmap["Range"].split("-").size() > 1) + { + min = fieldmap["Range"].split("-")[0].trimmed().toFloat(); + max = fieldmap["Range"].split("-")[1].trimmed().toFloat(); + } + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_MIN"] = min; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_MAX"] = max; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_MIN"] = min; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_MAX"] = max; + } + } + } + if (tab == "Advanced") + { + advarraycount++; + advset["count"] = advarraycount; + } + else + { + genarraycount++; + genset["count"] = genarraycount; + } + } + xml.readNext(); + } + if (genarraycount > 0) + { + tool = new QGCToolWidget("", this); + tool->addUAS(mav); + tool->setTitle(parametersname); + tool->setObjectName(parametersname); + tool->setSettings(genset); + QList paramlist = tool->getParamList(); + for (int i=0;iinsert(paramlist[i],tool); + } + else if (parametersname == "ArduCopter") //MAV_TYPE_QUADROTOR "QUADROTOR + { + systemTypeToParamMap["QUADROTOR"]->insert(paramlist[i],tool); + } + else if (parametersname == "APMrover2") //MAV_TYPE_GROUND_ROVER GROUND_ROVER + { + systemTypeToParamMap["GROUND_ROVER"]->insert(paramlist[i],tool); + } + else + { + libParamToWidgetMap->insert(paramlist[i],tool); + } + } + + toolWidgets.append(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + if (valuetype == "vehicles") + { + ui->leftGeneralLayout->addWidget(box); + } + else if (valuetype == "libraries") + { + ui->rightGeneralLayout->addWidget(box); + } + box->hide(); + toolToBoxMap[tool] = box; + } + if (advarraycount > 0) + { + tool = new QGCToolWidget("", this); + tool->addUAS(mav); + tool->setTitle(parametersname); + tool->setObjectName(parametersname); + tool->setSettings(advset); + QList paramlist = tool->getParamList(); + for (int i=0;iinsert(paramlist[i],tool); + } + else if (parametersname == "ArduCopter") //MAV_TYPE_QUADROTOR "QUADROTOR + { + systemTypeToParamMap["QUADROTOR"]->insert(paramlist[i],tool); + } + else if (parametersname == "APMrover2") //MAV_TYPE_GROUND_ROVER GROUND_ROVER + { + systemTypeToParamMap["GROUND_ROVER"]->insert(paramlist[i],tool); + } + else + { + libParamToWidgetMap->insert(paramlist[i],tool); + } + } + + toolWidgets.append(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + if (valuetype == "vehicles") + { + ui->leftAdvancedLayout->addWidget(box); + } + else if (valuetype == "libraries") + { + ui->rightAdvancedLayout->addWidget(box); + } + box->hide(); + toolToBoxMap[tool] = box; + } + + + + + } + xml.readNext(); + } + + } + + xml.readNext(); + } + } + xml.readNext(); + } + if (mav) + { + mav->getParamManager()->setParamInfo(paramTooltips); + } + doneLoadingConfig = true; + mav->requestParameters(); //Config is finished, lets do a parameter request to ensure none are missed if someone else started requesting before we were finished. +} + void QGCVehicleConfig::setActiveUAS(UASInterface* active) { // Do nothing if system is the same or NULL @@ -181,65 +704,33 @@ void QGCVehicleConfig::setActiveUAS(UASInterface* active) connect(active, SIGNAL(parameterChanged(int,int,QString,QVariant)), this, SLOT(parameterChanged(int,int,QString,QVariant))); - mav->requestParameters(); - - QString defaultsDir = qApp->applicationDirPath() + "/files/" + mav->getAutopilotTypeName().toLower() + "/widgets/"; - - QGCToolWidget* tool; - - // Load calibration - tool = new QGCToolWidget("", this); - if (tool->loadSettings(defaultsDir + "px4_calibration.qgw", false)) + if (systemTypeToParamMap.contains(mav->getSystemTypeName())) { - toolWidgets.append(tool); - ui->sensorLayout->addWidget(tool); - } else { - delete tool; + paramToWidgetMap = systemTypeToParamMap[mav->getSystemTypeName()]; } - - // Load multirotor attitude pid - tool = new QGCToolWidget("", this); - if (tool->loadSettings(defaultsDir + "px4_mc_attitude_pid_params.qgw", false)) + else { - toolWidgets.append(tool); - ui->multiRotorAttitudeLayout->addWidget(tool); - } else { - delete tool; + //Indication that we have no meta data for this system type. + qDebug() << "No parameters defined for system type:" << mav->getSystemTypeName(); } - // Load multirotor position pid - tool = new QGCToolWidget("", this); - if (tool->loadSettings(defaultsDir + "px4_mc_position_pid_params.qgw", false)) + if (!paramTooltips.isEmpty()) { - toolWidgets.append(tool); - ui->multiRotorPositionLayout->addWidget(tool); - } else { - delete tool; + mav->getParamManager()->setParamInfo(paramTooltips); } - // Load fixed wing attitude pid - tool = new QGCToolWidget("", this); - if (tool->loadSettings(defaultsDir + "px4_fw_attitude_pid_params.qgw", false)) - { - toolWidgets.append(tool); - ui->fixedWingAttitudeLayout->addWidget(tool); - } else { - delete tool; - } + // mav->requestParameters(); + + QString defaultsDir = qApp->applicationDirPath() + "/files/" + mav->getAutopilotTypeName().toLower() + "/widgets/"; + qDebug() << "CALIBRATION!! System Type Name:" << mav->getSystemTypeName(); - // Load fixed wing position pid - tool = new QGCToolWidget("", this); - if (tool->loadSettings(defaultsDir + "px4_fw_position_pid_params.qgw", false)) - { - toolWidgets.append(tool); - ui->fixedWingPositionLayout->addWidget(tool); - } else { - delete tool; - } + + //Load configuration after 1ms. This allows it to go into the event loop, and prevents application hangups due to the + //amount of time it actually takes to load the configuration windows. + QTimer::singleShot(1,this,SLOT(loadConfig())); updateStatus(QString("Reading from system %1").arg(mav->getUASName())); } - void QGCVehicleConfig::resetCalibrationRC() { for (unsigned int i = 0; i < chanMax; ++i) @@ -459,6 +950,88 @@ void QGCVehicleConfig::parameterChanged(int uas, int component, QString paramete { Q_UNUSED(uas); Q_UNUSED(component); + if (!doneLoadingConfig) + { + //We do not want to attempt to generate any UI elements until loading of the config file is complete. + //We should re-request params later if needed, that is not implemented yet. + return; + } + + if (paramToWidgetMap->contains(parameterName)) + { + //Main group of parameters of the selected airframe + paramToWidgetMap->value(parameterName)->setParameterValue(uas,component,parameterName,value); + if (toolToBoxMap.contains(paramToWidgetMap->value(parameterName))) + { + toolToBoxMap[paramToWidgetMap->value(parameterName)]->show(); + } + else + { + qCritical() << "Widget with no box, possible memory corruption for param:" << parameterName; + } + } + else if (libParamToWidgetMap->contains(parameterName)) + { + //All the library parameters + libParamToWidgetMap->value(parameterName)->setParameterValue(uas,component,parameterName,value); + if (toolToBoxMap.contains(libParamToWidgetMap->value(parameterName))) + { + toolToBoxMap[libParamToWidgetMap->value(parameterName)]->show(); + } + else + { + qCritical() << "Widget with no box, possible memory corruption for param:" << parameterName; + } + } + else + { + //Param recieved that we have no metadata for. Search to see if it belongs in a + //group with some other params + bool found = false; + for (int i=0;iobjectName())) + { + //It should be grouped with this one, add it. + toolWidgets[i]->addParam(uas,component,parameterName,value); + libParamToWidgetMap->insert(parameterName,toolWidgets[i]); + found = true; + break; + } + } + if (!found) + { + //New param type, create a QGroupBox for it. + QGCToolWidget *tool = new QGCToolWidget("", this); + QString tooltitle = parameterName; + if (parameterName.split("_").size() > 1) + { + tooltitle = parameterName.split("_")[0] + "_"; + } + tool->setTitle(tooltitle); + tool->setObjectName(tooltitle); + //tool->setSettings(set); + tool->addParam(uas,component,parameterName,value); + libParamToWidgetMap->insert(parameterName,tool); + toolWidgets.append(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + + + //Make sure we have similar number of widgets on each side. + if (ui->leftAdvancedLayout->count() > ui->rightAdvancedLayout->count()) + { + ui->rightAdvancedLayout->addWidget(box); + } + else + { + ui->leftAdvancedLayout->addWidget(box); + } + toolToBoxMap[tool] = box; + } + } // Channel calibration values QRegExp minTpl("RC?_MIN"); diff --git a/src/ui/QGCVehicleConfig.h b/src/ui/QGCVehicleConfig.h index 9069776ffdc1e9258571f0e9c77f8b8863010e96..242c11b20233cda7c2d3523db943b266ace17feb 100644 --- a/src/ui/QGCVehicleConfig.h +++ b/src/ui/QGCVehicleConfig.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "QGCToolWidget.h" #include "UASInterface.h" @@ -30,7 +31,10 @@ public: public slots: /** Set the MAV currently being calibrated */ void setActiveUAS(UASInterface* active); - + /** Fallback function, automatically called by loadConfig() upon failure to find and xml file*/ + void loadQgcConfig(bool primary); + /** Load configuration from xml file */ + void loadConfig(); /** Start the RC calibration routine */ void startCalibrationRC(); /** Stop the RC calibration routine */ @@ -142,6 +146,7 @@ protected slots: void updateInvertedCheckboxes(int index); protected: + bool doneLoadingConfig; UASInterface* mav; ///< The current MAV static const unsigned int chanMax = 8; ///< Maximum number of channels unsigned int chanCount; ///< Actual channels @@ -169,6 +174,12 @@ protected: enum RC_MODE rc_mode; ///< Mode of the remote control, according to usual convention QList toolWidgets; ///< Configurable widgets bool calibrationEnabled; ///< calibration mode on / off + + QMap *paramToWidgetMap; ///< Holds the current active MAV's parameter widgets. + QMap *libParamToWidgetMap; ///< Holds the library parameter widgets + QMap*> systemTypeToParamMap; ///< Holds all loaded MAV specific parameter widgets, for every MAV. + QMap toolToBoxMap; ///< Easy method of figuring out which QGroupBox is tied to which ToolWidget. + QMap paramTooltips; ///< Tooltips for the ? button next to a parameter. private: Ui::QGCVehicleConfig *ui; diff --git a/src/ui/QGCVehicleConfig.ui b/src/ui/QGCVehicleConfig.ui index 9725d9a282712403910a1c2e3746fb0f07acfbd0..1ed13b206ed519eb80e5d7ad2b7db9a454e36548 100644 --- a/src/ui/QGCVehicleConfig.ui +++ b/src/ui/QGCVehicleConfig.ui @@ -6,8 +6,8 @@ 0 0 - 780 - 586 + 760 + 541 @@ -40,7 +40,7 @@ - 1 + 2 @@ -725,264 +725,271 @@ Sensor Calibration - - - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:18pt;">Sensor Calibration</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">The PX4FMU sensors can be calibrated with the buttons on the right. Gyroscope (GYRO) and Accelerometer (ACCEL) calibrations have to be performed with a static, unmoved system. The magnetometer calibration needs to be performed while moving the device.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt;">Magnetometer Calibration</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Carefully follow the instructions. Click on MAG to start the calibration. Watch the communication console for further instructions (Available through Main Menu -&gt; Tool Widgets -&gt; Communication Console). Do not calibrate the vehicle in vincinity of metal, e.g. from a table or chair. Start the calibration, leave the system unmoved on the table. Wait for the double beep. Next move the system in a figure eight, roll and pitch it strongly, rotate around all axes and perform the figure eight also upside-down. The calibration is finished after the triple beep.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt;">Accelerometer Calibration</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">Put the system on an absolutely level surface and press ACCEL, wait for the the triple beep. Do not move the system. If no flat surface is available, rather not calibrate the system.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt;">Gyroscope Calibration</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">The orientation is not important for this calibration, but do not move the system until the triple beep or the matching text message in the console.</span></p></body></html> - - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> + + + + + + + + + true + + + + + 0 + 0 + 354 + 448 + + + + + + + + + + + + + - Multirotor Control + General Config - - - 20 - - - - - Load Platform Defaults - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Load Platform Defaults + + + + - - - - Position - - - - 0 - - - - - true + + + + + + Configuration + + + + 0 - - - - 0 - 0 - 98 - 28 - - - - - 0 + + + + true - - - - - - - - - - - - - - Attitude - - - - 0 - - - - - true + + + + 0 + 0 + 354 + 404 + + + + + 0 + + + + + + + + + + + + + + + Configuration + + + + 0 - - - - 0 - 0 - 98 - 28 - - - - - 0 + + + + true - - - - - - - - - + + + + 0 + 0 + 354 + 404 + + + + + 0 + + + + + + + + + + + + - Fixed Wing Control + Advanced Config - - - 20 - - - - - Position - - - - 0 - - - - - true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Load Platform Defaults + + + + + + + + + + + Configuration + + + + 0 - - - - 0 - 0 - 98 - 28 - - - - - 0 + + + + true - - - - - - - - - - - - - - - - - Load Platform Defaults - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Attitude - - - - 0 - - - - - true + + + + 0 + 0 + 354 + 404 + + + + + 0 + + + + + + + + + + + + + + + Configuration + + + + 0 - - - - 0 - 0 - 98 - 28 - - - - - 0 + + + + true - - - - - - - - - + + + + 0 + 0 + 354 + 404 + + + + + 0 + + + + + + + + + + + + diff --git a/src/ui/designer/QGCComboBox.cc b/src/ui/designer/QGCComboBox.cc new file mode 100644 index 0000000000000000000000000000000000000000..c33d0f0d764d43a5d75df9547d3601e734128f03 --- /dev/null +++ b/src/ui/designer/QGCComboBox.cc @@ -0,0 +1,500 @@ +#include +#include +#include +#include +#include + +#include "QGCComboBox.h" +#include "ui_QGCComboBox.h" +#include "UASInterface.h" +#include "UASManager.h" + + +QGCComboBox::QGCComboBox(QWidget *parent) : + QGCToolWidgetItem("Combo", parent), + parameterName(""), + parameterValue(0.0f), + parameterScalingFactor(0.0), + parameterMin(0.0f), + parameterMax(0.0f), + component(0), + ui(new Ui::QGCComboBox) +{ + ui->setupUi(this); + uas = NULL; + + + ui->editInfoCheckBox->hide(); + ui->editDoneButton->hide(); + ui->editNameLabel->hide(); + ui->editRefreshParamsButton->hide(); + ui->editSelectParamComboBox->hide(); + ui->editSelectComponentComboBox->hide(); + ui->editStatusLabel->hide(); + ui->editLine1->hide(); + ui->editLine2->hide(); + ui->editAddItemButton->hide(); + ui->editRemoveItemButton->hide(); + ui->editItemValueSpinBox->hide(); + ui->editItemNameLabel->hide(); + ui->itemValueLabel->hide(); + ui->itemNameLabel->hide(); + ui->infoLabel->hide(); + ui->editOptionComboBox->setEnabled(false); + isDisabled = true; + //ui->editLine1->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); + // ui->editLine2->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); + connect(ui->editDoneButton, SIGNAL(clicked()), this, SLOT(endEditMode())); + connect(ui->editOptionComboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(comboBoxIndexChanged(QString))); + connect(ui->editAddItemButton,SIGNAL(clicked()),this,SLOT(addButtonClicked())); + connect(ui->editRemoveItemButton,SIGNAL(clicked()),this,SLOT(delButtonClicked())); + + // Sending actions + connect(ui->writeButton, SIGNAL(clicked()), this, SLOT(sendParameter())); + connect(ui->editSelectComponentComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectComponent(int))); + connect(ui->editSelectParamComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectParameter(int))); + //connect(ui->valueSlider, SIGNAL(valueChanged(int)), this, SLOT(setSliderValue(int))); + //connect(ui->doubleValueSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setParamValue(double))); + //connect(ui->intValueSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setParamValue(int))); + connect(ui->editNameLabel, SIGNAL(textChanged(QString)), ui->nameLabel, SLOT(setText(QString))); + connect(ui->readButton, SIGNAL(clicked()), this, SLOT(requestParameter())); + connect(ui->editRefreshParamsButton, SIGNAL(clicked()), this, SLOT(refreshParamList())); + connect(ui->editInfoCheckBox, SIGNAL(clicked(bool)), this, SLOT(showInfo(bool))); + // connect to self + connect(ui->infoLabel, SIGNAL(released()), this, SLOT(showTooltip())); + // Set the current UAS if present + + connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setActiveUAS(UASInterface*))); + +} + +QGCComboBox::~QGCComboBox() +{ + delete ui; +} + +void QGCComboBox::showTooltip() +{ + QWidget* sender = dynamic_cast(QObject::sender()); + + if (sender) + { + QPoint point = mapToGlobal(ui->infoLabel->pos()); + QToolTip::showText(point, sender->toolTip()); + } +} + +void QGCComboBox::refreshParamList() +{ + ui->editSelectParamComboBox->setEnabled(true); + ui->editSelectComponentComboBox->setEnabled(true); + if (uas) + { + uas->getParamManager()->requestParameterList(); + ui->editStatusLabel->setText(tr("Parameter list updating..")); + } +} + +void QGCComboBox::setActiveUAS(UASInterface* activeUas) +{ + if (activeUas) + { + if (uas) + { + disconnect(uas, SIGNAL(parameterChanged(int,int,int,int,QString,QVariant)), this, SLOT(setParameterValue(int,int,int,int,QString,QVariant))); + } + + // Connect buttons and signals + connect(activeUas, SIGNAL(parameterChanged(int,int,int,int,QString,QVariant)), this, SLOT(setParameterValue(int,int,int,int,QString,QVariant)), Qt::UniqueConnection); + uas = activeUas; + // Update current param value + //requestParameter(); + // Set param info + QString text = uas->getParamManager()->getParamInfo(parameterName); + if (text != "") + { + ui->infoLabel->setToolTip(text); + ui->infoLabel->show(); + } + // Force-uncheck and hide label if no description is available + if (ui->editInfoCheckBox->isChecked()) + { + showInfo((text.length() > 0)); + } + } +} + +void QGCComboBox::requestParameter() +{ + if (!parameterName.isEmpty() && uas) + { + uas->getParamManager()->requestParameterUpdate(this->component, this->parameterName); + } +} + +void QGCComboBox::showInfo(bool enable) +{ + ui->editInfoCheckBox->setChecked(enable); + ui->infoLabel->setVisible(enable); +} + +void QGCComboBox::selectComponent(int componentIndex) +{ + this->component = ui->editSelectComponentComboBox->itemData(componentIndex).toInt(); +} + +void QGCComboBox::selectParameter(int paramIndex) +{ + // Set name + parameterName = ui->editSelectParamComboBox->itemText(paramIndex); + + // Update min and max values if available + if (uas) + { + if (uas->getParamManager()) + { + // Current value + uas->getParamManager()->requestParameterUpdate(component, parameterName); + + // Minimum + if (uas->getParamManager()->isParamMinKnown(parameterName)) + { + parameterMin = uas->getParamManager()->getParamMin(parameterName); + } + + // Maximum + if (uas->getParamManager()->isParamMaxKnown(parameterName)) + { + parameterMax = uas->getParamManager()->getParamMax(parameterName); + } + + // Description + QString text = uas->getParamManager()->getParamInfo(parameterName); + //ui->infoLabel->setText(text); + showInfo(!(text.length() > 0)); + } + } +} + +void QGCComboBox::startEditMode() +{ + ui->nameLabel->hide(); + ui->writeButton->hide(); + ui->readButton->hide(); + + ui->editInfoCheckBox->show(); + ui->editDoneButton->show(); + ui->editNameLabel->show(); + ui->editRefreshParamsButton->show(); + ui->editSelectParamComboBox->show(); + ui->editSelectComponentComboBox->show(); + ui->editStatusLabel->show(); + ui->writeButton->hide(); + ui->readButton->hide(); + ui->editLine1->show(); + ui->editLine2->show(); + ui->editAddItemButton->show(); + ui->editRemoveItemButton->show(); + ui->editItemValueSpinBox->show(); + ui->editItemNameLabel->show(); + ui->itemValueLabel->show(); + ui->itemNameLabel->show(); + if (isDisabled) + { + ui->editOptionComboBox->setEnabled(true); + } + isInEditMode = true; +} + +void QGCComboBox::endEditMode() +{ + // Store component id + selectComponent(ui->editSelectComponentComboBox->currentIndex()); + + // Store parameter name and id + selectParameter(ui->editSelectParamComboBox->currentIndex()); + + // Min/max + + ui->editInfoCheckBox->hide(); + ui->editDoneButton->hide(); + ui->editNameLabel->hide(); + ui->editRefreshParamsButton->hide(); + ui->editSelectParamComboBox->hide(); + ui->editSelectComponentComboBox->hide(); + ui->editStatusLabel->hide(); + ui->editLine1->hide(); + ui->editLine2->hide(); + ui->writeButton->show(); + ui->readButton->show(); + ui->editAddItemButton->hide(); + ui->editRemoveItemButton->hide(); + ui->editItemValueSpinBox->hide(); + ui->editItemNameLabel->hide(); + ui->itemValueLabel->hide(); + ui->itemNameLabel->hide(); + ui->nameLabel->show(); + if (isDisabled) + { + ui->editOptionComboBox->setEnabled(false); + } + isInEditMode = false; + emit editingFinished(); +} + +void QGCComboBox::sendParameter() +{ + if (uas) + { + // Set value, param manager handles retransmission + if (uas->getParamManager()) + { + qDebug() << "Sending param:" << parameterName << "to component" << component << "with a value of" << parameterValue; + uas->getParamManager()->setParameter(component, parameterName, parameterValue); + } + else + { + qDebug() << "UAS HAS NO PARAM MANAGER, DOING NOTHING"; + } + } + else + { + qDebug() << __FILE__ << __LINE__ << "NO UAS SET, DOING NOTHING"; + } +} + + +/** + * @brief uas Unmanned system sending the parameter + * @brief component UAS component sending the parameter + * @brief parameterName Key/name of the parameter + * @brief value Value of the parameter + */ +void QGCComboBox::setParameterValue(int uas, int component, int paramCount, int paramIndex, QString parameterName, QVariant value) +{ + Q_UNUSED(paramCount); + // Check if this component and parameter are part of the list + bool found = false; + for (int i = 0; i< ui->editSelectComponentComboBox->count(); ++i) + { + if (component == ui->editSelectComponentComboBox->itemData(i).toInt()) + { + found = true; + } + } + + if (!found) + { + ui->editSelectComponentComboBox->addItem(tr("Component #%1").arg(component), component); + } + + // Parameter checking + found = false; + for (int i = 0; i < ui->editSelectParamComboBox->count(); ++i) + { + if (parameterName == ui->editSelectParamComboBox->itemText(i)) + { + found = true; + } + } + + if (!found) + { + ui->editSelectParamComboBox->addItem(parameterName, paramIndex); + } + + Q_UNUSED(uas); + + //comboBoxTextToValMap[ui->editItemNameLabel->text()] = ui->editItemValueSpinBox->value(); + if (visibleParam != "") + { + if (parameterName == visibleParam) + { + if (visibleVal == value.toInt()) + { + this->uas->requestParameter(this->component,this->parameterName); + visibleEnabled = true; + this->show(); + } + else + { + //Disable the component here. + //ui->valueSlider->setEnabled(false); + //ui->intValueSpinBox->setEnabled(false); + //ui->doubleValueSpinBox->setEnabled(false); + visibleEnabled = false; + this->hide(); + } + } + } + if (component == this->component && parameterName == this->parameterName) + { + if (!visibleEnabled) + { + return; + } + ui->editOptionComboBox->setEnabled(true); + isDisabled = false; + for (int i=0;ieditOptionComboBox->count();i++) + { + if (comboBoxTextToValMap[ui->editOptionComboBox->itemText(i)] == value.toInt()) + { + ui->editOptionComboBox->setCurrentIndex(i); + break; + } + } + } + + if (paramIndex == paramCount - 1) + { + ui->editStatusLabel->setText(tr("Complete parameter list received.")); + } +} + +void QGCComboBox::changeEvent(QEvent *e) +{ + QWidget::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + + +void QGCComboBox::writeSettings(QSettings& settings) +{ + settings.setValue("TYPE", "COMBOBOX"); + settings.setValue("QGC_PARAM_COMBOBOX_DESCRIPTION", ui->nameLabel->text()); + //settings.setValue("QGC_PARAM_COMBOBOX_BUTTONTEXT", ui->actionButton->text()); + settings.setValue("QGC_PARAM_COMBOBOX_PARAMID", parameterName); + settings.setValue("QGC_PARAM_COMBOBOX_COMPONENTID", component); + settings.setValue("QGC_PARAM_COMBOBOX_DISPLAY_INFO", ui->editInfoCheckBox->isChecked()); + + settings.setValue("QGC_PARAM_COMBOBOX_COUNT", ui->editOptionComboBox->count()); + for (int i=0;ieditOptionComboBox->count();i++) + { + settings.setValue("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT",ui->editOptionComboBox->itemText(i)); + settings.setValue("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL",comboBoxTextToValMap[ui->editOptionComboBox->itemText(i)]); + } + settings.sync(); +} +void QGCComboBox::readSettings(const QString& pre,const QVariantMap& settings) +{ + parameterName = settings.value(pre + "QGC_PARAM_COMBOBOX_PARAMID").toString(); + component = settings.value(pre + "QGC_PARAM_COMBOBOX_COMPONENTID").toInt(); + ui->nameLabel->setText(settings.value(pre + "QGC_PARAM_COMBOBOX_DESCRIPTION").toString()); + ui->editNameLabel->setText(settings.value(pre + "QGC_PARAM_COMBOBOX_DESCRIPTION").toString()); + //settings.setValue("QGC_PARAM_SLIDER_BUTTONTEXT", ui->actionButton->text()); + ui->editSelectParamComboBox->addItem(settings.value(pre + "QGC_PARAM_COMBOBOX_PARAMID").toString()); + ui->editSelectParamComboBox->setCurrentIndex(ui->editSelectParamComboBox->count()-1); + ui->editSelectComponentComboBox->addItem(tr("Component #%1").arg(settings.value(pre + "QGC_PARAM_COMBOBOX_COMPONENTID").toInt()), settings.value(pre + "QGC_PARAM_COMBOBOX_COMPONENTID").toInt()); + showInfo(settings.value(pre + "QGC_PARAM_COMBOBOX_DISPLAY_INFO", true).toBool()); + ui->editSelectParamComboBox->setEnabled(true); + ui->editSelectComponentComboBox->setEnabled(true); + visibleParam = settings.value(pre+"QGC_PARAM_COMBOBOX_VISIBLE_PARAM","").toString(); + visibleVal = settings.value(pre+"QGC_PARAM_COMBOBOX_VISIBLE_VAL",0).toInt(); + QString type = settings.value(pre + "QGC_PARAM_COMBOBOX_TYPE","PARAM").toString(); + int num = settings.value(pre + "QGC_PARAM_COMBOBOX_COUNT").toInt(); + for (int i=0;ieditOptionComboBox->addItem(settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString()); + //qDebug() << "Adding val:" << settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString() << settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt(); + comboBoxTextToValMap[settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString()] = settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt(); + if (type == "INDIVIDUAL") + { + comboBoxTextToParamMap[settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString()] = settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_PARAM").toString(); + ui->editOptionComboBox->setEnabled(true); + } + } + + setActiveUAS(UASManager::instance()->getActiveUAS()); + + // Get param value after settings have been loaded + // requestParameter(); +} +void QGCComboBox::readSettings(const QSettings& settings) +{ + QVariantMap map; + foreach (QString key,settings.allKeys()) + { + map[key] = settings.value(key); + } + + readSettings("",map); + + //parameterName = settings.value("QGC_PARAM_COMBOBOX_PARAMID").toString(); + //component = settings.value("QGC_PARAM_COMBOBOX_COMPONENTID").toInt(); + //ui->nameLabel->setText(settings.value("QGC_PARAM_COMBOBOX_DESCRIPTION").toString()); + //ui->editNameLabel->setText(settings.value("QGC_PARAM_COMBOBOX_DESCRIPTION").toString()); + //ui->editSelectParamComboBox->addItem(settings.value("QGC_PARAM_COMBOBOX_PARAMID").toString()); + //ui->editSelectParamComboBox->setCurrentIndex(ui->editSelectParamComboBox->count()-1); + //ui->editSelectComponentComboBox->addItem(tr("Component #%1").arg(settings.value("QGC_PARAM_COMBOBOX_COMPONENTID").toInt()), settings.value("QGC_PARAM_COMBOBOX_COMPONENTID").toInt()); + //showInfo(settings.value("QGC_PARAM_COMBOBOX_DISPLAY_INFO", true).toBool()); + //ui->editSelectParamComboBox->setEnabled(true); + //ui->editSelectComponentComboBox->setEnabled(true); + + + /*int num = settings.value("QGC_PARAM_COMBOBOX_COUNT").toInt(); + for (int i=0;ieditOptionComboBox->addItem(settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString()); + qDebug() << "Adding val:" << settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i)).toString() << settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt(); + comboBoxTextToValMap[settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString()] = settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt(); + }*/ + + //setActiveUAS(UASManager::instance()->getActiveUAS());*/ + + // Get param value after settings have been loaded + //requestParameter(); +} +void QGCComboBox::addButtonClicked() +{ + ui->editOptionComboBox->addItem(ui->editItemNameLabel->text()); + comboBoxTextToValMap[ui->editItemNameLabel->text()] = ui->editItemValueSpinBox->value(); +} + +void QGCComboBox::delButtonClicked() +{ + int index = ui->editOptionComboBox->currentIndex(); + comboBoxTextToValMap.remove(ui->editOptionComboBox->currentText()); + ui->editOptionComboBox->removeItem(index); +} +void QGCComboBox::comboBoxIndexChanged(QString val) +{ + ui->imageLabel->setPixmap(comboBoxIndexToPixmap[ui->editOptionComboBox->currentIndex()]); + if (comboBoxTextToParamMap.contains(ui->editOptionComboBox->currentText())) + { + parameterName = comboBoxTextToParamMap.value(ui->editOptionComboBox->currentText()); + } + switch (parameterValue.type()) + { + case QVariant::Char: + parameterValue = QVariant(QChar((unsigned char)comboBoxTextToValMap[val])); + break; + case QVariant::Int: + parameterValue = (int)comboBoxTextToValMap[val]; + break; + case QVariant::UInt: + parameterValue = (unsigned int)comboBoxTextToValMap[val]; + break; + case QMetaType::Float: + parameterValue =(float)comboBoxTextToValMap[val]; + break; + default: + qCritical() << "ERROR: NO VALID PARAM TYPE"; + return; + } +} diff --git a/src/ui/designer/QGCComboBox.h b/src/ui/designer/QGCComboBox.h new file mode 100644 index 0000000000000000000000000000000000000000..4c5491580e5c7da5af777354a7a4e03bb675bdb8 --- /dev/null +++ b/src/ui/designer/QGCComboBox.h @@ -0,0 +1,72 @@ +#ifndef QGCCOMBOBOX_H +#define QGCCOMBOBOX_H + +#include +#include +#include + +#include "QGCToolWidgetItem.h" + +namespace Ui +{ +class QGCComboBox; +} + +class QGCComboBox : public QGCToolWidgetItem +{ + Q_OBJECT + +public: + explicit QGCComboBox(QWidget *parent = 0); + ~QGCComboBox(); + +public slots: + void startEditMode(); + void endEditMode(); + /** @brief Send the parameter to the MAV */ + void sendParameter(); + /** @brief Update the UI with the new parameter value */ + void setParameterValue(int uas, int component, int paramCount, int paramIndex, QString parameterName, const QVariant value); + void writeSettings(QSettings& settings); + void readSettings(const QString& pre,const QVariantMap& settings); + void readSettings(const QSettings& settings); + void refreshParamList(); + void setActiveUAS(UASInterface *uas); + void selectComponent(int componentIndex); + void selectParameter(int paramIndex); + /** @brief Show descriptive text next to slider */ + void showInfo(bool enable); + /** @brief Show tool tip of calling element */ + void showTooltip(); + +protected slots: + /** @brief Request the parameter of this widget from the MAV */ + void requestParameter(); + /** @brief Button click to add a new item to the combobox */ + void addButtonClicked(); + /** @brief Button click to remove the currently selected item from the combobox */ + void delButtonClicked(); + /** @brief Updates current parameter based on new combobox value */ + void comboBoxIndexChanged(QString val); +protected: + bool visibleEnabled; + QString visibleParam; + int visibleVal; + QMap comboBoxTextToParamMap; + QMap comboBoxIndexToPixmap; + QMap comboBoxTextToValMap; ///< Comboboxtext/parameter value map + QString parameterName; ///< Key/Name of the parameter + QVariant parameterValue; ///< Value of the parameter + double parameterScalingFactor; ///< Factor to scale the parameter between slider and true value + float parameterMin; + bool isDisabled; + float parameterMax; + int component; ///< ID of the MAV component to address + //double scaledInt; + void changeEvent(QEvent *e); + +private: + Ui::QGCComboBox *ui; +}; + +#endif // QGCCOMBOBOX_H diff --git a/src/ui/designer/QGCComboBox.ui b/src/ui/designer/QGCComboBox.ui new file mode 100644 index 0000000000000000000000000000000000000000..f9d4db90d2d24c1ed65f64f9e8d349675b48f363 --- /dev/null +++ b/src/ui/designer/QGCComboBox.ui @@ -0,0 +1,302 @@ + + + QGCComboBox + + + + 0 + 0 + 789 + 244 + + + + Form + + + Qt::LeftToRight + + + + 6 + + + 3 + + + 6 + + + 3 + + + 6 + + + 12 + + + + + + 60 + 0 + + + + Name + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::LeftToRight + + + ? + + + QToolButton::DelayedPopup + + + Qt::ToolButtonIconOnly + + + false + + + Qt::NoArrow + + + + + + + <Parameter Name / Label> + + + + + + + + + + + + + + + + Name + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + false + + + Select component + + + Select component + + + + + + + Add Item + + + + + + + Delete Item + + + + + + + Value + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + false + + + Select parameter + + + Select parameter + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + Read the current parameter value on the system + + + Read the current parameter value on the system + + + Get + + + + + + + Done + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Transmit the current slider value to the system + + + Transmit the current slider value to the system + + + Set + + + + + + + Show Info + + + true + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + Please click first on refresh to update selection menus.. + + + + + + + true + + + Refresh + + + + + + + + 16777215 + 150 + + + + + + + true + + + + + + + + diff --git a/src/ui/designer/QGCCommandButton.cc b/src/ui/designer/QGCCommandButton.cc index 86ae0fd84f40be683b7a0eecd918d273a97e0a54..a237b832b92366c2033004b4aac13ae2955539c6 100644 --- a/src/ui/designer/QGCCommandButton.cc +++ b/src/ui/designer/QGCCommandButton.cc @@ -116,7 +116,10 @@ void QGCCommandButton::sendCommand() float param6 = ui->editParam6SpinBox->value(); float param7 = ui->editParam7SpinBox->value(); int component = ui->editComponentSpinBox->value(); - + if (showlabelname != "") + { + emit showLabel(showlabelname,index); + } QGCToolWidgetItem::uas->executeCommand(command, confirm, param1, param2, param3, param4, param5, param6, param7, component); //qDebug() << __FILE__ << __LINE__ << "SENDING COMMAND" << index; } @@ -241,7 +244,58 @@ void QGCCommandButton::writeSettings(QSettings& settings) settings.setValue("QGC_COMMAND_BUTTON_PARAM7", ui->editParam7SpinBox->value()); settings.sync(); } +void QGCCommandButton::readSettings(const QString& pre,const QVariantMap& settings) +{ + ui->editButtonName->setText(settings.value(pre + "QGC_COMMAND_BUTTON_BUTTONTEXT", "UNKNOWN").toString()); + ui->editCommandComboBox->setCurrentIndex(settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt()); + ui->commandButton->setText(settings.value(pre + "QGC_COMMAND_BUTTON_BUTTONTEXT", "UNKNOWN").toString()); + + int commandId = settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt(); + + ui->editParam1SpinBox->setValue(settings.value(pre + "QGC_COMMAND_BUTTON_PARAM1", 0.0).toDouble()); + ui->editParam2SpinBox->setValue(settings.value(pre + "QGC_COMMAND_BUTTON_PARAM2", 0.0).toDouble()); + ui->editParam3SpinBox->setValue(settings.value(pre + "QGC_COMMAND_BUTTON_PARAM3", 0.0).toDouble()); + ui->editParam4SpinBox->setValue(settings.value(pre + "QGC_COMMAND_BUTTON_PARAM4", 0.0).toDouble()); + ui->editParam5SpinBox->setValue(settings.value(pre + "QGC_COMMAND_BUTTON_PARAM5", 0.0).toDouble()); + ui->editParam6SpinBox->setValue(settings.value(pre + "QGC_COMMAND_BUTTON_PARAM6", 0.0).toDouble()); + ui->editParam7SpinBox->setValue(settings.value(pre + "QGC_COMMAND_BUTTON_PARAM7", 0.0).toDouble()); + + ui->editCommandComboBox->setCurrentIndex(0); + + // Find combobox entry for this data + for (int i = 0; i < ui->editCommandComboBox->count(); ++i) + { + if (commandId == ui->editCommandComboBox->itemData(i).toInt()) + { + ui->editCommandComboBox->setCurrentIndex(i); + } + } + + ui->editParamsVisibleCheckBox->setChecked(settings.value(pre + "QGC_COMMAND_BUTTON_PARAMS_VISIBLE").toBool()); + if (ui->editParamsVisibleCheckBox->isChecked()) + { + ui->editParam1SpinBox->show(); + ui->editParam2SpinBox->show(); + ui->editParam3SpinBox->show(); + ui->editParam4SpinBox->show(); + ui->editParam5SpinBox->show(); + ui->editParam6SpinBox->show(); + ui->editParam7SpinBox->show(); + } + else + { + ui->editParam1SpinBox->hide(); + ui->editParam2SpinBox->hide(); + ui->editParam3SpinBox->hide(); + ui->editParam4SpinBox->hide(); + ui->editParam5SpinBox->hide(); + ui->editParam6SpinBox->hide(); + ui->editParam7SpinBox->hide(); + } + ui->editNameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); + ui->nameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); +} void QGCCommandButton::readSettings(const QSettings& settings) { ui->editButtonName->setText(settings.value("QGC_COMMAND_BUTTON_BUTTONTEXT", "UNKNOWN").toString()); @@ -258,6 +312,8 @@ void QGCCommandButton::readSettings(const QSettings& settings) ui->editParam6SpinBox->setValue(settings.value("QGC_COMMAND_BUTTON_PARAM6", 0.0).toDouble()); ui->editParam7SpinBox->setValue(settings.value("QGC_COMMAND_BUTTON_PARAM7", 0.0).toDouble()); + showlabelname = settings.value("QGC_COMMAND_BUTTON_LABEL","").toString(); + ui->editCommandComboBox->setCurrentIndex(0); // Find combobox entry for this data diff --git a/src/ui/designer/QGCCommandButton.h b/src/ui/designer/QGCCommandButton.h index f7d759ec6c2b445b258fcad4c82f7c640a56babb..0073bae5f1678039b88145a6456c2d97cf38c824 100644 --- a/src/ui/designer/QGCCommandButton.h +++ b/src/ui/designer/QGCCommandButton.h @@ -25,8 +25,11 @@ public slots: void endEditMode(); void writeSettings(QSettings& settings); void readSettings(const QSettings& settings); - + void readSettings(const QString& pre,const QVariantMap& settings); +signals: + void showLabel(QString name, int num); private: + QString showlabelname; Ui::QGCCommandButton *ui; UASInterface* uas; }; diff --git a/src/ui/designer/QGCParamSlider.cc b/src/ui/designer/QGCParamSlider.cc index 3970e1562b980382e973e4bff2d3c1fa563434b0..857a8e1837e5118e4534b792d552362847c4a28a 100644 --- a/src/ui/designer/QGCParamSlider.cc +++ b/src/ui/designer/QGCParamSlider.cc @@ -20,8 +20,13 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) : component(0), ui(new Ui::QGCParamSlider) { + valueModLock = false; + visibleEnabled = true; + valueModLockParam = false; ui->setupUi(this); ui->intValueSpinBox->hide(); + ui->valueSlider->setEnabled(false); + ui->doubleValueSpinBox->setEnabled(false); uas = NULL; scaledInt = ui->valueSlider->maximum() - ui->valueSlider->minimum(); @@ -37,9 +42,10 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) : ui->editMaxSpinBox->hide(); ui->editLine1->hide(); ui->editLine2->hide(); + ui->infoLabel->hide(); - ui->editLine1->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); - ui->editLine2->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); + //ui->editLine1->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); + //ui->editLine2->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); connect(ui->editDoneButton, SIGNAL(clicked()), this, SLOT(endEditMode())); @@ -71,7 +77,7 @@ void QGCParamSlider::showTooltip() if (sender) { - QPoint point = mapToGlobal(pos()); + QPoint point = mapToGlobal(ui->infoLabel->pos()); QToolTip::showText(point, sender->toolTip()); } } @@ -100,10 +106,14 @@ void QGCParamSlider::setActiveUAS(UASInterface* activeUas) connect(activeUas, SIGNAL(parameterChanged(int,int,int,int,QString,QVariant)), this, SLOT(setParameterValue(int,int,int,int,QString,QVariant)), Qt::UniqueConnection); uas = activeUas; // Update current param value - requestParameter(); + //requestParameter(); // Set param info QString text = uas->getParamManager()->getParamInfo(parameterName); - ui->infoLabel->setToolTip(text); + if (text != "") + { + ui->infoLabel->setToolTip(text); + ui->infoLabel->show(); + } // Force-uncheck and hide label if no description is available if (ui->editInfoCheckBox->isChecked()) { @@ -129,13 +139,33 @@ void QGCParamSlider::showInfo(bool enable) void QGCParamSlider::setParamValue(double value) { parameterValue = (float)value; - ui->valueSlider->setValue(floatToScaledInt(value)); + //disconnect(ui->valueSlider,SIGNAL(valueChanged(int))); + if (!valueModLock && !valueModLockParam) + { + valueModLock = true; + ui->valueSlider->setValue(floatToScaledInt(value)); + } + else + { + valueModLock = false; + } + //connect(ui->valueSlider, SIGNAL(valueChanged(int)), this, SLOT(setSliderValue(int))); } void QGCParamSlider::setParamValue(int value) { parameterValue = value; - ui->valueSlider->setValue(floatToScaledInt(value)); + // disconnect(ui->valueSlider,SIGNAL(valueChanged(int))); + if (!valueModLock && !valueModLockParam) + { + valueModLock = true; + ui->valueSlider->setValue(floatToScaledInt(value)); + } + else + { + valueModLock = false; + } + //connect(ui->valueSlider, SIGNAL(valueChanged(int)), this, SLOT(setSliderValue(int))); } void QGCParamSlider::selectComponent(int componentIndex) @@ -171,9 +201,10 @@ void QGCParamSlider::selectParameter(int paramIndex) } // Description - QString text = uas->getParamManager()->getParamInfo(parameterName); - ui->infoLabel->setText(text); - showInfo(!(text.length() > 0)); + //QString text = uas->getParamManager()->getParamInfo(parameterName); + //ui->infoLabel->setText(text); + + //showInfo(!(text.length() > 0)); } } } @@ -231,6 +262,9 @@ void QGCParamSlider::endEditMode() ui->valueSlider->show(); switch (parameterValue.type()) { + case QVariant::Char: + ui->intValueSpinBox->show(); + break; case QVariant::Int: ui->intValueSpinBox->show(); break; @@ -271,23 +305,36 @@ void QGCParamSlider::sendParameter() void QGCParamSlider::setSliderValue(int sliderValue) { - switch (parameterValue.type()) + if (!valueModLock && !valueModLockParam) { - case QVariant::Int: - parameterValue = (int)scaledIntToFloat(sliderValue); - ui->intValueSpinBox->setValue(parameterValue.toInt()); - break; - case QVariant::UInt: - parameterValue = (unsigned int)scaledIntToFloat(sliderValue); - ui->intValueSpinBox->setValue(parameterValue.toUInt()); - break; - case QMetaType::Float: - parameterValue = scaledIntToFloat(sliderValue); - ui->doubleValueSpinBox->setValue(parameterValue.toFloat()); - break; - default: - qCritical() << "ERROR: NO VALID PARAM TYPE"; - return; + valueModLock = true; + switch (parameterValue.type()) + { + case QVariant::Char: + parameterValue = QVariant(QChar((unsigned char)scaledIntToFloat(sliderValue))); + ui->intValueSpinBox->setValue(parameterValue.toInt()); + break; + case QVariant::Int: + parameterValue = (int)scaledIntToFloat(sliderValue); + ui->intValueSpinBox->setValue(parameterValue.toInt()); + break; + case QVariant::UInt: + parameterValue = (unsigned int)scaledIntToFloat(sliderValue); + ui->intValueSpinBox->setValue(parameterValue.toUInt()); + break; + case QMetaType::Float: + parameterValue = scaledIntToFloat(sliderValue); + ui->doubleValueSpinBox->setValue(parameterValue.toFloat()); + break; + default: + qCritical() << "ERROR: NO VALID PARAM TYPE"; + valueModLock = false; + return; + } + } + else + { + valueModLock = false; } } @@ -300,6 +347,10 @@ void QGCParamSlider::setSliderValue(int sliderValue) void QGCParamSlider::setParameterValue(int uas, int component, int paramCount, int paramIndex, QString parameterName, QVariant value) { Q_UNUSED(paramCount); + if (ui->nameLabel->text() == "Name") + { + ui->nameLabel->setText(parameterName); + } // Check if this component and parameter are part of the list bool found = false; for (int i = 0; i< ui->editSelectComponentComboBox->count(); ++i) @@ -330,34 +381,106 @@ void QGCParamSlider::setParameterValue(int uas, int component, int paramCount, i ui->editSelectParamComboBox->addItem(parameterName, paramIndex); } + if (this->parameterName == "RC5_MIN") + { + int stopper = 1; + } + if (parameterName == "RC5_MIN") + { + int stpoper = 1; + } + if (visibleParam != "") + { + if (parameterName == visibleParam) + { + if (visibleVal == value.toInt()) + { + this->uas->requestParameter(this->component,this->parameterName); + visibleEnabled = true; + this->show(); + } + else + { + //Disable the component here. + ui->valueSlider->setEnabled(false); + ui->intValueSpinBox->setEnabled(false); + ui->doubleValueSpinBox->setEnabled(false); + visibleEnabled = false; + this->hide(); + } + } + } Q_UNUSED(uas); if (component == this->component && parameterName == this->parameterName) { + if (!visibleEnabled) + { + return; + } parameterValue = value; + ui->valueSlider->setEnabled(true); + valueModLockParam = true; switch (value.type()) { + case QVariant::Char: + ui->intValueSpinBox->show(); + ui->intValueSpinBox->setEnabled(true); + ui->doubleValueSpinBox->hide(); + ui->intValueSpinBox->setValue(value.toUInt()); + ui->intValueSpinBox->setMinimum(-ui->intValueSpinBox->maximum()); + ui->valueSlider->setValue(floatToScaledInt(value.toUInt())); + if (parameterMax == 0 && parameterMin == 0) + { + ui->editMaxSpinBox->setValue(255); + ui->editMinSpinBox->setValue(0); + } + break; case QVariant::Int: ui->intValueSpinBox->show(); + ui->intValueSpinBox->setEnabled(true); ui->doubleValueSpinBox->hide(); - ui->intValueSpinBox->setValue(value.toDouble()); + ui->intValueSpinBox->setValue(value.toInt()); + ui->valueSlider->setValue(floatToScaledInt(value.toInt())); ui->intValueSpinBox->setMinimum(-ui->intValueSpinBox->maximum()); + if (parameterMax == 0 && parameterMin == 0) + { + ui->editMaxSpinBox->setValue(65535); + ui->editMinSpinBox->setValue(0); + } break; case QVariant::UInt: ui->intValueSpinBox->show(); + ui->intValueSpinBox->setEnabled(true); ui->doubleValueSpinBox->hide(); - ui->intValueSpinBox->setValue(value.toDouble()); + ui->intValueSpinBox->setValue(value.toUInt()); + ui->valueSlider->setValue(floatToScaledInt(value.toUInt())); ui->intValueSpinBox->setMinimum(0); + if (parameterMax == 0 && parameterMin == 0) + { + ui->editMaxSpinBox->setValue(65535); + ui->editMinSpinBox->setValue(0); + } break; case QMetaType::Float: - ui->doubleValueSpinBox->setValue(value.toDouble()); + ui->doubleValueSpinBox->setValue(value.toFloat()); ui->doubleValueSpinBox->show(); + ui->doubleValueSpinBox->setEnabled(true); ui->intValueSpinBox->hide(); + ui->valueSlider->setValue(floatToScaledInt(value.toFloat())); + if (parameterMax == 0 && parameterMin == 0) + { + ui->editMaxSpinBox->setValue(10000); + ui->editMinSpinBox->setValue(0); + } break; default: qCritical() << "ERROR: NO VALID PARAM TYPE"; + valueModLockParam = false; return; } - ui->valueSlider->setValue(floatToScaledInt(value.toDouble())); + valueModLockParam = false; + parameterMax = ui->editMaxSpinBox->value(); + parameterMin = ui->editMinSpinBox->value(); } if (paramIndex == paramCount - 1) @@ -404,9 +527,44 @@ void QGCParamSlider::writeSettings(QSettings& settings) settings.setValue("QGC_PARAM_SLIDER_DISPLAY_INFO", ui->editInfoCheckBox->isChecked()); settings.sync(); } +void QGCParamSlider::readSettings(const QString& pre,const QVariantMap& settings) +{ + parameterName = settings.value(pre + "QGC_PARAM_SLIDER_PARAMID").toString(); + component = settings.value(pre + "QGC_PARAM_SLIDER_COMPONENTID").toInt(); + ui->nameLabel->setText(settings.value(pre + "QGC_PARAM_SLIDER_DESCRIPTION").toString()); + ui->editNameLabel->setText(settings.value(pre + "QGC_PARAM_SLIDER_DESCRIPTION").toString()); + //settings.setValue("QGC_PARAM_SLIDER_BUTTONTEXT", ui->actionButton->text()); + ui->editSelectParamComboBox->addItem(settings.value(pre + "QGC_PARAM_SLIDER_PARAMID").toString()); + ui->editSelectParamComboBox->setCurrentIndex(ui->editSelectParamComboBox->count()-1); + ui->editSelectComponentComboBox->addItem(tr("Component #%1").arg(settings.value(pre + "QGC_PARAM_SLIDER_COMPONENTID").toInt()), settings.value(pre + "QGC_PARAM_SLIDER_COMPONENTID").toInt()); + ui->editMinSpinBox->setValue(settings.value(pre + "QGC_PARAM_SLIDER_MIN").toFloat()); + ui->editMaxSpinBox->setValue(settings.value(pre + "QGC_PARAM_SLIDER_MAX").toFloat()); + visibleParam = settings.value(pre+"QGC_PARAM_SLIDER_VISIBLE_PARAM","").toString(); + visibleVal = settings.value(pre+"QGC_PARAM_SLIDER_VISIBLE_VAL",0).toInt(); + parameterMax = ui->editMaxSpinBox->value(); + parameterMin = ui->editMinSpinBox->value(); + //ui->valueSlider->setMaximum(parameterMax); + //ui->valueSlider->setMinimum(parameterMin); + showInfo(settings.value(pre + "QGC_PARAM_SLIDER_DISPLAY_INFO", true).toBool()); + ui->editSelectParamComboBox->setEnabled(true); + ui->editSelectComponentComboBox->setEnabled(true); + + setActiveUAS(UASManager::instance()->getActiveUAS()); + + // Get param value after settings have been loaded + //requestParameter(); +} void QGCParamSlider::readSettings(const QSettings& settings) { + QVariantMap map; + foreach (QString key,settings.allKeys()) + { + map[key] = settings.value(key); + } + + readSettings("",map); + return; parameterName = settings.value("QGC_PARAM_SLIDER_PARAMID").toString(); component = settings.value("QGC_PARAM_SLIDER_COMPONENTID").toInt(); ui->nameLabel->setText(settings.value("QGC_PARAM_SLIDER_DESCRIPTION").toString()); @@ -417,6 +575,11 @@ void QGCParamSlider::readSettings(const QSettings& settings) ui->editSelectComponentComboBox->addItem(tr("Component #%1").arg(settings.value("QGC_PARAM_SLIDER_COMPONENTID").toInt()), settings.value("QGC_PARAM_SLIDER_COMPONENTID").toInt()); ui->editMinSpinBox->setValue(settings.value("QGC_PARAM_SLIDER_MIN").toFloat()); ui->editMaxSpinBox->setValue(settings.value("QGC_PARAM_SLIDER_MAX").toFloat()); + visibleParam = settings.value("QGC_PARAM_SLIDER_VISIBLE_PARAM","").toString(); + //QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_VISIBLE_PARAM=RC5_FUNCTION + visibleVal = settings.value("QGC_PARAM_SLIDER_VISIBLE_VAL",0).toInt(); + parameterMax = ui->editMaxSpinBox->value(); + parameterMin = ui->editMinSpinBox->value(); showInfo(settings.value("QGC_PARAM_SLIDER_DISPLAY_INFO", true).toBool()); ui->editSelectParamComboBox->setEnabled(true); ui->editSelectComponentComboBox->setEnabled(true); @@ -424,5 +587,5 @@ void QGCParamSlider::readSettings(const QSettings& settings) setActiveUAS(UASManager::instance()->getActiveUAS()); // Get param value after settings have been loaded - requestParameter(); + //requestParameter(); } diff --git a/src/ui/designer/QGCParamSlider.h b/src/ui/designer/QGCParamSlider.h index 38f21e6e16c350da7f29393655c196ba10183013..7160cd937ef5e48f7930ab3cb99e448936d68429 100644 --- a/src/ui/designer/QGCParamSlider.h +++ b/src/ui/designer/QGCParamSlider.h @@ -31,6 +31,7 @@ public slots: void setParameterValue(int uas, int component, int paramCount, int paramIndex, QString parameterName, const QVariant value); void writeSettings(QSettings& settings); void readSettings(const QSettings& settings); + void readSettings(const QString& pre,const QVariantMap& settings); void refreshParamList(); void setActiveUAS(UASInterface *uas); void selectComponent(int componentIndex); @@ -49,6 +50,13 @@ protected slots: void requestParameter(); protected: + bool visibleEnabled; + QString visibleParam; + int visibleVal; + //The below variables, and usage in QGCParamSlider.cc are a bit of a hack, since disconnect() does not seem to take effect + //immediatly (perhaps it is put into the event loop?) - MLC + bool valueModLock; ///< Used to keep the slider/spinboxes from updating each other during user input + bool valueModLockParam; ///< Used to keep the slider/spinboxes from udpating each other when a new parametervalue comes in QString parameterName; ///< Key/Name of the parameter QVariant parameterValue; ///< Value of the parameter double parameterScalingFactor; ///< Factor to scale the parameter between slider and true value diff --git a/src/ui/designer/QGCParamSlider.ui b/src/ui/designer/QGCParamSlider.ui index ed911775491303530e740c2204991c7ae55fe636..4635f01e397d193c0bbde3e5f867029135f8de02 100644 --- a/src/ui/designer/QGCParamSlider.ui +++ b/src/ui/designer/QGCParamSlider.ui @@ -171,7 +171,7 @@ Read the current parameter value on the system - R + Get @@ -223,7 +223,7 @@ Transmit the current slider value to the system - W + Set @@ -282,18 +282,12 @@ - - - - - :/files/images/status/dialog-information.svg:/files/images/status/dialog-information.svg + ? - - - + diff --git a/src/ui/designer/QGCTextLabel.cc b/src/ui/designer/QGCTextLabel.cc new file mode 100644 index 0000000000000000000000000000000000000000..e824e018f218edd0edbc434e757e40db0b18abf5 --- /dev/null +++ b/src/ui/designer/QGCTextLabel.cc @@ -0,0 +1,189 @@ +#include + +#include "QGCTextLabel.h" +#include "ui_QGCTextLabel.h" + +#include "MAVLinkProtocol.h" +#include "UASManager.h" + +QGCTextLabel::QGCTextLabel(QWidget *parent) : + QGCToolWidgetItem("Command Button", parent), + ui(new Ui::QGCTextLabel) +{ + uas = 0; + enabledNum = -1; + ui->setupUi(this); + + connect(ui->editFinishButton, SIGNAL(clicked()), this, SLOT(endEditMode())); + + // Hide all edit items + ui->editFinishButton->hide(); + ui->editNameLabel->hide(); + ui->editTextParam->hide(); + ui->editComponentSpinBox->hide(); + ui->editLine1->hide(); + ui->editLine2->hide(); + + ui->editLine1->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); + ui->editLine2->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); + + // Add commands to combo box + +} + +QGCTextLabel::~QGCTextLabel() +{ + delete ui; +} + + + +void QGCTextLabel::startEditMode() +{ + // Hide elements + ui->nameLabel->hide(); + + ui->editTextParam->show(); + ui->editFinishButton->show(); + ui->editNameLabel->show(); + ui->editComponentSpinBox->show(); + ui->editLine1->show(); + ui->editLine2->show(); + //setStyleSheet("QGroupBox { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }"); + + // Attempt to undock the dock widget + QWidget* p = this; + QDockWidget* dock; + + do { + p = p->parentWidget(); + dock = dynamic_cast(p); + + if (dock) + { + dock->setFloating(true); + break; + } + } while (p && !dock); + + isInEditMode = true; +} + +void QGCTextLabel::endEditMode() +{ + ui->editFinishButton->hide(); + ui->editTextParam->hide(); + ui->editNameLabel->hide(); + ui->editComponentSpinBox->hide(); + ui->editLine1->hide(); + ui->editLine2->hide(); + + ui->nameLabel->show(); + + // Write to settings + emit editingFinished(); + //setStyleSheet(""); + + // Attempt to dock the dock widget + QWidget* p = this; + QDockWidget* dock; + + do { + p = p->parentWidget(); + dock = dynamic_cast(p); + + if (dock) + { + dock->setFloating(false); + break; + } + } while (p && !dock); + + isInEditMode = false; +} + +void QGCTextLabel::writeSettings(QSettings& settings) +{ + qDebug() << "COMMAND BUTTON WRITING SETTINGS"; + settings.setValue("TYPE", "COMMANDBUTTON"); + settings.setValue("QGC_COMMAND_BUTTON_DESCRIPTION", ui->nameLabel->text()); + + settings.sync(); +} +void QGCTextLabel::readSettings(const QString& pre,const QVariantMap& settings) +{ + ui->editTextParam->setText(settings.value(pre + "QGC_TEXT_SOURCE", "UNKNOWN").toString()); + //ui->editCommandComboBox->setCurrentIndex(settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt()); + if (ui->editTextParam->text() == "NONE") + { + ui->editNameLabel->setText(settings.value(pre + "QGC_TEXT_TEXT","").toString()); + ui->nameLabel->setText(ui->editNameLabel->text()); + } + else if (ui->editTextParam->text() == "MAV") + { + //MAV command text + connect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString))); + } + + //int commandId = settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt(); + + + + + //ui->editNameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); + //ui->nameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); +} +void QGCTextLabel::textMessageReceived(int uasid, int component, int severity, QString message) +{ + if (enabledNum != -1) + { + //SUCCESS: Executed CMD: 241 + if (message.contains("SUCCESS")) + { + if (message.trimmed().endsWith(QString::number(enabledNum))) + { + enabledNum = -1; + ui->textLabel->setText(ui->textLabel->text() + " Complete"); + } + } + else + { + ui->textLabel->setText(message); + } + } +} + +void QGCTextLabel::readSettings(const QSettings& settings) +{ + //ui->editNameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); + //ui->nameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString()); + ui->editTextParam->setText(settings.value("QGC_TEXT_SOURCE", "UNKNOWN").toString()); + ui->editNameLabel->setText(settings.value("QGC_TEXT_TEXT","").toString()); + //ui->editCommandComboBox->setCurrentIndex(settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt()); + if (ui->editTextParam->text() == "NONE") + { + ui->textLabel->setText(ui->editNameLabel->text()); + ui->nameLabel->setText(""); + } + else if (ui->editTextParam->text() == "MAV") + { + //MAV command text + ui->nameLabel->setText(ui->editNameLabel->text()); + ui->textLabel->setText(""); + connect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString))); + } + else + { + + } +} +void QGCTextLabel::enableText(int num) +{ + enabledNum = num; + +} + +void QGCTextLabel::setActiveUAS(UASInterface *uas) +{ + this->uas = uas; +} diff --git a/src/ui/designer/QGCTextLabel.h b/src/ui/designer/QGCTextLabel.h new file mode 100644 index 0000000000000000000000000000000000000000..67ed0ae638c2aa142f1e4faf04a83de175749648 --- /dev/null +++ b/src/ui/designer/QGCTextLabel.h @@ -0,0 +1,34 @@ +#ifndef QGCTEXTLABEL_H +#define QGCTEXTLABEL_H + +#include "QGCToolWidgetItem.h" + +namespace Ui +{ +class QGCTextLabel; +} + +class UASInterface; + +class QGCTextLabel : public QGCToolWidgetItem +{ + Q_OBJECT + +public: + explicit QGCTextLabel(QWidget *parent = 0); + ~QGCTextLabel(); + void setActiveUAS(UASInterface *uas); + void enableText(int num); +public slots: + void startEditMode(); + void endEditMode(); + void writeSettings(QSettings& settings); + void readSettings(const QSettings& settings); + void readSettings(const QString& pre,const QVariantMap& settings); + void textMessageReceived(int uasid, int component, int severity, QString message); +private: + int enabledNum; + Ui::QGCTextLabel *ui; +}; + +#endif // QGCTEXTLABEL_H diff --git a/src/ui/designer/QGCTextLabel.ui b/src/ui/designer/QGCTextLabel.ui new file mode 100644 index 0000000000000000000000000000000000000000..78ba1dda55884e0df0c0dca04935d8808d11b4fb --- /dev/null +++ b/src/ui/designer/QGCTextLabel.ui @@ -0,0 +1,133 @@ + + + QGCTextLabel + + + + 0 + 0 + 1183 + 166 + + + + Form + + + + 6 + + + 3 + + + 6 + + + 3 + + + + + <Label Description Label (in front of text)> + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + + 50 + 0 + + + + Description + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + <Text Param> + + + + + + + Done + + + + + + + Component ID: + + + 0 + + + 255 + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + TextLabel + + + + + + + + + editNameLabel + textChanged(QString) + nameLabel + setText(QString) + + + 114 + 22 + + + 114 + 55 + + + + + diff --git a/src/ui/designer/QGCToolWidget.cc b/src/ui/designer/QGCToolWidget.cc index 27df74477c4b237ed199ca464d49564f06f51628..84dd6aebcdf9b45bb3d351a75c761be2713777f3 100644 --- a/src/ui/designer/QGCToolWidget.cc +++ b/src/ui/designer/QGCToolWidget.cc @@ -11,6 +11,8 @@ #include #include "QGCParamSlider.h" +#include "QGCComboBox.h" +#include "QGCTextLabel.h" #include "QGCCommandButton.h" #include "UASManager.h" @@ -21,6 +23,7 @@ QGCToolWidget::QGCToolWidget(const QString& title, QWidget *parent, QSettings* s widgetTitle(title), ui(new Ui::QGCToolWidget) { + isFromMetaData = false; ui->setupUi(this); if (settings) loadSettings(*settings); @@ -64,7 +67,7 @@ QGCToolWidget::QGCToolWidget(const QString& title, QWidget *parent, QSettings* s // Enforce storage if this not loaded from settings // is MUST NOT BE SAVED if it was loaded from settings! - if (!settings) storeWidgetsToSettings(); + //if (!settings) storeWidgetsToSettings(); } QGCToolWidget::~QGCToolWidget() @@ -108,6 +111,7 @@ QList QGCToolWidget::createWidgetsFromSettings(QWidget* parent, } QList newWidgets; + settings->beginGroup("Custom_Tool_Widgets"); int size = settings->beginReadArray("QGC_TOOL_WIDGET_NAMES"); for (int i = 0; i < size; i++) { @@ -139,10 +143,26 @@ QList QGCToolWidget::createWidgetsFromSettings(QWidget* parent, { newWidgets.at(i)->loadSettings(*settings); } + settings->endGroup(); + settings->sync(); delete settings; return instances()->values(); } +void QGCToolWidget::showLabel(QString name,int num) +{ + for (int i=0;iobjectName() == name) + { + QGCTextLabel *label = qobject_cast(toolItemList[i]); + if (label) + { + label->enableText(num); + } + } + } +} /** * @param singleinstance If this is set to true, the widget settings will only be loaded if not another widget with the same title exists @@ -154,6 +174,7 @@ bool QGCToolWidget::loadSettings(const QString& settings, bool singleinstance) if (groups.length() > 0) { QString widgetName = groups.first(); + this->setObjectName(widgetName); if (singleinstance && QGCToolWidget::instances()->keys().contains(widgetName)) return false; // Do not use setTitle() here, // interferes with loading settings @@ -167,6 +188,131 @@ bool QGCToolWidget::loadSettings(const QString& settings, bool singleinstance) return false; } } +void QGCToolWidget::setSettings(QVariantMap& settings) +{ + isFromMetaData = true; + settingsMap = settings; + QString widgetName = getTitle(); + int size = settingsMap["count"].toInt(); + for (int j = 0; j < size; j++) + { + QString type = settings.value(widgetName + "\\" + QString::number(j) + "\\" + "TYPE", "UNKNOWN").toString(); + if (type == "SLIDER") + { + QString checkparam = settingsMap.value(widgetName + "\\" + QString::number(j) + "\\" + "QGC_PARAM_SLIDER_PARAMID").toString(); + paramList.append(checkparam); + } + else if (type == "COMBO") + { + QString checkparam = settingsMap.value(widgetName + "\\" + QString::number(j) + "\\" + "QGC_PARAM_COMBOBOX_PARAMID").toString(); + paramList.append(checkparam); + } + } +} +QList QGCToolWidget::getParamList() +{ + return paramList; +} +void QGCToolWidget::setParameterValue(int uas, int component, QString parameterName, const QVariant value) +{ + QString widgetName = getTitle(); + int size = settingsMap["count"].toInt(); + if (paramToItemMap.contains(parameterName)) + { + //If we already have an item for this parameter, updates are handled internally. + return; + } + + for (int j = 0; j < size; j++) + { + QString type = settingsMap.value(widgetName + "\\" + QString::number(j) + "\\" + "TYPE", "UNKNOWN").toString(); + QGCToolWidgetItem* item = NULL; + if (type == "COMMANDBUTTON") + { + //This shouldn't happen, but I'm not sure... so lets test for it. + continue; + } + else if (type == "SLIDER") + { + QString checkparam = settingsMap.value(widgetName + "\\" + QString::number(j) + "\\" + "QGC_PARAM_SLIDER_PARAMID").toString(); + if (checkparam == parameterName) + { + item = new QGCParamSlider(this); + paramToItemMap[parameterName] = item; + addToolWidget(item); + item->readSettings(widgetName + "\\" + QString::number(j) + "\\",settingsMap); + return; + } + } + else if (type == "COMBO") + { + QString checkparam = settingsMap.value(widgetName + "\\" + QString::number(j) + "\\" + "QGC_PARAM_COMBOBOX_PARAMID").toString(); + if (checkparam == parameterName) + { + item = new QGCComboBox(this); + addToolWidget(item); + item->readSettings(widgetName + "\\" + QString::number(j) + "\\",settingsMap); + paramToItemMap[parameterName] = item; + return; + } + } + } +} + +void QGCToolWidget::loadSettings(QVariantMap& settings) +{ + + QString widgetName = getTitle(); + //settings.beginGroup(widgetName); + qDebug() << "LOADING FOR" << widgetName; + //int size = settings.beginReadArray("QGC_TOOL_WIDGET_ITEMS"); + int size = settings["count"].toInt(); + qDebug() << "CHILDREN SIZE:" << size; + for (int j = 0; j < size; j++) + { + QApplication::processEvents(); + //settings.setArrayIndex(j); + QString type = settings.value(widgetName + "\\" + QString::number(j) + "\\" + "TYPE", "UNKNOWN").toString(); + if (type != "UNKNOWN") + { + QGCToolWidgetItem* item = NULL; + if (type == "COMMANDBUTTON") + { + item = new QGCCommandButton(this); + //qDebug() << "CREATED COMMANDBUTTON"; + } + else if (type == "TEXT") + { + item = new QGCTextLabel(this); + item->setActiveUAS(mav); + } + else if (type == "SLIDER") + { + item = new QGCParamSlider(this); + //qDebug() << "CREATED PARAM SLIDER"; + } + else if (type == "COMBO") + { + item = new QGCComboBox(this); + //qDebug() << "CREATED PARAM COMBOBOX"; + } + if (item) + { + // Configure and add to layout + addToolWidget(item); + item->readSettings(widgetName + "\\" + QString::number(j) + "\\",settings); + + //qDebug() << "Created tool widget"; + } + } + else + { + qDebug() << "UNKNOWN TOOL WIDGET TYPE" << type; + } + } + //settings.endArray(); + //settings.endGroup(); +} void QGCToolWidget::loadSettings(QSettings& settings) { @@ -184,14 +330,30 @@ void QGCToolWidget::loadSettings(QSettings& settings) QGCToolWidgetItem* item = NULL; if (type == "COMMANDBUTTON") { - item = new QGCCommandButton(this); + QGCCommandButton *button = new QGCCommandButton(this); + connect(button,SIGNAL(showLabel(QString,int)),this,SLOT(showLabel(QString,int))); + item = button; + item->setActiveUAS(mav); //qDebug() << "CREATED COMMANDBUTTON"; } else if (type == "SLIDER") { item = new QGCParamSlider(this); + item->setActiveUAS(mav); //qDebug() << "CREATED PARAM SLIDER"; } + else if (type == "COMBO") + { + item = new QGCComboBox(this); + item->setActiveUAS(mav); + qDebug() << "CREATED PARAM COMBOBOX"; + } + else if (type == "TEXT") + { + item = new QGCTextLabel(this); + item->setObjectName(settings.value("QGC_TEXT_ID").toString()); + item->setActiveUAS(mav); + } if (item) { @@ -226,18 +388,23 @@ void QGCToolWidget::storeWidgetsToSettings(QString settingsFile) //qDebug() << "STORING SETTINGS TO DEFAULT" << settings->fileName(); } + settings->beginGroup("Custom_Tool_Widgets"); int preArraySize = settings->beginReadArray("QGC_TOOL_WIDGET_NAMES"); settings->endArray(); settings->beginWriteArray("QGC_TOOL_WIDGET_NAMES"); + int num = 0; for (int i = 0; i < qMax(preArraySize, instances()->size()); ++i) { - settings->setArrayIndex(i); if (i < instances()->size()) { // Updating value - settings->setValue("TITLE", instances()->values().at(i)->getTitle()); - //qDebug() << "WRITING TITLE" << instances()->values().at(i)->getTitle(); + if (!instances()->values().at(i)->fromMetaData()) + { + settings->setArrayIndex(num++); + settings->setValue("TITLE", instances()->values().at(i)->getTitle()); + //qDebug() << "WRITING TITLE" << instances()->values().at(i)->getTitle(); + } } else { @@ -252,6 +419,8 @@ void QGCToolWidget::storeWidgetsToSettings(QString settingsFile) { instances()->values().at(i)->storeSettings(*settings); } + settings->endGroup(); + settings->sync(); delete settings; } @@ -269,6 +438,11 @@ void QGCToolWidget::storeSettings(const QString& settingsFile) void QGCToolWidget::storeSettings(QSettings& settings) { + if (isFromMetaData) + { + //Refuse to store if this is loaded from metadata or dynamically generated. + return; + } //qDebug() << "WRITING WIDGET" << widgetTitle << "TO SETTINGS"; settings.beginGroup(widgetTitle); settings.beginWriteArray("QGC_TOOL_WIDGET_ITEMS"); @@ -370,6 +544,22 @@ QList* QGCToolWidget::itemList() if (!instances) instances = new QList(); return instances; } +void QGCToolWidget::addParam(int uas,int component,QString paramname,QVariant value) +{ + isFromMetaData = true; + QGCParamSlider* slider = new QGCParamSlider(this); + connect(slider, SIGNAL(destroyed()), this, SLOT(storeSettings())); + if (ui->hintLabel) + { + ui->hintLabel->deleteLater(); + ui->hintLabel = NULL; + } + toolLayout->addWidget(slider); + slider->setActiveUAS(mav); + slider->setParameterValue(uas,component,0,-1,paramname,value); + + +} void QGCToolWidget::addParam() { @@ -406,6 +596,7 @@ void QGCToolWidget::addToolWidget(QGCToolWidgetItem* widget) } connect(widget, SIGNAL(destroyed()), this, SLOT(storeSettings())); toolLayout->addWidget(widget); + toolItemList.append(widget); } void QGCToolWidget::exportWidget() @@ -457,11 +648,11 @@ void QGCToolWidget::setWindowTitle(const QString& title) void QGCToolWidget::setTitle(QString title) { // Remove references to old title - QSettings settings; + /*QSettings settings; settings.beginGroup(widgetTitle); settings.remove(""); settings.endGroup(); - settings.sync(); + settings.sync();*/ if (instances()->contains(widgetTitle)) instances()->remove(widgetTitle); @@ -473,7 +664,7 @@ void QGCToolWidget::setTitle(QString title) QDockWidget* parent = dynamic_cast(this->parentWidget()); if (parent) parent->setWindowTitle(title); // Store all widgets - storeWidgetsToSettings(); + //storeWidgetsToSettings(); emit titleChanged(title); if (mainMenuAction) mainMenuAction->setText(title); @@ -491,10 +682,11 @@ void QGCToolWidget::deleteWidget() // Hide this->hide(); instances()->remove(getTitle()); - QSettings settings; + /*QSettings settings; settings.beginGroup(getTitle()); settings.remove(""); settings.endGroup(); + storeWidgetsToSettings();*/ storeWidgetsToSettings(); // Delete diff --git a/src/ui/designer/QGCToolWidget.h b/src/ui/designer/QGCToolWidget.h index 1a897ac1f4578c4e4234e81a785a9049ef8d22c2..c3abb0faf240834ddb16f57315d54e8db2c1e542 100644 --- a/src/ui/designer/QGCToolWidget.h +++ b/src/ui/designer/QGCToolWidget.h @@ -45,6 +45,7 @@ public slots: void importWidget(); /** @brief Store all widgets of this type to QSettings */ static void storeWidgetsToSettings(QString settingsFile=QString()); + void loadSettings(QVariantMap& settings); /** @brief Load this widget from a QSettings object */ void loadSettings(QSettings& settings); /** @brief Load this widget from a settings file */ @@ -57,11 +58,20 @@ public slots: void storeSettings(); /** @brief Store the view id and dock widget area */ void setViewVisibilityAndDockWidgetArea(int view, bool visible, Qt::DockWidgetArea area); - + void setSettings(QVariantMap& settings); + QList getParamList(); + void setParameterValue(int uas, int component, QString parameterName, const QVariant value); + bool fromMetaData() { return isFromMetaData; } + void showLabel(QString name,int num); signals: void titleChanged(QString); protected: + bool isFromMetaData; + QMap paramToItemMap; + QList toolItemList; + QList paramList; + QVariantMap settingsMap; QAction* addParamAction; QAction* addCommandAction; QAction* setTitleAction; @@ -83,12 +93,14 @@ protected: void addToolWidget(QGCToolWidgetItem* widget); void hideEvent(QHideEvent* event); - +public slots: + void setTitle(QString title); + void addParam(int uas,int component,QString paramname,QVariant value); protected slots: void addParam(); void addCommand(); void setTitle(); - void setTitle(QString title); + void setWindowTitle(const QString& title); diff --git a/src/ui/designer/QGCToolWidgetItem.h b/src/ui/designer/QGCToolWidgetItem.h index 4fdbbe254cb551a048f7ab9d8ff91413dede3611..e0a0cb0a3337e6e934ada388e3889c1f2880c436 100644 --- a/src/ui/designer/QGCToolWidgetItem.h +++ b/src/ui/designer/QGCToolWidgetItem.h @@ -26,6 +26,7 @@ public slots: } virtual void writeSettings(QSettings& settings) = 0; virtual void readSettings(const QSettings& settings) = 0; + virtual void readSettings(const QString& pre,const QVariantMap& settings) = 0; virtual void setActiveUAS(UASInterface *uas); signals: diff --git a/src/ui/map/QGCMapWidget.cc b/src/ui/map/QGCMapWidget.cc index 5645b2d73e873e8c0732873dbb5eb43364add19b..bafbab988688a3ee719803fe90d6ec49c08a1d7a 100644 --- a/src/ui/map/QGCMapWidget.cc +++ b/src/ui/map/QGCMapWidget.cc @@ -5,6 +5,7 @@ #include "MAV2DIcon.h" #include "Waypoint2DIcon.h" #include "UASWaypointManager.h" +#include "ArduPilotMegaMAV.h" QGCMapWidget::QGCMapWidget(QWidget *parent) : mapcontrol::OPMapWidget(parent), @@ -19,7 +20,66 @@ QGCMapWidget::QGCMapWidget(QWidget *parent) : homeAltitude(0) { // Widget is inactive until shown + defaultGuidedAlt = -1; loadSettings(false); + + this->setContextMenuPolicy(Qt::ActionsContextMenu); + +} +void QGCMapWidget::guidedActionTriggered() +{ + if (currWPManager) + { + if (defaultGuidedAlt == -1) + { + if (!guidedAltActionTriggered()) + { + return; + } + } + // Create new waypoint and send it to the WPManager to send out. + internals::PointLatLng pos = map->FromLocalToLatLng(mousePressPos.x(), mousePressPos.y()); + qDebug() << "Guided action requested. Lat:" << pos.Lat() << "Lon:" << pos.Lng(); + Waypoint wp; + wp.setLatitude(pos.Lat()); + wp.setLongitude(pos.Lng()); + wp.setAltitude(defaultGuidedAlt); + currWPManager->goToWaypoint(&wp); + } +} +bool QGCMapWidget::guidedAltActionTriggered() +{ + bool ok = false; + int tmpalt = QInputDialog::getInt(this,"Altitude","Enter default altitude (in meters) of destination point for guided mode",100,0,30000,1,&ok); + if (!ok) + { + //Use has chosen cancel. Do not send the waypoint + return false; + } + defaultGuidedAlt = tmpalt; + guidedActionTriggered(); + return true; +} +void QGCMapWidget::cameraActionTriggered() +{ + ArduPilotMegaMAV *newmav = qobject_cast(this->uas); + if (newmav) + { + newmav->setMountConfigure(4,true,true,true); + internals::PointLatLng pos = map->FromLocalToLatLng(mousePressPos.x(), mousePressPos.y()); + newmav->setMountControl(pos.Lat(),pos.Lng(),100,true); + } +} + +void QGCMapWidget::mousePressEvent(QMouseEvent *event) +{ + mapcontrol::OPMapWidget::mousePressEvent(event); +} + +void QGCMapWidget::mouseReleaseEvent(QMouseEvent *event) +{ + mousePressPos = event->pos(); + mapcontrol::OPMapWidget::mouseReleaseEvent(event); } QGCMapWidget::~QGCMapWidget() @@ -188,6 +248,7 @@ void QGCMapWidget::activeUASSet(UASInterface* uas) { // Only execute if proper UAS is set if (!uas) return; + this->uas = uas; // Disconnect old MAV manager if (currWPManager) @@ -202,6 +263,31 @@ void QGCMapWidget::activeUASSet(UASInterface* uas) if (uas) { currWPManager = uas->getWaypointManager(); + QList actionList = this->actions(); + for (int i=0;iremoveAction(actionList[i]); + actionList[i]->deleteLater(); + } + if (currWPManager->guidedModeSupported()) + { + QAction *guidedaction = new QAction(this); + guidedaction->setText("Go To Here (Guided Mode)"); + connect(guidedaction,SIGNAL(triggered()),this,SLOT(guidedActionTriggered())); + this->addAction(guidedaction); + guidedaction = new QAction(this); + guidedaction->setText("Go To Here Alt (Guided Mode)"); + connect(guidedaction,SIGNAL(triggered()),this,SLOT(guidedAltActionTriggered())); + this->addAction(guidedaction); + + if (uas->getAutopilotType() == MAV_AUTOPILOT_ARDUPILOTMEGA) + { + QAction *cameraaction = new QAction(this); + cameraaction->setText("Point Camera Here"); + connect(cameraaction,SIGNAL(triggered()),this,SLOT(cameraActionTriggered())); + this->addAction(cameraaction); + } + } // Connect the waypoint manager / data storage to the UI connect(currWPManager, SIGNAL(waypointEditableListChanged(int)), this, SLOT(updateWaypointList(int))); diff --git a/src/ui/map/QGCMapWidget.h b/src/ui/map/QGCMapWidget.h index 6c627a1406d14183a1f41b60db40d678876d9728..997976c2febe6ca821e4e2f27d7e49f388dd8496 100644 --- a/src/ui/map/QGCMapWidget.h +++ b/src/ui/map/QGCMapWidget.h @@ -40,6 +40,12 @@ signals: void waypointChanged(Waypoint* wp); public slots: + /** @brief Action triggered with point-camera action is selected from the context menu */ + void cameraActionTriggered(); + /** @brief Action triggered when guided action is selected from the context menu */ + void guidedActionTriggered(); + /** @brief Action triggered when guided action is selected from the context menu, allows for altitude selection */ + bool guidedAltActionTriggered(); /** @brief Add system to map view */ void addUAS(UASInterface* uas); /** @brief Update the global position of a system */ @@ -126,6 +132,8 @@ protected: /** @brief Initialize */ void showEvent(QShowEvent* event); void hideEvent(QHideEvent* event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent* event); UASWaypointManager* currWPManager; ///< The current waypoint manager @@ -150,6 +158,9 @@ protected: int followUAVID; ///< Which UAV should be tracked? bool mapInitialized; ///< Map initialized? float homeAltitude; ///< Home altitude + QPoint mousePressPos; ///< Mouse position when the button is released. + int defaultGuidedAlt; ///< Default altitude for guided mode + UASInterface *uas; ///< Currently selected UAS. }; diff --git a/src/ui/submainwindow.cpp b/src/ui/submainwindow.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7705cff1601614e35767efbc0f7de7e8f472b403 --- /dev/null +++ b/src/ui/submainwindow.cpp @@ -0,0 +1,6 @@ +#include "submainwindow.h" + +SubMainWindow::SubMainWindow(QWidget *parent) : QMainWindow(parent) +{ + +} diff --git a/src/ui/submainwindow.h b/src/ui/submainwindow.h new file mode 100644 index 0000000000000000000000000000000000000000..510acf473879f1d199a782067a56cc77561453e0 --- /dev/null +++ b/src/ui/submainwindow.h @@ -0,0 +1,17 @@ +#ifndef SUBMAINWINDOW_H +#define SUBMAINWINDOW_H + +#include + +class SubMainWindow : public QMainWindow +{ + Q_OBJECT +public: + explicit SubMainWindow(QWidget *parent = 0); +signals: + +public slots: + +}; + +#endif // SUBMAINWINDOW_H diff --git a/src/ui/uas/UASListWidget.cc b/src/ui/uas/UASListWidget.cc index 33bac7a584256d421e518c739cdde638db1d80f1..e0b52e43239839300dace1b111a1bea294042332 100644 --- a/src/ui/uas/UASListWidget.cc +++ b/src/ui/uas/UASListWidget.cc @@ -65,6 +65,8 @@ UASListWidget::UASListWidget(QWidget *parent) : QWidget(parent), m_ui(new Ui::UA uasViews = QMap(); this->setVisible(false); + + connect(UASManager::instance(),SIGNAL(UASCreated(UASInterface*)),this,SLOT(addUAS(UASInterface*))); } UASListWidget::~UASListWidget() diff --git a/src/ui/uas/UASView.cc b/src/ui/uas/UASView.cc index 5d6a830124143e37c4ec53e9cd6ddbd724c7a0e3..20a742b57b8040656725f450e830fd5e721f9cc8 100644 --- a/src/ui/uas/UASView.cc +++ b/src/ui/uas/UASView.cc @@ -290,7 +290,7 @@ void UASView::hideEvent(QHideEvent* event) // React only to internal (pre-display) // events Q_UNUSED(event); - refreshTimer->stop(); + // refreshTimer->stop(); } void UASView::receiveHeartbeat(UASInterface* uas)