mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-09 12:40:43 +00:00
Empty data Overlay crash fix, Show extra dots for PRS1, PRS1 alignment cleanup
This commit is contained in:
parent
2a5797b141
commit
9840976d8e
@ -270,6 +270,7 @@ void gLineChart::Plot(gGraphWindow & w,float scrx,float scry)
|
||||
|
||||
bool firstpx=true;
|
||||
if (el.type()==EVL_Waveform) { // Waveform Plot
|
||||
if (idx>sam) idx-=sam;
|
||||
time=el.time(idx);
|
||||
qint64 rate=sr*sam;
|
||||
|
||||
@ -280,8 +281,8 @@ void gLineChart::Plot(gGraphWindow & w,float scrx,float scry)
|
||||
for (int i=idx;i<siz;i+=sam) {
|
||||
time+=rate;
|
||||
//time=el.time(i);
|
||||
if (time < minx)
|
||||
continue; // Skip stuff before the start of our data window
|
||||
//if (time < minx)
|
||||
// continue; // Skip stuff before the start of our data window
|
||||
|
||||
//data=el.data(i);
|
||||
data=dat[i];//*gain;
|
||||
@ -319,8 +320,8 @@ void gLineChart::Plot(gGraphWindow & w,float scrx,float scry)
|
||||
// Normal Waveform Plot
|
||||
//////////////////////////////////////////////////////////////////
|
||||
for (int i=idx;i<siz;i+=sam,time+=rate) {
|
||||
if (time < minx)
|
||||
continue; // Skip stuff before the start of our data window
|
||||
//if (time < minx)
|
||||
// continue; // Skip stuff before the start of our data window
|
||||
data=dat[i];//el.data(i);
|
||||
|
||||
px=xst+((time - minx) * xmult); // Scale the time scale X to pixel scale X
|
||||
@ -357,13 +358,13 @@ void gLineChart::Plot(gGraphWindow & w,float scrx,float scry)
|
||||
first=true;
|
||||
qint64 start=el.first();
|
||||
for (int i=idx;i<siz;i+=sam) {
|
||||
time=start+tim[i];//el.time(i);
|
||||
|
||||
time=start+tim[i];
|
||||
if (first) {
|
||||
if (num_points>5 && (time < minx)) continue; // Skip stuff before the start of our data window
|
||||
first=false;
|
||||
if (i>=sam) i-=sam; // Start with the previous sample (which will be in clipping area)
|
||||
time=start+tim[i];//el.time(i); //el.time(i);
|
||||
time=start+tim[i];
|
||||
}
|
||||
data=dat[i]*gain; //
|
||||
//data=el.data(i); // raw access is faster
|
||||
|
@ -57,6 +57,7 @@ void gLineOverlayBar::Plot(gGraphWindow & w,float scrx,float scry)
|
||||
qint64 Y;
|
||||
for (vector<Session *>::iterator s=m_day->begin();s!=m_day->end(); s++) {
|
||||
if ((*s)->eventlist.find(m_code)==(*s)->eventlist.end()) continue;
|
||||
if ((*s)->eventlist[m_code].size()==0) continue;
|
||||
|
||||
EventList & el=*((*s)->eventlist[m_code][0]);
|
||||
|
||||
|
@ -554,17 +554,18 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
|
||||
//if (code==0xe) {
|
||||
// pos+=2;
|
||||
//} else
|
||||
delta=0;
|
||||
if (code!=0x12) {
|
||||
//delta=buffer[pos];
|
||||
//duration=buffer[pos+1];
|
||||
delta=buffer[pos+1] << 8 | buffer[pos];
|
||||
pos+=2;
|
||||
t+=delta*1000;
|
||||
tt=t;//+(delta*1000);
|
||||
//QDateTime d=QDateTime::fromMSecsSinceEpoch(t);
|
||||
//qDebug()<< d.toString("yyyy-MM-dd HH:mm:ss") << ": " << hex << pos+15 << " " << hex << int(code) << int(delta);
|
||||
t+=delta*1000;
|
||||
}
|
||||
//MachineCode cpapcode=Codes[(int)code];
|
||||
tt=t;
|
||||
|
||||
cnt++;
|
||||
//int fc=0;
|
||||
switch (code) {
|
||||
@ -612,7 +613,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
|
||||
break;
|
||||
case 0x05: // RERA
|
||||
data[0]=buffer[pos++];
|
||||
tt-=data[0]*1000; // Subtract Time Offset
|
||||
tt=t-(data[0]*1000);
|
||||
if (!Code[7]) {
|
||||
Code[7]=new EventList(CPAP_RERA,EVL_Event);
|
||||
session->eventlist[CPAP_RERA].push_back(Code[7]);
|
||||
@ -622,7 +623,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
|
||||
|
||||
case 0x06: // Obstructive Apoanea
|
||||
data[0]=buffer[pos++];
|
||||
tt-=data[0]*1000; // Subtract Time Offset
|
||||
tt=t-(data[0]*1000);
|
||||
if (!Code[8]) {
|
||||
Code[8]=new EventList(CPAP_Obstructive,EVL_Event);
|
||||
session->eventlist[CPAP_Obstructive].push_back(Code[8]);
|
||||
@ -631,7 +632,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
|
||||
break;
|
||||
case 0x07: // Clear Airway
|
||||
data[0]=buffer[pos++];
|
||||
tt-=data[0]*1000; // Subtract Time Offset
|
||||
tt=t-(data[0]*1000);
|
||||
if (!Code[9]) {
|
||||
Code[9]=new EventList(CPAP_ClearAirway,EVL_Event);
|
||||
session->eventlist[CPAP_ClearAirway].push_back(Code[9]);
|
||||
@ -640,7 +641,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
|
||||
break;
|
||||
case 0x0a: // Hypopnea
|
||||
data[0]=buffer[pos++];
|
||||
tt-=data[0]*1000; // Subtract Time Offset
|
||||
tt=t-(data[0]*1000);
|
||||
if (!Code[10]) {
|
||||
Code[10]=new EventList(CPAP_Hypopnea,EVL_Event);
|
||||
session->eventlist[CPAP_Hypopnea].push_back(Code[10]);
|
||||
@ -649,7 +650,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
|
||||
break;
|
||||
case 0x0c: // Flow Limitation
|
||||
data[0]=buffer[pos++];
|
||||
tt-=data[0]*1000; // Subtract Time Offset
|
||||
tt=t-(data[0]*1000);
|
||||
if (!Code[11]) {
|
||||
Code[11]=new EventList(CPAP_FlowLimit,EVL_Event);
|
||||
session->eventlist[CPAP_FlowLimit].push_back(Code[11]);
|
||||
@ -724,7 +725,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
|
||||
data[0]=buffer[pos+1]<<8 | buffer[pos];
|
||||
pos+=2;
|
||||
data[1]=buffer[pos++];
|
||||
tt-=data[1]*1000;
|
||||
tt=t-data[1]*1000;
|
||||
if (!Code[23]) {
|
||||
Code[23]=new EventList(CPAP_CSR,EVL_Event);
|
||||
session->eventlist[CPAP_CSR].push_back(Code[23]);
|
||||
|
@ -21,7 +21,7 @@ License: GPL
|
||||
//********************************************************************************************
|
||||
// Please INCREMENT the following value when making changes to this loaders implementation.
|
||||
//
|
||||
const int prs1_data_version=2;
|
||||
const int prs1_data_version=3;
|
||||
//
|
||||
//********************************************************************************************
|
||||
|
||||
|
@ -58,10 +58,12 @@ bool Session::OpenEvents() {
|
||||
if (s_events_loaded)
|
||||
return true;
|
||||
|
||||
bool b=LoadEvents(s_eventfile);
|
||||
if (!b) {
|
||||
qWarning() << "Error Unkpacking Events" << s_eventfile;
|
||||
return false;
|
||||
if (!s_eventfile.isEmpty()) {
|
||||
bool b=LoadEvents(s_eventfile);
|
||||
if (!b) {
|
||||
qWarning() << "Error Unpacking Events" << s_eventfile;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -83,11 +85,14 @@ bool Session::Store(QString path)
|
||||
bool a;
|
||||
a=StoreSummary(base+".000"); // if actually has events
|
||||
//qDebug() << " Summary done";
|
||||
if (eventlist.size()>0)
|
||||
StoreEvents(base+".001");
|
||||
if (eventlist.size()>0) {
|
||||
s_eventfile=base+".001";
|
||||
StoreEvents(s_eventfile);
|
||||
} else {
|
||||
qDebug() << "Trying to save empty events file";
|
||||
}
|
||||
//qDebug() << " Events done";
|
||||
s_changed=false;
|
||||
s_eventfile=base+".001";
|
||||
s_events_loaded=true;
|
||||
|
||||
//TrashEvents();
|
||||
|
12
daily.cpp
12
daily.cpp
@ -154,6 +154,10 @@ Daily::Daily(QWidget *parent,QGLWidget * shared) :
|
||||
FRW->AddLayer(g);
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_Hypopnea,QColor("blue"),"H")));
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_PressurePulse,QColor("red"),"PR",FT_Dot)));
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_Pressure,QColor("white"),"P",FT_Dot)));
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_Unknown0B,QColor("blue"),"0B",FT_Dot)));
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_Unknown10,QColor("orange"),"10",FT_Dot)));
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(PRS1_Unknown0E,QColor("yellow"),"0E",FT_Dot)));
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_RERA,QColor("gold"),"RE")));
|
||||
//FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_Unknown0E,QColor("dark green"),"U0E")));
|
||||
FRW->AddLayer(AddCPAP(new gLineOverlayBar(CPAP_VSnore,QColor("red"),"VS")));
|
||||
@ -387,17 +391,19 @@ void Daily::UpdateEventsTree(QTreeWidget *tree,Day *day)
|
||||
for (unsigned z=0;z<m->second.size();z++) {
|
||||
for (int o=0;o<m->second[z]->count();o++) {
|
||||
qint64 t=m->second[z]->time(o);
|
||||
|
||||
if (code==CPAP_CSR) {
|
||||
t-=(m->second[z]->data(o)/2)*1000;
|
||||
t-=float(m->second[z]->raw(o)/2.0)*1000.0;
|
||||
}
|
||||
QStringList a;
|
||||
QDateTime d=QDateTime::fromMSecsSinceEpoch(t);
|
||||
QString s=QString("#%1: %2").arg((int)mccnt[code],(int)3,(int)10,QChar('0')).arg(d.toString("HH:mm:ss"));
|
||||
QString s=QString("#%1: %2 (%3)").arg((int)mccnt[code],(int)3,(int)10,QChar('0')).arg(d.toString("HH:mm:ss")).arg(m->second[z]->raw(o));
|
||||
a.append(s);
|
||||
a.append(d.toString("yyyy-MM-dd HH:mm:ss"));
|
||||
mcr->addChild(new QTreeWidgetItem(a));
|
||||
}
|
||||
} }
|
||||
}
|
||||
}
|
||||
}
|
||||
int cnt=0;
|
||||
for (map<MachineCode,QTreeWidgetItem *>::iterator m=mcroot.begin();m!=mcroot.end();m++) {
|
||||
|
Loading…
Reference in New Issue
Block a user