From 06a39eb7dfa72d71daf1cd4ee867e3684f749334 Mon Sep 17 00:00:00 2001
From: Mark Watkins
Date: Sat, 16 Apr 2016 02:11:45 +1000
Subject: [PATCH 1/2] Support for PRS1 960t Family 5.2 Event File
---
.../SleepLib/loader_plugins/prs1_loader.cpp | 157 ++++++++++++------
1 file changed, 105 insertions(+), 52 deletions(-)
diff --git a/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp b/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp
index 27d2d219..dec5a179 100644
--- a/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp
+++ b/sleepyhead/SleepLib/loader_plugins/prs1_loader.cpp
@@ -866,6 +866,16 @@ bool PRS1Import::ParseF5Events()
// }
// Code[2]->AddEvent(t,data0);
break;
+ case 0x03: // BIPAP Pressure
+ qDebug() << "0x03 Observed in ASV data!!????";
+
+ data0 = buffer[pos++];
+ data1 = buffer[pos++];
+ // data0/=10.0;
+ // data1/=10.0;
+ // session->AddEvent(new Event(t,CPAP_EAP, 0, data, 1));
+ // session->AddEvent(new Event(t,CPAP_IAP, 0, &data1, 1));
+ break;
case 0x04: // Timed Breath
data0 = buffer[pos++];
@@ -898,16 +908,20 @@ bool PRS1Import::ParseF5Events()
case 0x08: // ???
data0 = buffer[pos++];
tt -= qint64(data0) * 1000L; // Subtract Time Offset
- qDebug() << "Code 8 found at " << hex << pos - 1 << " " << tt;
+ //qDebug() << "Code 8 found at " << hex << pos - 1 << " " << tt;
- if (!Code[10]) {
- if (!(Code[10] = session->AddEventList(cpapcode, EVL_Event))) { return false; }
+ if (event->familyVersion>=2) {
+ HY->AddEvent(tt, data0);
+ } else {
+ if (!Code[10]) {
+ if (!(Code[10] = session->AddEventList(cpapcode, EVL_Event))) { return false; }
+ }
+
+ //????
+ //data1=buffer[pos++]; // ???
+ Code[10]->AddEvent(tt, data0);
+ //pos++;
}
-
- //????
- //data1=buffer[pos++]; // ???
- Code[10]->AddEvent(tt, data0);
- pos++;
break;
case 0x09: // ASV Codes
@@ -922,12 +936,15 @@ bool PRS1Import::ParseF5Events()
case 0x0a:
data0 = buffer[pos++];
tt -= qint64(data0) * 1000L; // Subtract Time Offset
+ if (event->familyVersion>=2) {
+ FL->AddEvent(tt, data0);
+ } else {
+ if (!Code[7]) {
+ if (!(Code[7] = session->AddEventList(cpapcode, EVL_Event))) { return false; }
+ }
- if (!Code[7]) {
- if (!(Code[7] = session->AddEventList(cpapcode, EVL_Event))) { return false; }
+ Code[7]->AddEvent(tt, data0);
}
-
- Code[7]->AddEvent(tt, data0);
break;
@@ -951,16 +968,36 @@ bool PRS1Import::ParseF5Events()
break;
case 0x0c:
- data0 = buffer[pos++];
- tt -= qint64(data0) * 1000L; // Subtract Time Offset
- qDebug() << "Code 12 found at " << hex << pos - 1 << " " << tt;
- if (!Code[8]) {
- if (!(Code[8] = session->AddEventList(cpapcode, EVL_Event))) { return false; }
+ if (event->familyVersion>=2) {
+ data0 = (buffer[pos + 1] << 8 | buffer[pos]);
+ data0 *= 2;
+ pos += 2;
+ data1 = buffer[pos++];
+ tt = t - qint64(data1) * 1000L;
+
+ if (!PB) {
+ if (!(PB = session->AddEventList(cpapcode, EVL_Event))) {
+ qDebug() << "!PB addeventlist exit";
+ return false;
+ }
+ }
+
+ PB->AddEvent(tt, data0);
+
+ } else {
+ data0 = buffer[pos++];
+ tt -= qint64(data0) * 1000L; // Subtract Time Offset
+ qDebug() << "Code 12 found at " << hex << pos - 1 << " " << tt;
+
+
+ if (!Code[8]) {
+ if (!(Code[8] = session->AddEventList(cpapcode, EVL_Event))) { return false; }
+ }
+
+ Code[8]->AddEvent(tt, data0);
+ pos += 2;
}
-
- Code[8]->AddEvent(tt, data0);
- pos += 2;
break;
case 0x0d: // All the other ASV graph stuff.
@@ -1002,34 +1039,53 @@ bool PRS1Import::ParseF5Events()
PS->AddEvent(t, data2); // Pressure Support
if (event->familyVersion >= 1) {
data0 = buffer[pos++];
-
}
break;
- case 0x03: // BIPAP Pressure
- qDebug() << "0x03 Observed in ASV data!!????";
-
- data0 = buffer[pos++];
- data1 = buffer[pos++];
- // data0/=10.0;
- // data1/=10.0;
- // session->AddEvent(new Event(t,CPAP_EAP, 0, data, 1));
- // session->AddEvent(new Event(t,CPAP_IAP, 0, &data1, 1));
- break;
-
- case 0x11: // Not Leak Rate
- qDebug() << "0x11 Observed in ASV data!!????";
- //if (!Code[24]) {
- // Code[24]=new EventList(cpapcode,EVL_Event);
- //}
- //Code[24]->AddEvent(t,buffer[pos++]);
- break;
-
case 0x0e: // Unknown
- qDebug() << "0x0E Observed in ASV data!!????";
- data0 = buffer[pos++]; // << 8) | buffer[pos];
+ // Family 5.2 has this code
+ if (event->familyVersion>=2) {
+ EPAP->AddEvent(t, data0=buffer[pos+9]); // 9
+ IPAP->AddEvent(t, data1=buffer[pos+0]); // 0
+ IPAPLo->AddEvent(t, buffer[pos+1]); // 1
+ IPAPHi->AddEvent(t, buffer[pos+2]); // 2
+ LEAK->AddEvent(t, buffer[pos+3]); // 3
+ TV->AddEvent(t, buffer[pos+7]); // 7
+ RR->AddEvent(t, buffer[pos+4]); // 4
+ PTB->AddEvent(t, buffer[pos+5]); // 5
+ MV->AddEvent(t, buffer[pos+6]); //6
+ SNORE->AddEvent(t, data2 = buffer[pos+8]); //??
+
+ if (data2 > 0) {
+ if (!VS) {
+ if (!(VS = session->AddEventList(CPAP_VSnore, EVL_Event))) {
+ qDebug() << "!VS eventlist exit";
+ return false;
+ }
+ }
+
+ VS->AddEvent(t, 0); //data2); // VSnore
+ }
+ data2 = data1 - data0;
+ PS->AddEvent(t, data2); // Pressure Support
+ pos+=11;
+ } else {
+ qDebug() << "0x0E Observed in ASV data!!????";
+ data0 = buffer[pos++]; // << 8) | buffer[pos];
+
+ }
//session->AddEvent(new Event(t,cpapcode, 0, data, 1));
break;
+ case 0x0f:
+ qDebug() << "0x0f Observed in ASV data!!????";
+
+ data0 = buffer[pos + 1] << 8 | buffer[pos];
+ pos += 2;
+ data1 = buffer[pos]; //|buffer[pos+1] << 8
+ pos += 1;
+ tt -= qint64(data1) * 1000L;
+ //session->AddEvent(new Event(tt,cpapcode, 0, data, 2));
+ break;
case 0x10: // Unknown
data0 = buffer[pos + 1] << 8 | buffer[pos];
@@ -1045,18 +1101,15 @@ bool PRS1Import::ParseF5Events()
// data2 = buffer[pos++];
//session->AddEvent(new Event(t,cpapcode, 0, data, 3));
break;
-
- case 0x0f:
- qDebug() << "0x0f Observed in ASV data!!????";
-
- data0 = buffer[pos + 1] << 8 | buffer[pos];
- pos += 2;
- data1 = buffer[pos]; //|buffer[pos+1] << 8
- pos += 1;
- tt -= qint64(data1) * 1000L;
- //session->AddEvent(new Event(tt,cpapcode, 0, data, 2));
+ case 0x11: // Not Leak Rate
+ qDebug() << "0x11 Observed in ASV data!!????";
+ //if (!Code[24]) {
+ // Code[24]=new EventList(cpapcode,EVL_Event);
+ //}
+ //Code[24]->AddEvent(t,buffer[pos++]);
break;
+
case 0x12: // Summary
qDebug() << "0x12 Observed in ASV data!!????";
data0 = buffer[pos++];
From 0e9fd1a2f4b79b5b996a0b73989d2458f2221ef8 Mon Sep 17 00:00:00 2001
From: Mark Watkins
Date: Sat, 16 Apr 2016 03:15:54 +1000
Subject: [PATCH 2/2] Version bump, clean up release notes, still more to do on
windows
---
sleepyhead/build_number.h | 2 +-
sleepyhead/docs/release_notes.html | 17 +++++++++++++++++
sleepyhead/main.cpp | 24 +++++++++++++-----------
sleepyhead/scripts/build_number | 2 +-
4 files changed, 32 insertions(+), 13 deletions(-)
diff --git a/sleepyhead/build_number.h b/sleepyhead/build_number.h
index 4efaa269..6025edac 100644
--- a/sleepyhead/build_number.h
+++ b/sleepyhead/build_number.h
@@ -1 +1 @@
-const int build_number = 1;
+const int build_number = 2;
diff --git a/sleepyhead/docs/release_notes.html b/sleepyhead/docs/release_notes.html
index d4da15d7..6d5f88b4 100644
--- a/sleepyhead/docs/release_notes.html
+++ b/sleepyhead/docs/release_notes.html
@@ -1,4 +1,20 @@
+Changes and fixes in v1.0.0-beta-2
+ "+QObject::tr("After four years in the making, this build brings SleepyHead into the final beta phase.")+" "+QObject::tr("Things are not perfect yet, but the focus from now is putting on the finishing touches. ")+
- QObject::tr("This version brings support for the new Philips Respironics DreamStation, and older PRS1 1060P models.")+
- " "+QObject::tr("After four years in the making, this build brings SleepyHead into the final beta phase.")+" "+QObject::tr("Things are not perfect yet, but the focus from now is putting on the finishing touches. ")+
+// QObject::tr("This version brings support for the new Philips Respironics DreamStation, and older PRS1 1060P models.")+
+// " "+QObject::tr("Greetings!")+" "+QObject::tr("Greetings!")+"
+
+
+
Changes and fixes in v1.0.0-beta-1
@@ -7,6 +23,7 @@
+
Changes and fixes in v1.0.0-beta-0
diff --git a/sleepyhead/main.cpp b/sleepyhead/main.cpp
index cea8e041..86296938 100644
--- a/sleepyhead/main.cpp
+++ b/sleepyhead/main.cpp
@@ -85,25 +85,27 @@ void release_notes()
QVBoxLayout * layout = new QVBoxLayout(&relnotes);
QWebView * web = new QWebView(&relnotes);
- QString welcomeMessage = ""
- "
"+QObject::tr("Sleep Well, and good luck!")+"
" - ""+"JediMark"+"
"+QObject::tr("Sleep Well, and good luck!")+"
" +// ""+"JediMark"+"