From cdeba58c5dd60eebcead129e58b3b6232253421d Mon Sep 17 00:00:00 2001 From: sawinglogz <3787776-sawinglogz@users.noreply.gitlab.com> Date: Mon, 3 Feb 2020 11:43:13 -0500 Subject: [PATCH 1/3] Fix minor cleanup bugs in the Resmed regression tests that were causing crashes. --- oscar/SleepLib/profiles.cpp | 15 +++++++-------- oscar/tests/resmedtests.cpp | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/oscar/SleepLib/profiles.cpp b/oscar/SleepLib/profiles.cpp index c58bd182..98e421dc 100644 --- a/oscar/SleepLib/profiles.cpp +++ b/oscar/SleepLib/profiles.cpp @@ -94,14 +94,6 @@ Profile::~Profile() removeLock(); } - delete user; - delete doctor; - delete cpap; - delete oxi; - delete appearance; - delete session; - delete general; - // delete machine objects... for (auto & mach : m_machlist) { delete mach; @@ -111,6 +103,13 @@ Profile::~Profile() delete day; } + delete user; + delete doctor; + delete cpap; + delete oxi; + delete appearance; + delete session; + delete general; } bool Profile::Save(QString filename) diff --git a/oscar/tests/resmedtests.cpp b/oscar/tests/resmedtests.cpp index 865bb0f5..6c6eb0c1 100644 --- a/oscar/tests/resmedtests.cpp +++ b/oscar/tests/resmedtests.cpp @@ -30,9 +30,9 @@ void ResmedTests::initTestCase(void) void ResmedTests::cleanupTestCase(void) { delete AppSetting; - delete p_pref; delete p_profile; p_profile = nullptr; + delete p_pref; } 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 2/3] 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::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::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; From c83de24dec85bc57f29621fcd945be9e44ef6079 Mon Sep 17 00:00:00 2001 From: sawinglogz <3787776-sawinglogz@users.noreply.gitlab.com> Date: Tue, 4 Feb 2020 12:26:42 -0500 Subject: [PATCH 3/3] Update PRS1 loader based on peculiar EZ-Start sample data. It doesn't do anything differently yet, but it won't alert the user about untested data, now that we have a sample. --- oscar/SleepLib/loader_plugins/prs1_loader.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/oscar/SleepLib/loader_plugins/prs1_loader.cpp b/oscar/SleepLib/loader_plugins/prs1_loader.cpp index 878e6d5d..a8ddff75 100644 --- a/oscar/SleepLib/loader_plugins/prs1_loader.cpp +++ b/oscar/SleepLib/loader_plugins/prs1_loader.cpp @@ -6647,10 +6647,12 @@ bool PRS1DataChunk::ParseSettingsF0V6(const unsigned char* data, int size) CHECK_VALUE(data[pos], 0x80); // EZ-Start enabled this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_EZ_START, data[pos] != 0)); break; - case 0x42: // EZ-Start for Auto-CPAP? + case 0x42: // EZ-Start enabled for Auto-CPAP? // Seen on 500X110 before 0x2b when EZ-Start is enabled on Auto-CPAP CHECK_VALUE(len, 1); - CHECK_VALUE(data[pos], 0x80); // EZ-Start enabled + CHECK_VALUES(data[pos], 0x00, 0x80); // both seem to mean enabled, 0x00 appears when Opti-Start is used instead + // TODO: How to represent which one is active in practice? Should this always be "true" since + // either value means that the setting is enabled? this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_EZ_START, data[pos] != 0)); break; case 0x2b: // Ramp Type