From defe466259e30a26e906888cbb961ff498a5a39a Mon Sep 17 00:00:00 2001
From: Oliver Ford <gitconf@oliford.co.uk>
Date: Fri, 26 May 2017 01:01:06 +0200
Subject: [PATCH] Add NMEA statements to NMEALogger for all raw and filtered
 I2CBaro pressure data.

---
 src/Android/I2CbaroDevice.cpp | 38 ++++++++++++++++++++++++++++++++------
 1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/src/Android/I2CbaroDevice.cpp b/src/Android/I2CbaroDevice.cpp
index 846974f..f386b4d 100644
--- a/src/Android/I2CbaroDevice.cpp
+++ b/src/Android/I2CbaroDevice.cpp
@@ -28,6 +28,8 @@ Copyright_License {
 #include "Components.hpp"
 #include "Interface.hpp"
 #include "LogFile.hpp"
+#include "Logger/NMEALogger.hpp"
+#include <stdio.h>
 
 static Java::TrivialClass i2cbaro_class;
 static jmethodID i2cbaro_ctor, close_method;
@@ -104,6 +106,10 @@ I2CbaroDevice::onI2CbaroValues(unsigned sensor, AtmosphericPressure pressure)
   basic.UpdateClock();
   basic.alive.Update(basic.clock);
 
+  char nmeaLine[64];  
+  snprintf(nmeaLine, 64, "$PSRAW%i,%f", sensor, pressure.GetHectoPascal());
+  NMEALogger::Log(nmeaLine);
+
   if (pressure.IsPlausible()) {
     double param;
 
@@ -116,6 +122,8 @@ I2CbaroDevice::onI2CbaroValues(unsigned sensor, AtmosphericPressure pressure)
     }
 
     kalman_filter.Update(pressure.GetHectoPascal(), param);
+    AtmosphericPressure procPressure;
+    double procPressureVal;
 
     switch (press_use) {
       case DeviceConfig::PressureUse::NONE:
@@ -123,18 +131,30 @@ I2CbaroDevice::onI2CbaroValues(unsigned sensor, AtmosphericPressure pressure)
 
       case DeviceConfig::PressureUse::STATIC_ONLY:
         static_p = kalman_filter.GetXAbs();
-        basic.ProvideStaticPressure(AtmosphericPressure::HectoPascal(static_p));
+        procPressure = AtmosphericPressure::HectoPascal(static_p);
+        basic.ProvideStaticPressure(procPressure);
+        snprintf(nmeaLine, 64, "$PSSTC%i,%f", sensor, procPressure.GetHectoPascal());
+        NMEALogger::Log(nmeaLine);
         break;
 
       case DeviceConfig::PressureUse::STATIC_WITH_VARIO:
         static_p = pressure.GetHectoPascal();
-        basic.ProvideNoncompVario(ComputeNoncompVario(kalman_filter.GetXAbs(), kalman_filter.GetXVel()));
-        basic.ProvideStaticPressure(AtmosphericPressure::HectoPascal(static_p));
+        procPressureVal = ComputeNoncompVario(kalman_filter.GetXAbs(), kalman_filter.GetXVel());
+        basic.ProvideNoncompVario(procPressureVal);
+        snprintf(nmeaLine, 64, "$PSVAR%i,%f", sensor, procPressureVal);
+        NMEALogger::Log(nmeaLine);
+
+        procPressure = AtmosphericPressure::HectoPascal(static_p);
+        basic.ProvideStaticPressure(procPressure);
+        snprintf(nmeaLine, 64, "$PSSTC%i,%f", sensor, procPressure.GetHectoPascal());
+        NMEALogger::Log(nmeaLine);
         break;
 
       case DeviceConfig::PressureUse::TEK_PRESSURE:
-        basic.ProvideTotalEnergyVario(ComputeNoncompVario(kalman_filter.GetXAbs(),
-                                                    kalman_filter.GetXVel()));
+        procPressureVal = ComputeNoncompVario(kalman_filter.GetXAbs(), kalman_filter.GetXVel());
+        basic.ProvideTotalEnergyVario(procPressureVal);
+        snprintf(nmeaLine, 64, "$PSTEN%i,%f", sensor, procPressureVal);
+        NMEALogger::Log(nmeaLine);
         break;
 
       case DeviceConfig::PressureUse::PITOT:
@@ -143,13 +163,19 @@ I2CbaroDevice::onI2CbaroValues(unsigned sensor, AtmosphericPressure pressure)
           if (dyn < 0.31)
             // suppress speeds below ~25 km/h
             dyn = 0;
-          basic.ProvideDynamicPressure(AtmosphericPressure::HectoPascal(dyn));
+          procPressure = AtmosphericPressure::HectoPascal(dyn);
+          basic.ProvideDynamicPressure(procPressure);
+          snprintf(nmeaLine, 64, "$PSDYN%i,%f", sensor, procPressure.GetHectoPascal());
+          NMEALogger::Log(nmeaLine);
         }
         break;
 
       case DeviceConfig::PressureUse::PITOT_ZERO:
         pitot_offset = kalman_filter.GetXAbs() - static_p;
         basic.ProvideSensorCalibration(1, pitot_offset);
+	snprintf(nmeaLine, 64, "$PSCAL%i,%f", sensor, pitot_offset);
+        NMEALogger::Log(nmeaLine);
+
         break;
     }
   }
-- 
2.7.4

