Update PRS1 loader from 500G110 test data.

This commit is contained in:
sawinglogz 2019-09-07 15:02:16 -04:00
parent 1b67688b12
commit 45018f4903

View File

@ -234,6 +234,7 @@ static const PRS1TestedModel s_PRS1TestedModels[] = {
{ "400X150", 0, 6, "DreamStation CPAP Pro" }, { "400X150", 0, 6, "DreamStation CPAP Pro" },
{ "500X110", 0, 6, "DreamStation Auto CPAP" }, { "500X110", 0, 6, "DreamStation Auto CPAP" },
{ "500X150", 0, 6, "DreamStation Auto CPAP" }, { "500X150", 0, 6, "DreamStation Auto CPAP" },
{ "500G110", 0, 6, "DreamStation Go Auto" },
{ "502G150", 0, 6, "DreamStation Go Auto" }, { "502G150", 0, 6, "DreamStation Go Auto" },
{ "600X110", 0, 6, "DreamStation BiPAP Pro" }, { "600X110", 0, 6, "DreamStation BiPAP Pro" },
{ "700X110", 0, 6, "DreamStation Auto BiPAP" }, { "700X110", 0, 6, "DreamStation Auto BiPAP" },
@ -4653,8 +4654,8 @@ bool PRS1DataChunk::ParseSettingsF0V6(const unsigned char* data, int size)
if (data[pos] != 0 && data[pos] != 3) { if (data[pos] != 0 && data[pos] != 3) {
CHECK_VALUES(data[pos], 1, 2); // 1 when EZ-Start is enabled? 2 when Auto-Trial? 3 when Auto-Trial is off or Opti-Start isn't off? CHECK_VALUES(data[pos], 1, 2); // 1 when EZ-Start is enabled? 2 when Auto-Trial? 3 when Auto-Trial is off or Opti-Start isn't off?
} }
if (len == 2) { // 400G has extra byte if (len == 2) { // 400G, 500G has extra byte
CHECK_VALUE(data[pos+1], 0); CHECK_VALUES(data[pos+1], 0, 0x20); // Maybe related to Opti-Start?
} }
break; break;
case 0x0a: // CPAP pressure setting case 0x0a: // CPAP pressure setting
@ -4736,8 +4737,8 @@ bool PRS1DataChunk::ParseSettingsF0V6(const unsigned char* data, int size)
case 0x35: // Humidifier setting case 0x35: // Humidifier setting
this->ParseHumidifierSettingV3(data[pos], data[pos+1], true); this->ParseHumidifierSettingV3(data[pos], data[pos+1], true);
break; break;
case 0x36: case 0x36: // Mask Resistance Lock
CHECK_VALUE(data[pos], 0); CHECK_VALUES(data[pos], 0, 0x80);
break; break;
case 0x38: // Mask Resistance case 0x38: // Mask Resistance
if (data[pos] != 0) { // 0 == mask resistance off if (data[pos] != 0) { // 0 == mask resistance off
@ -4889,7 +4890,7 @@ bool PRS1DataChunk::ParseSummaryF0V6(void)
CHECK_VALUE(data[pos+0x1c], 0x00); CHECK_VALUE(data[pos+0x1c], 0x00);
//CHECK_VALUES(data[pos+0x1d], 0x0c, 0x0d); //CHECK_VALUES(data[pos+0x1d], 0x0c, 0x0d);
//CHECK_VALUES(data[pos+0x1e], 0x31, 0x3b); //CHECK_VALUES(data[pos+0x1e], 0x31, 0x3b);
// TODO: 400G has 8 more bytes? // TODO: 400G and 500G has 8 more bytes?
// TODO: 400G sometimes has another 4 on top of that? // TODO: 400G sometimes has another 4 on top of that?
} }
break; break;
@ -4914,13 +4915,13 @@ bool PRS1DataChunk::ParseSummaryF0V6(void)
this->ParseHumidifierSettingV3(data[pos+2], data[pos+3]); this->ParseHumidifierSettingV3(data[pos+2], data[pos+3]);
break; break;
case 0x0e: case 0x0e:
// only seen once on 400G? // only seen once on 400G, many times on 500G
CHECK_VALUE(data[pos], 0); CHECK_VALUES(data[pos], 0, 6);
CHECK_VALUE(data[pos+1], 0); CHECK_VALUE(data[pos+1], 0);
CHECK_VALUE(data[pos+2], 7); //CHECK_VALUES(data[pos+2], 7, 9);
CHECK_VALUE(data[pos+3], 7); //CHECK_VALUES(data[pos+3], 7, 15);
CHECK_VALUE(data[pos+4], 7); //CHECK_VALUES(data[pos+4], 7, 12);
CHECK_VALUE(data[pos+5], 0); //CHECK_VALUES(data[pos+5], 0, 3);
break; break;
case 0x05: case 0x05:
// AutoCPAP-related? First appeared on 500X, follows 4, before 8, look like pressure values // AutoCPAP-related? First appeared on 500X, follows 4, before 8, look like pressure values