diff options
author | Andrew LeCain <alecain@google.com> | 2019-02-20 09:44:01 -0800 |
---|---|---|
committer | Ben Fennema <fennema@google.com> | 2019-02-20 22:02:25 -0800 |
commit | 9301a0b25ef1b03a56cc9429fd2e7471a7f49e35 (patch) | |
tree | 5adeb4d08cfa2f45c1f3b76aff897924179aa3d5 | |
parent | 52bd2fa354a2edba9b7c1e93b66b426d0e5c8b91 (diff) | |
download | device_google_contexthub-9301a0b25ef1b03a56cc9429fd2e7471a7f49e35.tar.gz device_google_contexthub-9301a0b25ef1b03a56cc9429fd2e7471a7f49e35.tar.bz2 device_google_contexthub-9301a0b25ef1b03a56cc9429fd2e7471a7f49e35.zip |
nanotool: Add support for compressed mag samplesandroid-q-preview-6android-q-preview-5android-q-preview-4android-q-preview-2.5android-q-preview-1android-o-mr1-iot-release-1.0.12android-o-mr1-iot-release-1.0.10oreo-mr1-iot-release
BMI160 now outputs compressed mag samples, so add support
to nanotool to handle them
Test: On Pixel 1: nanotool -s mag:50 and verify compressed_mag data is received
Change-Id: I7a5c98a5271f823bb2d4c2b85567af723df3f64b
-rw-r--r-- | util/nanotool/contexthub.cpp | 1 | ||||
-rw-r--r-- | util/nanotool/contexthub.h | 1 | ||||
-rw-r--r-- | util/nanotool/sensorevent.cpp | 25 |
3 files changed, 23 insertions, 4 deletions
diff --git a/util/nanotool/contexthub.cpp b/util/nanotool/contexthub.cpp index 7a3df87b..e240d558 100644 --- a/util/nanotool/contexthub.cpp +++ b/util/nanotool/contexthub.cpp @@ -83,6 +83,7 @@ struct SensorTypeAlias { 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 8dfce260..582dacb0 100644 --- a/util/nanotool/contexthub.h +++ b/util/nanotool/contexthub.h @@ -70,6 +70,7 @@ enum class SensorType { Vsync, CompressedAccel, WristTilt = 39, + CompressedMag = 59, Humidity = 61, Max_ diff --git a/util/nanotool/sensorevent.cpp b/util/nanotool/sensorevent.cpp index 5f095055..2f84fa77 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 @@ std::unique_ptr<SensorEvent> SensorEvent::FromBytes( break; case SensorType::CompressedAccel: + case SensorType::CompressedMag: sensor_event = new CompressedTripleAxisSensorEvent(); break; @@ -259,6 +262,7 @@ uint8_t TripleAxisSensorEvent::GetSampleDataSize() const { std::string CompressedTripleAxisSensorEvent::StringForSample( uint8_t index) const { + float compressedSampleRatio; const CompressedTripleAxisDataPoint *sample = reinterpret_cast<const CompressedTripleAxisDataPoint *>( GetSampleAtIndex(index)); @@ -269,9 +273,22 @@ std::string CompressedTripleAxisSensorEvent::StringForSample( 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", |