Commit Graph

109 Commits

Author SHA1 Message Date
sawinglogz
5835e6de9c Remove commented-out F3V6 event code. 2019-07-26 22:29:23 -04:00
sawinglogz
56684de3bc Add support for more F3V6 events based on more sample sessions. 2019-07-26 22:13:26 -04:00
sawinglogz
eedd41efdf First pass at parsing F3V6 events, largely based on F5V3 and revised based on a sample session. 2019-07-25 21:44:36 -04:00
sawinglogz
a2bcbf1b00 Fix pressure gain for F3V6 events and waveforms.
Also change fileVersion == 3 tests to appropriate familyVersion for ASV and ventilators, respectively.
2019-07-24 22:42:00 -04:00
sawinglogz
d33e7585bf Remove broken original F3V6 summary parser. 2019-07-24 16:51:50 -04:00
sawinglogz
9e54b98cf6 First pass at actual F3V6 (1030X, 1130X) summary and settings support based on sample data. Events are still broken. 2019-07-24 16:50:51 -04:00
sawinglogz
872fe74008 Add stub F3V3 summary parser so that events and waveforms will still get loaded. 2019-07-23 20:54:39 -04:00
sawinglogz
83b80cb252 Restrict the current PRS1 F3 summary parser to F3V6, which is all it could (badly) handle anyway. 2019-07-23 20:54:25 -04:00
sawinglogz
1f56927695 Recognize additional PRS1 900X settings. 2019-07-23 12:52:41 -04:00
sawinglogz
43ec3ab4af Fix a few PRS1 unused variable warnings that only gcc catches. 2019-06-21 21:04:16 -04:00
sawinglogz
ea638cdbbb Update PRS1 series detection to use model name.
Also fix an issue with initializing the model names, since QObject::tr
won't work at global initialization time. And series detection needs
the untranslated names anyway.
2019-06-20 00:09:28 -04:00
sawinglogz
5a71e96ed6 Remove unused PRS1 code, add series to model names where missing. 2019-06-19 23:23:15 -04:00
sawinglogz
628ddda472 Fill out remaining PRS1 names as shown on official reports.
Also clean up brick detection.

The official names don't yet appear anywhere, since there's a question
of how to juggle manufacturer, series, and model name in the various
places they're (inconsistently) displayed.

Series is also used to pick the machine icon.
2019-06-19 22:19:16 -04:00
sawinglogz
423bfccc5a Add a few comments for future 900X improvements. 2019-06-19 17:50:41 -04:00
sawinglogz
ec73958b4a Add leak to 900X, clean up summary stats and old implementation. 2019-06-19 17:28:42 -04:00
sawinglogz
d9152436de Add missing 900X events based on sample data.
They're not all fully understood, such as a pressure adjustment
variant and  several different hypopnea variants, one of which
has an extra data field.
2019-06-19 16:23:28 -04:00
sawinglogz
264ff2f2fa Add comments to 900X parsing based on sample review and discussions. 2019-06-17 17:33:39 -04:00
sawinglogz
a7f249218f Fix start time for 900X TB, PB, and LL.
It turns out OSCAR silently treats span events' timestamps as
and end time when drawing.
2019-06-15 21:45:58 -04:00
sawinglogz
4e5174343e First pass at 900X event parsing and clean up F5V3 pressure gain throughout.
This fixes the mask pressure graph as well as many of the events.
There are still some issues with presentation: some of the events are
being drawn at the wrong time, and certain events and statistics
don't really behave the way they're displayed.

Also several events have yet to be encountered in sample data.
2019-06-15 21:04:09 -04:00
sawinglogz
fcd7f8d463 Finish cleaning up 900X summary parsing.
There are still unknown values, but they'll need to be tracked down
after events are cleaned up. They no longer emit warnings.
2019-06-13 22:20:34 -04:00
sawinglogz
b1d76becab Fill in some 900X summary statistics values. 2019-06-13 21:29:43 -04:00
sawinglogz
2634aa0d16 Initial support for 900X summary.
Pressure settings are now properly being found and decoded, but there are lots
of unknown fields to figure out.

It turns out it uses the same humidifier setting encoding as F0V6, and the first
several slices seem to be the same. But pressure encodings are different, with
a gain of 0.125 instead of 0.1, presumably to allow for a maximum pressure of
30 cmH2O.
2019-06-13 20:31:21 -04:00
sawinglogz
4527a7091d Clean up remaining DreamStation parsing warnings. 2019-06-12 20:37:04 -04:00
sawinglogz
d0903ce3bd Add initial support for DreamStation Auto-Trial and CPAP-Check modes.
This resolves many of the unexpected value warnings in the sample
data, but there are still a bunch to tackle.
2019-06-11 21:26:40 -04:00
sawinglogz
2383c11be2 Minor clean up of F0V6 summary parsing, fix GUI build bug. 2019-06-10 20:57:05 -04:00
sawinglogz
96815cb068 Add support for 700X summary data. 2019-06-10 20:30:05 -04:00
sawinglogz
4e8a6514ef Add support for 600X summary data. 2019-06-10 15:30:22 -04:00
sawinglogz
92f029a5f4 Add support for 502G summary data.
Not many changes, just some new unknown settings, and warning
when there's a 0-length slice.
2019-06-10 15:07:20 -04:00
sawinglogz
a66dd145b8 Add support for 500X summary data.
This one's slice 8 is shorter than anything else we've seen before!

Also add support for a new slice type and noted possible values
for other data, including a possible lead on the CPAP mode.
2019-06-10 14:30:50 -04:00
sawinglogz
2120289792 Add support for 400G summary data.
Interestingly, it looks like settings and other slices can be of
varying length, even on the same machine. Stranger still, sometimes
the list of possible slices can change on the same machine.
2019-06-08 21:36:51 -04:00
sawinglogz
08ad973a6a Wrap up of 400X summary for now.
Mostly this is commenting out warnings about values that are different
for every session. They can be sorted out later.

Humidifier status and tube temperature are cleaned up as well.
2019-06-08 14:45:57 -04:00
sawinglogz
2a82ee09d6 Refinement of 400X summary data.
Fixed a bug in the ramp pressure setting, identified the mask resistance
setting, and found the summary equivalent of the humidifier setting change
slice.
2019-06-08 14:21:54 -04:00
sawinglogz
e41515891b First pass at fixing 400X summary data.
This is mostly a cut-and-paste of the ParseComplianceF0V6,
but the some of the slice codes and sizes are different.

Also start adding machine names for tested models.
2019-06-07 22:05:52 -04:00
sawinglogz
2ace7d3a6d First pass at PRS1 200X humidifier settings.
Some of the values still aren't known, and OSCAR doesn't yet define
a channel for heated tube temperature.
2019-06-07 16:40:26 -04:00
sawinglogz
250566f3f2 Refinement of 200X compliance data.
The new slice type appears when humidifier settings have changed during
the session, and includes a timestamp. The session time now matches
reports.

Otherwise just comments to indicate other values seen in the sample data,
including a lead on humidifier encoding.
2019-06-07 16:03:20 -04:00
sawinglogz
ff4ec4fdab Create slices for 200X compliance data, along with first confirmed settings.
There's a new slice type to be examined and additional settings remain
that vary within the sample data.
2019-06-07 14:32:53 -04:00
sawinglogz
ca23791414 First pass at 200X compliance data.
Lots of debug messages and unknown values, but the structure seems right.

This is largely based on a combination of the mainblock parsing for fileVersion 3
as found in ParseSummary() and the switch statements of ParseSummaryF0V6,
based on our understanding of slices from F0V23. The slice types here
come from sample 200X files.
2019-06-07 14:32:00 -04:00
sawinglogz
330bdb6fb3 Split ParseCompliance into F0V23 and F0V6.
Also add some debug messages to FV3 parsing. It's clear the current
approach is wrong. This looks a lot like the slices seen earlier,
since hbdata values appear more than once in a given file.

Also turn off summary YAML since the next bit of work will focus on
parsing.
2019-06-06 16:08:40 -04:00
sawinglogz
ce38fbcdde Restore session end time to previous behavior, with better logging and documentation.
It turns out the session end time was intentionally not being set in ParseSummary,
probably due to its unreliability. This may be revisited once things are more
stable, but for now the old behavior is retained.
2019-06-05 17:08:45 -04:00
sawinglogz
fd6f3c3f0a Resolve new PRS1 warning messages, add the missing session end time in ParseSummary. 2019-06-05 11:12:08 -04:00
sawinglogz
092d46be33 Add debug messages for exceptional events in PRS1Import::ParseSession.
Lots of new warnings that were being silently eaten!
2019-06-05 10:24:32 -04:00
sawinglogz
8fa5df5f89 Fix PRS1 typo, resolve use of multiple event lists and refine warning. 2019-06-05 10:00:11 -04:00
sawinglogz
44d134dee5 Fix a sign error and don't consider 1-second gaps to be BND events in PRS1.
Presumably due to clock drift, there are occasionally 1-second discontinuities
in waveform data, in either direction. These will need to be addressed.
2019-06-05 08:34:36 -04:00
sawinglogz
c2b8699ee9 Chase down all unusual values in F0V23 summary sample data.
Chunk parsing is now a lot quieter, and PS for non-auto bilevel has been fixed.
2019-06-04 23:19:35 -04:00
sawinglogz
d80426af5e Add slices to PRS1 F0V23 summaries.
This doesn't have much observable effect, other than reducing a
day's total usage time if there are periods with no breathing
detected. Most of the shortcomings were obscured by information
gleaned from the events and waveform files.
2019-06-04 20:26:43 -04:00
sawinglogz
5ac6745eef Fix PRS1 F0V23 PB parsing bug that triggered unordered data warnings.
A PB event obviously can't start so late that its duration ends in the future!
The fix hasn't been applied to F0V4 or F0V6 yet, since those haven't been
tested yet.

Also fix a sign bug in EventList::AddEvent when there *is* unordered data.
2019-06-04 20:11:50 -04:00
sawinglogz
2021e91426 Fix parsing PRS1 F0V2 settings and add value checks based on a few sample sessions. 2019-06-04 12:18:20 -04:00
sawinglogz
27c169e61e Report parsing failure when PRS1 sanity checks fail.
Remarkably, this resulted in nearly no changes to the test output.
Only one session with 0 duration had its start/end times reset to 0,
since it will no longer get imported.
2019-06-03 22:01:02 -04:00
sawinglogz
1a0a4bbf52 Convert compliance "slices" to events with a starting delta.
Also fix the related enums and add more value checks.
Also add YAML output of the cumulative mask-on slice time.
2019-06-03 20:12:17 -04:00
sawinglogz
a6455b6b05 Add sanity check for presumed humidifier setting in compliance.
Also suppress "untested" user alerts for a known bogus model number.
2019-06-03 14:21:06 -04:00