Stop using inconsistent PRS1 Summary duration field, added PRS1 Large Leak span

This commit is contained in:
Mark Watkins 2014-05-03 18:28:05 +10:00
parent acfffbc980
commit a6dbdf3d15
11 changed files with 96 additions and 66 deletions

View File

@ -149,7 +149,10 @@ void gLineOverlayBar::paint(gGraph &w, int left, int topp, int width, int height
x1 = width + left; x1 = width + left;
} }
quads->add(x2, start_py, x1, start_py, x1, start_py + height, x2, start_py + height, quads->add(x2, start_py,
x1, start_py,
x1, start_py + height,
x2, start_py + height,
m_flag_color.rgba()); m_flag_color.rgba());
if (quads->full()) { if (quads->full()) {

View File

@ -205,6 +205,8 @@ QString STR_TR_RespRate; // Respiratory Rate
QString STR_TR_Snore; QString STR_TR_Snore;
QString STR_TR_Leak; QString STR_TR_Leak;
QString STR_TR_Leaks; QString STR_TR_Leaks;
QString STR_TR_LargeLeak;
QString STR_TR_LL;
QString STR_TR_TotalLeaks; QString STR_TR_TotalLeaks;
QString STR_TR_UnintentionalLeaks; QString STR_TR_UnintentionalLeaks;
QString STR_TR_MaskPressure; QString STR_TR_MaskPressure;
@ -359,6 +361,8 @@ void initializeStrings()
STR_TR_Snore = QObject::tr("Snore"); STR_TR_Snore = QObject::tr("Snore");
STR_TR_Leak = QObject::tr("Leak"); STR_TR_Leak = QObject::tr("Leak");
STR_TR_Leaks = QObject::tr("Leaks"); STR_TR_Leaks = QObject::tr("Leaks");
STR_TR_LargeLeak = QObject::tr("Large Leak");
STR_TR_LL = QObject::tr("LL"); // Large Leak
STR_TR_TotalLeaks = QObject::tr("Total Leaks"); STR_TR_TotalLeaks = QObject::tr("Total Leaks");
STR_TR_UnintentionalLeaks = QObject::tr("Unintentional Leaks"); STR_TR_UnintentionalLeaks = QObject::tr("Unintentional Leaks");
STR_TR_MaskPressure = QObject::tr("MaskPressure"); STR_TR_MaskPressure = QObject::tr("MaskPressure");

View File

@ -212,6 +212,8 @@ extern QString STR_TR_TidalVolume;
extern QString STR_TR_RespRate; // Respiratory Rate extern QString STR_TR_RespRate; // Respiratory Rate
extern QString STR_TR_Snore; extern QString STR_TR_Snore;
extern QString STR_TR_Leak; extern QString STR_TR_Leak;
extern QString STR_TR_LargeLeak;
extern QString STR_TR_LL;
extern QString STR_TR_Leaks; extern QString STR_TR_Leaks;
extern QString STR_TR_TotalLeaks; extern QString STR_TR_TotalLeaks;
extern QString STR_TR_UnintentionalLeaks; extern QString STR_TR_UnintentionalLeaks;

View File

@ -721,13 +721,17 @@ bool PRS1Loader::ParseSummary(Machine *mach, qint32 sequence, quint32 timestamp,
session->settings[PRS1_SysOneResistSet] = (int)data[offset + 0x0a] & 7; session->settings[PRS1_SysOneResistSet] = (int)data[offset + 0x0a] & 7;
} }
// up to this point appears to be correct, everything after is pretty much crap
// Summary files vary too much between Families/versions
unsigned duration; unsigned duration;
// up to this point appears to be correct for 0x01 & 0x00
if (size < 59) { if (size < 59) {
duration = data[offset + 0x12] | (data[offset + 0x13] << 8); // duration = data[offset + 0x12] | (data[offset + 0x13] << 8);
duration *= 2; // duration *= 2;
session->really_set_last(qint64(timestamp + duration) * 1000L); // session->really_set_last(qint64(timestamp + duration) * 1000L);
if (max > 0) { if (max > 0) {
session->setMin(CPAP_Pressure, min); session->setMin(CPAP_Pressure, min);
@ -737,25 +741,25 @@ bool PRS1Loader::ParseSummary(Machine *mach, qint32 sequence, quint32 timestamp,
} else { } else {
// 0X28 & 0X29 is length on r5 // 0X28 & 0X29 is length on r5
if (family == 0 && familyVersion >= 4) { // if (family == 0 && familyVersion >= 4) {
offset += 12; // offset += 12;
} // }
// on some 60 series it's one off. or was the original 60 series patch wrong? // on some 60 series it's one off. or was the original 60 series patch wrong?
// I verified this comment below against several data samples compared with encore reports. // I verified this comment below against several data samples compared with encore reports.
//duration=data[0x1B] | data[0x1C] << 8) // Session length in seconds //duration=data[0x1B] | data[0x1C] << 8) // Session length in seconds
duration = data[offset + 0x14] | (data[offset + 0x15] << 8); // duration = data[offset + 0x14] | (data[offset + 0x15] << 8);
if (!duration) { // if (!duration) {
qDebug() << "!duration exit"; // qDebug() << "!duration exit";
delete session; // delete session;
return false; // return false;
} // }
session->really_set_last(qint64(timestamp + duration) * 1000L); // session->really_set_last(qint64(timestamp + duration) * 1000L);
float hours = float(duration) / 3600.0; // float hours = float(duration) / 3600.0;
// Not using these because sometimes this summary is broken. // Not using these because sometimes this summary is broken.
//EventDataType minp,maxp,avgp,p90p; //EventDataType minp,maxp,avgp,p90p;
@ -765,41 +769,42 @@ bool PRS1Loader::ParseSummary(Machine *mach, qint32 sequence, quint32 timestamp,
//p90p=float(data[offset+0x18])/10.0; //p90p=float(data[offset+0x18])/10.0;
//avgp=float(data[offset+0x19])/10.0; //avgp=float(data[offset+0x19])/10.0;
short minp = data[offset + 0x16]; // Nope.. positions are too variant between models.. calculate the hard way during machine->Save()..
short maxp = data[offset + 0x17]; // short minp = data[offset + 0x16];
short medp = data[offset + 0x19]; // short maxp = data[offset + 0x17];
short p90p = data[offset + 0x18]; // short medp = data[offset + 0x19];
// short p90p = data[offset + 0x18];
if (family < 5) { // if (family < 5) {
if (minp > 0) { session->setMin(CPAP_Pressure, EventDataType(minp) * 0.10); } // if (minp > 0) { session->setMin(CPAP_Pressure, EventDataType(minp) * 0.10); }
// if (maxp > 0) { session->setMax(CPAP_Pressure, EventDataType(maxp) * 0.10); }
// if (medp > 0) { session->setWavg(CPAP_Pressure, EventDataType(medp) * 0.10); } // ??
if (maxp > 0) { session->setMax(CPAP_Pressure, EventDataType(maxp) * 0.10); } // session->m_gain[CPAP_Pressure] = 0.1;
// session->m_valuesummary[CPAP_Pressure][minp] = 5;
if (medp > 0) { session->setWavg(CPAP_Pressure, EventDataType(medp) * 0.10); } // ?? // session->m_valuesummary[CPAP_Pressure][medp] = 46;
// session->m_valuesummary[CPAP_Pressure][p90p] = 44;
session->m_gain[CPAP_Pressure] = 0.1; // session->m_valuesummary[CPAP_Pressure][maxp] = 5;
session->m_valuesummary[CPAP_Pressure][minp] = 5; // }
session->m_valuesummary[CPAP_Pressure][medp] = 46;
session->m_valuesummary[CPAP_Pressure][p90p] = 44;
session->m_valuesummary[CPAP_Pressure][maxp] = 5;
}
// if (p90p>0) { // if (p90p>0) {
// session->set90p(CPAP_Pressure,p90p); // session->set90p(CPAP_Pressure,p90p);
// } // }
int oc, cc, hc, rc, fc; // I can't rely on the position of any of this!
session->setCount(CPAP_Obstructive, oc = (int)data[offset + 0x1C] | (data[offset + 0x1D] << 8));
session->setCount(CPAP_ClearAirway, cc = (int)data[offset + 0x20] | (data[offset + 0x21] << 8));
session->setCount(CPAP_Hypopnea, hc = (int)data[offset + 0x2A] | (data[offset + 0x2B] << 8));
session->setCount(CPAP_RERA, rc = (int)data[offset + 0x2E] | (data[offset + 0x2F] << 8));
session->setCount(CPAP_FlowLimit, fc = (int)data[offset + 0x30] | (data[offset + 0x31] << 8));
session->setCph(CPAP_Obstructive, float(oc / hours)); // int oc, cc, hc, rc, fc;
session->setCph(CPAP_ClearAirway, float(cc / hours)); // session->setCount(CPAP_Obstructive, oc = (int)data[offset + 0x1C] | (data[offset + 0x1D] << 8));
session->setCph(CPAP_Hypopnea, float(hc / hours)); // session->setCount(CPAP_ClearAirway, cc = (int)data[offset + 0x20] | (data[offset + 0x21] << 8));
session->setCph(CPAP_RERA, float(rc / hours)); // session->setCount(CPAP_Hypopnea, hc = (int)data[offset + 0x2A] | (data[offset + 0x2B] << 8));
session->setCph(CPAP_FlowLimit, float(fc / hours)); // session->setCount(CPAP_RERA, rc = (int)data[offset + 0x2E] | (data[offset + 0x2F] << 8));
// session->setCount(CPAP_FlowLimit, fc = (int)data[offset + 0x30] | (data[offset + 0x31] << 8));
// session->setCph(CPAP_Obstructive, float(oc / hours));
// session->setCph(CPAP_ClearAirway, float(cc / hours));
// session->setCph(CPAP_Hypopnea, float(hc / hours));
// session->setCph(CPAP_RERA, float(rc / hours));
// session->setCph(CPAP_FlowLimit, float(fc / hours));
} }
// Set recommended Graph values.. // Set recommended Graph values..
@ -1416,16 +1421,17 @@ bool PRS1Loader::Parse002(qint32 sequence, quint32 timestamp, unsigned char *buf
//session->AddEvent(new Event(t,CPAP_CSR, data, 2)); //session->AddEvent(new Event(t,CPAP_CSR, data, 2));
break; break;
case 0x10: // Unknown case 0x10: // Unknown, Large Leak
data[0] = buffer[pos++]; // << 8) | buffer[pos]; data[0] = buffer[pos + 1] << 8 | buffer[pos];
pos += 2;
data[1] = buffer[pos++]; data[1] = buffer[pos++];
data[2] = buffer[pos++];
if (!Code[20]) { if (!Code[20]) {
if (!(Code[20] = session->AddEventList(PRS1_10, EVL_Event))) { return false; } if (!(Code[20] = session->AddEventList(PRS1_10, EVL_Event))) { return false; }
} }
Code[20]->AddEvent(t, data[0]); tt = t - qint64(data[1]) * 1000L;
Code[20]->AddEvent(tt, data[0]);
break; break;
case 0x0f: // Cheyne Stokes Respiration case 0x0f: // Cheyne Stokes Respiration
@ -1653,6 +1659,11 @@ bool PRS1Loader::OpenFile(Machine *mach, QString filename)
bool PRS1Loader::OpenWaveforms(SessionID sid, QString filename) bool PRS1Loader::OpenWaveforms(SessionID sid, QString filename)
{ {
if (sid == 1532) {
int i=5;
}
Session *session = new_sessions[sid]; Session *session = new_sessions[sid];
//int sequence,seconds,br,htype,version,numsignals; //int sequence,seconds,br,htype,version,numsignals;
QFile file(filename); QFile file(filename);
@ -1788,7 +1799,7 @@ bool PRS1Loader::OpenWaveforms(SessionID sid, QString filename)
wdur[i] += diff; wdur[i] += diff;
} }
} else if (diff > 0 && wlength[0] > 0) { } else if ((diff > 0) && (wlength[0] > 0)) {
qDebug() << "Timestamp resync" << block << diff << corrupt << duration << timestamp - lasttimestamp qDebug() << "Timestamp resync" << block << diff << corrupt << duration << timestamp - lasttimestamp
<< filename; << filename;
@ -1821,7 +1832,7 @@ bool PRS1Loader::OpenWaveforms(SessionID sid, QString filename)
//a->setMin(v*5); //a->setMin(v*5);
} }
session->updateLast(start + (qint64(wdur[i]) * 1000L)); session->updateLast((start + qint64(wdur[i])) * 1000L);
wlength[i] = 0; wlength[i] = 0;
wdur[i] = 0; wdur[i] = 0;
} }
@ -1881,7 +1892,7 @@ bool PRS1Loader::OpenWaveforms(SessionID sid, QString filename)
} else if (wc[i] == CPAP_MaskPressure) { } else if (wc[i] == CPAP_MaskPressure) {
} }
session->updateLast(start + qint64(wdur[i]) * 1000L); session->updateLast((start + qint64(wdur[i])) * 1000L);
} }
// lousy family 5 check to see if already has RespRate // lousy family 5 check to see if already has RespRate

View File

@ -23,7 +23,7 @@
//******************************************************************************************** //********************************************************************************************
// Please INCREMENT the following value when making changes to this loaders implementation. // Please INCREMENT the following value when making changes to this loaders implementation.
// //
const int prs1_data_version = 10; const int prs1_data_version = 11;
// //
//******************************************************************************************** //********************************************************************************************

View File

@ -189,10 +189,19 @@ void init()
"PressurePulse", QObject::tr("Pressure Pulse"), "PressurePulse", QObject::tr("Pressure Pulse"),
QObject::tr("A pulse of pressure 'pinged' to detect a closed airway."), QObject::tr("A pulse of pressure 'pinged' to detect a closed airway."),
QObject::tr("PP"), QObject::tr("events/hr"), DEFAULT, QColor("dark red"))); QObject::tr("PP"), QObject::tr("events/hr"), DEFAULT, QColor("dark red")));
// This Large Leak record is just a flag marker, used by Intellipap for one
schema::channel.add(GRP_CPAP, new Channel(CPAP_LeakFlag = 0x100a, DATA, SESSION, schema::channel.add(GRP_CPAP, new Channel(CPAP_LeakFlag = 0x100a, DATA, SESSION,
"LeakFlag", QObject::tr("Large Leak"), "LeakFlag", QObject::tr("Large Leak"),
QObject::tr("A large mask leak affecting machine performance."), QObject::tr("A large mask leak affecting machine performance."),
QObject::tr("LL"), QObject::tr("events/hr"), DEFAULT, QColor("dark blue"))); QObject::tr("LL"), QObject::tr("events/hr"), DEFAULT, QColor("light gray")));
// The following is a Large Leak record that references a waveform span
schema::channel.add(GRP_CPAP, new Channel(PRS1_10 = 0x1158, DATA, SESSION,
"LeakFlagSpan", QObject::tr("Large Leak"),
QObject::tr("A large mask leak affecting machine performance."),
QObject::tr("LL"), QObject::tr("events/hr"), DEFAULT, QColor("light gray")));
schema::channel.add(GRP_CPAP, new Channel(CPAP_NRI = 0x100b, DATA, SESSION, "NRI", schema::channel.add(GRP_CPAP, new Channel(CPAP_NRI = 0x100b, DATA, SESSION, "NRI",
QObject::tr("Non Responding Event"), QObject::tr("Non Responding Event"),
QObject::tr("A type of respiratory event that won't respond to a pressure increase."), QObject::tr("A type of respiratory event that won't respond to a pressure increase."),
@ -420,7 +429,6 @@ void init()
PRS1_0C = schema::channel["PRS1_0C"].id(); PRS1_0C = schema::channel["PRS1_0C"].id();
PRS1_0E = schema::channel["PRS1_0E"].id(); PRS1_0E = schema::channel["PRS1_0E"].id();
PRS1_0F = schema::channel["PRS1_0F"].id(); PRS1_0F = schema::channel["PRS1_0F"].id();
PRS1_10 = schema::channel["PRS1_10"].id();
PRS1_12 = schema::channel["PRS1_12"].id(); PRS1_12 = schema::channel["PRS1_12"].id();
PRS1_FlexMode = schema::channel["FlexMode"].id(); PRS1_FlexMode = schema::channel["FlexMode"].id();
PRS1_FlexSet = schema::channel["FlexSet"].id(); PRS1_FlexSet = schema::channel["FlexSet"].id();

View File

@ -68,6 +68,7 @@ QColor COLOR_Hypopnea = Qt::blue;
QColor COLOR_Obstructive = COLOR_Aqua; QColor COLOR_Obstructive = COLOR_Aqua;
QColor COLOR_Apnea = Qt::darkGreen; QColor COLOR_Apnea = Qt::darkGreen;
QColor COLOR_CSR = COLOR_LightGreen; QColor COLOR_CSR = COLOR_LightGreen;
QColor COLOR_LargeLeak = COLOR_LightGray;
QColor COLOR_ClearAirway = QColor("#b254cd"); QColor COLOR_ClearAirway = QColor("#b254cd");
QColor COLOR_RERA = COLOR_Gold; QColor COLOR_RERA = COLOR_Gold;
QColor COLOR_VibratorySnore = QColor("#ff4040"); QColor COLOR_VibratorySnore = QColor("#ff4040");

View File

@ -23,6 +23,7 @@ extern QColor COLOR_Hypopnea;
extern QColor COLOR_Obstructive; extern QColor COLOR_Obstructive;
extern QColor COLOR_Apnea; extern QColor COLOR_Apnea;
extern QColor COLOR_CSR; extern QColor COLOR_CSR;
extern QColor COLOR_LargeLeak;
extern QColor COLOR_ClearAirway; extern QColor COLOR_ClearAirway;
extern QColor COLOR_RERA; extern QColor COLOR_RERA;
extern QColor COLOR_VibratorySnore; extern QColor COLOR_VibratorySnore;

View File

@ -184,7 +184,9 @@ Daily::Daily(QWidget *parent,gGraphView * shared)
gFlagsGroup *fg=new gFlagsGroup(); gFlagsGroup *fg=new gFlagsGroup();
SF->AddLayer(AddCPAP(fg)); SF->AddLayer(AddCPAP(fg));
fg->AddLayer((new gFlagsLine(CPAP_CSR, COLOR_CSR, STR_TR_PB,false,FT_Span))); fg->AddLayer((new gFlagsLine(CPAP_CSR, COLOR_CSR, STR_TR_PB, false, FT_Span)));
fg->AddLayer((new gFlagsLine(PRS1_10, COLOR_LargeLeak, STR_TR_LL, false, FT_Span)));
fg->AddLayer((new gFlagsLine(CPAP_ClearAirway, COLOR_ClearAirway, STR_TR_CA,false))); fg->AddLayer((new gFlagsLine(CPAP_ClearAirway, COLOR_ClearAirway, STR_TR_CA,false)));
fg->AddLayer((new gFlagsLine(CPAP_Obstructive, COLOR_Obstructive, STR_TR_OA,true))); fg->AddLayer((new gFlagsLine(CPAP_Obstructive, COLOR_Obstructive, STR_TR_OA,true)));
fg->AddLayer((new gFlagsLine(CPAP_Apnea, COLOR_Apnea, STR_TR_UA))); fg->AddLayer((new gFlagsLine(CPAP_Apnea, COLOR_Apnea, STR_TR_UA)));
@ -215,7 +217,8 @@ Daily::Daily(QWidget *parent,gGraphView * shared)
gLineOverlaySummary *los=new gLineOverlaySummary(tr("Selection AHI"),5,-4); gLineOverlaySummary *los=new gLineOverlaySummary(tr("Selection AHI"),5,-4);
AddCPAP(l); AddCPAP(l);
FRW->AddLayer(new gXGrid()); FRW->AddLayer(new gXGrid());
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_CSR, COLOR_CSR, STR_TR_CSR,FT_Span))); FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_CSR, COLOR_CSR, STR_TR_CSR, FT_Span)));
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_10, COLOR_LargeLeak, STR_TR_LL, FT_Span)));
FRW->AddLayer(l); FRW->AddLayer(l);
FRW->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin); FRW->AddLayer(new gYAxis(),LayerLeft,gYAxis::Margin);
FRW->AddLayer(new gXAxis(),LayerBottom,0,20); FRW->AddLayer(new gXAxis(),LayerBottom,0,20);
@ -223,13 +226,12 @@ Daily::Daily(QWidget *parent,gGraphView * shared)
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_PressurePulse,COLOR_PressurePulse,STR_TR_PP,FT_Dot))); FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_PressurePulse,COLOR_PressurePulse,STR_TR_PP,FT_Dot)));
//FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_Pressure, COLOR_White,STR_TR_P,FT_Dot))); //FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_Pressure, COLOR_White,STR_TR_P,FT_Dot)));
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_0B,COLOR_Blue,"0B",FT_Dot))); FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_0B,COLOR_Blue,"0B",FT_Dot)));
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_10,COLOR_Orange,"10",FT_Dot)));
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_0E,COLOR_DarkRed,"0E",FT_Dot))); FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_0E,COLOR_DarkRed,"0E",FT_Dot)));
if (PROFILE.general->calculateRDI()) if (PROFILE.general->calculateRDI()) {
FRW->AddLayer(AddCPAP(los->add(new gLineOverlayBar(CPAP_RERA, COLOR_RERA, STR_TR_RE)))); FRW->AddLayer(AddCPAP(los->add(new gLineOverlayBar(CPAP_RERA, COLOR_RERA, STR_TR_RE))));
else } else {
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_RERA, COLOR_RERA, STR_TR_RE))); FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_RERA, COLOR_RERA, STR_TR_RE)));
}
FRW->AddLayer(AddCPAP(los->add(new gLineOverlayBar(CPAP_Apnea, COLOR_Apnea, STR_TR_UA)))); FRW->AddLayer(AddCPAP(los->add(new gLineOverlayBar(CPAP_Apnea, COLOR_Apnea, STR_TR_UA))));
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_VSnore, COLOR_VibratorySnore, STR_TR_VS))); FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_VSnore, COLOR_VibratorySnore, STR_TR_VS)));
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_FlowLimit, COLOR_FlowLimit, STR_TR_FL))); FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_FlowLimit, COLOR_FlowLimit, STR_TR_FL)));
@ -1286,7 +1288,7 @@ void Daily::Load(QDate date)
{ CPAP_VSnore, COLOR_VibratorySnore, Qt::black, vs=cpap->count(CPAP_VSnore)/cpap->hours() }, { CPAP_VSnore, COLOR_VibratorySnore, Qt::black, vs=cpap->count(CPAP_VSnore)/cpap->hours() },
{ CPAP_VSnore2, COLOR_VibratorySnore, Qt::black, vs2=cpap->count(CPAP_VSnore2)/cpap->hours() }, { CPAP_VSnore2, COLOR_VibratorySnore, Qt::black, vs2=cpap->count(CPAP_VSnore2)/cpap->hours() },
{ CPAP_LeakFlag, COLOR_LeakFlag, Qt::black, lki=cpap->count(CPAP_LeakFlag)/hours }, { CPAP_LeakFlag, COLOR_LeakFlag, Qt::black, lki=cpap->count(CPAP_LeakFlag)/hours },
{ PRS1_10, COLOR_LeakFlag, Qt::black, lk2=cpap->count(PRS1_10)/hours }, { PRS1_10, COLOR_LargeLeak, Qt::black, lk2=(100.0/cpap->hours())*(cpap->sum(PRS1_10)/3600.0) },
{ CPAP_CSR, COLOR_CSR, Qt::black, csr=(100.0/cpap->hours())*(cpap->sum(CPAP_CSR)/3600.0) } { CPAP_CSR, COLOR_CSR, Qt::black, csr=(100.0/cpap->hours())*(cpap->sum(CPAP_CSR)/3600.0) }
}; };
int numchans=sizeof(chans)/sizeof(ChannelInfo); int numchans=sizeof(chans)/sizeof(ChannelInfo);

View File

@ -22,7 +22,6 @@ Important: One id code per item, DO NOT CHANGE ID NUMBERS!!!
<channel id="0x1155" class="data" name="PRS1_0B" details="Unknown 0B" label="U0B" unit="?" color="light blue"/> <channel id="0x1155" class="data" name="PRS1_0B" details="Unknown 0B" label="U0B" unit="?" color="light blue"/>
<channel id="0x1156" class="data" name="PRS1_0C" details="Unknown 0C" label="U0C" unit="?" color="black"/> <channel id="0x1156" class="data" name="PRS1_0C" details="Unknown 0C" label="U0C" unit="?" color="black"/>
<channel id="0x1157" class="data" name="PRS1_0E" details="Unknown 0E" label="U0E" unit="?" color="dark green"/> <channel id="0x1157" class="data" name="PRS1_0E" details="Unknown 0E" label="U0E" unit="?" color="dark green"/>
<channel id="0x1158" class="data" name="PRS1_10" details="Unknown 10" label="U10" unit="?" color="black"/>
<channel id="0x1159" class="data" name="PRS1_12" details="PRS1 Unknown 12" label="U12" unit="" color="black"/> <channel id="0x1159" class="data" name="PRS1_12" details="PRS1 Unknown 12" label="U12" unit="" color="black"/>
<channel id="0x1160" class="data" name="RMS9_E01" details="RMS9 Empty 1" label="E01" unit="" color="black"/> <channel id="0x1160" class="data" name="RMS9_E01" details="RMS9 Empty 1" label="E01" unit="" color="black"/>
<channel id="0x1161" class="data" name="RMS9_E02" details="RMS9 Empty 2" label="E02" unit="" color="black"/> <channel id="0x1161" class="data" name="RMS9_E02" details="RMS9 Empty 2" label="E02" unit="" color="black"/>

View File

@ -317,7 +317,6 @@ void MainWindow::Startup()
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
# include <stdio.h> # include <stdio.h>
# include <unistd.h> # include <unistd.h>
# include <sys/statfs.h>
# if defined(Q_OS_MAC) || defined(Q_OS_BSD4) # if defined(Q_OS_MAC) || defined(Q_OS_BSD4)
# include <sys/mount.h> # include <sys/mount.h>
@ -502,7 +501,7 @@ void MainWindow::on_action_Import_Data_triggered()
QLabel label(tr("Please wait, SleepyHead is importing data...")); QLabel label(tr("Please wait, SleepyHead is importing data..."));
layout.addWidget(&label,1); layout.addWidget(&label,1);
layout.addWidget(qprogress,1); layout.addWidget(qprogress,1);
dlg.show(); //dlg.show();
for (int i = 0; i < importFrom.size(); i++) { for (int i = 0; i < importFrom.size(); i++) {
QString dir = importFrom[i]; QString dir = importFrom[i];