add telemetry messages: rx link quality, battery percentage, flight mode, relative altitude
This commit is contained in:
@@ -14,13 +14,11 @@ import 'msp_telemetry_codec.dart';
|
||||
///
|
||||
/// - Position/Lage/Hoehe (5-10 Hz): jeden Zyklus (`MSP_RAW_GPS` +
|
||||
/// `MSP_ALTITUDE`).
|
||||
/// - Status/Flugmodus (2 Hz): jeden [_statusEveryNCycles]-ten Zyklus
|
||||
/// (`MSP2_INAV_STATUS` + `MSP_NAV_STATUS`).
|
||||
///
|
||||
/// Spannung/Strom (1 Hz laut Doku) fehlt hier bewusst noch - [TelemetryFrame]
|
||||
/// hat aktuell keine Felder dafuer; sobald die UI das braucht, ist ein
|
||||
/// dritter, noch selteners abgefragter Zweig (`MSP2_INAV_ANALOG`) trivial
|
||||
/// ergaenzt.
|
||||
/// - Status/Flugmodus/Akku/Link (2 Hz): jeden [_statusEveryNCycles]-ten
|
||||
/// Zyklus (`MSP2_INAV_STATUS`, `MSP_NAV_STATUS`, `MSP2_INAV_ANALOG`,
|
||||
/// `MSP2_INAV_GET_LINK_STATS`) - Flugmodus wird aus derselben
|
||||
/// `MSP_NAV_STATUS`-Antwort gelesen wie der aktive Wegpunkt, keine
|
||||
/// zusaetzliche Anfrage noetig.
|
||||
///
|
||||
/// Der Strom wird NICHT auf einen gueltigen GPS-Fix gegated - jeder Zyklus
|
||||
/// emittiert ein [TelemetryFrame], auch ohne Fix (dann mit `hasFix: false`
|
||||
@@ -40,6 +38,9 @@ class MspTelemetryPoller {
|
||||
int _cycle = 0;
|
||||
bool _armed = false;
|
||||
int? _activeWaypointIndex;
|
||||
int _batteryPercent = 0;
|
||||
int _linkQuality = 0;
|
||||
String _flightMode = 'Idle';
|
||||
|
||||
Stream<TelemetryFrame> get frames => _framesController.stream;
|
||||
|
||||
@@ -78,8 +79,14 @@ class MspTelemetryPoller {
|
||||
_armed = parseMspInavStatusArmed(
|
||||
await _client.request(MspCommands.inavStatus),
|
||||
);
|
||||
_activeWaypointIndex = parseMspNavStatusActiveWaypoint(
|
||||
await _client.request(MspCommands.navStatus),
|
||||
final navStatusPayload = await _client.request(MspCommands.navStatus);
|
||||
_activeWaypointIndex = parseMspNavStatusActiveWaypoint(navStatusPayload);
|
||||
_flightMode = parseMspNavMode(navStatusPayload).formatted;
|
||||
_batteryPercent = parseMspInavAnalogBatteryPercent(
|
||||
await _client.request(MspCommands.inavAnalog),
|
||||
);
|
||||
_linkQuality = parseMspLinkQuality(
|
||||
await _client.request(MspCommands.inavLinkStats),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -93,6 +100,9 @@ class MspTelemetryPoller {
|
||||
speedMs: gps.speedMs,
|
||||
headingDeg: gps.headingDeg,
|
||||
armed: _armed,
|
||||
batteryPercent: _batteryPercent,
|
||||
linkQuality: _linkQuality,
|
||||
flightMode: _flightMode,
|
||||
activeWaypointIndex: _activeWaypointIndex,
|
||||
));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user