diff --git a/Graphs/gYAxis.cpp b/Graphs/gYAxis.cpp index 6d084617..a1067cda 100644 --- a/Graphs/gYAxis.cpp +++ b/Graphs/gYAxis.cpp @@ -85,7 +85,7 @@ void gYAxis::Plot(gGraphWindow &w,float scrx,float scry) } } - for (double i=miny; i<=maxy; i+=min_ytick) { + for (double i=miny; i<=maxy+min_ytick-0.00001; i+=min_ytick) { ty=(i - miny) * ymult; fd=Format(i); // Override this as a function. GetTextExtent(fd,x,y); diff --git a/SleepLib/loader_plugins/prs1_loader.cpp b/SleepLib/loader_plugins/prs1_loader.cpp index 5179861e..9b0449d8 100644 --- a/SleepLib/loader_plugins/prs1_loader.cpp +++ b/SleepLib/loader_plugins/prs1_loader.cpp @@ -360,9 +360,9 @@ int PRS1Loader::OpenMachine(Machine *m,QString path,Profile *profile) sess->summary[CPAP_LeakMedian]=sess->avg_event_field(CPAP_Leak,0); sess->summary[CPAP_LeakAverage]=sess->weighted_avg_event_field(CPAP_Leak,0); - sess->summary[CPAP_SnoreMinimum]=sess->min_event_field(CPAP_SnoreGraph,0); - sess->summary[CPAP_SnoreMaximum]=sess->max_event_field(CPAP_SnoreGraph,0); - sess->summary[CPAP_SnoreMedian]=sess->avg_event_field(CPAP_SnoreGraph,0); + sess->summary[CPAP_SnoreMinimum]=sess->min_event_field(CPAP_Snore,0); + sess->summary[CPAP_SnoreMaximum]=sess->max_event_field(CPAP_Snore,0); + sess->summary[CPAP_SnoreMedian]=sess->avg_event_field(CPAP_Snore,0); sess->summary[CPAP_SnoreAverage]=sess->weighted_avg_event_field(CPAP_Snore,0); //Printf(sess->start().Format()+wxT(" avgsummary=%.3f avgmine=%.3f\n"),sess->summary[CPAP_PressureAverage].GetDouble(),sess->weighted_avg_event_field(CPAP_Pressure,0)); @@ -561,9 +561,9 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,time_t data[1]=buffer[pos++]; if (code==0x11) { session->AddEvent(new Event(t,cpapcode, data,1)); - session->AddEvent(new Event(t,CPAP_SnoreGraph,&data[1],1)); + session->AddEvent(new Event(t,CPAP_Snore,&data[1],1)); if (data[1]>0) { - session->AddEvent(new Event(t,CPAP_Snore, &data[1],1)); + session->AddEvent(new Event(t,PRS1_VSnore2, &data[1],1)); } } else if (code==0x03) { data[0]/=10.0; diff --git a/SleepLib/loader_plugins/resmed_loader.cpp b/SleepLib/loader_plugins/resmed_loader.cpp index cf9c8345..26613da2 100644 --- a/SleepLib/loader_plugins/resmed_loader.cpp +++ b/SleepLib/loader_plugins/resmed_loader.cpp @@ -302,6 +302,30 @@ bool ResmedLoader::Open(QString & path,Profile *profile) first=false; } } + if (sess) { + sess->summary[CPAP_PressureMedian]=sess->avg_event_field(CPAP_Pressure,0); + sess->summary[CPAP_PressureAverage]=sess->weighted_avg_event_field(CPAP_Pressure,0); + sess->summary[CPAP_PressureMinAchieved]=sess->min_event_field(CPAP_Pressure,0); + sess->summary[CPAP_PressureMaxAchieved]=sess->max_event_field(CPAP_Pressure,0); + sess->summary[CPAP_PressureMin]=sess->summary[CPAP_PressureMinAchieved]; + sess->summary[CPAP_PressureMax]=sess->summary[CPAP_PressureMaxAchieved]; + + sess->summary[CPAP_LeakMinimum]=sess->min_event_field(CPAP_Leak,0); + sess->summary[CPAP_LeakMaximum]=sess->max_event_field(CPAP_Leak,0); // should be merged.. + sess->summary[CPAP_LeakMedian]=sess->avg_event_field(CPAP_Leak,0); + sess->summary[CPAP_LeakAverage]=sess->weighted_avg_event_field(CPAP_Leak,0); + + sess->summary[CPAP_Snore]=sess->sum_event_field(CPAP_Snore,0); + sess->summary[CPAP_SnoreMinimum]=sess->min_event_field(CPAP_Snore,0); + sess->summary[CPAP_SnoreMaximum]=sess->max_event_field(CPAP_Snore,0); + sess->summary[CPAP_SnoreMedian]=sess->avg_event_field(CPAP_Snore,0); + sess->summary[CPAP_SnoreAverage]=sess->weighted_avg_event_field(CPAP_Snore,0); + sess->summary[CPAP_Obstructive]=sess->count_events(CPAP_Obstructive); + sess->summary[CPAP_Hypopnea]=sess->count_events(CPAP_Hypopnea); + sess->summary[CPAP_ClearAirway]=sess->count_events(CPAP_ClearAirway); + sess->summary[CPAP_Mode]=MODE_APAP; + } + if (qprogress) qprogress->setValue(33.0+(float(++cnt)/float(size)*33.0)); } // m->save(); @@ -489,9 +513,11 @@ bool ResmedLoader::LoadPLD(Machine *mach,Session *sess,EDFParser &edf) } else if (edf.edfsignals[s]->label=="Leak") { code=CPAP_Leak; ToTimeDelta(mach,sess,edf,edf.edfsignals[s]->data, code,recs,duration,1.0); + } else { + qDebug(("Unknown Signal "+edf.edfsignals[s]->label).toLatin1()); } - qDebug(("Unknown Signal "+edf.edfsignals[s]->label).toLatin1()); } + } void ResInitModelMap() diff --git a/SleepLib/loader_plugins/resmed_loader.h b/SleepLib/loader_plugins/resmed_loader.h index 2615c4d1..9701795c 100644 --- a/SleepLib/loader_plugins/resmed_loader.h +++ b/SleepLib/loader_plugins/resmed_loader.h @@ -20,7 +20,7 @@ License: GPL //******************************************************************************************** // Please INCREMENT the following value when making changes to this loaders implementation. // -const int resmed_data_version=1; +const int resmed_data_version=0; // //******************************************************************************************** diff --git a/SleepLib/machine_common.h b/SleepLib/machine_common.h index fe6ab058..520c1877 100644 --- a/SleepLib/machine_common.h +++ b/SleepLib/machine_common.h @@ -47,7 +47,7 @@ enum MachineCode//:qint16 BIPAP_EAPAverage,BIPAP_IAPAverage,BIPAP_EAPMin,BIPAP_EAPMax,BIPAP_IAPMin,BIPAP_IAPMax,CPAP_BrokenSummary, // PRS1 Specific Codes - PRS1_PressurePulse=0x1000, + PRS1_PressurePulse=0x1000,PRS1_VSnore2, PRS1_Unknown00, PRS1_Unknown01, PRS1_Unknown08, PRS1_Unknown09, PRS1_Unknown0B, PRS1_Unknown0E, PRS1_Unknown10, PRS1_Unknown12, PRS1_SystemLockStatus, PRS1_SystemResistanceStatus, PRS1_SystemResistanceSetting, PRS1_HoseDiameter, PRS1_AutoOff, PRS1_MaskAlert, PRS1_ShowAHI, diff --git a/daily.cpp b/daily.cpp index d797c324..0391f95f 100644 --- a/daily.cpp +++ b/daily.cpp @@ -116,18 +116,16 @@ Daily::Daily(QWidget *parent,QGLContext *context) : AddCPAPData(frw=new WaveData(CPAP_FlowRate,700000)); //FlowRate - AddCPAPData(mpw=new WaveData(CPAP_MaskPressure,700000)); //FlowRate + // AddCPAPData(mpw=new WaveData(CPAP_MaskPressure,700000)); //FlowRate // Holy crap resmed stuff is huge.. AddGraph(FRW=new gGraphWindow(gSplitter,tr("Flow Rate"),SF)); //FRW->AddLayer(new gFooBar()); FRW->AddLayer(new gYAxis()); FRW->AddLayer(new gXAxis()); FRW->AddLayer(new gLineOverlayBar(flags[0],QColor("light green"),"CSR")); - FRW->AddLayer(new gLineChart(mpw,Qt::blue,700000,true)); + //FRW->AddLayer(new gLineChart(mpw,Qt::blue,700000,true)); gLineChart *g=new gLineChart(frw,Qt::black,700000,true); g->ReportEmpty(true); - - FRW->AddLayer(g); FRW->AddLayer(new gLineOverlayBar(flags[3],QColor("blue"),"H")); FRW->AddLayer(new gLineOverlayBar(flags[7],QColor("red"),"PR",LOT_Dot)); @@ -148,7 +146,7 @@ Daily::Daily(QWidget *parent,QGLContext *context) : SNORE->setMinimumHeight(150); AddCPAPData(mv=new EventData(CPAP_MinuteVentilation,0)); - AddGraph(MV=new gGraphWindow(gSplitter,tr("Minute Vent."),SF)); + AddGraph(MV=new gGraphWindow(gSplitter,tr("Minute Ventilation"),SF)); MV->AddLayer(new gXAxis()); MV->AddLayer(new gYAxis()); MV->AddLayer(new gLineChart(mv,QColor(0x20,0x20,0x7f),65536,false,false,false)); @@ -524,31 +522,26 @@ void Daily::Load(QDate date) html=html+""+cpap->first().date().toString(Qt::SystemLocaleShortDate)+""+cpap->first().toString("HH:mm")+""+cpap->last().toString("HH:mm")+""+a.sprintf("%02i:%02i",tt/3600,tt%60)+"\n"; html=html+"
\n"; - if (pref.Exists("fruitsalad") && pref["fruitsalad"].toBool()) { - html=html+(""); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("
")+tr("AHI")+("")+a.sprintf("%.2f",ahi)+("
")+tr("Hypopnea")+("")+a.sprintf("%.2f",hi)+("
")+tr("Obstructive")+("")+a.sprintf("%.2f",oai)+("
")+tr("ClearAirway")+("")+a.sprintf("%.2f",cai)+("
"); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("
")+tr("RERA")+("")+a.sprintf("%.2f",rei)+("
")+tr("FlowLimit")+("")+a.sprintf("%.2f",fli)+("
")+tr("Vsnore")+("")+a.sprintf("%.2f",vsi)+("
")+tr("PB/CSR")+("")+a.sprintf("%.2f",csr)+("%
"); - } else { - html=html+(""); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("
")+tr("AHI")+("")+a.sprintf("%.2f",ahi)+("
")+tr("Hypopnea")+("")+a.sprintf("%.2f",hi)+("
")+tr("Obstructive")+("")+a.sprintf("%.2f",oai)+("
")+tr("ClearAirway")+("")+a.sprintf("%.2f",cai)+("
"); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("\n"); - html=html+("
")+tr("RERA")+("")+a.sprintf("%.2f",rei)+("
")+tr("FlowLimit")+("")+a.sprintf("%.2f",fli)+("
")+tr("Vsnore")+("")+a.sprintf("%.2f",vsi)+("
")+tr("PB/CSR")+("")+a.sprintf("%.2f%%",csr)+("
"); + QString cs; + if (cpap->machine->GetClass()!="PRS1") { + cs="4 align=center>"; + } else cs="2>"; + html+=(""); + html+=("")+tr("AHI")+("")+a.sprintf("%.2f",ahi)+("\n"); + html+=("")+tr("Hypopnea")+("")+a.sprintf("%.2f",hi)+("\n"); + html+=("")+tr("Obstructive")+("")+a.sprintf("%.2f",oai)+("\n"); + html+=("")+tr("ClearAirway")+("")+a.sprintf("%.2f",cai)+("\n"); + html+=""; + if (cpap->machine->GetClass()=="PRS1") { + html+=""; + html+="\n"); + html+="\n"); + html+="\n"); + html+="\n"); + html+="
"+tr("RERA")+("")+a.sprintf("%.2f",rei)+("
"+tr("FlowLimit")+("")+a.sprintf("%.2f",fli)+("
"+tr("Vsnore")+("")+a.sprintf("%.2f",vsi)+("
"+tr("PB/CSR")+("")+a.sprintf("%.2f",csr)+("%
"; } + html+=""; + html=html+("")+tr("Event Breakdown")+("\n"); { G_AHI->setFixedSize(gwwidth,gwheight);