Implement the gas mix sample

The current gas mix index is stored in the 11th bit of the sample value.
This commit is contained in:
Jef Driesen 2020-02-10 22:53:27 +01:00
parent 59d9791446
commit 5dc7e54596

View File

@ -170,6 +170,7 @@ cressi_goa_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c
unsigned int time = 0;
unsigned int interval = 5;
unsigned int complete = 1;
unsigned int gasmix_previous = 0xFFFFFFFF;
unsigned int offset = SZ_HEADER;
while (offset + 2 <= size) {
@ -193,6 +194,15 @@ cressi_goa_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c
unsigned int depth = value & 0x07FF;
sample.depth = depth / 10.0;
if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata);
// Gas change.
unsigned int gasmix = (value & 0x0800) >> 11;
if (gasmix != gasmix_previous) {
sample.gasmix = gasmix;
if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata);
gasmix_previous = gasmix;
}
complete = 1;
} else if (type == TEMPERATURE) {
// Temperature (1/10 °C).