Commit Graph

1202 Commits

Author SHA1 Message Date
sawinglogz
d4fd330a31 Fix regression introduced by cb57643.
The Test1/2 channels were no longer initialized. As a result, all
Test1/2 data got merged into channel 0.
2020-03-08 16:27:18 -04:00
Phil Olynyk
aaaaef0d41 Minor updates to the doc files 2020-03-04 15:23:22 -05:00
Phil Olynyk
f077353a01 Kludge fix for missing Ti and Te segments 2020-03-03 16:47:55 -05:00
Phil Olynyk
11b1d9a045 Roll the VAuto TrigCycEvent into the S0 VPAP-S RespEvent type 2020-02-21 21:41:00 -05:00
Phil Olynyk
b4bbdd9a54 update dumpSTR to use the standard edfparser files 2020-02-21 11:29:00 -05:00
sawinglogz
a80134e7db Remove redefinition of nullptr that caused compilation errors under Qt 5.14.
Thanks to mjphyi for tracking this down!

gcc didn't provide very useful error messages, saying that
error: invalid conversion from ‘long int’ to ‘QDebug::Stream*’
was in qglobal.h.

But it really had to do with a few scattered #defines in OSCAR changing
nullptr to NULL (an int). Since OSCAR now requires C++11, and nullptr
is a keyword in C++11, these #defines can go.

Resolves issue #5.
2020-02-18 15:22:51 -05:00
Guy Scharf
03adef372c Merge branch 'master' into preferences 2020-02-17 16:22:31 -07:00
sawinglogz
7fddb47dbc Fix regression in e698879 that prevented detection of shift key on launch. 2020-02-17 17:26:00 -05:00
Guy Scharf
634a139b29 Merge branch 'master' into preferences 2020-02-17 15:25:44 -07:00
Guy Scharf
40644b859d Move engine settings from Appearance to General page in Preferences Dialog
Also changed layout on various pages so that spacing is not disturbed when stretching vertically
    This was an attempt to shrink total dialog height, but that is so far not successful.
2020-02-17 14:42:49 -07:00
sawinglogz
d75a2e9fca Fix debug message when skipping short sessions.
The session ID is not a date on all machines.
2020-02-17 11:04:48 -05:00
sawinglogz
e698879e17 Move graphic engine configuration before creation of QApplication.
Qt was emitting console warnings about attempts to change
Qt::AA_UseDesktopOpenGL after creating the QApplication.
2020-02-17 10:59:26 -05:00
sawinglogz
bba5f93795 Comment out unused slots in MainWindow. 2020-02-17 09:39:38 -05:00
Phil Olynyk
99de650018 Merge branch 'master' into sanity-check-STR-file 2020-02-16 21:42:09 -05:00
Phil Olynyk
c671e873a3 Make Open return error when sanity fails 2020-02-16 21:41:56 -05:00
Phil Olynyk
bd4918dc30 Remove version update from importCPAP 2020-02-16 21:33:01 -05:00
Phil Olynyk
3df1ba50df Merge branch 'master' into update-machine-db-version 2020-02-16 21:19:00 -05:00
Phil Olynyk
6fed69e71c Update database version in loader, not profiles 2020-02-16 21:12:54 -05:00
sawinglogz
498451df4a Fix Windows file dialog for loading Viatom files. 2020-02-16 21:02:30 -05:00
sawinglogz
b96f22bcd9 Fix double import progress window. 2020-02-16 20:12:25 -05:00
Phil Olynyk
a094aee728 Add sanity check for STR file 2020-02-14 15:18:25 -05:00
Phil Olynyk
1a258eae34 Update machine.info.version after upgrade re-import 2020-02-13 20:37:52 -05:00
sawinglogz
c5c6f779f7 Fix Zeo and Dreem loaders' mysteriously missing sessions.
This was the same issue seen in the Viatom loader, fixed at 5e07187,
and the same fix works here.
2020-02-13 14:31:32 -05:00
Guy Scharf
3886543c40 Make Windows build process work without GIT 2020-02-12 19:45:12 -07:00
sawinglogz
0ee827b294 Add Resmed-specific settings channels to YAML. 2020-02-10 23:48:23 -05:00
Phil Olynyk
014a9c7944 Merge master containing testing changes 2020-02-10 22:18:39 -05:00
sawinglogz
bd68525246 Turn off backups in Resmed regression tests. 2020-02-10 20:58:49 -05:00
sawinglogz
7701694b14 Add support for YAML output by Resmed loader for regression testing. 2020-02-10 16:04:03 -05:00
Phil Olynyk
d27f9232d4 Set timezone to localNoDST and set session->first & last and fix typo 2020-02-09 23:45:31 -05:00
Phil Olynyk
084cff026c code cleaup in edfparser 2020-02-09 23:42:31 -05:00
Phil Olynyk
7f3cda6893 Add some additional debug text for clarity 2020-02-09 23:41:35 -05:00
Phil Olynyk
81eee97ec1 Change pass-by-value to pass-by-ref in BackupSTR 2020-02-07 20:16:47 -05:00
Phil Olynyk
1148d1b69e Merge master and clean up Open code 2020-02-07 16:20:53 -05:00
Phil Olynyk
1b105c1588 Delete profile settings moved to profiles.cpp 2020-02-07 16:00:58 -05:00
sawinglogz
a497c0f317 Update Viatom loader based on newly observed O2Ring data in the header. 2020-02-07 13:54:28 -05:00
Guy Scharf
77e2975ab2 Rework update_gitinfo.bat
There was a strange interaction between git rev-parse and git diff-index when run in a batch file.
    Reworked to change the way rev-parse command was handled.
    Also added check to make sure git.exe was in the path.
2020-02-07 08:46:56 -07:00
Phil Olynyk
0afaec53b5 In Preferences, ask if ResMed when no machines; force ResMed prefs when yes. Also in ResMed loader 2020-02-06 21:34:04 -05:00
Phil Olynyk
58a7f3f13d add no-error=strict-aliasing for old compilers 2020-02-06 17:25:43 -05:00
Phil Olynyk
b178dba420 add timezone test for invalid datetimes 2020-02-06 17:17:08 -05:00
Guy Scharf
34c545bb48 Merge branch 'master' into deploy3 2020-02-06 12:00:47 -07:00
Guy Scharf
20495e4475 Third time's the charm -- fix "-plus" notation for Windows 2020-02-06 11:59:17 -07:00
Phil Olynyk
bd6dabd3e5 Add debugging for missing session info 2020-02-06 09:13:16 -05:00
sawinglogz
c83de24dec Update PRS1 loader based on peculiar EZ-Start sample data.
It doesn't do anything differently yet, but it won't alert the user
about untested data, now that we have a sample.
2020-02-04 12:26:42 -05:00
sawinglogz
f40428f9fe Identify previously unknown Viatom vibration field. 2020-02-03 15:37:37 -05:00
sawinglogz
cdeba58c5d Fix minor cleanup bugs in the Resmed regression tests that were causing crashes. 2020-02-03 11:43:13 -05:00
Guy Scharf
ef26ab5e46 Fix, again, the "-plus" notation in Windows build process. 2020-02-02 22:19:23 -07:00
Phil Olynyk
da29e35766 Merge master with tidy-edf-parser 2020-02-02 14:52:02 -05:00
Phil Olynyk
f903a26d11 Force use of systems Standard Time Zone by QDateTime 2020-02-02 14:29:23 -05:00
Guy Scharf
2a03ff6c57 Fix "-pluis" notation on Windows builds 2020-02-01 19:07:47 -07:00
sawinglogz
39e243a36d Comment out set but otherwise unused variables.
g++ warns about this, which we treat as an error.
2020-01-31 17:18:01 -05:00
sawinglogz
e0b50a5680 Improve purging UI for oximeters.
The imported data doesn't list a brand, so the UI needs to fall back
on the loader name. Also, the purge menu wasn't getting updated
after an oximetry import.
2020-01-31 15:35:36 -05:00
sawinglogz
ea66563521 Allow purging of any machine, not just CPAP.
Otherwise there was no way to purge and re-import Somnopose or
hypnogram data, nor oximetry apart from one day at a time.
2020-01-31 15:16:31 -05:00
sawinglogz
a585b6dcfe Refactor PopulatePurgeMenu in advance of supporting more machines. 2020-01-31 14:35:15 -05:00
sawinglogz
ad9ac16f80 Add support for discontinuous hyponogram data in ZEO loader.
Also support sleep stage 6 ("Deep (2)") and adjust scale of chart
so that deep sleep is more visible.

And adjust scale of Dreem chart to match.
2020-01-31 13:31:49 -05:00
sawinglogz
492908f538 Add support for discontinuous hyponogram data in Dreem loader. 2020-01-31 12:44:41 -05:00
Phil Olynyk
6624738f67 Clean up EDFInfo class to avoid memory leaks 2020-01-30 19:54:53 -05:00
Phil Olynyk
0fd25f2f4e Add delete (obj) to clean up memory leaks 2020-01-30 19:52:37 -05:00
sawinglogz
ab9d5e87c5 Flip the sleep stage data to negative so that the chart is drawn in the right orientation.
Ideally graphs would be able to invert their Y axis without this hack, but
it works for now. It would also be good to support non-numeric labels
in the graph legend.
2020-01-30 13:45:55 -05:00
sawinglogz
62880d1a00 Comment and whitespace cleanup in Dreem, Viatom, and Zeo loaders. 2020-01-30 13:17:51 -05:00
sawinglogz
156215b729 Clean up Zeo loader using techniques from the Dreem loader.
Also speed up skipping previously imported sessions by bailing
earlier. No other change in functionality.
2020-01-30 12:25:35 -05:00
sawinglogz
32ffcc4f94 First pass at Dreem CSV loader.
Something's not quite right about the hypnogram timestamps, since
there are more than would fit within the start/stop times.
2020-01-29 20:00:33 -05:00
sawinglogz
f33dd654f8 Add generic CSV reader class and switch ZEO loader to it.
No change in functionality for ZEO files.

Resolves crashing (assertion failure) on non-ZEO CSV files.
2020-01-29 17:05:03 -05:00
sawinglogz
8ef068af7e Fix ZEO loader to handle MyZeo 0.3.1 date formatting.
Also make the UI more informative and fix up the regression test output.
2020-01-29 16:21:42 -05:00
sawinglogz
448bfa048c Refactor ZEO loader to allow for testing, add regression tests. 2020-01-29 15:47:11 -05:00
sawinglogz
b82d5dc971 Fix memory leak in PRS1 loader. 2020-01-29 10:43:58 -05:00
sawinglogz
cb576437ab Clean up noise and memory leaks in unit tests. 2020-01-29 09:10:29 -05:00
sawinglogz
077f51178f Split PRS1 oximetry data so that invalid samples show up as gaps on the charts. 2020-01-28 17:36:02 -05:00
sawinglogz
15e6f1eadf Refactor PRS1 oximetry import to prepare for discontinuous data.
Also remove some return values that were unused.
2020-01-28 16:04:34 -05:00
sawinglogz
0358386cd3 Fix PRS1 tube diameter display.
It was being parsed correctly, but the mapping to display was wrong.
2020-01-28 14:07:58 -05:00
sawinglogz
ba81370fb6 Update PRS1 warnings based on new sample data, add 500X130 to list of tested madels. 2020-01-28 13:19:45 -05:00
sawinglogz
5fedd8349a Fix Bi-Flex labeling for PRS1 DreamStation 600X and 700X machines. 2020-01-28 12:02:03 -05:00
sawinglogz
c6169da7e0 Fix regression in f865b371: the pressure average channel is truly the pressure average for bi-level modes.
This changes the parsing to distinguish between the "flex pressure" reported
by single-pressure modes (which remains effectively EPAP) and the average
pressure reported by bi-level modes (which returns to its former average
pressure channel).
2020-01-28 11:26:31 -05:00
sawinglogz
369275988b Clean up error reporting when parsing PRS1 data chunks.
Also remove some error-handling code that we can't verify and probably
never worked correctly.
2020-01-28 09:34:02 -05:00
sawinglogz
20b5ae454c Fix pinch gestures so that spreading fingers zooms in. 2020-01-27 15:04:54 -05:00
sawinglogz
f865b37102 Remap PRS1 pressure average channel to EPAP, which it most closely matches.
Technically it's "flex pressure" and not true EPAP, since it's provided for
non-bi-level modes, but Flex is pretty close to bi-level.
2020-01-27 14:57:53 -05:00
sawinglogz
ef0cb253cd Add CPAP_PressureSet/EPAPSet/IPAPSet to daily statistics view.
Also add a breadcrumb for fixing average calculation for these channels.
2020-01-27 14:28:25 -05:00
sawinglogz
7a42caeccf Create new Troubleshooting submenu under Help and move a bunch of items there.
Also change "archive" to "zip" in the menu and prompts for sending diagnostic data.
2020-01-27 14:13:41 -05:00
sawinglogz
6d47210c95 Ask the user where to save screenshots (by default).
There's a new preference to turn this off.

Also update the release notes post-beta-1.
2020-01-27 14:00:41 -05:00
sawinglogz
5122524df7 Leave a breadcrumb for future work on Purge Oximetry, which only half works. 2020-01-27 12:37:10 -05:00
sawinglogz
277b2a5422 Infer the serial number from Viatom directory if possible. 2020-01-27 12:26:35 -05:00
sawinglogz
780a703f18 Tweak the unexpected data warning for Viatom now that we can import more than just single files. 2020-01-27 09:15:15 -05:00
sawinglogz
e11bdf2633 Update Viatom tests to process folders of test data. 2020-01-26 20:05:14 -05:00
sawinglogz
4ebc7d3681 Rename POS_Motion channel to POS_Movement to match Viatom report terminology.
Also move database updates to Open() rather than at each file imported.
2020-01-26 19:50:18 -05:00
sawinglogz
3548b083fe Move Viatom unexpected data warning to Open() instead of each file. 2020-01-26 18:28:10 -05:00
sawinglogz
8951068895 Add support for importing a whole folder of Viatom files. 2020-01-26 18:13:09 -05:00
sawinglogz
b6f7ebac6f Move Viatom filename pattern matching into loader. 2020-01-26 17:51:56 -05:00
sawinglogz
c06057ef14 Skip previously imported Viatom sessions. 2020-01-26 17:20:58 -05:00
sawinglogz
5e07187860 Fix the Viatom loader's mysteriously missing sessions.
It looks like SaveSummaryCache() would occasionally get called elsewhere
under certain circumstances, which would cause sessions to occasionally
save, but unpredictably. Now the summary cache gets saved consistently.
2020-01-25 17:35:58 -05:00
sawinglogz
c727e78d45 Add support for discontinuous Viatom data.
This now correctly shows gaps in the oximetry data when there are
invalid samples, rather than holding the previous values.
2020-01-25 16:55:32 -05:00
sawinglogz
2f7b39f808 Deduplicate Viatom 2s files to their true 4s resolution. 2020-01-25 14:50:45 -05:00
sawinglogz
61333aff07 Rewrite the Viatom header parsing to read all data and warn about unexpected data.
It turns out the 2s-resolution files are actually 4s resolution with
each sample reported twice! Fixing that is next.
2020-01-24 20:16:57 -05:00
sawinglogz
21e7ae8b61 Set event list rate based on step, fix Viatom header size. 2020-01-24 15:25:36 -05:00
sawinglogz
70de112192 Split Viatom parsing from importing, no functional change. 2020-01-24 15:20:00 -05:00
sawinglogz
ae8ce0e9d6 Remove tabs in Viatom loader and normalize whitespace to OSCAR convensions.
Also change from using sprintf/QDateTime::fromString to using Qt native objects.
No change in output.
2020-01-23 19:25:06 -05:00
sawinglogz
9cb7de950b Add regression tests for Viatom loader.
Also enable the native file dialog box for importing Viatom files.
2020-01-23 19:11:05 -05:00
sawinglogz
3fbc1777c5 Make Viatom loader MT_OXIMETER and remove MT_MULTI.
There's way too much logic throughout the code that makes assumptions
based on MT_OXIMETER.
2020-01-23 19:10:25 -05:00
sawinglogz
66f13f3143 Initial commit of contributed Viatom SpO2 loader.
Diff applied from the following commit by dave madden <dhm@mersenne.com>,
replacing tabs with spaces:

fa38850503
2020-01-23 12:57:44 -05:00
sawinglogz
94e39c2733 Use Qt standard shortcuts for printing, bold, italic, and underline.
In theory these will automatically get localized, since they're using
Qt's official enums.
2020-01-22 20:10:43 -05:00
sawinglogz
c4d16b7169 Add support for 1030X CPAP mode. 2020-01-22 19:52:49 -05:00
sawinglogz
640c110acd Make DreamStation settings size checks less picky.
They'll no longer refuse to load the session, and instead they'll flag
any small settings slices as unexpected data.
2020-01-22 19:34:42 -05:00
sawinglogz
65a48a6384 Merge branch 'master' into add-zip-archiving 2020-01-22 17:35:26 -05:00
sawinglogz
78d3155ecd Add zip creation of OSCAR data folder.
Also fix the zip progress bar when compressing more than 2GB data,
and prevent the zip file from ever trying to include itself.
2020-01-22 17:33:15 -05:00
Phil Olynyk
80edf9d4f9 Always use pre5.8 mSec to/from epoch calls 2020-01-22 14:23:37 -05:00
sawinglogz
5dfbc1fbe4 Add progress bar to zip creation. 2020-01-22 12:59:58 -05:00
sawinglogz
c4619dad35 Clean up zip API. 2020-01-22 11:25:20 -05:00
sawinglogz
607002ffa1 Separate directory walking from zip creation.
This is necessary for presenting a progress bar during zip creation.
2020-01-22 10:56:08 -05:00
sawinglogz
1c4c7871da Add zip creation of SD card data.
This uses the miniz library, which is self-contained in a single
.c/.h pair and has an MIT license.

Swapping out the zip library should be fairly straightforward
if ever necessary.
2020-01-21 17:37:37 -05:00
Phil Olynyk
04c085f924 Add code to use old calls with old Qt versions 2020-01-21 15:53:08 -05:00
Phil Olynyk
0dba31e58b Changes for old QT and compiler versions 2020-01-21 13:49:02 -05:00
sawinglogz
46e061d12b Add CPAP data card selection to archive creation workflow.
Also slightly refine some verbiage in the import process to make it simpler.

Zip creation still to come.
2020-01-21 12:56:08 -05:00
sawinglogz
36d3467a64 Refactor on_action_Import_Data_triggered into multiple functions.
No change in behavior.
2020-01-21 11:56:22 -05:00
sawinglogz
99badd40c3 Add menu entries for creating zip archives of SD cards and OSCAR data.
Also hide a few "not yet implemented" items.

Actual zipping comes later.
2020-01-21 11:22:49 -05:00
Guy Scharf
703fe2a613 Update awk and inno setup scripts for new versioning changes in Windows build tools
Version number in Windows oscar.exe has first three numbers same as string and fourth as 0
    Version number in Windows installer has first three numbers same as string and fourth indicates build type:
    0 = release, 100=alpha, 200=beta, 300=gamma, 400=rc
2020-01-19 18:18:21 -07:00
Guy Scharf
0a55e12d5b Merge branch 'master' into version 2020-01-18 19:58:13 -07:00
Guy Scharf
8a0dc47279 New update_gitinfo.bat and changes to oscar.pro to support new versioning on Windows 2020-01-18 19:56:25 -07:00
sawinglogz
aba58d9085 Second pass at fixing display of Preferences menu shortcut on macOS.
The previous fix didn't work 100% of the time either.
2020-01-18 20:34:10 -05:00
sawinglogz
d8cc142501 Add "ignore older than" support to PRS1 importer.
Now it actually works.
2020-01-18 20:16:31 -05:00
sawinglogz
91dbd3a204 Fix the display of Preferences menu shortcut on macOS.
It was appearing only on first launch, when OSCAR was asking where
to store its data. Now it appears consistently.
2020-01-18 17:01:35 -05:00
sawinglogz
127a3e1964 Fix logger thread so that it doesn't lose messages at startup.
This was particularly noticeable when running for the first time and
selecting OSCAR's data location.
2020-01-18 11:41:09 -05:00
sawinglogz
62b5ba3a60 Fix annoying precompiler limitation/bug in version sandbox logic. 2020-01-17 16:27:52 -05:00
sawinglogz
79ec192051 Fix update_gitinfo to detect detached head state properly. 2020-01-17 16:19:13 -05:00
sawinglogz
796f4659ab Update preference sandbox logic.
Release/RC version: no sandbox
Testing releases (tagged prerelease version): -test
Development builds: -branchname (if at the head of a branch)
                    -(commitid) (if in a headless state)

And in the unlikely event someone tries to build a non-release version
from a tarball instead of git, its sandbox will be "-unreleased".
2020-01-17 15:59:29 -05:00
sawinglogz
740ff460e7 Add version information to macOS application bundle and dmg. 2020-01-17 13:06:33 -05:00
sawinglogz
8417e7d43f Move macOS create_dmg script to its proper place. 2020-01-16 19:48:30 -05:00
sawinglogz
656f8a3c61 Attempt to update update_gitinfo.bat to match the bash script.
This is almost certain to be broken. Somebody with a Windows build
environment will need to test and fix it.
2020-01-16 17:47:48 -05:00
sawinglogz
083fa3debd Move version and git constants into #defines and update bash script.
The bash script now adds a #define if the current checkout is
exactly on a tag, and it leaves all #defines empty if building
from a tarball.

The batch file still needs to be updated.
2020-01-16 17:37:43 -05:00
sawinglogz
6d53fc5ebf Make the list of machines in the release notes an actual list. 2020-01-16 16:13:53 -05:00
sawinglogz
e125e79d00 Remove old build_number.h and infrastructure now that it's abandoned. 2020-01-16 16:07:55 -05:00
sawinglogz
768f32821a Clean up version.cpp, no functional changes. 2020-01-16 16:06:11 -05:00
sawinglogz
1f4bb2d435 Clean up build information and version interface.
This removes git dependencies from everything except for version.cpp,
and removes the associated interfaces in version.h.

Since the full version string contains the branch and revision
number where applicable, the build information no longer needs
to report branch and revision separately. It also now queries
version.cpp for a more consistent and reliable build time.

Debug output of build information is also now more consistent with
less redundant code.
2020-01-16 13:58:18 -05:00
sawinglogz
2e92107cce Update version display throughout to use the new information and be consistent.
The full version now includes the build/git information embedded within
it as build metadata according to the Semantic Versioning 2.0.0 spec,
for example: "1.1.0-beta-1+branch-name-a1b2c3d".

Now the full version string, with all detail is always displayed
EXCEPT for release versions, in which case just the simple version
number ("1.1.0") is displayed in the primary UI.

- Main window title: simple version for release versions, full version
    string otherwise
- Notifications: same as main window title
- System tray: same as main window title
- About window title: same as main window title
- About window release notes: always include full version string
- Reports: always include full version string
- Under the logo (about dialog, profile selector, new profile
    window): removed, as it is largely redundant and can
    interfere with the window geometry.
- Database upgrade alert: same as main window title
- Database newer alert: same as main window title

The full version string is also included within the preference and
profile .xml files, but because build metadata is ignored in version
comparisons, differences in builds will not cause any spurious
alerts. However, changes in prerelease versions will continue to
be significant, as they should be.
2020-01-16 13:05:55 -05:00
sawinglogz
80489a4b29 Add error handling in case a developer accidentally defines an invalid version. 2020-01-16 11:54:41 -05:00
sawinglogz
c71a953afd Add build metadata to version string.
Also update git scripts to make build metadata compliant with
semantic versioning.
2020-01-16 11:33:39 -05:00
sawinglogz
88957aeb7f Replace VersionString with getVersion() everywhere. 2020-01-15 19:45:46 -05:00
sawinglogz
f7f1ddfcbd Update version logic to drive entirely from defined string rather than individual components. 2020-01-15 19:27:03 -05:00
sawinglogz
93b9007f67 Remove old version comparison code. 2020-01-15 17:15:24 -05:00
sawinglogz
d7fade5f4c Add Version class for Semantic Versioning 2.0.0 parsing and comparison.
Also add unit tests for the new class.
2020-01-15 17:00:21 -05:00
sawinglogz
d898581ca4 Remove version.h dependency from appsettings.h to reduce unnecessary recompiling. 2020-01-15 16:34:28 -05:00
sawinglogz
fb32e16c96 Clean up version.h interface and reduce duplcate code.
Only minor cosmetic changes in how the version is displayed in
certain places.
2020-01-15 13:18:00 -05:00
sawinglogz
6f194507a8 Move version-related code into version.cpp. 2020-01-13 18:41:24 -05:00
sawinglogz
097362dfa1 Move version constants out of header file into new cpp file. 2020-01-13 18:41:24 -05:00
sawinglogz
cb036c4497 Remove some redundant hard-coding in daily settings view. 2020-01-12 20:17:07 -05:00
sawinglogz
787a6ed128 Fix PRS1 humidifer settings labels.
For this to be visible, the user needs to reset their channel
preferences to defaults. (This general limitation is logged as
an issue in Mantis.)
2020-01-12 20:13:21 -05:00
sawinglogz
46a81cd804 Fix PRS1 F5V01 flex parsing and add logging for F5V2.
Pre-DreamStation ASV flex settings should now be correct.
2020-01-12 19:34:51 -05:00
sawinglogz
2d3d5453b9 Update PRS1 flex parser for F0V234 based on remaining sample data.
Minimal changes, it was already mostly right.
2020-01-12 17:27:12 -05:00
sawinglogz
7909a26ab6 Split ParseFlexSetting into F0V234 and F5V012 versions, begin rewrite based on initial sample data.
These were incorrectly merged, resulting in convoluted logic and
occasionally incorrect results.  ASV is still very much a work in
progress.
2020-01-12 16:53:43 -05:00
sawinglogz
3b1d3028ff Document a few lingering PRS1 humidification samples. 2020-01-11 19:23:43 -05:00
sawinglogz
9edfd59476 Fix PRS1 humidity import.
Previously it was reporting spurious information when the humidifier was
disconnected.  Now it only reports settings details when the humidifier is
connected (the only time they're valid.)

It also now reports the humidification mode (fixed, adaptive, or heated
tube), and the heated tube temperature when appropriate.
2020-01-11 19:14:01 -05:00
sawinglogz
b0de30082c Update F0V6, F5V3 and F3V6 (DreamStation) humidifier parsing based on all available sample data.
No real change to functionality, other than confirming correct behavior,
documenting observed data and adding flags for anything new.
2020-01-11 15:13:24 -05:00
sawinglogz
37882ef750 Update F3V3 humidifier parsing based on all available sample data.
No real change to functionality, other than confirming correct behavior,
documenting observed data and adding flags for anything new.
2020-01-10 17:28:31 -05:00
sawinglogz
5bfcda73c6 Update F0V4 and F5V12 (60-Series) humidifier parsing based on all available sample data.
No real change to functionality, other than confirming correct behavior,
documenting observed data and adding flags for anything new.

The ParseHumidifierSettingF0V4 function has now been renamed to
ParseHumidifierSetting60Series for accuracy.
2020-01-10 16:45:12 -05:00
sawinglogz
05779eac4f Update FV023 and F5V0 summary parsers to parse the humidification at equipment-off.
Accordingly update ParseHumidifierSetting50Series to add a parameter
controlling whether parsed settings should be imported or not,
consistent with all other PRS1 humidifier parsers.
2020-01-10 12:57:18 -05:00
sawinglogz
7028f20aaf Update F0V23 and F5V0 humidifier parsing based on all available sample data.
The ParseHumidifierSettingV2 function has now been renamed to
ParseHumidifierSetting50Series for accuracy, and the code and
parameters which had been used when 60-Series machines (incorrectly)
relied on it has been removed.
2020-01-10 12:39:54 -05:00
sawinglogz
b9c598127c Add observations from initial batch of PRS1 humidification samples, add instrumentation to identify additional samples.
Also add initial fixes to F5V0 humidifer parsing, which was probably wrong.
2020-01-10 10:49:08 -05:00
Guy Scharf
25ed86401c Merge branch 'master' into timedbreath 2020-01-07 23:39:38 -07:00
sawinglogz
b6c2aa4610 Improve macOS create_dmg script and update Qt Creator build instructions. 2020-01-07 19:40:58 -05:00
sawinglogz
50b47a9bff Fix the tail ends of statistic channels on PRS1.
The last statistics events in each slice are now correctly imported.

Previously, in the surprising edge case where two statistic periods are
reported with the same end-of-slice timestamp, they were both being duplicated
when marking the end of the slice.

Also, there were scattered instances where the final statistics in a slice
weren't being imported at all or were being imported incorrectly. These are
now fixed as well.
2020-01-06 21:45:52 -05:00
sawinglogz
cd35f6d4d7 Add internal pseudo-event for PRS1 parsers to mark the boundary between statistic intervals.
No change in import behavior yet, but this will be needed to deal with a weird edge
case in which two statistic periods are reported with the same end-of-slice timestamp,
the first one intended to cover the preceding 2 minutes, the second one presumably
intended to cover the fractional second after the previous interval, though all
values are 0, so it's hard to be sure.
2020-01-06 11:59:15 -05:00
sawinglogz
97c7a4f557 Update PRS1 test YAML to emit first and last N/2 samples instead of first N, allowing for regression testing of end-of-session edge cases. 2020-01-05 16:02:04 -05:00
sawinglogz
43716793b4 Add user alert when unexpected PRS1 data is encountered on import.
Also rename some variables for clarity.
2020-01-04 22:06:28 -05:00
sawinglogz
26a844c720 Add infrastructure to allow PRS1 loader to alert the user when it encounters unexpected data.
Only the tests currently react to this information.
2020-01-04 20:47:28 -05:00
sawinglogz
41579d4919 Reset import warnings when running a new version of OSCAR. 2019-12-30 14:25:37 -06:00
Phil Olynyk
ccba19b3d2 Conditionalize debug output with DEBUG_SESSION and DEBUG_IDENT 2019-12-30 11:14:05 -05:00
Guy Scharf
280c847996 Eliminate MINOR_FLAG from list of indices on Daily page.
This results in Timed Breath no longer being shown in the index list.
2019-12-29 22:56:54 -07:00
sawinglogz
fdd1b658a2 Update PRS1 loader to respect new preference for warnings on untested machines. 2019-12-29 22:09:46 -06:00
sawinglogz
9521de7e18 Add preferences to disable import warnings for untested machines and unexpected data.
The preferences don't have any effect yet.
2019-12-29 21:54:59 -06:00
sawinglogz
3be691f2d8 Add README to macOS .dmg and "make dist-mac" target to do so.
The build instructions for Qt Creator still need to be updated
to use the new create_dmg script.
2019-12-29 15:56:17 -06:00
Guy Scharf
41bd1ded63 Show n/a for pressure on Daily page below AHI if there is no valid value. Also update release notes to reflect this. 2019-12-28 23:16:59 -07:00
sawinglogz
f1bd9c585b Merge branch 'master' into leave-new-charts-enabled 2019-12-27 23:08:04 -06:00
sawinglogz
47f38ab29e Remove obsolete TODOs and commented-out code in PRS1 loader. 2019-12-27 23:05:15 -06:00
sawinglogz
4976d7077e Fix the missing import progress dialog when forcing a rebuild.
Because opening a profile already had a progress dialog open, the import
process during a forced rebuild wasn't appearing, so it would look like
OSCAR was hanging for as long as the import took.

Temporarily hiding the profile progress dialog resolves the issue.
2019-12-27 22:29:18 -06:00
sawinglogz
ba44887853 Bump the PRS1 loader version to force rebuilds of PRS1 data.
This was bumped once already after the previous release version, but
bumping it again now will make sure that all beta testers are working
from data based on the current state of the PRS1 loader.
2019-12-27 22:10:02 -06:00
sawinglogz
b90571e940 Change the name of the PRS1_0E channel so that its new color takes effect by default.
Originally it wasn't being drawn as a span, so black was fine. That doesn't work so well now.
2019-12-27 22:08:59 -06:00
sawinglogz
e74bfbf2fd Change the channel IDs for pressure/IPAP/EPAP-Set events so that the previous fix always works.
Settings are written as soon as a day is viewed, so anybody who viewed
their PRS1 data prior to the previous commit would have settings with the
channels expressly disabled. Changing the channel ID forces them to be
treated as new, and thus default to on.
2019-12-27 22:06:31 -06:00
sawinglogz
d02e1dd235 When loading settings, leave unspecified defaults alone.
This prevents new charts (such as CPAP_PressureSet, etc.) from being
disabled by virtue of their being absent from existing settings.
2019-12-26 16:04:54 -06:00
Guy Scharf
7c15e9bd9c Add PressureSet, EPAPSet, and IPAPSet lines to Statistics page 2019-12-24 23:12:49 -07:00
Phil Olynyk
031989e300 Final re-arrangement of resmed import code 2019-12-23 21:44:10 -05:00
Guy Scharf
66575d17d4 Documentation for 1.1.0-beta-1 2019-12-18 23:34:53 -07:00
sawinglogz
14aad44f21 Add support for newly observed PRS1 EZ-Start in Auto-CPAP mode. 2019-12-07 15:10:48 -05:00
sawinglogz
a495defdce Add support for P-Flex and add 501X120 to tested list. 2019-12-03 19:04:09 -05:00
sawinglogz
e380b408fd Remove warnings about PRS1 oximetry being untested.
Also fine-tune various warnings for weird data, such as truncated
chunks and multiple sessions in a waveform file.
2019-12-02 17:30:28 -05:00
sawinglogz
8740ddf923 Add pressure pulse event observed on F5V1. 2019-12-01 18:21:18 -05:00
sawinglogz
7d355f3699 Confirmed F5V1 slice 8 has a timestamp. 2019-12-01 18:16:57 -05:00
sawinglogz
23007c9223 Add observed disconnected alarm setting to F5V1. 2019-12-01 18:01:32 -05:00
sawinglogz
13c7ab8629 Gracefully handle PRS1 summary chunks with zero length. 2019-12-01 17:30:39 -05:00
sawinglogz
c0e3c22e88 Move PRS1 waveform session ID check out of parser and into import.
It turns out that some F5V1 machines record both decimal and hex
filenames for some reason.
2019-12-01 16:44:24 -05:00
Guy Scharf
29a782731f Add missing translation call for a tooltip 2019-11-21 16:39:36 -07:00
sawinglogz
4321c3685a Add 951P to PRS1 tested list.
Also add support for parsing and proceeding past a previously
unseen F5V0 event, though for now it's just getting swallowed
since its meaning isn't entirely clear.
2019-11-20 12:33:45 -05:00
sawinglogz
6b413d0bb6 Fix PRS1 chunk YAML to include labels for internal F3V3 events added in 3c214db1.
Also remove obsolete comments and events.
2019-11-19 20:08:10 -05:00
sawinglogz
46c9d4f0c8 Chase down PRS1 unordered time warnings and add an explanatory TODO comment.
Also fix some whitespace.

No functional changes.
2019-11-19 16:00:08 -05:00
sawinglogz
60ec8711dc Report PRS1 BND regions based on mask-off slices rather than gaps in waveform data.
This adds BND flagging to machines without waveform data, such as F3V3 (1160P)
and bricks (250P, 200X), as well as sessions for which waveform data was
unavailable. It also catches BNDs at the end of a session, which were
previously missed.
2019-11-19 15:05:08 -05:00
sawinglogz
36a85111fd Add end data points to PRS1 interval events.
By duplicating the last reported event at its originally reported
event (clamped to the slice end time for F3V3), charts will now
correctly show the value during that last interval.

Also fix some slice sanity checks so they don't yell when F3V3
skips an event chunk.
2019-11-19 14:18:13 -05:00
sawinglogz
89a707a664 Create separate event lists per slice for remaining PRS1 machines.
This now correctly shows gaps in therapy and statistics when the
mask is off. It also corrects the initial statistics for some sessions
to 1 second later, when the initial mask-on slice begins 1 second
after the session starts.

Weird zero-length PB and LL events are now dropped on import, since
they wouldn't get drawn anyway and seem to be peculiar artifacts.
2019-11-19 12:29:45 -05:00
Phil Olynyk
eeed7c29bc Split resmedEDFinfo class into new files 2019-11-17 16:41:47 -05:00
sawinglogz
d9212a19fa Split PRS1 interval event determination into IsIntervalEvent.
Also fix F3V3 CA/OA/HY timestamps, which weren't shifted left.
2019-11-16 20:07:52 -05:00
sawinglogz
903fae6546 Split interval handling out of switch statement in PRS1Import::ImportEventChunk.
This will allow special treatment of interval events in multiple places within
the function.
2019-11-14 19:24:45 -05:00
sawinglogz
06adbc1e72 Mark any PRS1 sessions with empty slices as summary and skip event or waveform data.
If there are no mask-on slices of nonzero duration, then there's not any
meaningful event or waveform data for the session. There is occasionally some
fragmentary data, but it's always less than 1 second.

When such fragmentary waveform data is present, it only contains 1-3 nonzero
samples, corresponding to 0.2s - 0.6s of data, which suggests that the
mask-on slice was really that long rather than precisely 0.  As a result,
it appears that the timestamps of the mask-on/mask-off slices are just the
current value of the machine's internal clock, which only has 1-second
resolution.

But rather than embark on herculean efforts to derive a sub-second slice
duration from (only occasionally present) event or waveform data, we just
treat the session as having no detailed data.
2019-11-13 20:44:35 -05:00
sawinglogz
959cc3ef92 Add 1030X150 to list of tested PRS1 machines.
The only change in data observed so far is a wider range of rise time.
2019-11-13 11:39:02 -05:00
sawinglogz
1934c2c44e Use PRS1 summary start & end as session start & end.
Because summaries used to be parsed incorrectly, there was a bunch of ugly
logic that was designed to infer the session start & end times from other data.

Now that the summary parsers work, that can all go away. The only change to
imported data is that sessions ending with the mask off are now longer, to
reflect that extra time before the machine was turned off.
2019-11-13 11:25:59 -05:00
sawinglogz
cf2d2631d3 Create separate event lists per slice on F3V3 (1160P).
This now correctly shows gaps in therapy and statistics when the
mask is off. It currently only works for F3V3, since it has a
separate event chunk per slice. Other machines, which have only
a single large event chunk, will need to track the slices as
they import events.

This also highlights the issue with the last statistics in a
slice: only one data point is imported indicating the start of
a measured value, and so it appears that the data terminates then
instead of at the end of the slice (seconds to minutes later).
2019-11-13 09:27:47 -05:00
sawinglogz
3c214db13d Fix PRS1 F3V3 parser to use ending timestamps like all the other parsers.
This fixes a regression introduced by fda9fcd1, which fixed import for
all the other machines but broke F3V3.

Also move the generation of HY/CA/OA events out of the parser and into
the importer.
2019-11-13 09:15:04 -05:00
Phil Olynyk
433c60f195 Add tr(..) call to updateMessage 2019-11-11 21:10:43 -05:00
sawinglogz
19facdba8f Filter out zero-length and equipment-off PRS1 slices when importing a session.
Also clean up some tests for failed channel/event creation since they can never fail.
2019-11-09 15:09:02 -05:00
sawinglogz
2a2b36cfc7 Refactor PRS1Import::ImportSlice out from ImportSummary and ImportCompliance. 2019-11-07 17:35:09 -05:00
sawinglogz
ff630b07a6 Split PRS1Import::ImportEvent from ImportEventChunk.
This will let us create "duplicate" statistical events at the end of
a session (and eventually slice) to reflect the end time of each
measurement channel.
2019-11-07 14:19:58 -05:00
sawinglogz
db1df4eeef Add missing PRS1UnknownDurationEvent entries to F0 supported events.
Also add a debug message when a session is skipped due to length or age
(due to preferences).
2019-10-30 18:38:13 -04:00
sawinglogz
fda9fcd116 Shift PRS1 statistics left 2 minutes on import.
PRS1 statistics are reported at the end of a 2-minute interval,
but OSCAR assumes the timestamp for the statistics is their
starting timestamp.

This resolves the issue where statistics wouldn't appear for the
first two minutes of a session, and then would consistently be
2 minutes delayed.

There are still some edge cases to deal with, but the general
case is much improved.
2019-10-29 16:39:48 -04:00
sawinglogz
de73d3756c Import and graph unknown PRS1_0E spans.
Also clean up unused PRS1 channels and fix a regression from
9a25647c that broke unintentional leak calculation for CPAP/APAP.

Also add PRS1PressureAverageEvent to F0V4 list of supported events.
2019-10-29 14:06:57 -04:00
sawinglogz
9a25647c25 Add initial support for PRS1 settings channel (as distinct from statistics).
Right now this results in slightly confusing graphs, since sometimes
the IPAP/EPAP data for a machine is primarily reported by its settings
events, and for other machines by its statistics events. Also, the
"average" pressure on F0 looks like it might be effectivley EPAP in
single-pressure mode rather than the true average in bi-level mode.

Once we decide on the best presentation, we can either update the importer
or the display to show the most helpful channels for a given session.
2019-10-29 11:14:57 -04:00
sawinglogz
9771c75eec Merge branch 'master' into prs1-older-cleanup 2019-10-25 21:39:39 -04:00
sawinglogz
d2764eb276 Add support for PRS1 sessions with waveform data split between files.
Occasionally waveforms in a DreamStation session can be split into
multiple files. This behavior resulted in a report of missing waveform
data, and upon investigation was found 15 times out of 10,000 sample
sessions.

It looks like this happens when the machine begins writing the waveform
file before realizing that it will hit its 500-file-per-directory limit
for the remaining session files, at which point it appears to write
the rest of the waveform data along with the summary and event files
in the next directory.

The previous commit added better testing support and warning messages
for when this is encountered. This commit fixes the issue, and so
the warning is no longer necessary.
2019-10-25 21:36:49 -04:00
sawinglogz
3e42703399 Update PRS1 tests to allow for session chunks to be split between files.
Also warn when waveform files are being skipped on import due to this
kind of splitting.

The chunks YAML now emits all unique chunks found in files with the
same session ID.

Note that a single file can contain multiple chunks covering multiple
sessions. These will all be saved in the YAML file corresponding to the
original file's name, rather than the session ID encoded in any chunk.

This slight discrepancy is intentional, since the chunk YAML is meant
to test the parsers, to verify that they correctly decode a specific
input file. When importing data into a session, we use the actual
session ID specified by each chunk. Thus the session YAML files will
be derived from the proper chunks, regardless of their original
containing file. (Well, except for waveforms, but they don't appear
to have more than one session ID per file.)
2019-10-25 18:02:02 -04:00
sawinglogz
3267078608 Add support for multiple event chunks in a session, fixing events in 1061T and 1160P.
F3V3 events are formatted as waveforms (rather than a series of timestamped
events), with one chunk per mask-on slice. The previous assumption of only
a single event chunk per session meant that all events after the first slice
were getting dropped.

BiPAP AVAPS 30 (System One 60 Series) now works much better, although the data
doesn't yet show any gaps where the mask is off. Fixing that requires changes
throughout the code and not just in the PRS1 loader.

Also, LL calculation seems wrong. Perhaps the automatic calculation of
unintentional leak from total leak doesn't work for AVAPS, throwing off
automatic LL calculation? (F3V3 reports neither unintentional leakage nor
large leak events.)
2019-10-24 16:25:36 -04:00
sawinglogz
e356b7816b Don't treat a 0-length compliance file as a failure in parsing.
This fixes the start/end times of such compliance sessions, but their
total_time is broken due to the presence of a 0-length slice.

That will require a more extensive fix of the slice system throughout
the program.
2019-10-24 12:19:13 -04:00
sawinglogz
8297760fa8 Update PRS1 ParseComplianceF0V23 to use the same event loop structure as ParseSummaryF0V23.
No change in functionality.
2019-10-24 11:44:47 -04:00
sawinglogz
d6e4e42f2a Clean up PRS1Import::ParseEvents to remove dead code.
Also reinstate some warnings now that parsers are all working.

No change in functionality.
2019-10-24 11:07:47 -04:00
sawinglogz
2df3325a52 Merge PRS1 F0, F3 and F5 event importers into ImportEvents since they're now identical.
No change in functionality.
2019-10-23 21:10:56 -04:00
sawinglogz
c50d037a54 Reconcile PRS1 F0, F3, F5 importers to remove their remaining differences.
F3 TB gain changes to 0.1 in the imported data, but this has no effect
on how OSCAR handles it.

No other change in functionality.
2019-10-23 16:26:25 -04:00
sawinglogz
3c6996f19b Add unintentional leak calculation to F3 importer, where it is never needed.
This resolves a regression in 4c55f9a4 that broke F3 imports, but has
no other effect.
2019-10-22 14:48:34 -04:00
sawinglogz
2c7ae6fc99 Move default F0 single-channel handlers into the default case.
Also update the F5 importer to remove some redundancy and make it closer to F0.

No change in functionality.
2019-10-22 13:26:41 -04:00
sawinglogz
8cbdb49e68 Migrate PRS1 F0 importer to PRS1Import::AddEvent.
The only change in functionality is that F0 sessions won't
have empty channels for PP when there are no PP events.
2019-10-22 12:30:42 -04:00
sawinglogz
4c55f9a484 Move default F5 single-channel handlers into the default case.
Also update the leak calculation logic to depend on the set of reported
events rather than hard-coding it based on machine family and version.

No change in functionality.
2019-10-22 10:40:14 -04:00
sawinglogz
b80c5ef114 Migrate PRS1 F5 importer to PRS1Import::AddEvent.
The only change in functionality is that F5V2 sessions won't have
empty channels for CA, VS, and LL, since they're not yet supported
by the parser.
2019-10-22 10:24:40 -04:00
sawinglogz
79b2af140c Merge PRS1 F3 event importers into ImportEventsF3V36 since they're now identical.
No change in functionality.
2019-10-20 21:58:36 -04:00
sawinglogz
fdecab709d Clean up PRS1 F3 importers to remove their remaining differences.
No change in functionality.
2019-10-20 21:50:32 -04:00
sawinglogz
b0e2db4446 Move default F3V3 and F3V6 single-channel and non-imported handlers into the default case.
Also remove the explicit pressure GAIN set in the importers, since now the parser's gain
is passed through automatically.

No change in functionality.
2019-10-20 21:41:36 -04:00
sawinglogz
26c88cd713 Coalesce switch cases in F3V3 and F3V6 event importers.
No change in functionality.
2019-10-20 21:22:49 -04:00
sawinglogz
ed608e3b17 Convert F3V3 and F3V6 parsers to use PRS1Import::AddEvent entirely.
This is again confirmed not to change import results, but is still
very duplicative.
2019-10-20 21:09:34 -04:00
sawinglogz
ada3bbe891 Add infrastructure to allow import of parsed PRS1 events to be unified.
This commit adds a mapping from PRS1 events to the OSCAR channels that
should receive the data, along with the necessary supporting code to
allow for generic handling of PRS1 events as a result.

The F3V6 importer has minimal changes to partially use the new
plumbing, enough to make sure that it works and causes no change in
the imported data.
2019-10-20 17:46:18 -04:00
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