Files
PilotVault/Fly App/lib/fly/rc_buttons.dart
T
tajniak81andClaude Opus 5.5 636da1ac2c Give the Fly App every remaining GO 4 flight mode and the missing settings
Intelligent modes: Point of Interest (orbit on the map, live radius and
speed), Follow Me (follows the phone), QuickShots on a boxed subject,
Course Lock / Home Lock, Tripod and Cinematic, a Free hyperlapse, and
Waypoints 2.0 for V2-only aircraft. ActiveTrack gains Spotlight Pro and
Circle. Every mode has a first-use tutorial and stops from the rail.
Waypoints can resume an interrupted mission, change cruise speed in
flight and check terrain clearance (Open-Meteo, on tap).

Settings: units, C1/C2 actions, dual-operator master/slave, HDMI/SDI
output, a link spectrum chart, Wi-Fi name and password, aircraft name,
video cache, battery warning history and pairing, non-smart cell
voltages. Calibration: compass interference meter, per-IMU calibration,
lens infinity focus and a first-manual-focus prompt. Also an RTK chip,
gimbal movement presets and motor tuning, Precision Takeoff gated on the
flight controller, and the precise GEO database's server version.

Built and unit/widget-tested only; nothing has flown yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 23:06:16 +02:00

36 lines
1.0 KiB
Dart

/// What a remote's custom button (C1 / C2) does (GO 4's RC → Button
/// Customization, plan P6).
///
/// On the consumer remotes MSDK V4 only reports that C1 / C2 was pressed
/// (`RemoteControllerKey.CUSTOM_BUTTON_1/2`): the action is the app's, as it is
/// in GO 4. The flight screen performs it; nothing is written to the remote.
enum RcButtonAction {
none('Not set'),
gimbalRecenter('Recenter gimbal'),
gimbalToggleDown('Gimbal forward / down'),
mapSwap('Map / camera view'),
cameraSettings('Camera settings'),
aircraftStatus('Aircraft status'),
aeLock('AE lock on / off'),
radar('Radar chart on / off');
const RcButtonAction(this.label);
final String label;
}
/// A press of one of the remote's custom buttons.
enum RcButton {
c1('C1'),
c2('C2');
const RcButton(this.label);
final String label;
/// The `rcButton` event's `button` value.
static RcButton? fromEvent(Object? v) => switch (v) {
'C1' => RcButton.c1,
'C2' => RcButton.c2,
_ => null,
};
}