Commit Graph

262 Commits

Author SHA1 Message Date
sawinglogz
febf3d2f5b Split PRS1 device mode parsing from imported modes.
This allows the parsing to accurately represent the data, even for modes that
OSCAR doesn't yet support.
2019-08-28 21:30:25 -04:00
sawinglogz
42f0745666 Improve settings interpretation for F3V6, though still not exactly right.
The next step will be to split parsing from mode interpretation, so that
we can at least accurately identify all of PRS1's modes. Then we can
work on mapping that to OSCAR's notion of modes, which probably then needs
to be augmented.
2019-08-20 12:48:15 -04:00
sawinglogz
ecb71e5706 Calculate PRS1 F3V6 pressure support settings, since we currently display them. 2019-08-20 12:08:24 -04:00
sawinglogz
0c816c7d4c Avoid pos++ in PRS1 DreamStation parsers to that events can be issued independently of parsing order. 2019-08-20 11:38:55 -04:00
sawinglogz
6c85195b39 Remove unused variable that clang missed. 2019-08-19 12:23:45 -04:00
sawinglogz
31fc47a5c5 Remove "series" from display in UI and on reports. 2019-08-18 17:27:21 -04:00
sawinglogz
928e50fcc1 Use actual product names for PRS1 instead of mangled approximations. 2019-08-18 17:03:52 -04:00
sawinglogz
66d9340cbb Don't mangle the model name for ResMed machines. 2019-08-18 16:56:41 -04:00
sawinglogz
84b900ca90 Remove the m_machopened flag from Profile, which caused newly created profiles
to act differently from profiles after a subsequent application launch.

It was only getting set at the end of Profile::OpenMachines, which was only
called by the Profile constructor, and which wouldn't succeed on a newly created
profile, having no files to open. Therefore, the only way for the flag to be set
was to quit and re-launch the application after creating the profile.

The flag's only remaining use was to make sure that OpenMachines() wasn't
getting called twice and trampling an existing list of machines, so the check
there was changed from looking at a brittle flag to looking at the actual list
of machines.

A critical warning was also added to the check, since OpenMachines() is
only getting called from the Profile constructor and therefore can't
be invoked twice unless a new bug has been introduced.
2019-08-15 16:56:44 -04:00
sawinglogz
e3e67438ea Fix the incomplete cleanup in Profile::UnloadMachineData that was resulting in
duplicate sessions being added when making preference changes to a brand new
profile with existing data.

Preference changes trigger a reload, see PreferencesDialog::Save and
needs_reload, leading to MainWindow::reloadProfile -> MainWindow::CloseProfile
-> Profile::UnloadMachineData.

This is the root cause of the duplicate sessions, but the fact that it only
happened with newly created profiles, rather than on subsequent launches,
demonstrates an inconsistency in state of Profile. It should be identical when
initially created and when loaded via subsequent application launch.
2019-08-15 16:28:07 -04:00
sawinglogz
6f7a49f949 Add a critical warning and skip when attempting to add a duplicate session to a Machine object.
This prevents duplicate sessions from being added to Day during a rebuild, but is still not
the root cause. The next step will be to address the attempted duplication in Machine.
2019-08-15 16:18:23 -04:00
sawinglogz
7d72f71fb4 Add a critical warning when a duplicate session is added to a Day object.
This is one step closer to the root cause of the crash, in which duplicate
sessions were being created during a rebuild.
2019-08-15 16:14:54 -04:00
sawinglogz
6d735a5733 Add Day::removeMachine to detect and clean up dangling references rather than
crashing when rebuilding data.

This doesn't yet address the root cause, but it will prevent crashing if other
similar bugs exist.
2019-08-15 15:49:40 -04:00
sawinglogz
0b8f89036a Merge branch 'master' into prs1-f0v6 2019-08-14 09:15:39 -04:00
sawinglogz
675f6d4361 Resolve remaining F0V6 event 3 debug messages in sample data. 2019-08-13 23:03:20 -04:00
sawinglogz
cc80a3ef09 Remove F0V6 logic from PRS1DataChunk::ParseEventsF0V234, no functional change. 2019-08-13 21:09:55 -04:00
sawinglogz
3eee72390e Clean up PRS1DataChunk::ParseEventsF0V6, no change in functionality. 2019-08-13 17:29:05 -04:00
sawinglogz
73dfdac81b Add debug logging for PRS1 F0V6 event 3. 2019-08-12 21:51:37 -04:00
Seeker4
e315baf6df Test builds use settings key of oscar-test, branch builds oscar-branch, and release builds just oscar. Default data directory named similarly. 2019-08-12 16:02:53 -07:00
sawinglogz
3de32dd21b Fix F0V6 PB starting time, and probably LL and PS as well. 2019-08-12 17:20:25 -04:00
sawinglogz
946293b67d Split PRS1Import::ParseF0Events into ParseEventsF0V6, no changes yet. 2019-08-12 16:58:27 -04:00
Seeker4
a08798cda2 Merge branch 'master' into dateformat 2019-08-08 16:26:02 -07:00
Seeker4
ceba1e81eb Make date in calendar on Daily page format per regional settings. 2019-08-08 16:24:30 -07:00
harre
77ccd417a3 Fix deprecated-copy errors and made deprecated-declarations just a warning 2019-08-06 23:49:51 +02:00
sawinglogz
d99e397cb3 Update PRS1 parser for 500X, 600X, and 700X events. 2019-08-06 15:47:36 -05:00
Seeker4
5cf6e14816 Fix problems resulting in compiler warning messages 2019-08-06 12:33:48 -07:00
Seeker4
75c0a9950a Format dates per national settings. 2019-08-06 10:51:14 -07:00
sawinglogz
7dd891df31 Add more F0V6 events based on remaining 400X sample data. 2019-08-05 21:37:19 -05:00
sawinglogz
64309f366a Add PRS1 model 562P to list of tested machines. 2019-08-05 20:46:05 -05:00
sawinglogz
84f1389d51 Support more F0V6 events based on all sessions from a single 400X machine. 2019-08-05 15:22:22 -05:00
sawinglogz
4e863ba484 Add first confirmed F0V6 events from sample data. 2019-08-04 21:09:42 -05:00
sawinglogz
e0d4872f6b Create placeholder event parser for PRS1 F0V6, separate from other F0 machines. 2019-08-04 19:36:40 -05:00
Phil Olynyk
f7227b7316 Don't create (summary) sessions when maskon == maskoff 2019-08-01 13:30:11 -04:00
sawinglogz
9a1bccff57 Merge branch 'master' into prs1-improvements 2019-07-27 15:05:33 -04:00
sawinglogz
8ef4766efd Fix F3V6 imported channels to match reports. 2019-07-27 15:04:20 -04:00
sawinglogz
46a077cb43 Clean up remaining F3V6 import messages. 2019-07-26 22:53:15 -04:00
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
Seeker4
751df7652a Diagnostic changes for a future feature 2019-07-25 06:25:03 -07: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
Seeker4
376d04803a Show commit id in title bar for all except Release versions. 2019-07-24 01:47:15 -07: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
Seeker4
2568f79a99 Default right sidebar off, calendar off, pie chart off with new OSCAR folder. 2019-07-19 06:43:53 -07:00
Seeker4
f6941843e8 Merge branch 'master' into defaults 2019-07-14 20:28:06 -07:00
Seeker4
11f2fb5d3f Change GraphSnapshots to ShowPieChart in code, UI, and preferences. Convert any existing GraphSnapshots preferences to ShowPieChart. 2019-07-14 20:25:49 -07:00
Seeker4
48b4d754b3 Add utility to rename a preference setting 2019-07-14 20:23:23 -07:00
Seeker4
e2f5899fb8 Comment out a qDebug statement that is not normally needed and very voluminous when used. 2019-07-12 19:28:02 -07:00
Phil Olynyk
67ef9f291e Clean up by deleting unused threading code and re-grouping declarations 2019-07-12 15:58:14 -04:00
Seeker4
5bf71e2a55 Fix problem with null font name. Forced default font for Mac will be Helvetica. 2019-07-10 21:35:14 -07:00
Seeker4
01f98d1583 Merge branch 'master' into fonts 2019-07-10 15:15:14 -07:00
Seeker4
be9ce5085b Do not allow private font to be used for other than Application on MacOS 2019-07-10 15:13:27 -07:00
sawinglogz
74de65778e Fix memory bug in ResMed loader. 2019-07-10 12:37:40 -04:00
sawinglogz
c1aa016a46 Add trivial unit tests for ResMed loader. 2019-07-10 12:33:00 -04:00
Seeker4
7dab22133b Merge branch 'master' into fonts 2019-07-05 14:30:26 -07:00
Seeker4
0d0a5550d0 Do not add 10 to Hypopnea duration as was done in SleepyHead. ResMed does not report Hypopnea duration so we should not invent it. 2019-07-05 10:28:15 -07:00
Seeker4
087b18545f Centralize all font validation and setting into new functions in common.cpp. Add registry key to System Info (call it App Key for cross-platform compatibility). 2019-07-04 18:14:41 -07:00
Seeker4
a9c3b363b9 Add some qDebug() statements for invalid start dates 2019-06-30 08:59:29 -07:00
Seeker4
85efcace3e Add a qDebug() statement if start date for an EDF file is zero. 2019-06-28 19:53:46 -07:00
Seeker4
21c9730888 Cosmetic changes to qDebug() statements. 2019-06-28 19:52:25 -07:00
Seeker4
828a8705ab Improve qWarning to have more data when discarding a session with first=0 2019-06-28 19:51:14 -07:00
Seeker4
b943356619 Add some qDebut statements for version mismatch. 2019-06-28 19:50:23 -07:00
Seeker4
d58bdc9452 Discard sessions with first timestamp of 0 to fix phantom date problem. 2019-06-25 06:23:04 -07:00
Seeker4
a30aa74099 Improve qWarning message to show timestamps causing the warning. 2019-06-24 10:08:53 -07:00
sawinglogz
43ec3ab4af Fix a few PRS1 unused variable warnings that only gcc catches. 2019-06-21 21:04:16 -04:00
sawinglogz
581515e595 Merge branch 'master' into prs1-fixes-2 2019-06-21 15:26:57 -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
Phil Olynyk
73a225556a Fix date and time handling for new CMS50Dplus model 2019-06-15 15:42:47 -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
Phil Olynyk
589eec69ec Merge branch 'master' into fix-cms50dplus 2019-06-13 14:09:51 -04:00
sawinglogz
52fd3a46d3 Merge branch 'master' into prs1-fixes 2019-06-12 20:37:26 -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
Seeker4
24258ea4e3 Correctly identify Climate setting as Auto or Manual in Machine Settings on Daily page. 2019-06-11 10:20:03 -07:00
Phil Olynyk
b6427de247 Add moule name to debug, force tab enable after import 2019-06-11 10:30:51 -04:00
sawinglogz
99cbe89f3e Merge branch 'master' into prs1-fixes 2019-06-10 20:59:25 -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