Commit Graph

1023 Commits

Author SHA1 Message Date
sawinglogz
fd9c73f79f Clean up PRS1 F3 (ST and AVAPS) importers to minimize their differences.
Also add the beginnings of a per-model list of parsed/supported events.
2019-10-19 17:35:45 -04:00
Phil Olynyk
efa7c7d313 remove unsupported compile option for old compilers 2019-10-13 20:06:05 -04:00
sawinglogz
9bd7a4942b Calculate PS for PRS1 F3 machines (S/T and AVAPS models). 2019-10-10 20:13:39 -04:00
sawinglogz
75fca0c951 Merge PRS1 F5 event importers into ImportEventsF5V0123 since they're now identical.
No change in functionality.
2019-10-10 18:11:02 -04:00
sawinglogz
86cc4fa210 Clean up PRS1 F5 importers to remove their remaining differences.
No change in functionality.
2019-10-10 17:55:27 -04:00
sawinglogz
abb7ddd9cb Don't calculate unintentional leak for PRS1 autoSV 60-series machines, which report it.
This fixes 960P-960T, which was importing both values at each interval, presumably
trampling each other. 950P didn't report it, and DreamStation never calculated it.

Also fix timed breath gain for pre-DreamStation autoSV.
2019-10-10 17:23:07 -04:00
sawinglogz
6715e05f61 Clean up PRS1 F5 (autoSV) importers to minimize their differences.
Timed breaths durations are now fixed for 950P-961P, and
960T pressures are now imported correctly.
2019-10-10 16:47:52 -04:00
sawinglogz
a1e66d1c62 Merge PRS1 F0 event importers into ImportEventsF0V2346 since they're now identical. 2019-10-10 14:38:18 -04:00
sawinglogz
e948a45baa Clean up PRS1 F0 importers to minimize their differences.
450P through 960P no longer report the snore count in parentheses
in their VS2 flags.
2019-10-10 14:18:39 -04:00
sawinglogz
a41debc57b Fix PB and LL start times for PRS1 450P through 960P. 2019-10-10 13:23:20 -04:00
sawinglogz
964ddc855a Clean up PRS1 importers to reveal any significant differences between them.
F3V6 now reports its snore count flags as VS2 in order to be consistent
with all other models. It doesn't seem to  report individual VS events.
2019-10-10 12:46:47 -04:00
sawinglogz
42948b2d3c Check duplicate PRS1 chunks on import to confirm that they are identical, warn if not. 2019-10-10 10:34:36 -04:00
sawinglogz
6ee83576b2 Clean up F3V3 summary and event parsing.
F3V3 is unusual. Its events are recorded at fixed intervals like a waveform.
Its summary is recorded with absolute timestamps. Slices are each given their
own chunks in the event file.

This last oddity isn't yet handled.

While examining this, a few other importing issues have been cleaned up:
PRS1DataChunk::ParseEvents no longer needs the mode passed in as an argument,
F5V012 importers should quietly eat the newly parsed pressure
adjustment events until we can import both those and average pressure
statistics, and F5V012 importers should handle real VS events and treat
VS statistics like the other importers do.
2019-10-09 13:35:02 -04:00
sawinglogz
f01ea9b165 Improve PRS1 F3V3 (1061T, 1160P) parsing.
Import is still not working correctly, but the parsing now seems
correct, as far as we can verify it at this point.
2019-10-09 10:24:29 -04:00
sawinglogz
a8df58b1ef Clean up ParseEventsF5V2 switch statement based on sample data.
This is very incomplete since we currently have only limited sample
data for F5V2. The events that have been verified will parse
correctly, and the rest will result in a parsing error.

There are some very strange changes in the event numbers compared
to F5V1 and F5V3, it's unclear why.

Note that F5V2 uses a gain of 0.125 like F5V3 instead of 0.1 like F5V1.
2019-10-08 16:49:29 -04:00
sawinglogz
1946be162c Add support for 16-bit timestamps in F5V1 events. 2019-10-08 11:20:51 -04:00
sawinglogz
5872a9519e Clean up ParseEventsF5V1 switch statement based on sample data.
F5V1 introduces a new Hypopnea variant (event 8) with 2 data bytes.
This was previously seen in F5V3, and it's unclear how this is
different from the usual Hypopnea event (event 7, 1 data byte).
Parsing used to stop when it encountered this event, but now it
can continue through the end of the session.

F5V1 also adds a leak value in its periodic stats, also previously
seen in F5V3. PB start time and duration are now correct.

As with F5V0, now VS, LL, and EPAP adjustment are correctly parsed,
and timestamps and durations are now accurate.

The handlers were essentially copied from F5V3 and F5V0 for
consistency and cross-checking.
2019-10-08 10:44:18 -04:00
sawinglogz
15f7dacbab Clean up ParseEventsF5V0 switch statement based on sample data.
This fixes a lot of issues with event parsing. Now VS, LL, and EPAP
adjustment events are now correctly parsed.

And as a result the timestamps for events and overall session durations
are now accurate.

The handlers were essentially copied from F5V3 and F0V12 for
consistency and cross-checking.
2019-10-05 20:52:34 -04:00
sawinglogz
4119a57278 Comment out unused familyVersion logic in split F5V0, F5V1, F5V2 event parsers.
No change in functionality.
2019-10-04 20:51:24 -04:00
sawinglogz
380c9d4071 Split ParseEventsF5V012 into separate functions for F5V0, F5V1, and F5V2.
No functional changes.

There's a lot of duplication, but that can be cleaned up once the parsers
work correctly.
2019-10-04 20:10:35 -04:00
sawinglogz
07aec55d80 Migrate F5V012 event loop logic to match F0V4.
No changes were intended in the imported data, but the parsers
were fantastically broken, so touching anything in the code
results in lots of differences in the output.

As a result, the imported data for F5V012 is now unstable.

On the plus side, the parser no longer bails on event 8 for F5V1.

This will almost certainly need to be split into 3 separate
functions.
2019-10-04 19:55:18 -04:00
sawinglogz
6992a2f1a9 Update ParseEventsF0V4 with event handlers from F0V23 and F0V6 after verifying them against sample F0V4 data.
F0V4 is unsurprisingly a midpoint between the two. PB/LL durations are
doubled as in F0V6 and, in fact, the contents of all events seem
identical between F0V4 and F0V6, apart from the new hypopnea events 0x14
and 0x15 in F0V6. We haven't encountered event 0 in F0V4 or F0V6 data
yet, but it would be an interesting comparison to F0V23.

It's now clear that PRS1PressureAverageEvent can't just be the average
overall pressure, at least not for CPAP: it's too low. This needs
further study.

Import changes:
- As with F0V23, apneas/hypopneas now have a (correct) duration of 0.
- PB/LL will now be drawn at the correct time, instead of starting when
  they end. This was already fixed previously in F0V23.
- The EPAP graph is removed from CPAP data until we understand what
  the underlying data is.
2019-10-04 18:53:10 -04:00
sawinglogz
027f82e0bb Migrate F0V4 event loop logic to match F0V23, no change in functionality. 2019-10-04 15:10:08 -04:00
sawinglogz
1d805fd9bc Fix warnings about unknown duration events for F0V23.
We should eventually import and graph these, even if we don't yet understand them.
2019-10-04 13:12:24 -04:00
sawinglogz
9f8f9224ab Add DreamStation BiPAP AVAPS 30 AE (1131X150) to the list of tested/recognized machines. 2019-10-04 12:20:18 -04:00
sawinglogz
a95429763d Update ParseEventsF0V23 for unknown event 0.
It also turns out that every sample machine that claims to be F0V3 in its
property file contains only F0V2 data, so there appears to be nothing
additional to test, but now there are more warnings in case we ever do
actually encounter F0V3 data.

Also warn if we ever encounter oximetry.
2019-10-04 12:08:16 -04:00
sawinglogz
460959dd78 Update ParseEventsF0V23 with event handlers from F0V6 after verifying them against sample F0V2 data.
The only difference so far is the lack of doubled duration for PB/LL, slightly rearranged
events 0-3, and the absence of events 0x14 and 0x15 in F0V2 (so far).

The only change in import functionality is that apneas/hypopneas now have a (correct)
duration of 0.

Next step is to test against more samples and particularly F0V3 samples.
2019-10-04 12:07:06 -04:00
sawinglogz
b2b62256d5 Migrate F0V23 event loop logic to match F0V6, still no change in functionality. 2019-10-03 19:42:28 -04:00
sawinglogz
2f46036a01 Remove F0V4 logic from F0V23 event parser and vice versa. No change in functionality. 2019-10-03 19:06:06 -04:00
sawinglogz
06098b9033 Split ParseEventsF0V234 into F0V23 and F0V4, no change in functionality. 2019-10-03 16:50:59 -04:00
sawinglogz
81a2945d0e Clean up F3V3 settings parsing. It turns out its humidifier settings are different from F0V4 and F5V012. 2019-10-03 12:33:28 -04:00
sawinglogz
445c74a70e First pass at F3V3 summary and settings parsing based on 3 sample sessions. 2019-10-02 20:21:43 -04:00
sawinglogz
d87dd6a0aa Fix ParseFlexSetting for F5V012 rise time.
ParseFlexSetting is largely untouched, but as a result also untested.
We should double-check it for all families and versions.
2019-10-02 19:14:24 -04:00
sawinglogz
6e5c751dd5 Finish cleaning up F5V012 settings from sample data. 2019-10-02 18:57:42 -04:00
sawinglogz
16caab4ce5 Add missing events to ParseSummaryF5V012, identify additional settings. 2019-10-02 11:55:44 -04:00
sawinglogz
fd7b5f8be0 Initial pass at ParseSummaryF5V012 based on F0V4.
It turns out each familyVersion has records of different sizes, including
the first one containing the settings. It may make more sense to split
summary and/or settings parsing into multiple familyVersion-specific functions.

Also it looks like the F0V4 humidifier settings are actually 60 Series
settings, and the "V2" settings are original System One settings, not
all fileVersion 2 machines.
2019-10-01 18:30:32 -04:00
sawinglogz
fe6c1ec2fa Split settings from summary parsing for F5V012 and F3V3. 2019-10-01 11:38:16 -04:00
sawinglogz
346d0a8e60 Identify common F0V4 summary statistics. 2019-10-01 11:29:31 -04:00
sawinglogz
166ada843b Add "support" for clock adjustment event ParseSummaryF0V4 and cleared event in ParseSummaryF0V23.
"Support" in this instance means that it will quietly ignore the events, since there's really
nothing to import. But this means that parsing will correctly continue past the events, even
though so far they're the only events in a session. There are diagnostics to log if that
assumption turns out not to be correct.
2019-09-30 15:46:26 -04:00
sawinglogz
4b5cdb8192 Add support for new Time Elapsed event in ParseSummaryF0V4.
Still trying to figure out timestamp event.

Other summary parsers will need review, since there was an initial
filter that was dropping sessions that began with event 5 or 6,
now commented out.
2019-09-30 10:23:28 -04:00
Seeker4
2e1069b8d0 Allow user to select graph order when resetting -- Standard or Advanced 2019-09-28 20:15:16 -07:00
Seeker4
f1e4face7f Update refresh button on Profile selector page. Code to implement this feature was apparently never written. 2019-09-28 20:13:50 -07:00
sawinglogz
e264a86164 First pass at ParseSummaryF0V4, needs testing.
Based on the F0V23 loop and F0V6 switch statement, along with manual review of
several sample files to determine record length.

Split ParseHumidifierSettingF0V4 out from ParseSettingsF0V4.
2019-09-28 20:47:24 -04:00
sawinglogz
13395d9c35 Finish cleaning up ParseSettingsF0V4. 2019-09-28 19:31:37 -04:00
sawinglogz
8f49633131 Improve F0V4 settings support, especially humidification. 2019-09-28 18:23:18 -04:00
sawinglogz
c24b29c80a Partially parse F0V4 humidification settings, need to review more samples to complete. 2019-09-26 12:37:01 -04:00
sawinglogz
e973109ccc First pass at adding missing settings to F0V4, lots still to find. 2019-09-25 11:17:16 -04:00
Phil Olynyk
6d338ac88f Clean up some debug messages 2019-09-25 07:25:44 -04:00
sawinglogz
fd23108c3d Refactor ParseSummaryF0V23 to match loop structure of F0V6. No change to imported data. 2019-09-24 21:07:10 -04:00
sawinglogz
55525cdc01 Update ParseComplianceF0V23 to use new ParseSettingsF0V23, since the data format is the same.
This also pushes something that seemed to be settings back into ParseSummaryV023.
2019-09-24 17:00:49 -04:00
sawinglogz
5d40051d70 Split settings parsing out of F0V23 and F0V4 summary parsers. 2019-09-24 16:27:27 -04:00
sawinglogz
9f330b2ec4 Add length checking to PRS1 F0V6 settings. 2019-09-23 14:26:38 -04:00
sawinglogz
bb9cce787c Parse backup breathing settings for DreamStation 900X machines.
No change to imported data.
2019-09-23 14:10:23 -04:00
sawinglogz
2e04755b53 Parse backup breathing settings for DreamStation 1030X-1130X machines.
No change to imported data.
2019-09-23 14:04:22 -04:00
sawinglogz
50d60385bd Add Flex mode setting for DreamStation 900X machines. 2019-09-23 12:56:06 -04:00
sawinglogz
9f28dae627 Add Flex mode setting for DreamStation 1030X-1130X machines. 2019-09-23 12:39:20 -04:00
Phil Olynyk
6896bfd50b Add missing brace to previous commit 2019-09-22 17:49:00 -04:00
Phil Olynyk
3edff07151 Merge master, fix unreadable and zero-length file conflict 2019-09-22 17:32:09 -04:00
sawinglogz
21f61d7527 Add Flex mode setting for DreamStation 200X-700X machines. 2019-09-20 15:38:14 -04:00
sawinglogz
3c1a7adaa3 Add support for many DreamStation settings, changes to flex mode require rebuilding all PRS1 databases. 2019-09-20 12:59:14 -04:00
sawinglogz
76a71802ab Rename some internal PRS1 parsing enums to match report terminology.
This affects parser YAML output, but has no effect on imported data.
2019-09-20 00:15:40 -04:00
sawinglogz
adc887c5f8 Import additional DreamStation settings:
- hose diameter
- auto on
- auto off
- mask resist lock (parsed only)
- show optional screens (parsed only)
2019-09-19 21:29:33 -04:00
sawinglogz
ccfce7fd2e Add internal parsing (and YAML output) for known DreamStation events that won't get imported.
These are events that are in the PRS1 files but which OSCAR doesn't know how to present:

- An F0V6 event with duration that looks like PB or LL but doesn't appear on any official reports
- The Auto-CPAP pressure to use at the beginning of a session
- A report of the snores detected at each pressure/EPAP/IPAP
- Apnea alarms on F3V6

Rather than bury the understanding in commented-out sections of the parser, these events
will now be parsed and added to the internal event stream, which allows them to be dumped
to YAML. Whenever OSCAR eventually supports these data, the importer will have ready
access to them.

Again, no change to external behavior.
2019-09-19 16:43:24 -04:00
sawinglogz
95e2baad26 Distinguish between pressure adjustment events and average pressure stats on PRS1.
This only affects the parser at this point, and the importer has been updated so that
there is no externally visible change to the imported data.

Eventually we'll need to figure out how to display the two differing kinds of
pressures, at which point we'll need to fix the importer to use the right channels,
instead of the inconsistent treatment now.
2019-09-19 14:21:12 -04:00
sawinglogz
5e4a24b237 Add support for F3V6 sessions without ramp, with apnea alarm. 2019-09-19 10:33:23 -04:00
Seeker4
d990ce560a Report pressure when IPAP is missing. This is a preliminary change and will be improved later. 2019-09-16 12:05:47 -07:00
Seeker4
dcf68dac37 Improve diagnostics messages and yet another check for the phantom date 2019-09-16 12:01:30 -07:00
Seeker4
1548a215f6 Document schema better, remove unused definitions 2019-09-16 12:00:14 -07:00
Seeker4
c8c837b50f Sort machines in machine list by first date of use, adjust footer message 2019-09-16 11:56:40 -07:00
Seeker4
ec9985d32e Make sessionbar blue color darker and more distinguishable from white 2019-09-16 11:54:42 -07:00
Seeker4
aaf5627891 Ignore zero-length files and add qWarning messages for ignored files. 2019-09-16 11:53:27 -07:00
sawinglogz
517e6f0d86 Merge branch 'master' into prs1-500g110 2019-09-07 20:11:53 -04:00
sawinglogz
45018f4903 Update PRS1 loader from 500G110 test data. 2019-09-07 15:02:16 -04:00
Seeker4
45814d129c Update release notes, add documentation about graph ordering 2019-09-06 22:16:35 -07:00
Seeker4
67d589f7a4 Change recognition of S9 for SD card warning because of changes to machine naming 2019-09-06 22:15:36 -07:00
Seeker4
a1389ba68a Include date and time at bottom of report pages 2019-09-06 22:14:32 -07:00
Phil Olynyk
47719a4d09 Merge master back in, prior to push 2019-09-04 13:24:52 -04:00
Seeker4
10ac30f776 Fix problem with S9 SD card warning incorrectly appearing on Welcome 2019-09-03 21:44:02 -07:00
Seeker4
1b67688b12 Fix problem with advanced graphs. Update release notes. 2019-09-03 12:56:10 -07:00
Seeker4
6158d83935 Clean up code -- eliminate qDebug statements 2019-09-02 22:10:36 -07:00
Seeker4
aeffae09fc Standard and Advanced graphs apparently working, still with lots of diagnostics. 2019-09-01 22:14:36 -07:00
Seeker4
afdcd0bbc4 First step in Daily graphs rework: replace many hard-coded strings as STR_GRAPH_* variables for keys to graphs. 2019-08-31 17:56:53 -07:00
Seeker4
ff37ac0695 Add preferences setting to include machine serial on Statistics page machine settings report, default to off because it is ugly. 2019-08-31 17:06:47 -07:00
Phil Olynyk
efad208143 Adjust epcoh for time zone offset 2019-08-30 14:48:03 -04:00
Phil Olynyk
3055e1fe37 More work in progress 2019-08-30 13:22:19 -04:00
Seeker4
b53b0a99e0 Fix event count formatting in Daily Events tab 2019-08-29 18:47:25 -07:00
Seeker4
ec3063d083 Merge branch 'master' into graphs 2019-08-29 12:48:05 -07:00
Seeker4
70693bcbec Remove unneeded comment and #include 2019-08-29 12:46:25 -07:00
Seeker4
3cf038cb70 In event list, use only number of digits needed for event count 2019-08-29 07:21:19 -07:00
sawinglogz
384aacc904 Merge branch 'master' into prs1-native-modes 2019-08-28 21:55:56 -04:00
sawinglogz
6b86eb1b11 Fix minor regression for PRS1 F3V6 mode import. 2019-08-28 21:53:50 -04:00
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
Seeker4
c1b4137857 Remove some qDebug statements that aren't needed. 2019-08-28 16:31:56 -07:00
Seeker4
be147fee0a Always allow import cpap and oximetry. Allow Daily, Overview, and Statistics only if there is some data present. 2019-08-28 15:23:13 -07:00
Seeker4
091253f03d Show machine (rx) changes only if there are CPAP machines in this profile. 2019-08-28 15:22:31 -07:00
Phil Olynyk
5ee8feb37c Still work in progress 2019-08-27 23:59:51 -04:00
Seeker4
22a8303836 Trim blanks from user name before checking username is not empty 2019-08-26 23:10:58 -07:00
Seeker4
4fe0869816 On Overview page do not save CUSTOM range selection on exit. (CUSTOM was restoring to a broken state. Now, it is just not saved and default LAST 3 MONTHS applies on restart. 2019-08-26 16:11:09 -07:00
Seeker4
61270ae83e Refactor getRangeString for date line at bottom of Overview page 2019-08-25 07:46:48 -07:00
Seeker4
61142830ae Correct date problems on bottom of Overview page. Remove UTC conversions. Improve date formatting for 1 day and more than a year. 2019-08-24 17:47:22 -07:00
Seeker4
9010ca5ae4 Update release notes for progress bar and overview improvements 2019-08-23 12:44:25 -07:00
Seeker4
d7a4bcc78b Update release notes for this merge 2019-08-23 11:43:43 -07:00
Seeker4
79e34d067a Add a progressbar when opening an overview with a large number of days 2019-08-23 11:41:42 -07:00
Seeker4
36acc7bd2f Fix problem that could cause CProgressBar to hang and not close 2019-08-23 11:40:52 -07:00
Phil Olynyk
4c121cc53a Started on adding firstImportDay, need to fix scanFiles and PaerseSTR 2019-08-23 09:56:17 -04:00
Seeker4
a8dc05c3f5 1.1.0-testing-4 plus fix to overview graph 2019-08-22 19:59:51 -07:00
Seeker4
87d4d0f7b2 1.1.0-testing-4 build number and release notes 2019-08-22 15:17:01 -07:00
Seeker4
1613e20d22 Update release notes for Overview changes 2019-08-22 02:37:51 -07:00
Seeker4
842052addb Merge branch 'master' into overview 2019-08-22 02:34:56 -07:00
Seeker4
92136e7a63 Fix problem with overview charts all starting at left edge when they should not. 2019-08-22 02:33:18 -07:00
Seeker4
1c304eb13e Add some documentation to graph modules. 2019-08-22 02:31:33 -07:00
Seeker4
1904e50500 Change green/black and red/black toggle buttons to checkboxes 2019-08-22 02:27:55 -07:00
Seeker4
28326f4ec8 Refactoring overview, add more documentation. 2019-08-22 02:26:33 -07:00
Seeker4
335af79076 Fix spelling error. 2019-08-22 02:24:47 -07:00
Seeker4
ffda65300d Fix spelling errors. 2019-08-22 02:17:44 -07: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
38409f6fbf Merge branch 'master' into fix-stale-translations 2019-08-19 17:02:50 -04:00
sawinglogz
42685cfbb6 Only copy current .qm files during build, rather than everything in the temporary directory. 2019-08-19 17:00:31 -04:00
Seeker4
4e52261439 Fix building of oscar_qt_xx.qm file names to be in lower case. 2019-08-19 13:14:07 -07:00
Seeker4
acd7b04b7b In translations.cpp, add new language names, revise loading of qm files into translator, add debug messages, all qm files are now together in translations directory 2019-08-19 12:36:23 -07:00
Seeker4
9527aadb66 In oscar.pro, add new language files in translations/qt directory. Remove Mac handling for QT files in a different directory. 2019-08-19 12:35:21 -07:00
Seeker4
48c0387125 Release notes for language changes, other minor changes 2019-08-19 12:34:18 -07:00
Seeker4
af2fc6f9c3 Automatically convert IS language code to HE on startup (new code for Hebrew) 2019-08-19 12:32:26 -07:00
sawinglogz
6c85195b39 Remove unused variable that clang missed. 2019-08-19 12:23:45 -04:00
sawinglogz
bed88b1546 Merge branch 'master' into deprecate-series 2019-08-18 17:38:48 -04:00
sawinglogz
65f3f53686 Add model number to printed daily report. 2019-08-18 17:30:52 -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
Phil Olynyk
b518461f8c Factor out buildEventList 2019-08-16 22:17:47 -04:00
Phil Olynyk
f5f0d62611 Factor out checkSummaryDay 2019-08-16 19:50:09 -04:00
Phil Olynyk
3e87d9d5e0 Factor out backupSTRfiles 2019-08-16 18:05:25 -04:00
Seeker4
f3605803e1 Remove languages from translations.qrc. Update release notes for post-1.1.0-testing-3 2019-08-15 23:23:22 -07:00
sawinglogz
ad09695531 Copy QT and OSCAR translation files into Mac .app bundle.
They are stored in two separate locations (Contents/translations
for QT and Contents/Resources/translations) because
QLibraryInfo::location(QLibraryInfo::TranslationsPath) returns
the former only after macdeployqt has run, and returns Qt's
installed location prior to that.

And Contents/Resources/translations is the better location,
so we use it where we can.
2019-08-15 23:07:54 -04:00
Phil Olynyk
e5d1723c27 Use new annotations in EVE and CSL loaders 2019-08-15 20:30:54 -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
Seeker4
7786161a4d Merge branch 'master' into overview 2019-08-14 11:36:18 -07:00
Seeker4
4a7a14c301 Set Windows file version to 0.0.0.0 (make it obviously wrong), improve Windows properties for installer info. 2019-08-14 11:32:08 -07:00
Seeker4
56584bd601 Make 100% zoom work properly on Overview page. 2019-08-14 11:29:26 -07: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
4b67af970f Update release notes for recent changes. 2019-08-12 16:26:35 -07: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
Seeker4
3492323216 Change Romanian name to Românește, clarify which translation file qDebug statements refer to. 2019-08-12 15:59:47 -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
edfbb692e9 Tweak format of date bar on Daily page slightly. 2019-08-09 23:14:32 -07:00
Seeker4
cd30fd73ab Release notes for Daily page date bar change 2019-08-09 23:00:17 -07:00
Seeker4
d375ab38f8 Merge branch 'master' into dateformat 2019-08-09 22:56:45 -07:00
Seeker4
83a01fa203 Date bar on bottom of Daily graph now in local time when no line cursor displayed, and formatting updated 2019-08-09 22:54:00 -07:00
Seeker4
83a1767789 Merge branch 'master' into graphs 2019-08-09 15:34:59 -07:00
Seeker4
fc3ec0d485 View/Reset Graphs now additionally enables all graphs and all event flags 2019-08-09 15:32:37 -07:00
harre
998eab6180 Another fix for deprecated-copy 2019-08-09 12:35:29 +02: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
5e16e18b4c Merge branch 'master' into dateformat 2019-08-06 11:04:14 -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
Phil Olynyk
b8b4acb804 Added Annotation dump program and fixed edfparser to make it work 2019-08-04 21:49:17 -04:00
sawinglogz
bcce5f698d Merge branch 'fix-warnings' into prs1-f0v6 2019-08-04 20:26:03 -05:00
sawinglogz
6831af489c Fix warning where #include had different case from filename. 2019-08-04 20:22:24 -05:00
sawinglogz
d6da63bf8c Always treat warnings as errors, even (especially!) in release.
Also rename the debug GUI build to "memdebug" to avoid colliding with
Qt's built-in debug build.
2019-08-04 20:21:02 -05:00
sawinglogz
e0d4872f6b Create placeholder event parser for PRS1 F0V6, separate from other F0 machines. 2019-08-04 19:36:40 -05:00
Seeker4
3ec75dec09 Merge branch 'master' into progress 2019-08-04 08:39:37 -07:00
Seeker4
5697ac53e6 Use new CProgressBar class instead of QProgressDialog 2019-08-04 08:36:34 -07:00
Seeker4
686d83d5ab Update file list for new CProgressBar class 2019-08-04 08:35:40 -07:00
Seeker4
38a9d71560 Add C[onditional]ProgressBar class. 2019-08-04 08:33:32 -07:00
sawinglogz
2f2cb0e605 Add debug GUI build to track down crashes. 2019-08-03 15:09:41 -05:00
Phil Olynyk
b80ae70525 Changed class EDFParser to EDFInfo, and changed member names to show usage.
Added an Annotaions list member to avoid reparsing.
Skipping directories before ignore-before date.
Added a new app to dump STR.edf files.
Still not complete.
2019-08-03 10:59:08 -04:00
Seeker4
3c425d66e4 Correct computation of what AHI values are considered "close" 2019-08-01 12:55:21 -07:00
Seeker4
bd3c078dfb Merge branch 'master' into welcome 2019-08-01 11:59:32 -07:00
Seeker4
c2e95d51f6 Update 1.1.0-testing-3 release notes for recent changes 2019-08-01 11:57:24 -07:00
Seeker4
ec239edf69 Correct labels in Records tab of right sidebar 2019-08-01 11:56:28 -07:00
Seeker4
a7103efee0 Merge branch 'master' into graphs 2019-08-01 11:24:05 -07:00
Seeker4
8d7e5c7479 Simplify ResMed SD card lock message. 2019-08-01 11:21:57 -07:00
Phil Olynyk
f7227b7316 Don't create (summary) sessions when maskon == maskoff 2019-08-01 13:30:11 -04:00
Phil Olynyk
37c9e615e4 Don't create (summary) session with maskon == maskoff 2019-08-01 12:34:06 -04:00
Phil Olynyk
531edc6ad2 Interim commit - resmed_loader still needs work 2019-07-31 14:36:40 -04:00
Seeker4
c602fa7dcb Correct 7-day average calculations on Welcome page. 2019-07-31 10:31:08 -07:00
Seeker4
3b1414c37d When reverting to original graph order, reset any pins. 2019-07-31 08:40:20 -07:00
Seeker4
4532b22fc6 Add View/Reset Graphs to put graphs in original order and heights. Overlays and dotted lines are not yet reset. 2019-07-30 19:59:01 -07:00
Seeker4
d31095318a OSCAR 1.1.0-testing-3 Release notes and build number 2019-07-28 09:13:54 -07:00
Seeker4
eb756fd2c8 Improve RXChanges progress bar so it displays only if estimated time to completion is more than 4 seconds 2019-07-28 08:18:59 -07:00
Seeker4
fa875ed5ca Merge branch 'master' into progress 2019-07-28 07:08:27 -07: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
5eac97808e Add missing item to release docs for 1.1.0-testing-2 2019-07-25 14:57:25 -07:00
Seeker4
9a957e75e1 Merge branch 'master' into defaults 2019-07-25 06:32:05 -07:00
Seeker4
96ba683599 Show progress bar if recomputing rxchanges cache and looking at more than 180 days of data 2019-07-25 06:27:02 -07:00
Seeker4
f635302058 Improve performance of enabling or disabling pie chart option 2019-07-25 06:26:19 -07:00
Seeker4
751df7652a Diagnostic changes for a future feature 2019-07-25 06:25:03 -07:00
Seeker4
7785d7fc9c Change height and weight decimals displayed, BMI digits displayed 2019-07-25 06:23:24 -07:00
Seeker4
acd078cc82 OSCAR 1.1.0-testing-2 release notes and build number 2019-07-25 06:21:30 -07:00
Seeker4
d04c2ae8ba Add tooltip to Weight field to explain BMI calculation 2019-07-24 23:18:09 -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
Phil Olynyk
93b363465f Merge branch 'master' into tidy-edf-parser 2019-07-24 17:18:03 -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
4ffb621d09 Make decimal point more visible in BMI display on Daily/Notes tab 2019-07-24 09:17:59 -07:00
Seeker4
16200b46ca Change metric height in profile dialog to show it is measured in cm, not in meters. 2019-07-24 09:14:13 -07:00
Seeker4
844b33a4c3 Show indices for all events even if flags for an event is disabled 2019-07-24 09:12:05 -07:00
Seeker4
166ffa4970 Show BMI label and calculated value only when both weight and height are non-zero 2019-07-24 01:48:18 -07: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
Phil Olynyk
1953a20cdd Added Romanian translation file 2019-07-22 17:21:11 -04:00
Phil Olynyk
ed6464e924 an Interim commit... 2019-07-22 17:01:47 -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
b4a64fa8e6 Hide pie chart when taking screen capture. Refactor code in daily.cpp to make use clearer and save html for possible future use. 2019-07-18 22:39:08 -07:00
Seeker4
9d25359138 Version code and release notes for Oscar-1.1.0-testing-1 2019-07-18 22:37:53 -07:00
Seeker4
3f42053a1d Yet another attempt to calculate the number of months for Statistics page monthly view 2019-07-18 22:36:07 -07:00
Phil Olynyk
6fcc4e9af1 Add number of years times 12 to lastmonth - then trim to 12 max 2019-07-18 21:16:05 -04:00
Phil Olynyk
8c11751b2b Re-arrange edf-parser code - and fix it 2019-07-18 19:36:35 -04:00
Phil Olynyk
4ad282768c Merge branch 'master' into fix-png-profile 2019-07-15 16:55:19 -04:00
Phil Olynyk
335737259f Use mogrify to clean up png color profile for logo files 2019-07-15 16:42:08 -04: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
39542ba7db Move Pie Chart option from Preferences dialog to View menu. 2019-07-13 14:53:57 -07:00
sawinglogz
d45c9f1449 Fix tests broken by 67ef9f29. 2019-07-13 09:59:57 -04:00
Seeker4
14611bd591 Change default order of graphs on Daily page. 2019-07-12 19:29:33 -07:00
Seeker4
8f5ed48ae8 Make sure tool buttons on Welcome page are repainted after a font change. 2019-07-12 19:28:57 -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
Phil Olynyk
b497b3ccbb QT 5.7 doesn't like comparison of naked chars - construct a QLatin1Char instead 2019-07-12 15:26:05 -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
a382733d7c Make Resmed card warning responsive to application font changes. 2019-07-09 07:14:00 -07:00
Seeker4
7dab22133b Merge branch 'master' into fonts 2019-07-05 14:30:26 -07:00
Seeker4
dbabc4cd58 Suppress duration on tooltip and event list if duration is zero (which usually means unknown duration as CPAP machine did not report it) 2019-07-05 10:29:57 -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
a424a1903e Add font validation and setting methods. Call at startup or after preference changes to force fonts to be acceptable to operating system and to set application font. 2019-07-04 18:21:16 -07:00
Seeker4
86d5c074a4 Set tool button fonts correctly if application font is changed. 2019-07-04 18:20:19 -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
94f71ad4c2 Make tool buttons in middle of screen respond to change in application font 2019-07-04 18:11:12 -07:00
Seeker4
e0c70bf082 Update date display on Overview page when font is changed in Preferences dialog 2019-07-02 08:25:47 -07:00
Seeker4
a464c5c2ca Refresh various displays to reflect any font changes made in preference settings. 2019-07-02 08:04:43 -07:00
Seeker4
5b047af0e3 After preference setting, update font of timestamp at bottom of graphs 2019-07-02 08:01:20 -07:00
Seeker4
3e30850b75 Fix some incorrect HTML 2019-07-01 21:47:09 -07:00
Seeker4
358830d364 Remove HTML font settings so font is controlled by application settings and not a hard-coded font. 2019-07-01 21:45:01 -07:00
Seeker4
a9c3b363b9 Add some qDebug() statements for invalid start dates 2019-06-30 08:59:29 -07:00
Seeker4
6a7661f516 Fix crash in CPAP rebuild byt ignoring Day entry with first = 0. 2019-06-30 08:57:16 -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
43462f39d3 Correct typo in comment 2019-06-24 10:12:43 -07:00
Seeker4
a30aa74099 Improve qWarning message to show timestamps causing the warning. 2019-06-24 10:08:53 -07:00
Seeker4
eaa93a2ff9 Improve error message on Statistics page when no data is found. 2019-06-24 10:07:40 -07:00
Seeker4
775eefee71 Allow a Windows path with drive letter to be used as an argument for --datadir 2019-06-24 10:05:58 -07:00
Seeker4
641ebbde54 Merge branch 'master' into printing 2019-06-22 18:22:57 -07:00
Seeker4
461abde2e6 Better qDebug messages when rebuilding data 2019-06-21 22:09:19 -07:00
Seeker4
bee6364c5e Write date and time OSCAR started to debug log 2019-06-21 22:08:44 -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
Seeker4
1b87dda460 Improve qdebug statement identifying printer font 2019-06-21 11:57:22 -07:00
Seeker4
6a4c947569 Merge branch 'master' into printing 2019-06-21 11:06:53 -07:00
sawinglogz
2e6cdd6de9 Fix conflict between private fonts and QFontComboBox.
This fixes an issue where the default application font on macOS
would get reset if a user saved their preferences.
2019-06-21 11:49:55 -04:00
Phil Olynyk
e210813156 Remove Q_WS_X11 from main.cpp and change it to Q_OS_LINUX in reports.cpp 2019-06-21 11:02:35 -04:00
Phil Olynyk
41efbcab38 Remove bash file that chanced PlaceholderText to Text 2019-06-21 09:23:39 -04:00
Phil Olynyk
cb68e48bda Remove colorrole PlaceholderText from mainwindow.ui 2019-06-21 09:20:51 -04:00
Seeker4
7003afcc64 Force fonts for Statistics page and printing. 2019-06-20 16:13:04 -07: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
Seeker4
d7cad5471f Minor tweaks to cell and row spacing to improve printed report. Negligible effect on screen view. 2019-06-16 15:30:39 -07: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
8b6d11f6f4 Merge branch 'master' into fix-cms50dplus 2019-06-15 19:11:06 -04:00
Seeker4
aabd97d537 Correct loss of previous changes. 2019-06-15 15:09:04 -07:00
Phil Olynyk
3f555177c4 Tweak the oximeter import ui for the CMS50D+ 2019-06-15 15:59:11 -04:00
Phil Olynyk
73a225556a Fix date and time handling for new CMS50Dplus model 2019-06-15 15:42:47 -04:00
Seeker4
41c7d43f7b Print Statistics report with pagination, larger font on landscape orientation. 2019-06-15 11:58:02 -07:00
Seeker4
aa8e3bd9e5 Partial code for printing in blocks of html. 2019-06-14 21:17:43 -07: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
Phil Olynyk
cef3827658 Merge branch 'master' into fix-linux-stats
Get all of sawinglogz PRS changes.
2019-06-13 13:41:09 -04:00
Phil Olynyk
917890e077 Fix errors in linux conditional code 2019-06-12 23:27:46 -04:00
sawinglogz
36c4277556 Merge branch 'master' into prs1-fixes 2019-06-12 22:31:07 -04:00
Seeker4
c1d73636a2 Merge branch 'master' into printing 2019-06-12 18:38:54 -07:00
Seeker4
6dfb8fda6e Change #ifdef Q_WS_X11 to Q_OS_LINUX. 2019-06-12 18:37:06 -07: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
Seeker4
575b9a5372 More refactoring and re-organizing. 2019-06-12 13:32:22 -07: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
a628e2a9ff Move statistics printing code from mainwindow.cpp to statistics.cpp. Abandon printing of Help subsystem pages. 2019-06-11 16:43:13 -07:00
Seeker4
a4abb7d5d6 Break monolithic statistics page html into separable components. 2019-06-11 11:34:00 -07: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
Seeker4
610c935191 Correct error in calculating number of periods in monthly report. 2019-06-11 06:28:34 -07: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
Phil Olynyk
d3c10ca745 Add shell file to fix UI files for old QT versions - uses sed (Linux only) 2019-06-08 17:48:36 -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
c93932664c Use decimal session IDs for chunk YAML file names, add original file path to YAML. 2019-06-07 21:12:55 -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
Seeker4
c684eebca7 Change method of identifying the graphics engine currently in use. 2019-06-07 05:14:07 -07:00
Seeker4
b92502ac63 Make pointer to data directory in System Information message box be clickable to open the directory. 2019-06-07 05:00:23 -07:00
sawinglogz
7a00009a56 Add result of parsing/importing to PRS1 chunk and session YAML. 2019-06-06 16:50:40 -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
26f6e15a75 Add YAML output for session slices. 2019-06-03 20:56:40 -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
sawinglogz
66585d939e Chase down all unusual values in 251P compliance sample data.
The big discovery is that slices aren't slices with durations,
they're events with a starting delta.
2019-06-02 21:50:45 -04:00
Seeker4
8dd04397cc Show hours/day that defines compliance on Statistics screen. Update Welcome message to show usage in red if hours less than profile setting (was less than 4). 2019-06-02 17:48:27 -07:00
Seeker4
269daffaac Merge branch 'master' into titlebar 2019-06-02 10:31:21 -07:00
Seeker4
f4f1a4a002 Clearly separate build data from run-time data. 2019-06-02 10:24:17 -07:00
Norman Heino
af31b87889 Graph combo box: always adjust size to contents
Fixes 0000021
2019-06-02 07:51:11 +02:00
Seeker4
59270e00c6 Add Help/System Information to display full build information, active graphics engine, and data directory. 2019-06-01 19:51:18 -07:00
Seeker4
9561e56ad9 Make xxxBuildInfo functions to create and return build information. 2019-06-01 15:12:38 -07:00
Seeker4
86d0c11ddd Remove GIT revision and graphics engine from titlebar (info remains in debug log). Retain [Branch] and [LegacyGFX] for a BrokenGL build. 2019-06-01 07:57:28 -07:00
Seeker4
91bf0d097e Write build and other identifying information to the beginning of the debug log. 2019-05-31 21:15:56 -07:00
sawinglogz
5fee567066 Fix PRS1 loader bug where chunks could be incorrectly skipped.
This doesn't fix the bigger bug where files are skipped based on
their filename rather than the actual chunk session IDs. That's
a trickier challenge for another day.
2019-05-31 21:47:28 -04:00
sawinglogz
264c41379b Fix PRS1 compliance parsing based on 251P data, check for any unexpected values.
Also get rid of a premature parsing check in ScanFiles.
2019-05-31 21:00:35 -04:00
Seeker4
a2232d4b61 Merge branch 'master' into Legacy 2019-05-31 16:04:33 -07:00
Seeker4
98df2c9a46 Force use of Software graphics engine (aka LegacyGFX) if shift key held down during program start or --legacy command line parameter present. 2019-05-31 15:50:16 -07:00
sawinglogz
a327a7ed1c Add logging of unexpected data to ParseCompliance, disable broken 200X compliance. 2019-05-31 16:58:58 -04:00
sawinglogz
bc3b93cf9c Merge branch 'master' into prs1-split-parsing 2019-05-30 16:33:55 -04:00
sawinglogz
f62d99bb31 Add machines to tested PRS1 list, alert user if their machine is untested.
This introduces a very slight change UI behavior, where the user
will receive an alert if their machine has a supported family/version
but is a model number for which we don't have any test data.

Also, the user alert for an unsupported machine has been updated
to align with the actual underlying parsing limitations. It's
possible this will create some new warnings, but it doesn't seem
like any such machines would have worked anyway, in which case
an explanatory message is an improvement.

The "untested" alert will happen on import once per launch of OSCAR.
Ideally this would only happen the first time an untested machine is
imported, but that will require figuring out how to serialize an
additional value in the user's machine profile.
2019-05-30 16:32:57 -04:00
Seeker4
76e6f44991 Calculate compliance as number of compliant days / total number of days (instead of days used) so statistics matches overview calculation. 2019-05-29 19:35:19 -07:00
sawinglogz
135ac25c1e Add YAML output for PRS1DataChunks.
Also move a data check from PRS1Import::ImportSummary to PRS1DataChunk::ParseSummary
to prevent crashing in regression tests.
2019-05-29 12:11:53 -04:00
sawinglogz
ea008273ab Add PRS1DataChunk::ParseEvents for testing and future unification. 2019-05-29 11:20:20 -04:00
sawinglogz
d0150d18ef Limit raw data in PRS1/Session YAML to 100 bytes per entry.
This changes the reference output, compared to prior versions, but
it runs much faster and doesn't affect user-observable behavior.
2019-05-28 21:09:17 -04:00
sawinglogz
1892ceda85 Clean PRS1ParsedEvents and reorder PRS1Import::Parse*Events for more consistency, no functional changes. 2019-05-28 18:25:08 -04:00
sawinglogz
7c949fc843 Convert PRS1ParsedEvent enums to static constants, update switch statements. 2019-05-28 16:05:23 -04:00
Seeker4
c438ef3872 Merge branch 'master' into Statistics 2019-05-27 11:24:18 -07:00
Seeker4
020678f2f1 Documentation additions. 2019-05-27 11:22:38 -07:00
sawinglogz
3b4a5b4dd6 Clean up PRS1Import::ParseF*Events functions in preparation for merging, no functional changes. 2019-05-27 12:38:55 -04:00
sawinglogz
685527b993 Remove unused ParseSummaryF* functions, move ParseSummary from PRS1Import to PRS1DataChunk. 2019-05-27 11:14:55 -04:00
sawinglogz
e47c4934ef Merge PRS1Import::ParseSummaryF* functionality into PRS1Import::ImportSummary.
Only PRS1Import::ParseSummaryF0V23 has disappeared, being merged into
ImportSummary. The only change it needed to subsume the functionality of
all other variants was the addition of one extra setting.

The rest of the now-unused variants will be removed next.
2019-05-27 11:05:34 -04:00
sawinglogz
44e4b25471 Move PRS1Import::ParseSummaryF0V23 in preparation for merge; no changes. 2019-05-27 10:28:14 -04:00
sawinglogz
4d1b947e22 Split PRS1Import::ParseSummary into ImportSummar/ParseSummary. 2019-05-27 10:25:57 -04:00
sawinglogz
e3a4edaca2 Add PRS1ModelInfo to manage the set of supported and tested machines.
Also move an extra unsupported check out of PRSImport::ImportSummary
into CreateMachineFromProperties, where it should intervene before
reaching PRS1Import. Leave a warning debug message in its place.
2019-05-27 10:05:16 -04:00
Norman Heino
d2eccabbc7 Fix disabling dark mode on macOS Mojave 2019-05-27 05:51:44 +02:00
sawinglogz
739ba7d5d5 Clean up ParseSummaryF5V3 to align more closely with all other summary parsers. 2019-05-26 19:02:08 -04:00
sawinglogz
44558e4c06 Merge redundant code into single PRS1DataChunk::ParseHumidifierSetting function. 2019-05-26 18:46:26 -04:00
sawinglogz
d13b417d5b Fix regression from eb758602 that was missed by the initial testing. 2019-05-26 17:43:10 -04:00
sawinglogz
923fb7bf86 Merge redundant code into single PRS1DataChunk::ParseFlexSetting function. 2019-05-26 17:36:12 -04:00
sawinglogz
53f1a881a3 Split parsing from importing for compliance (brick) data.
This isn't fully tested yet, since I don't currently have fileVersion 2 samples.
It has been tested with 200X devices and doesn't change behavior there,
but the slice parsing immediately bails, so it's not really being exercised.

It seems very weird that "slices", whatever they are, would only show
up on bricks, the least capable devices. This needs more investigation.
2019-05-26 14:17:58 -04:00
Norman Heino
6b7fe4c8f2 Fix use-after-free in Profile::UnloadMachineData 2019-05-26 17:18:42 +02:00
sawinglogz
eb75860221 Split parsing from importing for F0V2 and F0V3 summaries. 2019-05-25 21:57:29 -04:00
sawinglogz
7a153a6516 Split parsing from importing for F0V4 summaries. 2019-05-25 21:25:56 -04:00
sawinglogz
e49c947b6b Split parsing from importing for F0V6 summaries. 2019-05-25 21:08:53 -04:00
sawinglogz
b6c35c7610 Split parsing from importing for F3 (probably V6) summaries.
This looks discouragingly redundant at first glance, but eventually
the import stage will probably be unified across all families, leaving
the parsers the only difference. That'll happen after all summary
importers have been split.
2019-05-25 19:43:35 -04:00
sawinglogz
6b1b7e225c Split parsing from importing for remaining F5 summaries. 2019-05-25 19:21:46 -04:00
sawinglogz
1cd7ac7c14 Merge identical F5V0 and F5V1 and remove unused F5V2 summary parsers. 2019-05-25 18:01:09 -04:00
sawinglogz
0d8e37c94c Split parsing from importing for F0 events. 2019-05-25 17:00:44 -04:00
sawinglogz
abac19bbf1 Split parsing from importing for F3V3 events. 2019-05-24 20:09:53 -04:00
sawinglogz
5a88887cc3 Split parsing from importing for F3V6 events. 2019-05-24 19:41:42 -04:00
sawinglogz
a4612a4f24 Split parsing from importing for F5V0, F5V1, F5V2 events. 2019-05-24 17:08:51 -04:00
Seeker4
704395dbda Initial attempt at recalculation number of periods for annual statistics 2019-05-24 12:43:49 -07:00
Phil Olynyk
f05cc5fbc5 warn empty filename for QT < 5.12 2019-05-24 16:22:44 +00:00
Phil Olynyk
a4cf207bd1 replace QDir.isEmpty() with QDir.count() == 0 for QT < 5.9 2019-05-24 16:22:44 +00:00
Norman Heino
07372487ac Save session info when unloading machine data
Fixes 0000046
2019-05-24 05:28:48 +02:00
sawinglogz
a5b4851583 Remove unused code from PRS1 event parsers.
Also temporarily disable the time-consuming chunk unit test, since
the current work is on conversion from chunk to sessions.
2019-05-23 12:17:21 -04:00
Norman Heino
a2ff7ef95e Perform UI updates in bulk before/after screenshot
Fixes 0000074
2019-05-23 05:10:34 +00:00
Seeker4
498e15c56b Remove some WebKit code (there's lots more to go). 2019-05-22 19:03:59 -07:00
sawinglogz
795e9414be Split parsing from importing for F5V3 summaries.
This looks even uglier than the F5V3 event split for now,
since portions of the fileVersion 3 parsing are still stuck in
PRS1Import, and can't be reasonably moved until all the parsers
are split into PRS1DataChunk.

Also, PRS1ParsedSettingEvent may be the wrong abstraction. That's
a first attempt, so that it can inherit PRS1ParsedEvent's notion
of gain and unit, and because m_parsedData is currently a list
of PRS1ParsedEvent pointers. But it has no notion of time (start=0)
and requires yet another enum to specify which setting it
represents.

This should be revisited once all the parsers have been split
and the summary parsing can be examined in more detail.
2019-05-22 20:11:48 -04:00
sawinglogz
355a85a1fc Tweak Session YAML output to print sane floats instead of full precision. 2019-05-22 19:59:10 -04:00
Seeker4
4697f84ea9 Revise Statistics page heading to use less space. Reformat and correct errors in HTML strings. 2019-05-22 13:49:28 -07:00
sawinglogz
5b959efc37 Split parsing from importing for F5V3 events.
This doesn't look much prettier yet, since it requires double the
switch statements, but the expectation is that once all event
parsers are split out from import, the import routines will be
identical among all machines, and can then be consolidated.

Regardless, it's important to drive a wedge between file parsing
and the internal database structure.
2019-05-22 11:00:45 -04:00
Seeker4
a433b29af1 Change heading from Prescription Settings to Machine Settings 2019-05-21 16:24:21 -07:00
Seeker4
e22f5b87ef Merge branch 'master' into Database 2019-05-21 15:15:52 -07:00
Seeker4
7fc534f75b Format cmH2O properly in machine settings on Daily page. Needed only for ResMed and because formatted data is saved in database at original import. 2019-05-21 15:12:42 -07:00
Seeker4
efc03004a6 Add more method documentation for Doxygen. 2019-05-21 15:11:53 -07:00
Seeker4
811ac9e3a9 Improve documentation about OSCAR for Doxygen use. 2019-05-20 01:27:50 -07:00
Seeker4
d7d1fd3095 Merge branch 'master' into SessionBar 2019-05-19 17:48:34 -07:00
Seeker4
ff2bdf3d01 Session bar now shows "no sessions present" if there are not sessions, instead of showing last days's sessions. 2019-05-19 17:44:10 -07:00
Seeker4
f5e9b2d3da Remove comment about screen capture being broken on Mac. 2019-05-19 11:17:14 -07:00
sawinglogz
f8e4ff754b Add OSCAR version number to PRS1 unit test logs. 2019-05-18 19:46:24 -04:00
sawinglogz
2bfae3531f Merge branch 'master' into prs1-overhaul 2019-05-18 19:28:45 -04:00
sawinglogz
4511ee3677 PRS1 parsing regression test: generate YAML for each parsed chunk.
Each input file's chunks get emitted into a single output YAML file. As parsing
gets separated from conversion/import, this will allow for testing and
examination of the parsed input files before they are transformed into
sessions.
2019-05-18 19:20:36 -04:00
sawinglogz
21adfb7987 Fix header parsing for 1160P event files, fix misconceptions in ReadWaveformHeader.
Now that we check header checksums, it uncovered a problem parsing 1160P event
headers. It turns out that the 1160P uses a "waveform" header for its .002
events files. So we can't use the file extension to decide which header to
parse, but there's a flag in the standard header that seems to reliably indicate
a waveform header. The 1160P events are listed at fixed intervals, as are
waveforms, so the flag has been named "interval" rather than "waveform."

The 1160P event headers have more than 2 signals in the header and an interval
longer than 1sec. This clarified the meaning of multiple waveform header fields
that were previously being parsed incorrectly.
2019-05-18 19:17:55 -04:00
Norman Heino
d0f0aed29d Improve screenshot feature
Limit screenshots to OSCAR's application window under macOS.
Use main window geometry as basis for screen capture rectangle, removing
the need for resizeing hacks.

Tested on:
* macOS 10.14
* Ubuntu 18.04
* Windows 10
2019-05-18 15:30:10 +02:00
Seeker4
c6c11fd4f9 Fix crash when taking screenshot before a profile is open. 2019-05-17 23:44:39 +00:00
Seeker4
e033a5a4ef Tweaking the white rim in the lower right corner of 32x32 icon for taskbar etc. 2019-05-16 22:33:05 -07:00
Seeker4
e80c444475 Round 3 of logo and icon revisions with extensive pixel-level editing of smaller icons. Ruth may make further changes. 2019-05-15 18:01:06 -07:00
sawinglogz
ccafa1f16e Calculate and check PRS1 CRC32 on V3 files, fix memory leak. 2019-05-15 17:41:37 -04:00
sawinglogz
1c564fb296 Calculate and check PRS1 CRC16 on V2 files. 2019-05-15 15:16:14 -04:00
sawinglogz
c8cd66992a Split PRS1DataChunk::ReadHeader into ReadHeader/ReadNormalHeaderV2/ReadNormalHeaderV3. 2019-05-15 12:32:39 -04:00
Seeker4
3e5d3a901b Set window icon to 32x32 rather than 24x24. 2019-05-15 16:13:57 +00:00
Seeker4
d7d1446bfc Second pass at new icons with manual editing of smaller icons. 2019-05-15 16:13:57 +00:00
sawinglogz
d3c6d6445b Split PRS1DataChunk::ReadHeader into ReadHeader/ReadWaveformHeader. 2019-05-15 10:26:31 -04:00
sawinglogz
e07c4ce63c Split PRS1DataChunk::ReadHeader into ReadHeader/ReadData. 2019-05-15 08:36:31 -04:00
Norman Heino
a074cffa5b Fix macOS application menu 2019-05-15 06:49:12 +02:00
Norman Heino
a5c1e8204c Increase mask vent rate ranges 2019-05-15 06:48:18 +02:00
sawinglogz
451963de25 Move chunk parsing into PRS1DataChunk class.
The diff looks messy, but it's mostly chunk -> this search-and-replace.
2019-05-14 22:49:41 -04:00
sawinglogz
7103650023 Move PRS1Loader::ParseChunk variable declarations and V3 header unpacking to the appropriate scope. 2019-05-14 21:49:43 -04:00
sawinglogz
d7cd22c918 Separate checksum reading in PRS1Loader::ParseChunk instead of burying it with other data.
While slightly more verbose, this makes the code more clearly correct.
2019-05-14 20:47:00 -04:00
sawinglogz
d216e677e1 Simplify PRS1Loader::ParseChunk by using a chunk instead of local variables. 2019-05-14 19:57:01 -04:00
sawinglogz
74863e538a Split PRS1Loader::ParseFile in to ParseFile/ParseChunk. 2019-05-14 18:57:04 -04:00
sawinglogz
76053b0469 Check for format change before coalescing PRS1 chunks, move data warnings out of parsing. 2019-05-14 16:20:32 -04:00
sawinglogz
6e12cfea61 Remove spurious warning about weird PRS1 session IDs 2019-05-14 16:17:23 -04:00
sawinglogz
9b3aaad4b0 Move PRS1 waveform chunk coalescing out of parsing and into importing. 2019-05-13 21:23:20 -04:00
sawinglogz
f19ad331c9 Add debugging output to all error handling in PRS1 loader. 2019-05-13 21:23:20 -04:00
sawinglogz
766f08420b Comment out unused constant in CMS50 loader. 2019-05-13 12:15:06 -04:00
Seeker4
350678b48b Remove external flow from 100, 200 sizes for program use. Update icon files. 2019-05-12 09:58:27 -07:00
Seeker4
b375cbbaad New set of icons from Ruth, with outer glow effect. Put work files in new Building/Icons directory. 2019-05-11 23:29:19 -07:00
Seeker4
c427c550a4 Remove win_icon.rc from file list. win_icon.rc pointed to bob image. 2019-05-11 23:28:29 -07:00
Seeker4
b87e700119 Initial code to show ResMed EPR with a space between number and cmH2O 2019-05-10 17:53:09 -07:00
Seeker4
0967b2013e Update language display dialog so it comes to the top of the Windows stack when started. 2019-05-10 01:29:48 +00:00
Phil Olynyk
d57116b1e4 Merge branch 'master' into Fix-oximeterimport
Pick up recent changes to master
2019-05-09 13:14:08 -04:00
Phil Olynyk
258b549967 Clean up oximeter import date/time handling 2019-05-09 13:05:53 -04:00
Phil Olynyk
240f6db3d5 Change UTC to LocalTime for session times 2019-05-09 11:08:59 -04:00
Phil Olynyk
2526b6691d Revert "Change UTC to LocalTime for session times"
This reverts commit 332ea6f159.
It should have been in a branch
2019-05-09 10:43:47 -04:00
Phil Olynyk
332ea6f159 Change UTC to LocalTime for session times 2019-05-09 10:34:34 -04:00
sawinglogz
fb29ce0222 Fix one more warning. setChecked() only takes a boolean, Qt::Checked/Unchecked are only used for tri-state checkboxes. 2019-05-08 17:18:00 -04:00
sawinglogz
e47660e15a Disable broken "ignore" setting for PRS1. Fixes #73. 2019-05-08 17:09:15 -04:00
sawinglogz
6e6bc81be8 Fix session averaging bug discovered when fixing warning. May fix #59. 2019-05-08 17:08:12 -04:00
sawinglogz
e67aae78cf Make warnings fail regression tests, fix warnings. 2019-05-08 17:06:17 -04:00
sawinglogz
609e02b2c5 Fix to update_gitinfo.bat from Guy for the case where no git_info.h exists yet. 2019-05-08 12:01:06 -04:00
sawinglogz
71c05c4625 Change the current working directory instead of using --work-dir.
It was previously working in a false-positive state, where it would behave as
expected if you ran "make" from within a subdirectory of the git repo. If you
ran make anywhere else, at least diff-index would break.
2019-05-07 16:50:58 -04:00
sawinglogz
a458fdfad6 Merge branch 'master' into gitinfo-tweaks 2019-05-07 15:58:01 -04:00
sawinglogz
c42e5d7ef0 update_gitinfo.bat fixes from Guy 2019-05-07 15:56:21 -04:00
sawinglogz
5923325917 Multiple update_gitinfo tweaks.
Change -C to --work-dir to work on earlier versions of git.
Add "+" to the revision number if there are uncommitted changes.
Only rewrite the git_info.h if there are changes, so that make doesn't think the file has changed.
2019-05-07 09:41:51 -04:00
Seeker4
124ac57166 Fix typo in qDebug() statement 2019-05-06 18:29:54 -07:00
Seeker4
c751182aa5 Comment-out obsolete code to create Welcome message. 2019-05-06 18:08:49 -07:00
sawinglogz
545d48afc4 Merge branch 'master' into prs1-refactor-for-testing 2019-05-06 12:25:29 -04:00
Seeker4
3ada6741d9 Preliminary release notes for OSCAR 1.0.2 and version id changes to beta-1. 2019-05-06 02:52:17 +00:00
Seeker4
90b6db3b3f Make titlebar show active graphics engine (Open GL, ANGLE, or LegacyGFX). 2019-05-05 23:18:08 +00:00
sawinglogz
982e7dddaf Merge branch 'master' into prs1-refactor-for-testing 2019-05-05 18:15:49 -04:00
sawinglogz
2a9af3de0a Fix memory leak in PRS1 unit test. Test runs now produce reproducible output.
This fix also seems like it cleans up some of the weird session IDs. It appears
that session IDs were sticking around after each machine, adding those
IDs or sessions to subsequent machines in that run of the test. Since the
test was being run piecemeal while under development, this produced
different behavior when being run with different segments of the data.
2019-05-05 16:59:53 -04:00
sawinglogz
e4082fff22 Add compiler flags and debug messages in search of memory access errors. 2019-05-05 15:50:38 -04:00
sawinglogz
9da60239c8 Fix memory access error in certain summary files.
This currently doesn't make the parsing more complete, it just bails rather than running off the end of memory.
2019-05-05 15:45:50 -04:00
sawinglogz
a603f9e189 First PRS1 loader regression test: walk through a directory of SD cards and generate YAML for each session.
This has already exposed many limitations, and possibly some memory trampling. Before this will work as
a true regression test, we'll need to address both of those, so that this produces reliable, reproducible
output.
2019-05-04 21:53:02 -04:00
sawinglogz
d4b65d8e73 Make Event and Loader/PRS1Loader protected and private members public during unit testing. 2019-05-04 21:50:45 -04:00
sawinglogz
af375af090 Disable GUI widgets in Loader and PRS1Loader when unit testing. 2019-05-04 21:49:50 -04:00
Seeker4
256746b723 Reduce dialog size to fit 1024x768 screen. Dialog looks better with less white space too. 2019-05-03 16:59:53 -07:00
sawinglogz
7c0c13486c More refactoring of PRS1Loader::OpenMachine(). 2019-05-03 16:59:26 -04:00
sawinglogz
02ffeb6c39 Allow a test profile to be created at an arbitrary path.
Currently there is a very messy tangle of dependencies between
loaders, machines, sessions, and profiles. Right now the
simplest way to create a test loader instance is to create
a test profile, under which the machine and session instances
will exist.
2019-05-03 16:36:53 -04:00
sawinglogz
7937b57b5f Split out PRS1Loader::ScanFiles() from PRS1Loader::OpenMachine(). 2019-05-03 15:07:15 -04:00
sawinglogz
4599dd781f Refactor PRS1Import::run() so that parsing can be called separately from saving to the database. 2019-05-03 14:45:21 -04:00
sawinglogz
52338d3e17 Add initial plumbing for unit testing. 2019-05-02 21:51:56 -04:00
Seeker4
463dcee181 Add a space between number and cmH2O in two tooltip messages. 2019-05-01 09:06:10 -07:00
Seeker4
7e9b59bbf6 Change measurement units from metric/arhiac to Metric/English 2019-05-01 09:05:01 -07:00
Seeker4
7f336ea9d4 Offer migration when destination directory is empty as well as when it does not exist 2019-05-01 08:58:20 -07:00
Phil Olynyk
a102a85dbd Update release version, build number, and release notes 2019-04-24 15:18:33 -04:00
Phil Olynyk
bcad3ac9da Disable multitasking to avoid crashes 2019-04-24 15:12:07 -04:00
Phil Olynyk
a58cbe3205 Use large logo scaled down for sharpness 2019-04-21 21:18:43 -04:00
Phil Olynyk
4f234a5a9f Change status to r and reset build number to 1 2019-04-21 16:13:01 -04:00
Phil Olynyk
9d1d0a88ce Updated release notes and Htmldocs, and set build number to 9 2019-04-16 15:10:28 -04:00
Phil Olynyk
c0246470f5 Replace old man Oscar logo with new big O logo 2019-04-16 13:12:26 -04:00
Phil Olynyk
329e59e8ea Fetched all updated ts files 2019-04-16 13:06:58 -04:00
Phil Olynyk
c67cd82bb3 Hide the Lifesaver button in the right panel if no Help 2019-04-10 15:52:47 -04:00
Phil Olynyk
4223bd7d4f Set up oscar-team.org as the DeveloperDomain all the places 2019-04-08 10:26:59 -04:00
Phil Olynyk
7fd7d50d8a Zeo and Somnopose file dialogs fixed 2019-04-07 23:28:54 -04:00
Phil Olynyk
069a2f405a Remove the Help ? from title bars 2019-04-07 21:54:04 -04:00
Phil Olynyk
2afe0459e9 Added deletion of I:E ratio from Daily window to release notes 2019-04-07 12:55:59 -04:00
Phil Olynyk
415f8cdc06 Removed CPAP_IE from Daily graphs and statistics display 2019-04-07 12:51:08 -04:00
Phil Olynyk
78269d25e5 Comment out a sleep(3) that delays opening daily window 2019-04-07 12:07:25 -04:00