From d98a76aa221eb01472762dce7cbbce01eef3c186 Mon Sep 17 00:00:00 2001 From: sawinglogz <3787776-sawinglogz@users.noreply.gitlab.com> Date: Sun, 13 Sep 2020 19:00:16 -0400 Subject: [PATCH] Recognize low MV alarm on 1030X and update warnings based on test data. --- Htmldocs/release_notes.html | 13 +++++++++++++ oscar/SleepLib/loader_plugins/prs1_loader.cpp | 17 ++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Htmldocs/release_notes.html b/Htmldocs/release_notes.html index 1fd701b5..fec4cf0e 100644 --- a/Htmldocs/release_notes.html +++ b/Htmldocs/release_notes.html @@ -11,6 +11,19 @@ For other languages, go to:
http://www.apneaboard.com/wiki/index.php/OSCAR_Release_Notes

+ Changes and fixes in OSCAR v1.2.0-beta-XXX +
Portions of OSCAR are © 2019-2020 by + The OSCAR Team

+

+

Changes and fixes in OSCAR v1.2.0-beta-2
Portions of OSCAR are © 2019-2020 by The OSCAR Team

diff --git a/oscar/SleepLib/loader_plugins/prs1_loader.cpp b/oscar/SleepLib/loader_plugins/prs1_loader.cpp index 080ea6c8..b9b59017 100644 --- a/oscar/SleepLib/loader_plugins/prs1_loader.cpp +++ b/oscar/SleepLib/loader_plugins/prs1_loader.cpp @@ -3331,7 +3331,10 @@ bool PRS1DataChunk::ParseEventsF3V6(void) // no additional data this->AddEvent(new PRS1ApneaAlarmEvent(t, 0)); break; - // case 0x0d? + case 0x0d: // Low MV Alarm + // no additional data + this->AddEvent(new PRS1LowMinuteVentilationAlarmEvent(t, 0)); + break; // case 0x0e? // case 0x0f? default: @@ -5963,7 +5966,7 @@ bool PRS1DataChunk::ParseSummaryF3V6(void) } CHECK_VALUE(data[pos+3], 1); CHECK_VALUE(data[pos+4], 1); - CHECK_VALUE(data[pos+5], 0); + CHECK_VALUES(data[pos+5], 0, 1); // 1 = Low Minute Ventilation Alarm set to 1 CHECK_VALUE(data[pos+6], 2); CHECK_VALUE(data[pos+7], 1); CHECK_VALUE(data[pos+8], 0); // 1 = patient disconnect alarm of 15 sec on F5V3, not sure where time is encoded @@ -7139,7 +7142,7 @@ void PRS1DataChunk::ParseHumidifierSettingV3(unsigned char byte1, unsigned char if (tubepresent) { // All tube temperature and humidity levels seen. } else if (humidadaptive) { - if (humidlevel == 1) UNEXPECTED_VALUE(humidlevel, "[0,2-5]"); + // All humidity levels seen. } else if (humidfixed) { if (humidlevel == 0) UNEXPECTED_VALUE(humidlevel, "1-5"); } @@ -8341,8 +8344,12 @@ bool PRS1Import::ImportEvents() // First make a list of the mask-on slices that will be imported (nonzero duration) QVector maskOn; for (auto & slice : m_slices) { - if (slice.status == MaskOn && slice.end > slice.start) { - maskOn.append(slice); + if (slice.status == MaskOn) { + if (slice.end > slice.start) { + maskOn.append(slice); + } else { + qWarning() << this->sessionid << "Dropping empty mask-on slice:" << ts(slice.start); + } } } // Then go through each required channel and make sure each eventlist is within