Commit Graph

875 Commits

Author SHA1 Message Date
Phil Olynyk
81856e0866 Clean up code around reporting missing value summaries 2021-08-17 19:29:46 -04:00
Phil Olynyk
f7e3ccdc17 Merge branch 'master' into more-AS11-tweaks 2021-08-17 12:29:53 -04:00
Phil Olynyk
40b465f588 Add PtView for AS11 in place of Essentials 2021-08-17 11:32:39 -04:00
sawinglogz
c245eb5a0c Update unexpected data alert for PRS1 900X110 based on new sample data.
Also add support for auto-trial duration on 460P.
2021-08-16 10:44:13 -04:00
Guy Scharf
038035785d Fix loss of AHI graph in previous commit 2021-08-15 22:51:09 -07:00
Phil Olynyk
1d99b0c5d8 Added -Untested machine- code 2021-08-14 17:59:35 -04:00
Guy Scharf
6f3adfdcbe Fix Pressure Relief column on Statistics page for SleepStyle machines 2021-08-02 16:36:28 -07:00
Phil Olynyk
569f5794c7 Logical and of channel type with FLAG, to prevent extra messages 2021-07-31 23:30:24 -04:00
Phil Olynyk
6747324429 Subtract one from AS-11 settings values 2021-07-25 18:43:23 -04:00
Phil Olynyk
85512761ea Add test for FLAG to clean up debug in updatesummary 2021-07-25 16:38:24 -04:00
Guy Scharf
9f5373ed91 Refactor functions that act on all AHI-contributing channels.
Add new AllAhiChannels ChannelID to refer to all channels that contribute to AHI.
List of AHI-contributing channels is in "ahiChannels" QVector.
2021-07-24 21:12:15 -07:00
Guy Scharf
86d498f563 SleepStyle loader now classifies apneas as either A or H, like InfoSmart does. 2021-07-24 21:11:06 -07:00
Guy Scharf
cf12737b9e Fix outstanding Sleepstyle Loader problems
Mostly improve settings and make them appear properly on daily page
Return to having four event flag channels (OA, UA, CA, H) instead of two (A, H)
for testing to see if channel identification is reliable.
F&P A = OA + CA; F&P H = H + UA
2021-07-17 16:26:21 -07:00
Guy Scharf
04d7945241 Use rolling average when computing TV from flow graph
Also, start with a guessed-at reasonable value to try to
minimized spike artifacts resulting from poor calculation
of initial breath volume.
2021-07-17 16:22:40 -07:00
Guy Scharf
0e3f669210 Adjust order of indices on Daily page so that no two indices have the same sort order. 2021-07-17 16:21:32 -07:00
Phil Olynyk
3b02abe63c Remove bogus limits on pressures in LoadPLD 2021-07-13 14:36:31 -04:00
Phil Olynyk
c1df93ff42 Merge branch 'master' into AS11-STR-changes 2021-07-11 20:40:55 -04:00
Phil Olynyk
f69e22f876 Merge branch 'master' into json-11 2021-07-11 20:34:23 -04:00
Phil Olynyk
8c18683274 Add Comfort to StoreSettings 2021-07-09 17:39:23 -04:00
Guy Scharf
bf62344e5d SleepStyle loader now reports only H and UA (no CA or OA)
While the event flags in SleepStyle data show four different types of apneas,
Fisher & Paykel software reports only two types: Hypopneas and Apnea. OCAR
how combines those four types to report the same way as F&P does.
We don't know why F&P consolidates these different event types -- perhaps
they are "dumbing-down" detail to make it easier for users, or perhaps
they know that the identifcation of CA, OA, UA, and H is not reliable.
We can easily restore more details to the event identification.
2021-07-08 22:20:59 -07:00
Phil Olynyk
b29d8ae3f8 Add AS11 STR strings to ProcessSTRfiles 2021-07-08 14:27:22 -04:00
Guy Scharf
41ea0389f6 Add SleepStyle loader
This is the first test version of the F&P SleepStyle loader
Additional refinements are yet to be made. Events and timestamps
need to be confirmed, but overall the loader appears to be working.
2021-07-08 10:43:02 -07:00
Guy Scharf
f9a2228b9c DV6 loader now overwrites files when creating backups 2021-07-08 10:38:16 -07:00
Guy Scharf
c1a99850c6 EDFParser - add option to handle EDF files with UTC timestamps
Needed for SleepStyle CPAP as dates in the data files are UTC and not local
2021-07-08 10:35:44 -07:00
Guy Scharf
f0c7cfc991 Add option to copypath() to overwrite existing files
copypath() only copies files that do not exist in the destination directory.
Added an optional parameter that forces copypath() to overwrite existing files.
This is needed for SleepStyle and DV6 loaders.
PRS loader should not be affected (it is the only other loader using copypath)
2021-07-08 10:32:50 -07:00
Guy Scharf
2ab4e7bbe2 Calcs.cpp - calculation of TV and MV now uses a rolling average
Only a few loaders are affected by this, notably SleepStyle but not ResMed
A rolling average calculation makes calculated values resemble CPAP values more closely
2021-07-08 10:28:53 -07:00
Guy Scharf
e7ce6f00f1 DeVilbiss BLUE (DV6x) loader
Backups complete and Build from Backup works
Low resolution graphs corrected
2021-06-18 13:31:56 -07:00
Phil Olynyk
83f80f44d2 Backup either tgt or json Ident file 2021-06-07 13:58:04 -04:00
Phil Olynyk
024c0daf49 Parse identification.json for AS11 2021-06-06 22:57:52 -04:00
sawinglogz
ec403a0c75 Remove unused comments and code in PRS1 loader. 2021-05-31 21:35:31 -04:00
sawinglogz
c5175b20d2 Move PRS1 file parsing into separate parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 21:32:18 -04:00
sawinglogz
6fc41537e2 Move remaining PRS1 chunk parsing into separate parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 21:23:03 -04:00
sawinglogz
7864d509cc Move PRS1 F5 parsing into separate F5 parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 21:02:11 -04:00
sawinglogz
26ce41927b Move PRS1 F3V03 parsing into separate F3 parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 20:54:24 -04:00
sawinglogz
ded4ea4d8f Move PRS1 F3V6 parsing into separate F3 parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 20:52:43 -04:00
sawinglogz
e5e3700c71 Move PRS1 F0V23 parsing into separate F0 parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 20:41:44 -04:00
sawinglogz
7b0e732ae5 Move remaining PRS1 F0V4 parsing into separate F0 parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 20:39:44 -04:00
sawinglogz
f74c38d512 Move PRS1 F0V45 parsing into separate F0 parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 20:34:50 -04:00
sawinglogz
2a326c816f Move PRS1 F0V6 parsing into separate parser file.
No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 20:24:09 -04:00
sawinglogz
daaed2de79 Move PRS1DataChunk into parser header and clean up dependencies.
Also move some previously static functions into their associated classes,
which lets us remove a few unnecessary wrapper functions used for testing.

No change in functionality.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 14:53:23 -04:00
sawinglogz
0a996cde73 Move PRS1 parser event definitions into new parser cpp/h files.
No change in functionality.

This is almost entirely copy/paste, with the main exception of moving the
contents() method definitions out of the class definitions and moving the
needed TYPE definitions out of the header file.

Use git blame dd9a087 to follow the history before this refactoring.
2021-05-31 13:18:39 -04:00
sawinglogz
dd9a087a86 Merge branch 'master' into prds2 2021-05-25 16:00:23 -04:00
sawinglogz
efeb9ed248 Fix some bugs in the DreamStation 2 wrapper and add some known values for testing. 2021-05-25 15:57:09 -04:00
sawinglogz
0737ad9b10 Performance improvements for PRS1 regression tests.
Most of the gains were from replacing endl with '\n', which avoids
unnecessary flushing. But there were a few hot functions whose
inefficiency ended up having a significan impact.
2021-05-23 21:26:17 -04:00
Phil Olynyk
caec63576d The i in Sızıntı has no dot ! 2021-05-23 18:00:19 -04:00
sawinglogz
b2ca5f708e Improve debug and user-visible messages for unsupported PRS1 machines. 2021-05-23 15:36:09 -04:00
sawinglogz
793a621b4d Fix some crashes that result from an invalid PR properties file. 2021-05-23 15:02:01 -04:00
sawinglogz
f1e31282bb Add wrapper around DreamStation 2 files to read their header and provide an interface to their data. 2021-05-23 12:43:31 -04:00
Phil Olynyk
f32d1da51a Add Turkish PLD, SAD signal names 2021-05-22 15:15:52 -04:00
Phil Olynyk
4a43aaabd4 Add Turkish STR signal names 2021-05-22 14:54:52 -04:00
kappa44
dbaafed73d Journal should always ignore 'do not import sessions' date 2021-05-21 10:42:38 +10:00
kappa44
a836871914 Ignore old sessions should not impact existing data 2021-05-18 20:45:04 +10:00
kappa44
497cf8e5c4 Fix compile errors on Centos 7 2021-05-16 13:57:44 +10:00
sawinglogz
505264a200 Detect DreamStation 2 cards and alert the user. 2021-05-13 16:46:44 -04:00
sawinglogz
66e06af211 Add 700X130 to the list of tested machines. 2021-05-13 10:15:57 -04:00
Phil Olynyk
6b5443e6b8 Fix conflict by allowing comment 2021-05-02 08:16:32 -04:00
Phil Olynyk
edf3d95225 Comment out all the debugging stuff, and add a terminating event when
a PLD.edf signal value is out of range.
2021-05-02 08:05:49 -04:00
Phil Olynyk
6d4836c18a Use channel lables instead of hex ID 2021-04-26 20:51:48 -04:00
sawinglogz
9cbd0d7b24 Fix multiple regressions that broke compilation with clang.
e633a82: overloaded virtual method errors
0022510: inconsistent missing override error
e358d31: unused private fields
3591f11: unused private fields
2021-04-26 20:10:37 -04:00
Phil Olynyk
e20518e84c Don't skip the first 40 seconds of ResMed low-rate pressure data. 2021-04-24 16:52:25 -04:00
kappa44
e633a82de4 Consistent multi-file import for non-CPAP loaders (Viatom, Somnopose, Zeo, Dreem) 2021-04-24 17:44:27 +10:00
LoudSnorer
94e5cf2332 Merge branch 'master' into saveCustomRangeOverReload 2021-04-16 18:38:27 -04:00
Guy Scharf
5a64262ff6 Minor fix to #ifdefs in DV6 loader 2021-04-13 17:48:39 -06:00
Guy Scharf
037b13c73c Adjust labels on Daily and Overview pages to show 99.5% instead of Max when max is not used
Note that "Max" on the Statistics page really is the "max" and not 99.5%
2021-04-13 17:47:15 -06:00
Guy Scharf
4234cb34a4 Fix problem with truncated per-minute data in graphs. 2021-04-09 14:05:54 +10:00
Guy Scharf
3114cf517d Improve file identification in Icon loader
Will no longer attempt to process SleepStyle data with Icon loader
   A new loader for SleepStyle machines is forthcoming.
2021-04-04 04:56:39 -07:00
Phil Olynyk
a92646faae working on missing graph 2021-04-02 19:01:24 -04:00
Guy Scharf
e358d31f26 Add logic to read rolling files created by DeVilbiss BLUE CPAPs 2021-04-01 21:39:06 -07:00
kappa44
00ad97ff70 Update loader version change comment 2021-03-23 09:43:14 +11:00
kappa44
2d502f6a68 Revert viatom data version to avoid purge 2021-03-23 09:42:47 +11:00
LoudSnorer
9777ecd2ab This allows the Overview Custon range to be saved and resurvive a reloaded of OSCAR.
a New feature has been been added but can not be activated until a UI file is changed - another submission.
This new feature will utilize the current displayed range as the custom range.
Other wise the Overview custom range uses the values from the calendar.
This changes does not require and data or translations.
2021-03-21 16:21:48 -04:00
sawinglogz
be1d3d878b Add 1130X200 to the list of tested machines.
Also update warnings based on new test data and correctly
label the rise time lock setting on some 1030X sessions.
2021-03-04 17:34:05 -05:00
sgearhart
31bd10590f modified: oscar/SleepLib/loader_plugins/viatom_loader.cpp
modified:   oscar/SleepLib/loader_plugins/viatom_loader.h
	modified:   oscar/mainwindow.ui
2021-02-22 15:30:04 -05:00
Phil Olynyk
1b727eff76 Use 2010-1-1 as invalid date, and fix the test for it 2021-02-21 20:42:13 -05:00
kappa44
6b10cb665d Make somnopose csv more flexible - data fields are optional and include movement. Make data persistent 2021-02-22 09:33:43 +11:00
kappa44
c13951b675 Consider CPAP drift when displaying current value 2021-02-22 09:20:34 +11:00
Guy Scharf
fbfc830015 Compensate for error message from linux compilers in DeVilbiss loader. 2021-01-26 12:37:27 -07:00
Guy Scharf
24e7d34aee DeVilbiss DV6x loader
Mostly complete
  Backup facility is incomplete
2021-01-25 19:56:59 -07:00
Phil Olynyk
d16c4f4aed Add Auto as option for Ramp-Enable 2021-01-22 11:36:17 -05:00
Guy Scharf
7bf8470d36 Mark exported journal backup file as UTF-8. 2021-01-18 21:55:14 -07:00
Phil Olynyk
f05320e725 Add font debugging, add setApplicationFont to Daily::Load(date) 2021-01-15 20:20:36 -05:00
Guy Scharf
142220c16c More diagnostics for font setting failure on startup on RPi
Dump entire font table if desired font is not found
2021-01-15 11:30:34 -07:00
Guy Scharf
b8415117c3 Improve font setting diagnostic message 2021-01-14 15:20:53 -07:00
Guy Scharf
b00434f1d9 Add diagnostics when setting application font
To help resolve font setting problem on RPi4
2021-01-14 20:43:38 +00:00
sawinglogz
09ba58669a Add support for Target Time humidifier setting on DreamStation Go. 2020-12-29 20:23:37 -05:00
sawinglogz
e336e85aac Add 500G120 and 500X140 to the list of tested machines.
Also update warnings based on new test data.
2020-12-29 17:38:00 -05:00
Guy Scharf
38d8b84266 Intellipap DV64 loader now imports the most recent day
Previous code had an off-by-one error and was not importing the last day in the file.
2020-12-14 00:20:29 +00:00
Guy Scharf
4276765bf2 ResMed loader no longer checks for maskoff dates beyond current time
Loader was checking that maskoff time was not greater than current time.  This
produced problems when CPAP machine was set to DST but computer was set to standard
time. This also could cause problems trying to import files created in a different
timezone.
Added a separate check for maskon and maskoff times were in legal range (0-24*60).
Updated release notes.
2020-11-19 13:51:01 -07:00
Guy Scharf
5fb837ccb9 Daily page enable/disable oximeter session now works correctly.
Prevoiusly, disabling an oximeter session could cause bookmarks to be
disabled and/or OSCAR to crash. OSCAR was looking up the session for
the oximeter session and not noticing it got a Journal session instead.
2020-11-04 21:12:05 -07:00
Guy Scharf
1af5d3ec40 Improve some qWarning messages.
resmed_loader: include all timestamps in "time in future" error messages
mainwindow: add qWarning message if first journal session is null pointer
2020-11-04 10:12:19 -07:00
Guy Scharf
d4c2b74afb Allow non-ASCII (UTF-8) characters in user first and last name in user profile
We do this by forcing a UTF-8 byte order marker in the profile.xml file.
We also add processing instructions that specify UTF-8, although it seems the BOM is itself sufficient.
2020-10-31 18:06:38 -07:00
Guy Scharf
bf458fa1d5 Clairfy code for checking for str.edf or str.edf.gz depending on compression settings 2020-10-06 09:37:29 -07:00
Guy Scharf
6c8d9d6751 Fix two issues in ResMed loader:
1) If data compression option is set, loader will now try the str.edf.gz file first, with fallback to str.edf
2) Mixed Windows and Unix separators are now allowed in --datadir, which was previously causing data loss when rebuilding CPAP data.
2020-10-06 01:36:15 +00:00
Guy Scharf
34700fd9f9 Fix two issues in ResMed loader:
1) If data compression option is set, loader will now try the str.edf.gz file first, with fallback to str.edf
2) Mixed Windows and Unix separators are now allowed in --datadir, which was previously causing data loss when rebuilding CPAP data.
2020-10-06 01:36:15 +00:00
sawinglogz
2563e5c4f0 Fix gcc compiler error introduced by d98a76a. 2020-09-14 14:58:11 -04:00
sawinglogz
d98a76aa22 Recognize low MV alarm on 1030X and update warnings based on test data. 2020-09-13 19:28:00 -04:00
sawinglogz
d1985c9dc2 Add support for all current Dorma 501V test data. 2020-09-13 19:27:59 -04:00
sawinglogz
c8b10e31a7 Add initial support for PRS1 Dorma 501V. 2020-09-13 19:27:59 -04:00
sawinglogz
53de4f0f49 Add older 450P to the list of tested machines.
Also update warnings based on test data.
2020-09-13 19:27:59 -04:00
harre
d54e8b2e11 Added default copy operators as implicit default is deprecated 2020-09-13 01:10:03 +02:00
Guy Scharf
036117d41d Correct reversion in beta-1 that lost date last imported. 2020-09-12 22:07:40 +00:00
Guy Scharf
ade32fa914 Change Profiles page and Daily Records box in right sidebar to show data for most recently used machine.
- Changed Profile::GetMachine() to find machine with latest lastImportDate when there were multiple machines in a profile.
- Previously, OSCAR would shown the "first" machine in its list, without clarity about how a machine was designated "first".
2020-09-12 22:07:40 +00:00
Guy Scharf
e39adbd41e Avoid data loss when destroying a profile that's just an empty directory; Release notes for v1.2.0-beta-2
- If trying to delete a profile folder with no contents, now displays an error message and doesn't delete it.
- Folders with no contents are no longer listed on the Profiles page.
- Release Notes updated with the fixes for beta-2.
2020-09-09 22:03:32 -07:00
Guy Scharf
6406545c33 Correct percentile calculation for multiple days
- Previously, would stop and return 0 if any day in range was suumary only
- Now, just ignores summary-only days if there are days with data
- Re-indentation makes change look bigger than it is
2020-09-08 19:54:56 -07:00
Guy Scharf
555639e78b Language improvements for password prompt tooltip and debugging channels 2020-09-08 19:33:09 -07:00
sawinglogz
ffc4b897f8 Improve import of rare 950P events; update warnings based on test data.
Rare hypopnea variants weren't being recognized, and timestamps were
slightly off after a mid-session humidification change.
2020-09-02 11:23:36 -04:00
Guy Scharf
23036ec8cd Fix compile problem with QT 5.9; change Patient Access to Essentials
- Values of "On" and "Plus" will be shown for this field.
- Field name will remain Patient Access until a new profile is created or language is changed.
2020-08-31 22:02:32 -07:00
Guy Scharf
265bdc2d7e Welcome page code cleanup.
- make Day::validPressure() available
- Welcome page to report n/a if pressure not valid (but it should always be valid)
- Did NOT add validPressure() call to all pressure reports.
2020-08-30 13:43:00 -07:00
Phil Olynyk
d5778bafb6 Check Crostini mount points, and force name to OSCAR-test if not OSCAR 2020-08-25 21:09:53 -04:00
Guy Scharf
ce18739d14 ResMed and Oximetry loader enhancements
- Oximetry loader from file now remembers last directory data was imported from.
- ResMed loader loads from last day or oldest purge date if a day was purged since last import.
  purgeDate added to MachineInfo to implement this.  Purge date set when a day is purged and cleared after an import.
2020-08-23 15:30:38 -07:00
Guy Scharf
5e5af1b541 Cleaen up some debug messages 2020-08-19 17:12:41 -07:00
Guy Scharf
2e8ee43267 Avoid scaling null pixmap to avoid warning message 2020-08-19 17:10:34 -07:00
Guy Scharf
134a30624f Improve file open diagnostic messages 2020-08-19 10:14:38 -07:00
Guy Scharf
4e0d8d33fd Changes to ResMed loader:
- Fix possible problem with rebuilding CPAP data
- Change re-import to look just at last day (full re-import will be re-added later)
- Improve detection of when a day needs to be rebuilt on re-import
- Improve some diagnostic messages
2020-08-19 10:14:02 -07:00
sawinglogz
13e8a1947d Add 452P and 650P to the list of tested machines.
Also improve support for rare F0V23 events and update other warnings based
on new test data.
2020-08-16 21:19:11 -04:00
Guy Scharf
bf6dd5c615 Improvements to ResMed loader for re-importing days
o Now compares all days, not just starting from last day imported
o Compares number of non-identical MaskOn/Off events with session count
o Hid most qDebug messages behind #define STR_EDF
o Added qWarning to open() and close() calls for improved diagnostics
o Fixed some copy() calls that were not working
2020-08-13 16:32:34 -07:00
Guy Scharf
8f3971cb09 Fix maskon/off vs session count comparison for deciding when to re-import a day 2020-08-12 17:26:14 -07:00
Guy Scharf
7c350068e0 Minor improvements to some file open and copy error messages 2020-08-12 17:25:15 -07:00
Phil Olynyk
d68afd69c4 Merge branch 'master' into fix-backup 2020-08-09 17:20:11 -04:00
Phil Olynyk
d46dd3d144 Remove existing backups before second import; also change double to qint64 in LoadEVE and LoadCSL 2020-08-09 17:17:21 -04:00
Guy Scharf
1aba6e4e51 File error checking Phase I: check all file.open() operations are successful.
file.open() checked everywhere except in loaders.
    qWarning() message written to debug log, with error number and text.
    We may want to exit OSCAR with a message in many situations, but that is not implemented yet.
    Set number of debug logs to be kept for Release version to 4.
2020-08-09 10:33:04 -07:00
Guy Scharf
4885abf76a Overview graphs right edge now on correct date in GMT+ timezones
Changed a lot of Qt::UTC to Qt::LocalTime.  Some risk of having changed ones that should not have been changed.
2020-08-09 10:25:45 -07:00
Phil Olynyk
a89b5f8cdd Merge branch 'master' into test-dataflow 2020-08-08 14:22:16 -04:00
Phil Olynyk
b35cd921c1 Compare maskevents to session count to all re-import on same day - added debug trace 2020-08-08 14:17:54 -04:00
sawinglogz
f73ef02380 Update 1030X and 1130X warnings based on new test data. 2020-08-08 11:04:34 -04:00
sawinglogz
0960384b20 Add support for compliance records from PRS1 60 Series bricks.
Add 261CA to the list of tested machines.
2020-08-04 20:59:51 -04:00
sawinglogz
cfca48e505 Reconcile differences in PRS1 compliance vs. summary for F0V23 and F0V6.
Propagated a bug-fix in some variations that avoiding crashing on
zero-length data.
2020-08-04 17:12:14 -04:00
sawinglogz
93a056b252 Add 462P and 400X120 to the list of tested machines.
Also update F0V4 warning based on new test data.
2020-08-03 14:18:25 -04:00
Phil Olynyk
961fdb13db Clean up formatting, add debug and warnings, fix STR length test to allow multiple daily imports. 2020-08-03 14:01:04 -04:00
Guy Scharf
5cefc90a16 Fix CPAP hours and AHI calculations
Daily page: total hours was elapsed time of all machines, including large blocks that are not CPAP.  Now just MT_CPAP time.
    Welcome page: Same problem with total hours reporting, and AHI was calculated as events/total hours instead of events/CPAP hours.
    Statistics page: Same problems as on Welcome page -- total hours and index calculations.  Changed to using total CPAP hours.
2020-07-24 11:29:19 -07:00
sawinglogz
eaf4ab69cf Update 700X warning based on new test data. 2020-07-24 12:51:22 -04:00
sawinglogz
cfabdbe742 Improve gcc fix from d2fc5ac.
Evidently gcc doesn't recognize inline forward declaration, but clang does.
I wonder who is right?

This was previously addressed by adding an #include. Instead, this patch
adds a standalone forward declaration of the QXmlStreamReader/Writer classes.

This has been tested and verified to compile with gcc and clang.
2020-07-21 13:51:20 -04:00
sawinglogz
7316ac676c Add a menu item to create a zip of all diagnostic logs.
Also fix a buffering issue in XmlRecorder that left devices.xml empty
in the zip.
2020-07-21 13:25:17 -04:00
sawinglogz
6a658b3be0 Enable serial device recording in the main application.
This is transparent to the user and is recorded into a log directory within
the OSCAR_Data directory.

Also add log rotation so that these logs don't grow forever.
2020-07-21 13:25:16 -04:00
Guy Scharf
d8a7cf2133 Remove unused code -- no effect on compilation 2020-07-19 16:42:28 -07:00
sawinglogz
65b4440428 Add preference for B&W printing. 2020-07-18 12:50:34 -04:00
harre
d2fc5ac5d4 Add missing include to fix compile error 2020-07-11 01:41:31 +02:00
sawinglogz
eb5bef5fba Move DeviceConnectionManager's global static variable into a local static.
This fixes the same issue that was just fixed in XmlReplayEvent, though
this one hadn't yet caused a crash.
2020-07-10 12:50:34 -04:00
sawinglogz
c7db24877c Split XML recording/replay into its own files.
The only code change was to move XmlReplayEvent::s_factories into
a local static variable accessed by XmlReplayEvent::factories() to
ensure that it will be initialized before it is used.

Otherwise there is no guarantee in C++11 that global variables
in different source files (translation units) will be initialized
in any particular order.
2020-07-10 12:44:15 -04:00
sawinglogz
610f6b8188 Reorder function declarations within XmlReplay and XmlReplayEvent for easier reference.
No functional change.
2020-07-10 11:51:54 -04:00
sawinglogz
c9ebc0d175 Move function definitions out of XmlReplayEvent and XmlReplayLock class declarations. 2020-07-10 11:51:54 -04:00
sawinglogz
d5cb629069 Minor device connection manager clean-up.
Also fix a minor bug where the wrong error code was reported in
a rare edge case.
2020-07-10 11:51:53 -04:00
sawinglogz
bdda964bf2 Add documentation and comments to device connection manager.
No change to code.
2020-07-10 11:51:53 -04:00
sawinglogz
e47610cf5c Minor cutting/pasting in device connection manager.
No functional change.
2020-07-10 11:51:53 -04:00
sawinglogz
09a96b893e Split connection XML recording/replay into separate files.
This is significant now because it will allow accurate recording of
multiple simultaneous connections.

This is important for the future because it establishes the
necessary infrastructure for recording downloaded sessions into their
own files so that they can be saved as backups.
2020-07-10 11:51:53 -04:00
sawinglogz
2d2e44fd36 Generalize XML record/replay base classes. 2020-07-10 11:51:53 -04:00
sawinglogz
a651e1405d Add record/replay test of downloading all sessions from oximeter.
Also fix a crash when the recording is truncated.
2020-07-10 11:51:53 -04:00
sawinglogz
e6258d321e Allow limited reordering of serial port replay.
Now a replayed read() will return the response that follows the
matching write().

When calls are made in the same order as they were during recording,
this will have no effect, and the original ordering will be replayed.

However, minor changes to the code should still result in sensible
replay until a new recording can be made.
2020-07-10 11:51:53 -04:00
sawinglogz
918f4af2c1 Add support for signals and serial port reading to XML replay.
Replay now passes its initial regression test when the oximeter is unplugged.
2020-07-10 11:51:52 -04:00
sawinglogz
5947751291 Add playback of most serial port operations.
read() isn't yet tested because it requires the readyRead signal.
2020-07-10 11:51:52 -04:00
sawinglogz
92d0af220d Make XML recording thread-safe. 2020-07-10 11:51:52 -04:00
sawinglogz
8fbf665b89 Simplify XmlReplayEvent retrieval and add support for matching id. 2020-07-10 11:51:52 -04:00
sawinglogz
d350e47382 Track connections by name only, not by type as well.
Also rename getAvailableSerialPorts for clarity.
2020-07-10 11:51:52 -04:00
sawinglogz
553cf59a95 Move connection creation to DeviceConnectionManager.
Calling openConnection will return an open connection or nullptr.
Deleting the connection will close it.

SerialPort now uses this under the hood, while still presenting
the QSerialPort-compatible interface.
2020-07-10 11:51:52 -04:00
sawinglogz
7c98af3f86 Refactor class hierarchy for serial port XML recording. 2020-07-10 11:51:51 -04:00
sawinglogz
1630051dd1 Generate XML tags for every serial port connection event. 2020-07-10 11:51:51 -04:00
sawinglogz
3210ecd1ba Add plumbing for intercepting and logging serial port activity. 2020-07-10 11:51:51 -04:00
sawinglogz
3afa8c87c1 Minor tidying and documentation, no functional change. 2020-07-10 11:51:51 -04:00
sawinglogz
ac1281c1d9 Add playback of serial port scan, along with supporting infrastructure. 2020-07-10 11:51:51 -04:00
sawinglogz
efbb967b5c Add DeviceConnectionManager class to record serial port scan. 2020-07-10 11:51:51 -04:00
sawinglogz
cd29593280 Add XML serialization/deserialization to SerialPortInfo. 2020-07-10 11:51:51 -04:00
Guy Scharf
47c8ece333 Exclude Journal in calculating last day of Overview graph
This deals with notes that may be entered for future dates
  and which should not affect the Overview graphs.
2020-07-06 11:51:09 -07:00
Guy Scharf
44b7261edd Merge branch 'master' into updater 2020-07-04 18:21:33 -07:00
Guy Scharf
619ce66b9e Auto check for updates
Checks for updates to OSCAR at startup and profile close.
    Also allows user to check with Help/Check for updates.
    Updates controlled by versions.xml in www.sleepfiles.com/oscar/versions
2020-07-04 18:17:25 -07:00
sawinglogz
11dfa09c7b Add preliminary support for rare time-adjustment event observed on PRS1 550P.
Also add 900X150 to the list of tested machines, and update other warnings
based on new test data.
2020-06-26 12:53:52 -04:00
Guy Scharf
6e1727eb2c New privacy tool View/Show Personal Data shows and hides personal identification from statistics window and reports
This option applies to the application and not just the current profile.
2020-06-04 21:25:23 -07:00
sawinglogz
7a85f9784c Add initial device connection classes to eventually support recording/playback.
This initial commit is designed to change as little existing code as possible.
Once regression tests are in place that can play back previously recorded
data, we can move on to more significant changes.
2020-06-04 14:32:03 -04:00
sawinglogz
160b6124a3 Fix typo. 2020-06-04 10:01:40 -04:00
sawinglogz
cdec75b94b Update 500G warnings based on new test data. 2020-06-04 10:01:26 -04:00
Guy Scharf
5c88770bfe Improve language in error message windows 2020-06-03 10:02:20 -07:00
sawinglogz
d01c183ae3 Add 400X130 to the list of tested machines. 2020-05-29 12:38:39 -04:00
sawinglogz
4507f8d7a8 Fix crash when trying to import Weinmann SOMNObalance e.
This patch only addresses the crash, it doesn't add support for the machine.
2020-05-28 22:11:28 -04:00
Guy Scharf
7a6284e72b Fix regression in e921e7de 2020-05-26 12:34:22 -07:00
Phil Olynyk
e921e7dee5 Add QT version check at journal.cpp:262 2020-05-26 11:48:34 -04:00
sawinglogz
4fa353a263 Fix regression in da60a5a and underlying bug.
Note that operator[] on a non-const QHash inserts a default-constructed
item in the hash if the key doesn't already exist.
2020-05-23 21:51:43 -04:00
sawinglogz
47ea2bbf91 Tweak copy constructors to fix build errors in CentOS.
Thanks to johanfh.

Fixes #19.
2020-05-23 11:22:59 -04:00
Guy Scharf
da60a5aa99 Correct determination of CPAP Mode 2020-05-23 05:20:33 -07:00
Guy Scharf
1659b3e6bf New Backup Journal code using QXmlStreamWriter class 2020-05-21 20:33:43 -07:00
Phil Olynyk
2ad6a5c980 Fix debug output text 2020-05-19 14:47:54 -04:00
Phil Olynyk
ee3a79af7e Copy new STR.edf to Backup after Backup_STR scan 2020-05-18 17:42:37 -04:00
Phil Olynyk
2d4598d5e7 Fix type in procedure name 2020-05-18 13:59:10 -04:00
Phil Olynyk
b9cccdc746 Clean up, and copy Backup/STR.edf to Backup?STR_Backup/STR_yyyymmdd.edf
before copying import/STR.edf to Backup/STR.edf.
2020-05-17 19:24:31 -04:00
Phil Olynyk
cf32639b06 Clean up comments and trim file paths 2020-05-16 17:31:18 -04:00
Phil Olynyk
53d0c0fbe4 Merge branch 'master' into error-message-cleanup 2020-05-16 16:18:27 -04:00
Phil Olynyk
16cd85ab02 More tidying up 2020-05-16 16:16:10 -04:00
sawinglogz
922515b3c9 Update PRS1 900X and 500G warnings based on new test data. 2020-05-16 10:09:00 -04:00
Phil Olynyk
209998fe34 Re-arrange code to backup STR.edf before other files 2020-05-15 21:27:08 -04:00
Phil Olynyk
ebd518a9f5 Make sure STR.edf is copied to Backup folder during import 2020-05-15 19:58:11 -04:00
Phil Olynyk
5b87ad6640 Comment out extra debug statements 2020-05-15 12:44:29 -04:00
Phil Olynyk
71e156dfed Change setMin/Max to updateMin/Max in LoadEDF procedures 2020-05-14 21:10:03 -04:00
sawinglogz
759ae84f65 Update PRS1 900X and oximetry warnings based on new test data. 2020-05-13 13:40:54 -04:00
sawinglogz
2a92569393 Add 461CA and 700X120 to the list of tested machines, and refine
unexpected data warnings.
2020-05-12 14:08:24 -04:00
sawinglogz
5270fcd09b Update PRS1 400X-700X warnings based on new test data. 2020-05-12 13:26:45 -04:00
sawinglogz
346208140e Revise VS2 index to match official reports.
The VS2 channel is unique in that it only appears (as a flag)
when there are nonzero snores during a 2-minute period. However, the
VS index isn't the number of events (nonzero intervals) per hour,
but rather the number of snores per hour.
2020-05-07 17:36:31 -04:00
Phil Olynyk
c43479672a Pick up some PRS changes 2020-05-07 16:45:17 -04:00
Phil Olynyk
2da3a9cd86 Track down zero time that led to future sessions 2020-05-07 16:43:52 -04:00
sawinglogz
f2fd29bc52 Update PRS1 900X warnings based on new test data. 2020-05-07 14:49:07 -04:00
sawinglogz
d9386a993b Partial fix for database upgrade loop.
Resmed loader still needs to return -1 on error.

Also fixed a crasher in MainWindow::finishCPAPImport.
2020-05-06 13:40:59 -04:00
sawinglogz
ad15655ffb Improve Viatom file selection on Windows.
Also remove a warning about unexpected data.
2020-05-06 11:42:03 -04:00
Phil Olynyk
1b453e2fa5 Always creaste Backup/DATALOG folder before ScanFiles 2020-05-04 19:59:59 -04:00