From f40428f9fef48954f99475b7fad7bfc1bf60abd7 Mon Sep 17 00:00:00 2001
From: sawinglogz <3787776-sawinglogz@users.noreply.gitlab.com>
Date: Mon, 3 Feb 2020 15:37:37 -0500
Subject: [PATCH] Identify previously unknown Viatom vibration field.

---
 oscar/SleepLib/loader_plugins/viatom_loader.cpp | 6 +++---
 oscar/SleepLib/loader_plugins/viatom_loader.h   | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/oscar/SleepLib/loader_plugins/viatom_loader.cpp b/oscar/SleepLib/loader_plugins/viatom_loader.cpp
index abe9db14..fdd41e7b 100644
--- a/oscar/SleepLib/loader_plugins/viatom_loader.cpp
+++ b/oscar/SleepLib/loader_plugins/viatom_loader.cpp
@@ -352,9 +352,9 @@ QList<ViatomFile::Record> ViatomFile::ReadData()
     // Read all Pulse, SPO2 and Motion data
     do {
         ViatomFile::Record rec;
-        in >> rec.spo2 >> rec.hr >> rec.oximetry_invalid >> rec.motion >> rec._unk;
+        in >> rec.spo2 >> rec.hr >> rec.oximetry_invalid >> rec.motion >> rec.vibration;
         CHECK_VALUES(rec.oximetry_invalid, 0, 0xFF);
-        CHECK_VALUE(rec._unk, 0);  // maybe vibration, given column label in CSV
+        CHECK_VALUES(rec.vibration, 0, 0x80);  // 0x80 when vibration is triggered
         if (rec.oximetry_invalid == 0xFF) {
             CHECK_VALUE(rec.spo2, 0xFF);
             CHECK_VALUE(rec.hr, 0xFF);
@@ -375,7 +375,7 @@ QList<ViatomFile::Record> ViatomFile::ReadData()
                 || a.hr != b.hr
                 || a.oximetry_invalid != b.oximetry_invalid
                 || a.motion != b.motion
-                || a._unk != b._unk) {
+                || a.vibration != b.vibration) {
                 all_are_duplicated = false;
                 break;
             }
diff --git a/oscar/SleepLib/loader_plugins/viatom_loader.h b/oscar/SleepLib/loader_plugins/viatom_loader.h
index a919cb64..55fe88f3 100644
--- a/oscar/SleepLib/loader_plugins/viatom_loader.h
+++ b/oscar/SleepLib/loader_plugins/viatom_loader.h
@@ -66,7 +66,7 @@ public:
         unsigned char hr;
         unsigned char oximetry_invalid;
         unsigned char motion;
-        unsigned char _unk;
+        unsigned char vibration;
     };
     ViatomFile(QFile & file);
     ~ViatomFile() = default;