Snap for 5335706 from 86028528d62951e8b323d0aba55a6e85563253a0 to qt-release

Change-Id: I2ff544fdac653cd50aa6625e4b7dcea97a459fde
diff --git a/util/nanotool/contexthub.cpp b/util/nanotool/contexthub.cpp
index 7a3df87..e240d55 100644
--- a/util/nanotool/contexthub.cpp
+++ b/util/nanotool/contexthub.cpp
@@ -83,6 +83,7 @@
 
 static const SensorTypeAlias sensor_aliases_[] = {
     { SensorType::Accel, SensorType::CompressedAccel, "compressed_accel" },
+    { SensorType::Magnetometer, SensorType::CompressedMag, "compressed_mag" },
 };
 
 bool SensorTypeIsAliasOf(SensorType sensor_type, SensorType alias) {
diff --git a/util/nanotool/contexthub.h b/util/nanotool/contexthub.h
index 8dfce26..582dacb 100644
--- a/util/nanotool/contexthub.h
+++ b/util/nanotool/contexthub.h
@@ -70,6 +70,7 @@
     Vsync,
     CompressedAccel,
     WristTilt = 39,
+    CompressedMag = 59,
     Humidity = 61,
 
     Max_
diff --git a/util/nanotool/sensorevent.cpp b/util/nanotool/sensorevent.cpp
index 5f09505..2f84fa7 100644
--- a/util/nanotool/sensorevent.cpp
+++ b/util/nanotool/sensorevent.cpp
@@ -24,7 +24,9 @@
 
 namespace android {
 
-constexpr float kCompressedSampleRatio(8.0f * 9.81f / 32768.0f);
+constexpr float kCompressedAccelSampleRatio(8.0f * 9.81f / 32768.0f);
+constexpr float kCompressedMagSampleRatio(0.15f); //For AK09915
+//constexpr float kCompressedMagSampleRatio(0.0625f); //For BMM150
 
 /* SensorEvent ****************************************************************/
 
@@ -81,6 +83,7 @@
           break;
 
       case SensorType::CompressedAccel:
+      case SensorType::CompressedMag:
           sensor_event = new CompressedTripleAxisSensorEvent();
           break;
 
@@ -259,6 +262,7 @@
 
 std::string CompressedTripleAxisSensorEvent::StringForSample(
         uint8_t index) const {
+    float compressedSampleRatio;
     const CompressedTripleAxisDataPoint *sample =
         reinterpret_cast<const CompressedTripleAxisDataPoint *>(
             GetSampleAtIndex(index));
@@ -269,9 +273,22 @@
     bool is_bias_sample = first_sample->biasPresent
         && first_sample->biasSample == index;
 
-    float x = sample->ix * kCompressedSampleRatio;
-    float y = sample->iy * kCompressedSampleRatio;
-    float z = sample->iz * kCompressedSampleRatio;
+    switch(GetSensorType())
+    {
+        case SensorType::CompressedAccel:
+            compressedSampleRatio = kCompressedAccelSampleRatio;
+            break;
+        case SensorType::CompressedMag:
+            compressedSampleRatio = kCompressedMagSampleRatio;
+            break;
+        default:
+            LOGW("Unsupported compressed sensor type");
+            compressedSampleRatio = 1.0;
+    }
+
+    float x = sample->ix * compressedSampleRatio;
+    float y = sample->iy * compressedSampleRatio;
+    float z = sample->iz * compressedSampleRatio;
 
     char buffer[128];
     snprintf(buffer, sizeof(buffer), "  X:%f Y:%f Z:%f @ %s%s\n",