mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-07 19:50:45 +00:00
Improve import of F5V012 flex and rise time settings.
This commit is contained in:
parent
6b581bc303
commit
c271a64625
@ -6264,7 +6264,7 @@ void PRS1DataChunk::ParseFlexSettingF0V234(quint8 flex, int cpapmode)
|
|||||||
void PRS1DataChunk::ParseFlexSettingF5V012(quint8 flex, int cpapmode)
|
void PRS1DataChunk::ParseFlexSettingF5V012(quint8 flex, int cpapmode)
|
||||||
{
|
{
|
||||||
FlexMode flexmode = FLEX_Unknown;
|
FlexMode flexmode = FLEX_Unknown;
|
||||||
bool unknown = (flex & 0x80) != 0;
|
bool valid = (flex & 0x80) != 0;
|
||||||
bool lock = (flex & 0x40) != 0;
|
bool lock = (flex & 0x40) != 0;
|
||||||
bool risetime = (flex & 0x08) != 0;
|
bool risetime = (flex & 0x08) != 0;
|
||||||
int flexlevel = flex & 0x03;
|
int flexlevel = flex & 0x03;
|
||||||
@ -6272,34 +6272,36 @@ void PRS1DataChunk::ParseFlexSettingF5V012(quint8 flex, int cpapmode)
|
|||||||
if (flex & (0x20 | 0x10 | 0x04)) UNEXPECTED_VALUE(flex, "known bits");
|
if (flex & (0x20 | 0x10 | 0x04)) UNEXPECTED_VALUE(flex, "known bits");
|
||||||
CHECK_VALUE(cpapmode, PRS1_MODE_ASV);
|
CHECK_VALUE(cpapmode, PRS1_MODE_ASV);
|
||||||
if (this->familyVersion == 0) {
|
if (this->familyVersion == 0) {
|
||||||
CHECK_VALUE(unknown, true);
|
CHECK_VALUE(valid, true);
|
||||||
CHECK_VALUE(lock, false);
|
CHECK_VALUE(lock, false);
|
||||||
CHECK_VALUE(risetime, false);
|
CHECK_VALUE(risetime, false);
|
||||||
if (flexlevel == 0) UNEXPECTED_VALUE(flexlevel, "1-3");
|
|
||||||
} else if (this->familyVersion == 1) {
|
} else if (this->familyVersion == 1) {
|
||||||
if (unknown == false) {
|
if (valid == false) {
|
||||||
CHECK_VALUE(flex, 0x08);
|
CHECK_VALUE(flex, 0x08);
|
||||||
flexlevel = 2; // TODO: Why do reports say Rise Time 2 for this value?
|
flexlevel = 2; // These get reported as Rise Time 2
|
||||||
|
valid = true;
|
||||||
}
|
}
|
||||||
if (lock) CHECK_VALUE(risetime, true); // so far we've only seen rise time lock, but this could mean bi-flex lock as well
|
|
||||||
if (flexlevel == 0 && unknown) UNEXPECTED_VALUE(flexlevel, "1-3");
|
|
||||||
} else {
|
} else {
|
||||||
CHECK_VALUE(flex, 0x02); // only seen one example, unsure if it matches F5V01
|
CHECK_VALUE(flex, 0x02); // only seen one example, unsure if it matches F5V01; seems to encode Bi-Flex 2
|
||||||
|
valid = true; // add the flex mode and setting to the parsed settings
|
||||||
}
|
}
|
||||||
|
if (flexlevel == 0 || flexlevel >3) UNEXPECTED_VALUE(flexlevel, "1-3");
|
||||||
|
|
||||||
// We're only confident of values where the high bit is set
|
CHECK_VALUE(valid, true);
|
||||||
if (unknown) {
|
if (risetime) {
|
||||||
if (risetime) {
|
flexmode = FLEX_RiseTime;
|
||||||
flexmode = FLEX_RiseTime;
|
} else {
|
||||||
} else {
|
flexmode = FLEX_BiFlex;
|
||||||
flexmode = FLEX_BiFlex;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: rise or bi-flex lock once we're confident about it
|
|
||||||
this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_FLEX_MODE, (int) flexmode));
|
this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_FLEX_MODE, (int) flexmode));
|
||||||
if (flexmode != FLEX_Unknown) {
|
|
||||||
|
if (flexmode == FLEX_BiFlex) {
|
||||||
this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_FLEX_LEVEL, flexlevel));
|
this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_FLEX_LEVEL, flexlevel));
|
||||||
|
CHECK_VALUE(lock, 0); // Flag any sample data that will let us confirm flex lock
|
||||||
|
//this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_FLEX_LOCK, lock != 0));
|
||||||
|
} else {
|
||||||
|
this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_RISE_TIME, flexlevel));
|
||||||
|
this->AddEvent(new PRS1ParsedSettingEvent(PRS1_SETTING_RISE_TIME_LOCK, lock != 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user