Closed MaxBaex closed 1 year ago
// $RPYL,Roll,Pitch,MagnHeading,SideSlip,YawRate,G,errorcode, // $APENV1,IAS,Altitude,0,0,0,VerticalSpeed,
$RPYL, Roll, Pitch, Yaw (Magnetic heading), Inclination, Yaw Rate (turn coordinator), G force,
$RPYL,82,69,2021,83,14,1013,0,
$APENV1, Airspeed, Altitude, 0,0,0,Vertical Speed
$APENV1,124,179,0,0,0,500,
TestDriver.cpp // All angles in tenth of degrees ok1(device->ParseNMEA("$RPYL,127,729,3215,99,88,1376,0,", nmea_info)); ok1(nmea_info.attitude.bank_angle_available); ok1(equals(nmea_info.attitude.bank_angle, 12.7)); ok1(nmea_info.attitude.pitch_angle_available); ok1(equals(nmea_info.attitude.pitch_angle, 72.9)); ok1(nmea_info.attitude.heading_available); ok1(equals(nmea_info.attitude.heading, 321.5)); ok1(nmea_info.acceleration.available); ok1(nmea_info.acceleration.real); ok1(equals(nmea_info.acceleration.g_load, 1.376));
// speed in kn, alt in ft, vs in ft/min ok1(device->ParseNMEA("$APENV1,94,1500,0,0,0,0,", nmea_info)); ok1(nmea_info.airspeed_available); ok1(equals(nmea_info.indicated_airspeed, 48.357777777)); ok1(nmea_info.pressure_altitude_available); ok1(equals(nmea_info.pressure_altitude, 457.2)); // vertical speed not implemented
ok1(device->ParseNMEA("$PLXVF,,1.00,0.87,-0.12,-0.25,90.2,244.3,*64", basic)); ok1(basic.netto_vario_available); ok1(equals(basic.netto_vario, -0.25)); ok1(basic.airspeed_available); ok1(equals(basic.indicated_airspeed, 90.2)); ok1(basic.pressure_altitude_available); ok1(equals(basic.pressure_altitude, 244.3));
ok1(lx_device.IsV7()); lx_device.ResetDeviceDetection();
ok1(device->ParseNMEA("$PLXVS,23.1,0,12.3,*71", basic)); ok1(basic.temperature_available); ok1(equals(basic.temperature.ToKelvin(), 296.25)); ok1(basic.switch_state.flight_mode == SwitchState::FlightMode::CIRCLING); ok1(basic.voltage_available); ok1(equals(basic.voltage, 12.3));
RPYL // $RPYL,Roll,Pitch,MagnHeading,SideSlip,YawRate,G,errorcode$RPYL, Roll, Pitch, Yaw (Magnetic heading), Inclination, Yaw Rate (turn coordinator), G force,
$RPYL,82,69,2021,83,14,1013,0,
PLXVS Temperature / Voltage / (Flight Mode!):
$PLXVS,OAT,mode,voltage CS
ok1(basic.switch_state.flight_mode == SwitchState::FlightMode::CIRCLING); Circling=0, Cruise=1
ok1(basic.voltage_available);
ok1(equals(basic.voltage, 12.3));
APENV + IAS // $APENV1,IAS,Altitude,0,0,0,VerticalSpeed, // speed in kn, alt in ft, vs in ft/min ok1(device->ParseNMEA("$APENV1,94,1500,0,0,0,0,", nmea_info)); ok1(nmea_info.airspeed_available); ok1(equals(nmea_info.indicated_airspeed, 48.357777777)); ok1(nmea_info.pressure_altitude_available); ok1(equals(nmea_info.pressure_altitude, 457.2)); // vertical speed not implemented
PEYA alternative to$ PTAS1 & $GPMWV? Static Pressure, Pressure Altitude, Wind bearing and strength, humidity, temperature, true airspeed, indicated airspeed, QNH, "noncomp_vario"? ok1(device->ParseNMEA("$PEYA,1015.5,1020.5,3499,1012.3,265,12,176,+05.4,+15.2,095,1650,+05.1,+3.9*3a", nmea_info)); ok1(nmea_info.static_pressure_available); ok1(equals(nmea_info.static_pressure.GetHectoPascal(), 1015.5)); ok1(nmea_info.pitot_pressure_available); ok1(equals(nmea_info.pitot_pressure.GetHectoPascal(), 1020.5)); ok1(nmea_info.pressure_altitude_available); ok1(equals(nmea_info.pressure_altitude, 3499)); ok1(nmea_info.settings.qnh_available); ok1(equals(nmea_info.settings.qnh.GetHectoPascal(), 1012.3)); ok1(nmea_info.external_wind_available); ok1(equals(nmea_info.external_wind.bearing, 265)); ok1(equals(nmea_info.external_wind.norm, Units::ToSysUnit(12, Unit::KILOMETER_PER_HOUR))); ok1(nmea_info.airspeed_available); ok1(nmea_info.airspeed_real); ok1(equals(nmea_info.true_airspeed, Units::ToSysUnit(176, Unit::KILOMETER_PER_HOUR))); ok1(nmea_info.noncomp_vario_available); ok1(equals(nmea_info.noncomp_vario, 5.4)); ok1(nmea_info.temperature_available); ok1(equals(nmea_info.temperature.ToKelvin(), Temperature::FromCelsius(15.2).ToKelvin())); ok1(nmea_info.humidity_available); ok1(equals(nmea_info.humidity, 95));
POV (OpenVario driver) https://www.openvario.org/doku.php?id=projects:series_00:software:nmea Type definitions: E: TE vario in m/s, H: relative humidity in %, P: static pressure in hPa, Q: dynamic pressure in Pa, R: total pressure in hPa, S: true airspeed in km/h, T: temperature in deg C, ?: respond with selected strings, e.g. Ballast, Bugs, Polar Example: $POV,?,RPO,MC,WL2E means: Real Polar, MacCready, Wing Load S: true airspeed in km/h: Example: $POV,S,123.4505 P: static pressure in hPa: Example: $POV,P,1018.3539 Q: dynamic pressure in Pa: Example: $POV,Q,23.304 R: total pressure in hPa: Example: $POV,R,1025.1735 T: temperature in deg C: Example: $POV,T,23.5235 V: battery voltage in V: Example: $POV,V,11.9931 E: TE vario in m/s: Example: $POV,E,2.1514
PTAS1 (supported by XCSOAR standard Parser.cpp) ok1(parser.ParseLine("$PTAS1,200,200,02426,00025", nmea_info)); ok1(nmea_info.total_energy_vario_available); ok1(equals(nmea_info.total_energy_vario, 0)); ok1(nmea_info.pressure_altitude_available); ok1(equals(nmea_info.pressure_altitude, Units::ToSysUnit(426, Unit::FEET))); ok1(nmea_info.airspeed_available); ok1(equals(nmea_info.true_airspeed, 0)); ok1(parser.ParseLine("$PTAS1,234,000,00426,06226", nmea_info)); ok1(nmea_info.total_energy_vario_available); ok1(equals(nmea_info.total_energy_vario, Units::ToSysUnit(3.4, Unit::KNOTS))); ok1(nmea_info.pressure_altitude_available); ok1(equals(nmea_info.pressure_altitude, Units::ToSysUnit(-1574, Unit::FEET))); ok1(nmea_info.airspeed_available); ok1(equals(nmea_info.true_airspeed, Units::ToSysUnit(62, Unit::KNOTS)));
GPMWV (supported by XCSOAR standard Parser.cpp)
Test and understand if different dialects can be understood by XCSOAR via one bluetooth interface.
Yes this works. LeviAHRS shall be added to the NMEA output data.
The NMEA output has been reworked.
-> DONE