64bit PRS1 Importer fix

This commit is contained in:
Mark Watkins 2011-08-17 13:06:57 +10:00
parent c26f49f1f2
commit 4e7ccde8e3
4 changed files with 24 additions and 30 deletions

View File

@ -553,30 +553,24 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
qint64 tt; qint64 tt;
int pos=0; int pos=0;
int cnt=0; int cnt=0;
short delta;//,duration; short delta;
while (pos<size) { while (pos<size) {
unsigned char code=buffer[pos++]; unsigned char code=buffer[pos++];
if (code>=ncodes) { if (code>=ncodes) {
qDebug() << "Illegal PRS1 code " << hex << int(code) << " appeared at " << hex << pos+16; qDebug() << "Illegal PRS1 code " << hex << int(code) << " appeared at " << hex << pos+16;
return false; return false;
} }
//if (code==0xe) {
// pos+=2;
//} else
delta=0; delta=0;
if (code!=0x12) { if (code!=0x12) {
//delta=buffer[pos];
//duration=buffer[pos+1];
delta=buffer[pos+1] << 8 | buffer[pos]; delta=buffer[pos+1] << 8 | buffer[pos];
pos+=2; pos+=2;
t+=delta*1000; t+=qint64(delta)*1000L;
tt=t;//+(delta*1000); tt=t;;
//QDateTime d=QDateTime::fromMSecsSinceEpoch(t); //QDateTime d=QDateTime::fromMSecsSinceEpoch(t);
//qDebug()<< d.toString("yyyy-MM-dd HH:mm:ss") << ": " << hex << pos+15 << " " << hex << int(code) << int(delta); //qDebug()<< d.toString("yyyy-MM-dd HH:mm:ss") << ": " << hex << pos+15 << " " << hex << int(code) << int(delta);
} }
cnt++; cnt++;
//int fc=0;
switch (code) { switch (code) {
case 0x00: // Unknown 00 case 0x00: // Unknown 00
if (!Code[0]) { if (!Code[0]) {
@ -622,7 +616,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
break; break;
case 0x05: // RERA case 0x05: // RERA
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt=t-(data[0]*1000); tt=t-(qint64(data[0])*1000L);
if (!Code[7]) { if (!Code[7]) {
Code[7]=new EventList(CPAP_RERA,EVL_Event); Code[7]=new EventList(CPAP_RERA,EVL_Event);
session->eventlist[CPAP_RERA].push_back(Code[7]); session->eventlist[CPAP_RERA].push_back(Code[7]);
@ -632,7 +626,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
case 0x06: // Obstructive Apoanea case 0x06: // Obstructive Apoanea
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt=t-(data[0]*1000); tt=t-(qint64(data[0])*1000L);
if (!Code[8]) { if (!Code[8]) {
Code[8]=new EventList(CPAP_Obstructive,EVL_Event); Code[8]=new EventList(CPAP_Obstructive,EVL_Event);
session->eventlist[CPAP_Obstructive].push_back(Code[8]); session->eventlist[CPAP_Obstructive].push_back(Code[8]);
@ -641,7 +635,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
break; break;
case 0x07: // Clear Airway case 0x07: // Clear Airway
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt=t-(data[0]*1000); tt=t-(qint64(data[0])*1000L);
if (!Code[9]) { if (!Code[9]) {
Code[9]=new EventList(CPAP_ClearAirway,EVL_Event); Code[9]=new EventList(CPAP_ClearAirway,EVL_Event);
session->eventlist[CPAP_ClearAirway].push_back(Code[9]); session->eventlist[CPAP_ClearAirway].push_back(Code[9]);
@ -650,7 +644,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
break; break;
case 0x0a: // Hypopnea case 0x0a: // Hypopnea
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt=t-(data[0]*1000); tt=t-(qint64(data[0])*1000L);
if (!Code[10]) { if (!Code[10]) {
Code[10]=new EventList(CPAP_Hypopnea,EVL_Event); Code[10]=new EventList(CPAP_Hypopnea,EVL_Event);
session->eventlist[CPAP_Hypopnea].push_back(Code[10]); session->eventlist[CPAP_Hypopnea].push_back(Code[10]);
@ -659,7 +653,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
break; break;
case 0x0c: // Flow Limitation case 0x0c: // Flow Limitation
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt=t-(data[0]*1000); tt=t-(qint64(data[0])*1000L);
if (!Code[11]) { if (!Code[11]) {
Code[11]=new EventList(CPAP_FlowLimit,EVL_Event); Code[11]=new EventList(CPAP_FlowLimit,EVL_Event);
session->eventlist[CPAP_FlowLimit].push_back(Code[11]); session->eventlist[CPAP_FlowLimit].push_back(Code[11]);
@ -734,7 +728,7 @@ bool PRS1Loader::Parse002(Session *session,unsigned char *buffer,int size,qint64
data[0]=buffer[pos+1]<<8 | buffer[pos]; data[0]=buffer[pos+1]<<8 | buffer[pos];
pos+=2; pos+=2;
data[1]=buffer[pos++]; data[1]=buffer[pos++];
tt=t-data[1]*1000; tt=t-qint64(data[1])*1000L;
if (!Code[23]) { if (!Code[23]) {
Code[23]=new EventList(CPAP_CSR,EVL_Event); Code[23]=new EventList(CPAP_CSR,EVL_Event);
session->eventlist[CPAP_CSR].push_back(Code[23]); session->eventlist[CPAP_CSR].push_back(Code[23]);
@ -802,7 +796,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
//duration=buffer[pos+1]; //duration=buffer[pos+1];
//delta=buffer[pos+1] << 8 | buffer[pos]; //delta=buffer[pos+1] << 8 | buffer[pos];
pos+=2; pos+=2;
t+=delta*1000; t+=qint64(delta)*1000L;
} }
ChannelID cpapcode=Codes[(int)code]; ChannelID cpapcode=Codes[(int)code];
//EventDataType PS; //EventDataType PS;
@ -851,7 +845,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
case 0x05: case 0x05:
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt-=data[0]*1000; // Subtract Time Offset tt-=qint64(data[0])*1000L; // Subtract Time Offset
if (!Code[4]) { if (!Code[4]) {
Code[4]=new EventList(cpapcode,EVL_Event); Code[4]=new EventList(cpapcode,EVL_Event);
session->eventlist[cpapcode].push_back(Code[4]); session->eventlist[cpapcode].push_back(Code[4]);
@ -861,7 +855,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
case 0x06: case 0x06:
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt-=data[0]*1000; // Subtract Time Offset tt-=qint64(data[0])*1000L; // Subtract Time Offset
if (!Code[5]) { if (!Code[5]) {
Code[5]=new EventList(cpapcode,EVL_Event); Code[5]=new EventList(cpapcode,EVL_Event);
session->eventlist[cpapcode].push_back(Code[5]); session->eventlist[cpapcode].push_back(Code[5]);
@ -870,7 +864,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
break; break;
case 0x07: case 0x07:
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt-=data[0]*1000; // Subtract Time Offset tt-=qint64(data[0])*1000L; // Subtract Time Offset
if (!Code[6]) { if (!Code[6]) {
Code[6]=new EventList(cpapcode,EVL_Event); Code[6]=new EventList(cpapcode,EVL_Event);
session->eventlist[cpapcode].push_back(Code[6]); session->eventlist[cpapcode].push_back(Code[6]);
@ -879,7 +873,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
break; break;
case 0x08: // ASV Codes case 0x08: // ASV Codes
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt-=data[0]*1000; // Subtract Time Offset tt-=qint64(data[0])*1000L; // Subtract Time Offset
if (!Code[10]) { if (!Code[10]) {
Code[10]=new EventList(cpapcode,EVL_Event); Code[10]=new EventList(cpapcode,EVL_Event);
session->eventlist[cpapcode].push_back(Code[10]); session->eventlist[cpapcode].push_back(Code[10]);
@ -888,7 +882,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
break; break;
case 0x09: // ASV Codes case 0x09: // ASV Codes
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt-=data[0]*1000; // Subtract Time Offset tt-=qint64(data[0])*1000L; // Subtract Time Offset
if (!Code[11]) { if (!Code[11]) {
Code[11]=new EventList(cpapcode,EVL_Event); Code[11]=new EventList(cpapcode,EVL_Event);
session->eventlist[cpapcode].push_back(Code[11]); session->eventlist[cpapcode].push_back(Code[11]);
@ -899,7 +893,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
case 0x0a: case 0x0a:
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt-=data[0]*1000; // Subtract Time Offset tt-=qint64(data[0])*1000L; // Subtract Time Offset
if (!Code[7]) { if (!Code[7]) {
Code[7]=new EventList(cpapcode,EVL_Event); Code[7]=new EventList(cpapcode,EVL_Event);
session->eventlist[cpapcode].push_back(Code[7]); session->eventlist[cpapcode].push_back(Code[7]);
@ -909,7 +903,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
case 0x0c: case 0x0c:
data[0]=buffer[pos++]; data[0]=buffer[pos++];
tt-=data[0]*1000; // Subtract Time Offset tt-=qint64(data[0])*1000L; // Subtract Time Offset
if (!Code[8]) { if (!Code[8]) {
Code[8]=new EventList(cpapcode,EVL_Event); Code[8]=new EventList(cpapcode,EVL_Event);
session->eventlist[cpapcode].push_back(Code[8]); session->eventlist[cpapcode].push_back(Code[8]);
@ -925,7 +919,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
data[1]=((unsigned char *)buffer)[pos]; //|buffer[pos+1] << 8 data[1]=((unsigned char *)buffer)[pos]; //|buffer[pos+1] << 8
pos+=1; pos+=1;
//tt-=delta; //tt-=delta;
tt-=data[1]*1000; tt-=qint64(data[1])*1000L;
if (!Code[9]) { if (!Code[9]) {
Code[9]=new EventList(cpapcode,EVL_Event,2.0); Code[9]=new EventList(cpapcode,EVL_Event,2.0);
session->eventlist[cpapcode].push_back(Code[9]); session->eventlist[cpapcode].push_back(Code[9]);
@ -1025,7 +1019,7 @@ bool PRS1Loader::Parse002ASV(Session *session,unsigned char *buffer,int size,qin
pos+=2; pos+=2;
data[1]=buffer[pos]; //|buffer[pos+1] << 8 data[1]=buffer[pos]; //|buffer[pos+1] << 8
pos+=1; pos+=1;
tt-=data[1]*1000; tt-=qint64(data[1])*1000L;
//session->AddEvent(new Event(tt,cpapcode, 0, data, 2)); //session->AddEvent(new Event(tt,cpapcode, 0, data, 2));
break; break;
case 0x12: // Summary case 0x12: // Summary
@ -1168,7 +1162,7 @@ bool PRS1Loader::OpenWaveforms(Session *session,QString filename)
pos-=3; pos-=3;
} }
int hl=15+5+(num_signals*3); int hl=15+5+(num_signals*3);
quint16 duration,length; quint16 duration,length=0;
quint32 timestamp,lasttimestamp; quint32 timestamp,lasttimestamp;

View File

@ -21,7 +21,7 @@ License: GPL
//******************************************************************************************** //********************************************************************************************
// 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=3; const int prs1_data_version=4;
// //
//******************************************************************************************** //********************************************************************************************

View File

@ -42,7 +42,7 @@ MyScrollArea::~MyScrollArea()
void MyScrollArea::scrollContentsBy(int dx, int dy) void MyScrollArea::scrollContentsBy(int dx, int dy)
{ {
QScrollArea::scrollContentsBy(dx,dy); QScrollArea::scrollContentsBy(dx,dy);
m_daily->RedrawGraphs(); //m_daily->RedrawGraphs();
//gGraphWindow g; //gGraphWindow g;
#ifdef Q_WS_MAC #ifdef Q_WS_MAC
if (timer->isActive()) timer->stop(); if (timer->isActive()) timer->stop();

View File

@ -44,11 +44,11 @@ int main(int argc, char *argv[])
a.setApplicationName("SleepyHead"); a.setApplicationName("SleepyHead");
int id=QFontDatabase::addApplicationFont(":/fonts/FreeSans.ttf"); /*int id=QFontDatabase::addApplicationFont(":/fonts/FreeSans.ttf");
QStringList ffam=QFontDatabase::applicationFontFamilies(id); QStringList ffam=QFontDatabase::applicationFontFamilies(id);
for (QStringList::iterator i=ffam.begin();i!=ffam.end();i++) { for (QStringList::iterator i=ffam.begin();i!=ffam.end();i++) {
qDebug() << "Loaded Font: " << (*i); qDebug() << "Loaded Font: " << (*i);
} }*/
a.setFont(QFont("Sans Serif",10)); a.setFont(QFont("Sans Serif",10));