SleepyHead Qt v0.8 alpha

General Discussion on any topic relating to CPAP and/or Sleep Apnea.
User avatar
Otter
Posts: 1063
Joined: Sat Mar 19, 2011 5:02 pm

Re: SleepyHead Qt v0.8 alpha

Post by Otter » Sat Sep 03, 2011 5:41 pm

jedimark wrote:Memory usage has gone down quite a bit. (It's running for me on ~20MB as opposed to the 70MB it was before.. It will use more memory right after first import, or if the caching option is turned on.)
Wow! That's impressively lean. But be careful. The big RAM manufacturers may decide you need to be eliminated.

Sounds like you've been making great progress. I'm looking forward to testing the next alpha.

It's too bad about QT, though. Do they appear to be working on the problem, or have things broken down over there?

_________________
Mask: Quattro™ FX Full Face CPAP Mask with Headgear
Humidifier: S9™ Series H5i™ Heated Humidifier with Climate Control
Additional Comments: Software: SleepyHead 0.9 beta

User avatar
Otter
Posts: 1063
Joined: Sat Mar 19, 2011 5:02 pm

Re: SleepyHead Qt v0.8 alpha

Post by Otter » Sat Sep 03, 2011 6:45 pm

I think Pugsy may have found a bug. And I've found an inconsistency in the way the s9 reports events. I didn't notice this until she asked about it, but SH is showing events under 10 seconds in the left pane for both of us. According to both Philips and Resmed, sub-decasecond events don't get scored, hence something isn't right. As she's got a PR1, and I'm using an S9, and I've never heard of this problem before, it seemed unlikely to be a firmware bug. At least in the case of the S9, though, it's an inconsistency in the EVE files. Not sure what's going on with SH and Pugsy's PR1.

My short events are all hypopneas, so it's a little hard to get a handle on what's really going on. I looked at the EVEs in a hex editor, and SH is reporting the number from the file. But as near as I can tell, my S9 subtracts 10 seconds from all hypopneas. Look at the trace of a 2 second hypopnea, and it's about 12 seconds. A 16 second hypopnea is really about 26 seconds. Another way of looking at it would be that for apneas, the S9 records the duration of the entire event, and for hypopneas, it records how far the event goes over the 10 second minimum.

I still haven't managed to get ResScan to install, so I don't know what it would make of these events. It's possible that whoever is responsible for ResMed's viewer compensated for the inconsistent way the firmware reports event duration. It looks like simply adding 10 seconds to each hypopnea would fix the problem.

All my apneas seem to be reported correctly both in the EVEs and in SH.

_________________
Mask: Quattro™ FX Full Face CPAP Mask with Headgear
Humidifier: S9™ Series H5i™ Heated Humidifier with Climate Control
Additional Comments: Software: SleepyHead 0.9 beta

User avatar
jedimark
Posts: 1300
Joined: Fri Feb 18, 2011 12:45 am
Location: Bundaberg, Australia
Contact:

Re: SleepyHead Qt v0.8 alpha

Post by jedimark » Sat Sep 03, 2011 8:00 pm

Otter wrote:I think Pugsy may have found a bug. And I've found an inconsistency in the way the s9 reports events. I didn't notice this until she asked about it, but SH is showing events under 10 seconds in the left pane for both of us. According to both Philips and Resmed, sub-decasecond events don't get scored, hence something isn't right. As she's got a PR1, and I'm using an S9, and I've never heard of this problem before, it seemed unlikely to be a firmware bug. At least in the case of the S9, though, it's an inconsistency in the EVE files. Not sure what's going on with SH and Pugsy's PR1.

My short events are all hypopneas, so it's a little hard to get a handle on what's really going on. I looked at the EVEs in a hex editor, and SH is reporting the number from the file. But as near as I can tell, my S9 subtracts 10 seconds from all hypopneas. Look at the trace of a 2 second hypopnea, and it's about 12 seconds. A 16 second hypopnea is really about 26 seconds. Another way of looking at it would be that for apneas, the S9 records the duration of the entire event, and for hypopneas, it records how far the event goes over the 10 second minimum.

I still haven't managed to get ResScan to install, so I don't know what it would make of these events. It's possible that whoever is responsible for ResMed's viewer compensated for the inconsistent way the firmware reports event duration. It looks like simply adding 10 seconds to each hypopnea would fix the problem.

All my apneas seem to be reported correctly both in the EVEs and in SH.
I'm not sure if the PRS1 really has event duration.. The data field is used for alignment purposes.. But it could also indicate length, so I left it in in case someone figures it out.

As for ResMed, that +10second theory sounds very plausible. I guess we will have to try it and see. I'll make this change before I upload the new build today.. We can tweak it later next round if it's not right. Comparing to resscan is the best way to verify..

_________________
Machine: ResMed AirSense™ 10 AutoSet™ CPAP Machine with HumidAir™ Heated Humidifier
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Humidifier: S9™ Series H5i™ Heated Humidifier with Climate Control
Additional Comments: CMS50D+/F Oximeter, S9 VPAP Auto/Adapt, PRS1 Auto, Intellipap Auto, SleepyHead :)
Author of the free, cross platform, open-source sleep tracking software SleepyHead.
Download http://sleepyhead.jedimark.net
Source Code http://gitlab.com/sleepyhead/sleepyhead-code

User avatar
milw
Posts: 59
Joined: Thu Jul 21, 2011 7:21 pm
Location: Madison, Wisconsin

Re: SleepyHead Qt v0.8 alpha

Post by milw » Sat Sep 03, 2011 8:13 pm

jedimark wrote: Do any mac users have the Qt SDK installed (and sleepyhead source code) and a CMS50E oximeter? Please let me know if you do, and I'll turn on some heavy duty serial debugging information in SleepyHead to help get this sorted..
I'm all set up to do this, I just did a git pull and built it (9:13pm CDT, not sure what that is in Oz...)

_________________
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Additional Comments: Onkor, SleepyHead, CMS 50EW oximeter
Official hosehead since July 22, 2011

User avatar
Pugsy
Posts: 64938
Joined: Thu May 14, 2009 9:31 am
Location: Missouri, USA

Re: SleepyHead Qt v0.8 alpha

Post by Pugsy » Sat Sep 03, 2011 8:14 pm

jedimark wrote: I'm not sure if the PRS1 really has event duration.. The data field is used for alignment purposes.. But it could also indicate length, so I left it in in case someone figures it out.
We don't have event duration in Pro. Never have had it. The one thing I find missing in this software that I wish we had.

I have been going through some of the events short and long..The number in parenthesis next to the time scored for the event does seem to correlate with the time length of the event. It's hard sometimes to see when the event started and ended. It seems like the event flag is mostly in the middle.

I do see some (8) numbers next to timeline in OA an H categories. When I look at these events they sure appear to be close to 8 seconds. It is hard to see exactly. Maybe they are 10 sec... The longest I have seen so far is (53) and it sure appeared to be really close to a minute so if the numbers in parenthesis aren't exact seconds time duration...they are pretty darn close.

_________________
Machine: AirCurve™ 10 VAuto BiLevel Machine with HumidAir™ Heated Humidifier
Additional Comments: Mask Bleep Eclipse https://bleepsleep.com/the-eclipse/
I may have to RISE but I refuse to SHINE.

User avatar
milw
Posts: 59
Joined: Thu Jul 21, 2011 7:21 pm
Location: Madison, Wisconsin

Re: SleepyHead Qt v0.8 alpha

Post by milw » Sat Sep 03, 2011 8:21 pm

victormiller wrote: 2) There's a consistent bug with the timeline of the data. For example in the graph below, I set the time on CMS50E before going to sleep (it was a little after midnight), and it came up correctly on the SPO2 printout. Yet, on SH it shows that it starts at 8AM (which is about the time that I loaded it into SH -- hmm).
I did some work on the SpO2 importer, but I don't know where in the file the start time is recorded, so I left the importer default of using the import time... I'll have to take another look at the file structure, there's another source code project 'SpO2 Converter' that can import the SpO2 and export a csv, and that has a pretty good outline of the file format.

_________________
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Additional Comments: Onkor, SleepyHead, CMS 50EW oximeter
Official hosehead since July 22, 2011

User avatar
jedimark
Posts: 1300
Joined: Fri Feb 18, 2011 12:45 am
Location: Bundaberg, Australia
Contact:

Re: SleepyHead Qt v0.8 alpha

Post by jedimark » Sat Sep 03, 2011 8:30 pm

milw wrote:
jedimark wrote: Do any mac users have the Qt SDK installed (and sleepyhead source code) and a CMS50E oximeter? Please let me know if you do, and I'll turn on some heavy duty serial debugging information in SleepyHead to help get this sorted..
I'm all set up to do this, I just did a git pull and built it (9:13pm CDT, not sure what that is in Oz...)
Sweet.. I've got to enable a bit more serial debugging stuff, but for now, could you paste the contents of SleepyHead's debug window's serial port scan parts (with the oximeter "connected" and turned on.)

_________________
Machine: ResMed AirSense™ 10 AutoSet™ CPAP Machine with HumidAir™ Heated Humidifier
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Humidifier: S9™ Series H5i™ Heated Humidifier with Climate Control
Additional Comments: CMS50D+/F Oximeter, S9 VPAP Auto/Adapt, PRS1 Auto, Intellipap Auto, SleepyHead :)
Author of the free, cross platform, open-source sleep tracking software SleepyHead.
Download http://sleepyhead.jedimark.net
Source Code http://gitlab.com/sleepyhead/sleepyhead-code

User avatar
milw
Posts: 59
Joined: Thu Jul 21, 2011 7:21 pm
Location: Madison, Wisconsin

Re: SleepyHead Qt v0.8 alpha

Post by milw » Sat Sep 03, 2011 8:33 pm

jedimark wrote: Sweet.. I've got to enable a bit more serial debugging stuff, but for now, could you paste the contents of SleepyHead's debug window's serial port scan parts (with the oximeter "connected" and turned on.)
OK no problem. i found the offsets in SpO2 Converter:
qint32 year = readInt(input, in, 0x0420);
qint32 month = readInt(input, in, 0x0424);
qint32 day = readInt(input, in, 0x0428);
qint32 hour = readInt(input, in, 0x042C);
qint32 minute = readInt(input, in, 0x0430);
qint32 second = readInt(input, in, 0x0434);
qint32 duration = readInt(input, in, 0x0438);
Year, month and day fields are all empty as is seconds, but hour and minute match the start time. I think duration matches the length of recording in seconds but have to verify that.

_________________
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Additional Comments: Onkor, SleepyHead, CMS 50EW oximeter
Official hosehead since July 22, 2011

User avatar
milw
Posts: 59
Joined: Thu Jul 21, 2011 7:21 pm
Location: Madison, Wisconsin

Re: SleepyHead Qt v0.8 alpha

Post by milw » Sat Sep 03, 2011 8:43 pm

after hitting 'Start':
00039: trying to open file "/dev/cu.SLAB_USBtoUART"
00039: file opened succesfully
00039: check device is turned on
00039: listening for data on "/dev/cu.SLAB_USBtoUART"

(no data came through however)

hit Stop:

00107: Warning: Session::set_last() d<=s_first

Hit Import from device:
00114: trying to open file "/dev/cu.SLAB_USBtoUART"
00114: file opened succesfully
00115: "0: Bytes 0: "
00116: "0: Bytes 0: "
00117: "0: Bytes 0: "
00118: "0: Bytes 0: "
00119: "0: Bytes 0: "
00119: Retrying..
00120: "0: Bytes 0: "
00121: "0: Bytes 0: "
00122: "0: Bytes 0: "
00123: "0: Bytes 0: "
00124: "0: Bytes 0: "
00124: Retrying..
00125: "0: Bytes 0: "
00126: "0: Bytes 0: "
00127: "0: Bytes 0: "
00128: "0: Bytes 0: "
00129: "0: Bytes 0: "
00129: Retrying..
00130: "0: Bytes 0: "
00131: "0: Bytes 0: "
00132: "0: Bytes 0: "
00133: "0: Bytes 0: "
00134: "0: Bytes 0: "
00134: Retrying..
00135: "0: Bytes 0: "
00136: "0: Bytes 0: "
00137: "0: Bytes 0: "
00138: "0: Bytes 0: "
00139: "0: Bytes 0: "
00139: Retrying..

'Please wait' dialog disappeared.

Hit Refresh:

00209: port name: "/dev/cu.SLAB_USBtoUART"
00209: phys name: "IOService:/AppleACPIPlatformExpert/PCI0/AppleACPIPCI/UHC4@1A/AppleUSBUHCI/CP2102 USB to UART Bridge Controller@1a200000/CP2102 USB to UART Bridge Controller@0/com_silabs_driver_CP210xVCPDriver/IORS232SerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.SerialPort"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientModemStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.SpO2-DevB"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientSerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.Bluetooth-Modem"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientModemStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.eb500-A7SerialPort-1"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientSerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.Bluetooth-PDA-Sync"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientSerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: Graph Draw 18 ms

_________________
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Additional Comments: Onkor, SleepyHead, CMS 50EW oximeter
Official hosehead since July 22, 2011

User avatar
milw
Posts: 59
Joined: Thu Jul 21, 2011 7:21 pm
Location: Madison, Wisconsin

Re: SleepyHead Qt v0.8 alpha

Post by milw » Sat Sep 03, 2011 8:51 pm

BTW I'm getting a crash on quit... here's the Apple debug window content:

Code: Select all

Process:         SleepyHeadQT [11177]
Path:            /Users/USER/*/SleepyHeadQT.app/Contents/MacOS/SleepyHeadQT
Identifier:      com.yourcompany.SleepyHeadQT
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  launchd [758]

Date/Time:       2011-09-03 21:47:53.260 -0500
OS Version:      Mac OS X 10.7 (11A511)
Report Version:  9

Interval Since Last Report:          331129 sec
Crashes Since Last Report:           2
Per-App Interval Since Last Report:  156508 sec
Per-App Crashes Since Last Report:   2
Anonymous UUID:                      412852A9-B642-4C2C-ACE1-1C34271788AF

Crashed Thread:  4

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000049041c7dbc

VM Regions Near 0x49041c7dbc:
    CG backing stores      00000001c789a000-00000001c7b9a000 [ 3072K] rw-/rw- SM=SHM  
--> 
    JS JIT generated code  00004e81f8c00000-00004e8200c00000 [128.0M] rwx/rwx SM=PRV  

Application Specific Information:
objc[11177]: garbage collection is OFF

Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff96d6e67a mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff96d6dd71 mach_msg + 73
2   libsystem_kernel.dylib        	0x00007fff96d680af semaphore_destroy + 88
3   QtCore                        	0x00000001032cbfb5 QMutexPrivate::~QMutexPrivate() + 21
4   QtCore                        	0x00000001032c75a9 QMutex::~QMutex() + 25
5   QtCore                        	0x00000001032c9cf1 QThreadPrivate::~QThreadPrivate() + 65
6   QtCore                        	0x00000001033fd1eb QObject::~QObject() + 1707
7   com.yourcompany.SleepyHeadQT  	0x0000000100107704 gThread::~gThread() + 86 (gGraphView.h:161)
8   com.yourcompany.SleepyHeadQT  	0x0000000100102484 gGraph::~gGraph() + 140 (gGraphView.cpp:348)
9   com.yourcompany.SleepyHeadQT  	0x0000000100100723 gGraphView::~gGraphView() + 167 (gGraphView.cpp:956)
10  QtCore                        	0x00000001033f3b5f QObjectPrivate::deleteChildren() + 95
11  QtGui                         	0x00000001026b18e9 QWidget::~QWidget() + 713
12  QtCore                        	0x00000001033f3b5f QObjectPrivate::deleteChildren() + 95
13  QtGui                         	0x00000001026b1de9 QWidget::~QWidget() + 713
14  QtGui                         	0x0000000102aa427c QSplitter::~QSplitter() + 220
15  QtCore                        	0x00000001033f3b5f QObjectPrivate::deleteChildren() + 95
16  QtGui                         	0x00000001026b1de9 QWidget::~QWidget() + 713
17  com.yourcompany.SleepyHeadQT  	0x000000010008336f Daily::~Daily() + 659 (daily.cpp:575)
18  com.yourcompany.SleepyHeadQT  	0x00000001000adb60 MainWindow::~MainWindow() + 148 (mainwindow.cpp:139)
19  com.yourcompany.SleepyHeadQT  	0x0000000100004417 main + 615 (main.cpp:60)
20  com.yourcompany.SleepyHeadQT  	0x0000000100004124 start + 52

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib        	0x00007fff96d707e6 kevent + 10
1   libdispatch.dylib             	0x00007fff8e98f60e _dispatch_mgr_invoke + 923
2   libdispatch.dylib             	0x00007fff8e98e19e _dispatch_mgr_thread + 54

Thread 2:
0   libsystem_kernel.dylib        	0x00007fff96d6fbca __psynch_cvwait + 10
1   libsystem_c.dylib             	0x00007fff8bd33274 _pthread_cond_wait + 840
2   QtWebKit                      	0x000000010104b4f5 WTF::TCMalloc_PageHeap::scavengerThread() + 117
3   QtWebKit                      	0x000000010104b789 WTF::TCMalloc_PageHeap::runScavengerThread(void*) + 9
4   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
5   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 3:
0   libsystem_kernel.dylib        	0x00007fff96d6fdf2 __select + 10
1   QtCore                        	0x0000000103410ffe qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) + 142
2   QtCore                        	0x00000001034153d3 QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) + 435
3   QtCore                        	0x00000001034158a2 QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 178
4   QtCore                        	0x00000001033df664 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68
5   QtCore                        	0x00000001033dfa14 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 324
6   QtCore                        	0x00000001032ca198 QThread::exec() + 312
7   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
8   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
9   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 4 Crashed:
0   QtGui                         	0x00000001028c4208 QFragmentMapData<QTextBlockData>::next(unsigned int) const + 120
1   QtGui                         	0x00000001028d972e QTextDocumentPrivate::insertBlock(QChar const&, int, int, int, QTextUndoCommand::Operation) + 414
2   QtGui                         	0x00000001028d9af5 QTextDocumentPrivate::insertBlock(int, int, int, QTextUndoCommand::Operation) + 37
3   QtGui                         	0x00000001028fff46 QTextCursorPrivate::insertBlock(QTextBlockFormat const&, QTextCharFormat const&) + 86
4   QtGui                         	0x0000000102904dc1 QTextCursor::insertBlock(QTextBlockFormat const&, QTextCharFormat const&) + 193
5   QtGui                         	0x0000000102891681 QTextControlPrivate::append(QString const&, Qt::TextFormat) + 161
6   QtGui                         	0x0000000102af07a3 QPlainTextEditPrivate::append(QString const&, Qt::TextFormat) + 643
7   com.yourcompany.SleepyHeadQT  	0x00000001000b5a22 MainWindow::Log(QString) + 846 (mainwindow.cpp:34)
8   com.yourcompany.SleepyHeadQT  	0x0000000100004769 MyOutputHandler(QtMsgType, char const*) + 345 (main.cpp:28)
9   QtCore                        	0x00000001032c1bc1 qt_message_output(QtMsgType, char const*) + 33
10  QtCore                        	0x00000001032c1df7 _ZL10qt_message9QtMsgTypePKcP13__va_list_tag + 183
11  QtCore                        	0x00000001032c217a qWarning(char const*, ...) + 170
12  QtCore                        	0x00000001032cbf96 QMutexPrivate::wait(int) + 150
13  QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
14  com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
15  QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
16  libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
17  libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 5:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 6:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 7:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 8:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 9:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 10:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 11:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 12:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 13:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 14:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 15:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 16:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 17:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 18:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 19:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 20:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 21:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 22:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 23:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 24:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 25:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 26:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 27:
0   libsystem_kernel.dylib        	0x00007fff96d6e6b6 semaphore_wait_trap + 10
1   QtCore                        	0x00000001032cbf78 QMutexPrivate::wait(int) + 120
2   QtCore                        	0x00000001032c748c QMutex::lockInternal() + 252
3   com.yourcompany.SleepyHeadQT  	0x00000001000fae5f gThread::run() + 45 (gGraphView.cpp:303)
4   QtCore                        	0x00000001032cd5aa QThreadPrivate::start(void*) + 298
5   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
6   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 28:: com.apple.CFSocket.private
0   libsystem_kernel.dylib        	0x00007fff96d6fdf2 __select + 10
1   com.apple.CoreFoundation      	0x00007fff8f04366b __CFSocketManager + 1355
2   libsystem_c.dylib             	0x00007fff8bd2f8bf _pthread_start + 335
3   libsystem_c.dylib             	0x00007fff8bd32b75 thread_start + 13

Thread 29:
0   libsystem_kernel.dylib        	0x00007fff96d70192 __workq_kernreturn + 10
1   libsystem_c.dylib             	0x00007fff8bd31594 _pthread_wqthread + 758
2   libsystem_c.dylib             	0x00007fff8bd32b85 start_wqthread + 13

Thread 30:
0   libsystem_kernel.dylib        	0x00007fff96d70192 __workq_kernreturn + 10
1   libsystem_c.dylib             	0x00007fff8bd31594 _pthread_wqthread + 758
2   libsystem_c.dylib             	0x00007fff8bd32b85 start_wqthread + 13

Thread 4 crashed with X86 Thread State (64-bit):
  rax: 0x00000008fffffff7  rbx: 0x00000001041c7e00  rcx: 0x00000000ffffffff  rdx: 0x0000000000000047
  rdi: 0x00000001041c7e00  rsi: 0x0000000000000000  rbp: 0x0000000107c60760  rsp: 0x0000000107c60760
   r8: 0x0000000000000000   r9: 0x0000000000000001  r10: 0x0000000000000c1d  r11: 0x0000000000000004
  r12: 0x0000000103c655d0  r13: 0x0000000000000c1f  r14: 0x0000000000000000  r15: 0x0000000103c656e8
  rip: 0x00000001028c4208  rfl: 0x0000000000010286  cr2: 0x00000049041c7dbc
Logical CPU: 1

...truncated

_________________
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Additional Comments: Onkor, SleepyHead, CMS 50EW oximeter
Official hosehead since July 22, 2011

User avatar
jedimark
Posts: 1300
Joined: Fri Feb 18, 2011 12:45 am
Location: Bundaberg, Australia
Contact:

Re: SleepyHead Qt v0.8 alpha

Post by jedimark » Sat Sep 03, 2011 9:10 pm

milw wrote:after hitting 'Start':
00039: trying to open file "/dev/cu.SLAB_USBtoUART"
00039: file opened succesfully
00039: check device is turned on
00039: listening for data on "/dev/cu.SLAB_USBtoUART"

(no data came through however)

hit Stop:

00107: Warning: Session::set_last() d<=s_first

Hit Import from device:
00114: trying to open file "/dev/cu.SLAB_USBtoUART"
00114: file opened succesfully
00115: "0: Bytes 0: "
00116: "0: Bytes 0: "
00117: "0: Bytes 0: "
00118: "0: Bytes 0: "
00119: "0: Bytes 0: "
00119: Retrying..
00120: "0: Bytes 0: "
00121: "0: Bytes 0: "
00122: "0: Bytes 0: "
00123: "0: Bytes 0: "
00124: "0: Bytes 0: "
00124: Retrying..
00125: "0: Bytes 0: "
00126: "0: Bytes 0: "
00127: "0: Bytes 0: "
00128: "0: Bytes 0: "
00129: "0: Bytes 0: "
00129: Retrying..
00130: "0: Bytes 0: "
00131: "0: Bytes 0: "
00132: "0: Bytes 0: "
00133: "0: Bytes 0: "
00134: "0: Bytes 0: "
00134: Retrying..
00135: "0: Bytes 0: "
00136: "0: Bytes 0: "
00137: "0: Bytes 0: "
00138: "0: Bytes 0: "
00139: "0: Bytes 0: "
00139: Retrying..

'Please wait' dialog disappeared.

Hit Refresh:

00209: port name: "/dev/cu.SLAB_USBtoUART"
00209: phys name: "IOService:/AppleACPIPlatformExpert/PCI0/AppleACPIPCI/UHC4@1A/AppleUSBUHCI/CP2102 USB to UART Bridge Controller@1a200000/CP2102 USB to UART Bridge Controller@0/com_silabs_driver_CP210xVCPDriver/IORS232SerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.SerialPort"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientModemStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.SpO2-DevB"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientSerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.Bluetooth-Modem"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientModemStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.eb500-A7SerialPort-1"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientSerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: port name: "/dev/cu.Bluetooth-PDA-Sync"
00209: phys name: "IOService:/IOResources/IOBluetoothSerialManager/IOBluetoothSerialClient/IOBluetoothSerialClientSerialStreamSync/IOSerialBSDClient"
00209: friendly name: ""
00209: enumerator name: ""
00209: Graph Draw 18 ms
What is SpO2-DevB? Does it show up in the list?

_________________
Machine: ResMed AirSense™ 10 AutoSet™ CPAP Machine with HumidAir™ Heated Humidifier
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Humidifier: S9™ Series H5i™ Heated Humidifier with Climate Control
Additional Comments: CMS50D+/F Oximeter, S9 VPAP Auto/Adapt, PRS1 Auto, Intellipap Auto, SleepyHead :)
Author of the free, cross platform, open-source sleep tracking software SleepyHead.
Download http://sleepyhead.jedimark.net
Source Code http://gitlab.com/sleepyhead/sleepyhead-code

User avatar
milw
Posts: 59
Joined: Thu Jul 21, 2011 7:21 pm
Location: Madison, Wisconsin

Re: SleepyHead Qt v0.8 alpha

Post by milw » Sat Sep 03, 2011 9:12 pm

Yes it shows up in the list and I tried to connect, actually mine is a CMS50EW and that is the Bluetooth port. Mac bluetooth won't allow me to browse the device either.
Sleepyhead debug:
00008: trying to open file "/dev/cu.SpO2-DevB"
00019: could not open file: Resource busy
00019: device failed to open: "The /dev/cu.SpO2-DevB file doesn't exists"

_________________
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Additional Comments: Onkor, SleepyHead, CMS 50EW oximeter
Last edited by milw on Sat Sep 03, 2011 9:24 pm, edited 1 time in total.
Official hosehead since July 22, 2011

User avatar
jedimark
Posts: 1300
Joined: Fri Feb 18, 2011 12:45 am
Location: Bundaberg, Australia
Contact:

Re: SleepyHead Qt v0.8 alpha

Post by jedimark » Sat Sep 03, 2011 9:19 pm

milw wrote:BTW I'm getting a crash on quit... here's the Apple debug window content:
Try turning the Threading option off in view menu and see if this persists..

For some weird reason multiple display threads are running slower than single thread version..

You appear to not be running the latest version, try another git pull. You may have caught one in the middle with breaky threading..

_________________
Machine: ResMed AirSense™ 10 AutoSet™ CPAP Machine with HumidAir™ Heated Humidifier
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Humidifier: S9™ Series H5i™ Heated Humidifier with Climate Control
Additional Comments: CMS50D+/F Oximeter, S9 VPAP Auto/Adapt, PRS1 Auto, Intellipap Auto, SleepyHead :)
Author of the free, cross platform, open-source sleep tracking software SleepyHead.
Download http://sleepyhead.jedimark.net
Source Code http://gitlab.com/sleepyhead/sleepyhead-code

User avatar
milw
Posts: 59
Joined: Thu Jul 21, 2011 7:21 pm
Location: Madison, Wisconsin

Re: SleepyHead Qt v0.8 alpha

Post by milw » Sat Sep 03, 2011 9:28 pm

jedimark wrote:
You appear to not be running the latest version, try another git pull. You may have caught one in the middle with breaky threading..
No Threading option under View menu, and git pull gave me this:

Code: Select all

Dadgars-MacBook:gitroot-sleepyhead-sleepyhead Scott$ git pull
Updating 7e14cb9..eb83b74
error: Your local changes to the following files would be overwritten by merge:
	SleepLib/loader_plugins/cms50_loader.cpp
Please, commit your changes or stash them before you can merge.
Aborting
I don't mind if my local file is overwritten, is there a way to force the pull?
(never mind, I pulled a new clone so will build and run!)

OK, new build from new clone (just 'SleepyHead.app' now, not 'SleepyHeadQT.app' so I had to fix a shortcut!). Same results from serial port debug output, but no crash on quit now (unchecked for Enable Multithreading under View menu)

and speaking of sleepyhead, my new Quattro FX is calling me! Will do a new pull in the am and check serial debug again!

_________________
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Additional Comments: Onkor, SleepyHead, CMS 50EW oximeter
Official hosehead since July 22, 2011

User avatar
jedimark
Posts: 1300
Joined: Fri Feb 18, 2011 12:45 am
Location: Bundaberg, Australia
Contact:

Re: SleepyHead Qt v0.8 alpha

Post by jedimark » Sat Sep 03, 2011 11:58 pm

By the way, anyone who's tried building with Qt's SDK, and got held up on the 'qwineventnotifier_p.h' file being missing.. This has been fixed in git.

I just included the file with the integrated qextserialport library that needed it.. Why I didn't think of doing that before is totally beyond me.. :-/

I've finally got my windows boxes Qt SDK up to date again.. Just packaging things together and testing now.. Should have a new build up in a bit..

_________________
Machine: ResMed AirSense™ 10 AutoSet™ CPAP Machine with HumidAir™ Heated Humidifier
Mask: Swift™ FX Nasal Pillow CPAP Mask with Headgear
Humidifier: S9™ Series H5i™ Heated Humidifier with Climate Control
Additional Comments: CMS50D+/F Oximeter, S9 VPAP Auto/Adapt, PRS1 Auto, Intellipap Auto, SleepyHead :)
Author of the free, cross platform, open-source sleep tracking software SleepyHead.
Download http://sleepyhead.jedimark.net
Source Code http://gitlab.com/sleepyhead/sleepyhead-code