Respironics File Formats
From onkor
For information on how these findings were made, see Decoding Techniques.
The 005 format
The overall structure of the 005 is a repeated series of blocks, where each block consists of 24 bytes of header, 1500 bytes of data payload of signed integers, followed by 2 bytes of footer.
The payload clearly measures something directly correlated with breathing, but what this precise metric is, I do not know for certain. However, my presumption is that this it is rate of airflow to (and from) the machine. But even if so, the calibration of the datapoints with actual airflow measurements is unknown.
The 24 bytes of header is not fully decoded yet. However, bytes 0-14 : Same as other 2 files bytes 15-16 : The normal(?) time length of each record. Byte 20 : Number of samples per second Byte 23 : 8 bit check-sum of bytes 0-22
Consecutive block headers show timestamps differing by exactly 300 seconds, therefore it is assumed that the device records data samples five times per 5 second.
The 2 byte footer is not yet decoded, but could likely be a check-sum.
The 001 format
The 001 file appears to contain initial settings and overall therapy info. It is of fixed size: 77 bytes.
- Byte 0 : Always seems to be a 2? (just listed to reference we're starting at byte 0)
- Bytes 1-2 : File Length
- Byte 6 : File type (i.e. 001)
- Bytes 7-10 : Sequence Number (matches filename)
- Bytes 11-14: Time-stamp (high byte first, low byte last, in seconds. add to 1/1/1970 00:00:00)
- Byte 15 : 8 bit check-sum. Low byte of total of adding bytes 0 through 14
- Byte 19 : Pressure x 10. This and byte 30 seem to change together to the same. Maybe different for Flex?
- Byte 19 : $A_{min}$ from clinical setup (possibly under a different setup? mine changes the same as pressure)
- Byte 20 : $A_{max}$ from clinical setup (possibly under a different setup? mine's always 00)
- Byte 22 : Ramp Time in minutes
- Byte 23 : Ramp Start Pressure
- Byte 24 : Bit options bit 7 ($80)=CFlex option 0=off 1=on
bit 3 ($08)=CFlex+ 0=CFlex 1=CFlex+
bit 0-1($03)=CFlex level
- Byte 25 : Humidifier Status ($8l)=on at level l ($0l)=off
- Byte 26 : Bit options bit 7 ($80)=System One Lock 0=off 1=on
bit 6 ($40)=System One Resistance 0=off 1=on
bit 5 ($08)=Tube size 0=22mm 1=15mm
bit 0-2($07)=System One Resistance level 0-5
- Byte 28 : bit options bit 6 ($40)=Auto on 0=off 1=on
bit 4 ($10)=Auto off 0=off 1=on
bit 3 ($08)=Mask Alert 0=off 1=on
bit 2 ($04)=Show AHI 0=off 1=on
- Byte 30 : Pressure x 10. This and byte 30 seem to change together to the same. Maybe different for Flex?
- Bytes 36-37: Time length of this record in seconds. high byte first, low byte last
- Bytes 38-41: Actual min or max achieved? (mine shows 00 00 00 00 always.)
- Byte 44 : (on mine) always 0 or 1
- Byte 49 : (on mine) always 0 or 22
- Byte 56 : (on mine) always 0 or 2
Any bytes not mentioned always seem to remain the same.
The 002 format
The 002 file appears to contain event data, such as changing pressures, leaks, and perhaps clinical events.
- Byte 0: 2 (again just for 0 to show I'm starting at Byte 0)
- Byte 1-2: File length
- Byte 6: File type (i.e. 002)
- Bytes 7-10: Sequence Number (matches filename)
- Bytes 11-14: Time-stamp
- byte 15: 8 bit check-sum. Low byte of total of adding bytes 0 through 14
After this, the file is a series of "events". The form of the events are: (DD=Duration, Pr=Pressure * 10, Le=Length of Event, LL=leak Limit/Level, VS= Vibratory Snore)
- 02 - 02DD00Pr - Change in Pressure
- 03 - 03DD00LoHi - BiPressure. Lo is low pressure * 10, Hi is high pressure * 10
- 04 - 04DD000e - Pressure Pulse (always ends in 0E(14). I ASSUME it's pulsing 14 c/h2o?)
- 05 - 05DD00Le - Respiratory Effort Related Arousal
- 06 - 06DD00Le - Obstructional Apnea
- 07 - 07DD00Le - Clear Airway Apnea
- 0a - 0aDD00Le - Hypnopnea
- ob - 0bDDxxxxxx - Unknown
- 0c - 0cDDLe - Flow Limited
- 0d - 0dDDXX - Vibratory Snore
- 0e - 0eDD00XXXXXX - Unknown
- 0f - 0fDD00Le00XX - CSR. Second 00 is PROBABLY VSnore
- 11 - 11DD00LLVS - Normal operation
- 12 - 12DDPrXXXXXX -
- 12 - 12DDXXXXXXXX - Unknown
