diff --git a/doc/man/dc_parser_samples_foreach.3 b/doc/man/dc_parser_samples_foreach.3 index 1b8be82..d741a43 100644 --- a/doc/man/dc_parser_samples_foreach.3 +++ b/doc/man/dc_parser_samples_foreach.3 @@ -31,7 +31,7 @@ .Ft "typedef void" .Fo "(*dc_sample_callback_t)" .Fa "dc_sample_type_t type" -.Fa "dc_sample_value_t value" +.Fa "const dc_sample_value_t *value" .Fa "void *userdata" .Fc .Ft dc_status_t diff --git a/examples/output_xml.c b/examples/output_xml.c index 3801383..7489af6 100644 --- a/examples/output_xml.c +++ b/examples/output_xml.c @@ -90,7 +90,7 @@ convert_volume (double value, dctool_units_t units) } static void -sample_cb (dc_sample_type_t type, dc_sample_value_t value, void *userdata) +sample_cb (dc_sample_type_t type, const dc_sample_value_t *value, void *userdata) { static const char *events[] = { "none", "deco", "rbt", "ascent", "ceiling", "workload", "transmitter", @@ -108,8 +108,8 @@ sample_cb (dc_sample_type_t type, dc_sample_value_t value, void *userdata) switch (type) { case DC_SAMPLE_TIME: - seconds = value.time / 1000; - milliseconds = value.time % 1000; + seconds = value->time / 1000; + milliseconds = value->time % 1000; if (sampledata->nsamples++) fprintf (sampledata->ostream, "\n"); fprintf (sampledata->ostream, "\n"); @@ -121,63 +121,63 @@ sample_cb (dc_sample_type_t type, dc_sample_value_t value, void *userdata) break; case DC_SAMPLE_DEPTH: fprintf (sampledata->ostream, " %.2f\n", - convert_depth(value.depth, sampledata->units)); + convert_depth(value->depth, sampledata->units)); break; case DC_SAMPLE_PRESSURE: fprintf (sampledata->ostream, " %.2f\n", - value.pressure.tank, - convert_pressure(value.pressure.value, sampledata->units)); + value->pressure.tank, + convert_pressure(value->pressure.value, sampledata->units)); break; case DC_SAMPLE_TEMPERATURE: fprintf (sampledata->ostream, " %.2f\n", - convert_temperature(value.temperature, sampledata->units)); + convert_temperature(value->temperature, sampledata->units)); break; case DC_SAMPLE_EVENT: - if (value.event.type != SAMPLE_EVENT_GASCHANGE && value.event.type != SAMPLE_EVENT_GASCHANGE2) { + if (value->event.type != SAMPLE_EVENT_GASCHANGE && value->event.type != SAMPLE_EVENT_GASCHANGE2) { fprintf (sampledata->ostream, " %s\n", - value.event.type, value.event.time, value.event.flags, value.event.value, events[value.event.type]); + value->event.type, value->event.time, value->event.flags, value->event.value, events[value->event.type]); } break; case DC_SAMPLE_RBT: - fprintf (sampledata->ostream, " %u\n", value.rbt); + fprintf (sampledata->ostream, " %u\n", value->rbt); break; case DC_SAMPLE_HEARTBEAT: - fprintf (sampledata->ostream, " %u\n", value.heartbeat); + fprintf (sampledata->ostream, " %u\n", value->heartbeat); break; case DC_SAMPLE_BEARING: - fprintf (sampledata->ostream, " %u\n", value.bearing); + fprintf (sampledata->ostream, " %u\n", value->bearing); break; case DC_SAMPLE_VENDOR: - fprintf (sampledata->ostream, " ", value.vendor.type, value.vendor.size); - for (unsigned int i = 0; i < value.vendor.size; ++i) - fprintf (sampledata->ostream, "%02X", ((const unsigned char *) value.vendor.data)[i]); + fprintf (sampledata->ostream, " ", value->vendor.type, value->vendor.size); + for (unsigned int i = 0; i < value->vendor.size; ++i) + fprintf (sampledata->ostream, "%02X", ((const unsigned char *) value->vendor.data)[i]); fprintf (sampledata->ostream, "\n"); break; case DC_SAMPLE_SETPOINT: - fprintf (sampledata->ostream, " %.2f\n", value.setpoint); + fprintf (sampledata->ostream, " %.2f\n", value->setpoint); break; case DC_SAMPLE_PPO2: - if (value.ppo2.sensor != DC_SENSOR_NONE) { - fprintf (sampledata->ostream, " %.2f\n", value.ppo2.sensor, value.ppo2.value); + if (value->ppo2.sensor != DC_SENSOR_NONE) { + fprintf (sampledata->ostream, " %.2f\n", value->ppo2.sensor, value->ppo2.value); } else { - fprintf (sampledata->ostream, " %.2f\n", value.ppo2.value); + fprintf (sampledata->ostream, " %.2f\n", value->ppo2.value); } break; case DC_SAMPLE_CNS: - fprintf (sampledata->ostream, " %.1f\n", value.cns * 100.0); + fprintf (sampledata->ostream, " %.1f\n", value->cns * 100.0); break; case DC_SAMPLE_DECO: fprintf (sampledata->ostream, " %s\n", - value.deco.time, - convert_depth(value.deco.depth, sampledata->units), - decostop[value.deco.type]); - if (value.deco.tts) { + value->deco.time, + convert_depth(value->deco.depth, sampledata->units), + decostop[value->deco.type]); + if (value->deco.tts) { fprintf (sampledata->ostream, " %u\n", - value.deco.tts); + value->deco.tts); } break; case DC_SAMPLE_GASMIX: - fprintf (sampledata->ostream, " %u\n", value.gasmix); + fprintf (sampledata->ostream, " %u\n", value->gasmix); break; default: break; diff --git a/include/libdivecomputer/parser.h b/include/libdivecomputer/parser.h index 8a067b6..fbc67c0 100644 --- a/include/libdivecomputer/parser.h +++ b/include/libdivecomputer/parser.h @@ -273,7 +273,7 @@ typedef union dc_sample_value_t { typedef struct dc_parser_t dc_parser_t; -typedef void (*dc_sample_callback_t) (dc_sample_type_t type, dc_sample_value_t value, void *userdata); +typedef void (*dc_sample_callback_t) (dc_sample_type_t type, const dc_sample_value_t *value, void *userdata); dc_status_t dc_parser_new (dc_parser_t **parser, dc_device_t *device); diff --git a/src/atomics_cobalt_parser.c b/src/atomics_cobalt_parser.c index 6c42020..da5264a 100644 --- a/src/atomics_cobalt_parser.c +++ b/src/atomics_cobalt_parser.c @@ -279,18 +279,18 @@ atomics_cobalt_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/1000 bar). unsigned int depth = array_uint16_le (data + offset + 0); sample.depth = (signed int)(depth - atmospheric) * (BAR / 1000.0) / parser->hydrostatic; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Pressure (1 psi). unsigned int pressure = array_uint16_le (data + offset + 2); sample.pressure.tank = tank; sample.pressure.value = pressure * PSI / BAR; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); // Current gas mix unsigned int gasmix = data[offset + 4]; @@ -306,14 +306,14 @@ atomics_cobalt_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback return DC_STATUS_DATAFORMAT; } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } // Temperature (1 °F). unsigned int temperature = data[offset + 8]; sample.temperature = (temperature - 32.0) * (5.0 / 9.0); - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // violation status sample.event.type = 0; @@ -323,15 +323,15 @@ atomics_cobalt_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback unsigned int violation = data[offset + 11]; if (violation & 0x01) { sample.event.type = SAMPLE_EVENT_ASCENT; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } if (violation & 0x04) { sample.event.type = SAMPLE_EVENT_CEILING; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } if (violation & 0x08) { sample.event.type = SAMPLE_EVENT_PO2; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } // NDL & deco @@ -347,7 +347,7 @@ atomics_cobalt_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback sample.deco.time = ndl; sample.deco.depth = 0.0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); offset += SZ_SEGMENT; } diff --git a/src/citizen_aqualand_parser.c b/src/citizen_aqualand_parser.c index 41a8edc..32816b4 100644 --- a/src/citizen_aqualand_parser.c +++ b/src/citizen_aqualand_parser.c @@ -242,14 +242,14 @@ citizen_aqualand_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba // Time time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth if (metric) sample.depth = depth / 10.0; else sample.depth = depth * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature if (time % 300 == 0) { @@ -260,7 +260,7 @@ citizen_aqualand_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba sample.temperature = temperature / 10.0; else sample.temperature = (temperature - 32.0) * (5.0 / 9.0); - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } } } diff --git a/src/cochran_commander_parser.c b/src/cochran_commander_parser.c index 5609948..5d2d9b7 100644 --- a/src/cochran_commander_parser.c +++ b/src/cochran_commander_parser.c @@ -315,7 +315,7 @@ cochran_commander_handle_event (cochran_commander_parser_t *parser, unsigned cha sample.event.time = 0; sample.event.value = 0; sample.event.flags = event->flag; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } @@ -580,16 +580,16 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca unsigned int depth = samples[1]; // Half feet last_sample_time = sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); sample.depth = (depth / 2.0) * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); sample.temperature = (temp / 2.0 - 32.0) / 1.8; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); sample.gasmix = 0; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); while (offset < size) { const unsigned char *s = samples + offset; @@ -598,7 +598,7 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca if (last_sample_time != sample.time) { // We haven't issued this time yet. last_sample_time = sample.time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); } if (*s & 0x80) { @@ -617,7 +617,7 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca sample.deco.time = 60; // We don't know the duration sample.deco.depth = deco_ceiling * FEET; sample.deco.tts = 0; - if (callback) callback(DC_SAMPLE_DECO, sample, userdata); + if (callback) callback(DC_SAMPLE_DECO, &sample, userdata); break; case 0xAD: // Increment ceiling (shallower) deco_ceiling -= 10; // feet @@ -626,7 +626,7 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca sample.deco.depth = deco_ceiling * FEET; sample.deco.time = 60; // We don't know the duration sample.deco.tts = 0; - if (callback) callback(DC_SAMPLE_DECO, sample, userdata); + if (callback) callback(DC_SAMPLE_DECO, &sample, userdata); break; default: cochran_commander_handle_event(parser, s[0], callback, userdata); @@ -639,7 +639,7 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca else temp += (*s & 0x0f); sample.temperature = (temp / 2.0 - 32.0) / 1.8; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } offset++; @@ -653,7 +653,7 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca depth += s[0] & 0x3f; sample.depth = (depth / 2.0) * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset++; time += sample_interval; @@ -718,16 +718,16 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c } last_sample_time = sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); sample.depth = start_depth * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); sample.temperature = (data[layout->start_temp] - 32.0) / 1.8; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); sample.gasmix = 0; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); unsigned int last_gasmix = sample.gasmix; while (offset < size) { @@ -737,7 +737,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c if (last_sample_time != sample.time) { // We haven't issued this time yet. last_sample_time = sample.time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); } // If corrupt_dive end before offset @@ -778,7 +778,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c sample.deco.time = (array_uint16_le(s + 3) + 1) * 60; sample.deco.depth = deco_ceiling * FEET; sample.deco.tts = 0; - if (callback) callback(DC_SAMPLE_DECO, sample, userdata); + if (callback) callback(DC_SAMPLE_DECO, &sample, userdata); break; case 0xAD: // Increment ceiling (shallower) deco_ceiling -= 10; // feet @@ -787,7 +787,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c sample.deco.depth = deco_ceiling * FEET; sample.deco.time = (array_uint16_le(s + 3) + 1) * 60; sample.deco.tts = 0; - if (callback) callback(DC_SAMPLE_DECO, sample, userdata); + if (callback) callback(DC_SAMPLE_DECO, &sample, userdata); break; case 0xC0: // Switched to FO2 21% mode (surface) // Event seen upon surfacing @@ -796,14 +796,14 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c case 0xEF: // Switched to gas blend 2 if (last_gasmix != 1) { sample.gasmix = 1; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); last_gasmix = sample.gasmix; } break; case 0xF3: // Switched to gas blend 1 if (last_gasmix != 0) { sample.gasmix = 0; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); last_gasmix = sample.gasmix; } break; @@ -823,7 +823,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c depth += (s[0] & 0x3f); sample.depth = (start_depth + depth / 4.0) * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Ascent rate is logged in the 0th sample, temp in the 1st, repeat. if (time % 2 == 0) { @@ -839,7 +839,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c double temperature = s[1] / 2.0 + 20.0; sample.temperature = (temperature - 32.0) / 1.8; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } // Cochran EMC models store NDL and deco stop time @@ -861,7 +861,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c sample.deco.time = deco_time * 60; sample.deco.depth = 0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); } break; case 23: @@ -872,7 +872,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c sample.deco.depth = deco_ceiling * FEET; sample.deco.time = deco_time * 60; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); } break; } diff --git a/src/cressi_edy_parser.c b/src/cressi_edy_parser.c index 2ce1a9a..182fd11 100644 --- a/src/cressi_edy_parser.c +++ b/src/cressi_edy_parser.c @@ -203,12 +203,12 @@ cressi_edy_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). unsigned int depth = bcd2dec (data[offset + 0] & 0x0F) * 100 + bcd2dec (data[offset + 1]); sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Current gasmix if (ngasmixes) { @@ -221,7 +221,7 @@ cressi_edy_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c } if (idx != gasmix) { sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix = idx; } } diff --git a/src/cressi_goa_parser.c b/src/cressi_goa_parser.c index 507e327..d5a9a34 100644 --- a/src/cressi_goa_parser.c +++ b/src/cressi_goa_parser.c @@ -331,24 +331,24 @@ cressi_goa_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c if (complete) { // Time (seconds). sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Temperature (1/10 °C). if (have_temperature) { sample.temperature = temperature / 10.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); have_temperature = 0; } // Depth (1/10 m). sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Gas change if (divemode == SCUBA || divemode == NITROX) { if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } } diff --git a/src/cressi_leonardo_parser.c b/src/cressi_leonardo_parser.c index 849aa87..3a6824e 100644 --- a/src/cressi_leonardo_parser.c +++ b/src/cressi_leonardo_parser.c @@ -198,11 +198,11 @@ cressi_leonardo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac // Time (seconds). time += surftime; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). sample.depth = 0.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += 4; } else { @@ -213,16 +213,16 @@ cressi_leonardo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Gas change. if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } @@ -232,7 +232,7 @@ cressi_leonardo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac sample.event.time = 0; sample.event.flags = 0; sample.event.value = ascent; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } offset += 2; diff --git a/src/deepblu_cosmiq_parser.c b/src/deepblu_cosmiq_parser.c index c6f647b..d744698 100644 --- a/src/deepblu_cosmiq_parser.c +++ b/src/deepblu_cosmiq_parser.c @@ -206,13 +206,13 @@ deepblu_cosmiq_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); sample.depth = (signed int) (depth - atmospheric) * (BAR / 1000.0) / parser->hydrostatic; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); sample.temperature = temperature / 10.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } return DC_STATUS_SUCCESS; diff --git a/src/deepsix_excursion_parser.c b/src/deepsix_excursion_parser.c index 13e4453..919fb6a 100644 --- a/src/deepsix_excursion_parser.c +++ b/src/deepsix_excursion_parser.c @@ -425,10 +425,10 @@ deepsix_excursion_parser_samples_foreach_v0 (dc_parser_t *abstract, dc_sample_ca if (type == TEMPERATURE) { time += interval; sample.time = time * 1000; - if (callback) callback(DC_SAMPLE_TIME, sample, userdata); + if (callback) callback(DC_SAMPLE_TIME, &sample, userdata); sample.depth = pressure_to_depth(depth, atmospheric, DENSITY); - if (callback) callback(DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback(DC_SAMPLE_DEPTH, &sample, userdata); } if (type == ALARM) { @@ -441,11 +441,11 @@ deepsix_excursion_parser_samples_foreach_v0 (dc_parser_t *abstract, dc_sample_ca length = 8; } else if (temperature >= 10) { sample.temperature = temperature / 10.0; - if (callback) callback(DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback(DC_SAMPLE_TEMPERATURE, &sample, userdata); } } else { sample.temperature = temperature / 10.0; - if (callback) callback(DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback(DC_SAMPLE_TEMPERATURE, &sample, userdata); } } else if (type == DECO) { unsigned int deco = array_uint16_le(data + offset + 4); @@ -455,7 +455,7 @@ deepsix_excursion_parser_samples_foreach_v0 (dc_parser_t *abstract, dc_sample_ca } else if (type == CNS) { unsigned int cns = array_uint16_le(data + offset + 4); sample.cns = cns / 100.0; - if (callback) callback(DC_SAMPLE_CNS, sample, userdata); + if (callback) callback(DC_SAMPLE_CNS, &sample, userdata); } offset += length; @@ -593,11 +593,11 @@ deepsix_excursion_parser_samples_foreach_v1 (dc_parser_t *abstract, dc_sample_ca // Time (seconds). time += samplerate; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); unsigned int depth = array_uint16_le (data + offset); sample.depth = pressure_to_depth(depth, atmospheric, density); - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += 2; // event info @@ -665,7 +665,7 @@ deepsix_excursion_parser_samples_foreach_v1 (dc_parser_t *abstract, dc_sample_ca break; } if (sample.event.type != SAMPLE_EVENT_NONE) { - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } break; @@ -687,7 +687,7 @@ deepsix_excursion_parser_samples_foreach_v1 (dc_parser_t *abstract, dc_sample_ca } sample.gasmix = mix_idx; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); break; case EVENT_SAMPLES_MISSED: count = array_uint16_le(data + offset + event_offset); @@ -728,12 +728,12 @@ deepsix_excursion_parser_samples_foreach_v1 (dc_parser_t *abstract, dc_sample_ca case SAMPLE_TEMPERATURE: value = array_uint16_le(data + offset); sample.temperature = value / 10.0; - if (callback) callback(DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback(DC_SAMPLE_TEMPERATURE, &sample, userdata); break; case SAMPLE_CNS: value = array_uint16_le(data + offset); sample.cns = value / 10000.0; - if (callback) callback (DC_SAMPLE_CNS, sample, userdata); + if (callback) callback (DC_SAMPLE_CNS, &sample, userdata); break; case SAMPLE_DECO_NDL: deco_flags = data[offset]; @@ -753,7 +753,7 @@ deepsix_excursion_parser_samples_foreach_v1 (dc_parser_t *abstract, dc_sample_ca sample.deco.depth = 0; sample.deco.time = deco_ndl_tts; } - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); break; default: break; diff --git a/src/diverite_nitekq_parser.c b/src/diverite_nitekq_parser.c index ef67e1b..bb13446 100644 --- a/src/diverite_nitekq_parser.c +++ b/src/diverite_nitekq_parser.c @@ -266,12 +266,12 @@ diverite_nitekq_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Gas change if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } @@ -283,7 +283,7 @@ diverite_nitekq_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac sample.depth = depth / 10.0; else sample.depth = depth * FEET / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += 2; if (type == 3) { @@ -296,7 +296,7 @@ diverite_nitekq_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac unsigned int ppo2 = data[offset]; sample.ppo2.sensor = DC_SENSOR_NONE; sample.ppo2.value = ppo2 / 100.0; - if (callback) callback (DC_SAMPLE_PPO2, sample, userdata); + if (callback) callback (DC_SAMPLE_PPO2, &sample, userdata); offset++; } } else { diff --git a/src/divesoft_freedom_parser.c b/src/divesoft_freedom_parser.c index 6ddad76..51a229a 100644 --- a/src/divesoft_freedom_parser.c +++ b/src/divesoft_freedom_parser.c @@ -933,14 +933,14 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba } time = timestamp; sample.time = time * 1000; - if (callback) callback(DC_SAMPLE_TIME, sample, userdata); + if (callback) callback(DC_SAMPLE_TIME, &sample, userdata); } // Initial diluent. if (!initial) { if (parser->diluent != UNDEFINED) { sample.gasmix = parser->diluent; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); } initial = 1; } @@ -951,19 +951,19 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba unsigned int ppo2 = array_uint16_le (data + offset + 6); sample.depth = depth / 100.0; - if (callback) callback(DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback(DC_SAMPLE_DEPTH, &sample, userdata); if (ppo2) { sample.ppo2.sensor = DC_SENSOR_NONE; sample.ppo2.value = ppo2 * 10.0 / BAR; - if (callback) callback(DC_SAMPLE_PPO2, sample, userdata); + if (callback) callback(DC_SAMPLE_PPO2, &sample, userdata); } if (id == POINT_2) { unsigned int orientation = array_uint32_le (data + offset + 8); unsigned int heading = orientation & 0x1FF; sample.bearing = heading; - if (callback) callback (DC_SAMPLE_BEARING, sample, userdata); + if (callback) callback (DC_SAMPLE_BEARING, &sample, userdata); } else if (id == POINT_1 || id == POINT_1_OLD) { unsigned int misc = array_uint32_le (data + offset + 8); unsigned int ceiling = array_uint16_le (data + offset + 12); @@ -974,7 +974,7 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba // Temperature sample.temperature = (signed int) signextend (temp, 10) / 10.0; - if (callback) callback(DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback(DC_SAMPLE_TEMPERATURE, &sample, userdata); // Deco / NDL if (ceiling) { @@ -987,12 +987,12 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba sample.deco.depth = 0.0; } sample.deco.tts = tts * 60; - if (callback) callback(DC_SAMPLE_DECO, sample, userdata); + if (callback) callback(DC_SAMPLE_DECO, &sample, userdata); // Setpoint if (setpoint) { sample.setpoint = setpoint / 100.0; - if (callback) callback(DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback(DC_SAMPLE_SETPOINT, &sample, userdata); } } } else if ((type >= LREC_MANIPULATION && type <= LREC_ACTIVITY) || type == LREC_INFO) { @@ -1004,7 +1004,7 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba sample.event.time = 0; sample.event.flags = 0; sample.event.value = 0; - if (callback) callback(DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback(DC_SAMPLE_EVENT, &sample, userdata); } else if (event == EVENT_MIX_CHANGED || event == EVENT_DILUENT || event == EVENT_CHANGE_MODE) { unsigned int o2 = data[offset + 6]; unsigned int he = data[offset + 7]; @@ -1024,13 +1024,13 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba return DC_STATUS_DATAFORMAT; } sample.gasmix = idx; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); } else if (event == EVENT_CNS) { sample.cns = array_uint16_le (data + offset + 6) / 100.0; - if (callback) callback(DC_SAMPLE_CNS, sample, userdata); + if (callback) callback(DC_SAMPLE_CNS, &sample, userdata); } else if (event == EVENT_SETPOINT_MANUAL || event == EVENT_SETPOINT_AUTO) { sample.setpoint = data[6] / 100.0; - if (callback) callback(DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback(DC_SAMPLE_SETPOINT, &sample, userdata); } } else if (type == LREC_MEASURE) { // Measurement record. @@ -1048,7 +1048,7 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba sample.pressure.tank = idx; sample.pressure.value = pressure * 2.0; - if (callback) callback(DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback(DC_SAMPLE_PRESSURE, &sample, userdata); } } else if (id == MEASURE_ID_OXYGEN) { for (unsigned int i = 0; i < NSENSORS; ++i) { @@ -1057,7 +1057,7 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba continue; sample.ppo2.sensor = i; sample.ppo2.value = ppo2 * 10.0 / BAR; - if (callback) callback(DC_SAMPLE_PPO2, sample, userdata); + if (callback) callback(DC_SAMPLE_PPO2, &sample, userdata); } } else if (id == MEASURE_ID_OXYGEN_MV) { for (unsigned int i = 0; i < NSENSORS; ++i) { @@ -1068,7 +1068,7 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba continue; sample.ppo2.sensor = i; sample.ppo2.value = value / 100.0 * parser->calibration[i] / BAR; - if (callback) callback(DC_SAMPLE_PPO2, sample, userdata); + if (callback) callback(DC_SAMPLE_PPO2, &sample, userdata); } } } else if (type == LREC_STATE) { diff --git a/src/divesystem_idive_parser.c b/src/divesystem_idive_parser.c index 6d89a09..28326a6 100644 --- a/src/divesystem_idive_parser.c +++ b/src/divesystem_idive_parser.c @@ -477,19 +477,19 @@ divesystem_idive_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba } time = timestamp; sample.time = timestamp * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). unsigned int depth = array_uint16_le (data + offset + 6); if (maxdepth < depth) maxdepth = depth; sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (Celsius). signed int temperature = (signed short) array_uint16_le (data + offset + 8); sample.temperature = temperature / 10.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Dive mode unsigned int mode = data[offset + 18]; @@ -523,7 +523,7 @@ divesystem_idive_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba if (mode == SCR || mode == CCR) { unsigned int setpoint = array_uint16_le (data + offset + 19); sample.setpoint = setpoint / 1000.0; - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); } // Gaschange. @@ -550,7 +550,7 @@ divesystem_idive_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba } sample.gasmix = i; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); o2_previous = o2; he_previous = he; } @@ -576,12 +576,12 @@ divesystem_idive_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba sample.deco.time = tts; sample.deco.tts = 0; } - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); // CNS unsigned int cns = array_uint16_le (data + offset + 29); sample.cns = cns / 100.0; - if (callback) callback (DC_SAMPLE_CNS, sample, userdata); + if (callback) callback (DC_SAMPLE_CNS, &sample, userdata); // Tank Pressure if (samplesize == SZ_SAMPLE_IX3M_APOS4) { @@ -602,7 +602,7 @@ divesystem_idive_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba sample.event.time = 0; sample.event.flags = 0; sample.event.value = 0; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } else { // Get the index of the tank. if (id != tank_previous) { @@ -632,7 +632,7 @@ divesystem_idive_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba if (tank_idx < ntanks) { sample.pressure.tank = tank_idx; sample.pressure.value = pressure; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); tank[tank_idx].endpressure = pressure; } } diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c index f41d747..ca19458 100644 --- a/src/hw_ostc_parser.c +++ b/src/hw_ostc_parser.c @@ -836,30 +836,30 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call // Time (seconds). time += samplerate; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Initial gas mix. if (time == samplerate && parser->initial != UNDEFINED) { sample.gasmix = parser->initial; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); } // Initial setpoint (mbar). if (time == samplerate && parser->initial_setpoint != UNDEFINED) { sample.setpoint = parser->initial_setpoint / 100.0; - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); } // Initial CNS (%). if (time == samplerate && parser->initial_cns != UNDEFINED) { sample.cns = parser->initial_cns / 100.0; - if (callback) callback (DC_SAMPLE_CNS, sample, userdata); + if (callback) callback (DC_SAMPLE_CNS, &sample, userdata); } // Depth (1/100 m). unsigned int depth = array_uint16_le (data + offset); sample.depth = depth / 100.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += 2; // Extended sample info. @@ -918,7 +918,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call break; } if (sample.event.type && callback) - callback (DC_SAMPLE_EVENT, sample, userdata); + callback (DC_SAMPLE_EVENT, &sample, userdata); // Manual Gas Set & Change if (events & 0x10) { @@ -943,7 +943,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); offset += 2; length -= 2; } @@ -965,7 +965,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call } idx--; /* Convert to a zero based index. */ sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); tank = idx; offset++; length--; @@ -979,7 +979,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call return DC_STATUS_DATAFORMAT; } sample.setpoint = data[offset] / 100.0; - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); offset++; length--; } @@ -1008,7 +1008,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); offset += 2; length -= 2; } @@ -1040,7 +1040,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call case TEMPERATURE: value = array_uint16_le (data + offset); sample.temperature = value / 10.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); break; case DECO: // Due to a firmware bug, the deco/ndl info is incorrect for @@ -1056,7 +1056,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call } sample.deco.time = data[offset + 1] * 60; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); break; case PPO2: for (unsigned int j = 0; j < 3; ++j) { @@ -1072,7 +1072,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call for (unsigned int j = 0; j < 3; ++j) { sample.ppo2.sensor = i; sample.ppo2.value = ppo2[j] / 100.0; - if (callback) callback (DC_SAMPLE_PPO2, sample, userdata); + if (callback) callback (DC_SAMPLE_PPO2, &sample, userdata); } } break; @@ -1081,7 +1081,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call sample.cns = array_uint16_le (data + offset) / 100.0; else sample.cns = data[offset] / 100.0; - if (callback) callback (DC_SAMPLE_CNS, sample, userdata); + if (callback) callback (DC_SAMPLE_CNS, &sample, userdata); break; case TANK: value = array_uint16_le (data + offset); @@ -1094,7 +1094,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call (firmware >= OSTC3FW(10,40) && firmware <= OSTC3FW(10,50))) { sample.pressure.value /= 10.0; } - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } break; default: // Not yet used. @@ -1114,7 +1114,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call return DC_STATUS_DATAFORMAT; } sample.setpoint = data[offset] / 100.0; - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); offset++; length--; } @@ -1143,7 +1143,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); offset += 2; length -= 2; } diff --git a/src/liquivision_lynx_parser.c b/src/liquivision_lynx_parser.c index 19c1d14..0ddb69e 100644 --- a/src/liquivision_lynx_parser.c +++ b/src/liquivision_lynx_parser.c @@ -548,28 +548,28 @@ liquivision_lynx_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/100 m). sample.depth = value / 100.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (1/10 °C). int temperature = (signed short) array_uint16_le (data + offset); sample.temperature = temperature / 10.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Gas mix if (have_gasmix) { sample.gasmix = gasmix_idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); have_gasmix = 0; } // Setpoint (1/10 bar). if (have_setpoint) { sample.setpoint = setpoint / 10.0; - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); have_setpoint = 0; } @@ -579,7 +579,7 @@ liquivision_lynx_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba if (have_pressure & (1 << i)) { sample.pressure.tank = i; sample.pressure.value = pressure[i] / 100.0; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } } have_pressure = 0; @@ -596,7 +596,7 @@ liquivision_lynx_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba } sample.deco.time = 0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); have_deco = 0; } diff --git a/src/mares_darwin_parser.c b/src/mares_darwin_parser.c index ecc5a03..699fbc7 100644 --- a/src/mares_darwin_parser.c +++ b/src/mares_darwin_parser.c @@ -245,16 +245,16 @@ mares_darwin_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Surface Time (seconds). time += 20; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Gas change. if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } @@ -264,7 +264,7 @@ mares_darwin_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t sample.event.time = 0; sample.event.flags = 0; sample.event.value = ascent; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } // Deco violation @@ -273,7 +273,7 @@ mares_darwin_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t sample.event.time = 0; sample.event.flags = 0; sample.event.value = 0; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } // Deco stop @@ -285,7 +285,7 @@ mares_darwin_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t sample.deco.time = 0; sample.deco.depth = 0.0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); if (parser->samplesize == 3) { unsigned int type = (time / 20 + 2) % 3; @@ -294,7 +294,7 @@ mares_darwin_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t pressure -= abstract->data[offset + 2]; sample.pressure.tank = 0; sample.pressure.value = pressure; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } } diff --git a/src/mares_iconhd_parser.c b/src/mares_iconhd_parser.c index 7ec513e..63a4021 100644 --- a/src/mares_iconhd_parser.c +++ b/src/mares_iconhd_parser.c @@ -1017,11 +1017,11 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Surface Time (seconds). time += surftime * 1000; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Surface Depth (0 m). sample.depth = 0.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += parser->samplesize; nsamples++; @@ -1031,12 +1031,12 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Time (seconds). time += parser->interval; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). unsigned int depth = array_uint16_le (data + offset); sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += 2; } @@ -1048,20 +1048,20 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Surface Time (seconds). time += surftime * 1000; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Surface Depth (0 m). sample.depth = 0.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Dive Time (seconds). time += divetime * 1000; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Maximum Depth (1/10 m). sample.depth = maxdepth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += parser->samplesize; nsamples++; @@ -1119,15 +1119,15 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Time (seconds). time += parser->interval; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (1/10 °C). sample.temperature = temperature / 10.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Current gas mix if (parser->ngasmixes > 0) { @@ -1137,7 +1137,7 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t } if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } } @@ -1148,7 +1148,7 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t sample.event.time = 0; sample.event.flags = 0; sample.event.value = bookmark; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } if (parser->model == GENIUS || parser->model == HORIZON) { @@ -1162,7 +1162,7 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t } sample.deco.time = decotime * 60; sample.deco.tts = tts; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); // Alarms for (unsigned int v = alarms, i = 0; v; v >>= 1, ++i) { @@ -1188,7 +1188,7 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t sample.event.time = 0; sample.event.flags = 0; sample.event.value = 0; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } } @@ -1209,7 +1209,7 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t if (gasmix < parser->ntanks) { sample.pressure.tank = gasmix; sample.pressure.value = pressure / 100.0; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } else if (pressure != 0) { WARNING (abstract->context, "Invalid tank with non-zero pressure."); } diff --git a/src/mares_nemo_parser.c b/src/mares_nemo_parser.c index 828fcb3..4b962ff 100644 --- a/src/mares_nemo_parser.c +++ b/src/mares_nemo_parser.c @@ -385,16 +385,16 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c // Time (seconds). time += 20; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Gas change. if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } @@ -404,7 +404,7 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c sample.event.time = 0; sample.event.flags = 0; sample.event.value = ascent; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } // Deco violation @@ -413,7 +413,7 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c sample.event.time = 0; sample.event.flags = 0; sample.event.value = 0; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } // Deco stop @@ -425,20 +425,20 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c sample.deco.time = 0; sample.deco.depth = 0.0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); // Pressure (1 bar). if (parser->sample_size == 3) { sample.pressure.tank = 0; sample.pressure.value = data[idx + 2]; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } else if (parser->sample_size == 5) { unsigned int type = (time / 20) % 3; if (type == 0) { pressure -= data[idx + 2] * 100; sample.pressure.tank = 0; sample.pressure.value = pressure / 100.0; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } } } @@ -463,11 +463,11 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c // Surface Time (seconds). time += surftime; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Surface Depth (0 m). sample.depth = 0.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); if (profiles) { // Get the freedive sample interval for this model. @@ -504,11 +504,11 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c if (time > maxtime) time = maxtime; // Adjust the last sample. sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); } // Verify that the number of samples in the profile data @@ -523,11 +523,11 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c // Dive Time (seconds). time += divetime; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Maximum Depth (1/10 m). sample.depth = maxdepth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); } } } diff --git a/src/mclean_extreme_parser.c b/src/mclean_extreme_parser.c index 0cf0c5f..645a909 100644 --- a/src/mclean_extreme_parser.c +++ b/src/mclean_extreme_parser.c @@ -271,13 +271,13 @@ mclean_extreme_parser_samples_foreach(dc_parser_t *abstract, dc_sample_callback_ time += interval; sample.time = time * 1000; - if (callback) callback(DC_SAMPLE_TIME, sample, userdata); + if (callback) callback(DC_SAMPLE_TIME, &sample, userdata); sample.depth = 0.1 * depth; - if (callback) callback(DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback(DC_SAMPLE_DEPTH, &sample, userdata); sample.temperature = temperature; - if (callback) callback(DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback(DC_SAMPLE_TEMPERATURE, &sample, userdata); if (gasmix_id != gasmix_previous) { // Find the gasmix in the list. @@ -299,13 +299,13 @@ mclean_extreme_parser_samples_foreach(dc_parser_t *abstract, dc_sample_callback_ } sample.gasmix = idx; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix_id; } if (ccr) { sample.setpoint = 0.01 * setpoint; - if (callback) callback(DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback(DC_SAMPLE_SETPOINT, &sample, userdata); } offset += SZ_SAMPLE; diff --git a/src/oceanic_atom2_parser.c b/src/oceanic_atom2_parser.c index 8d87174..cb98366 100644 --- a/src/oceanic_atom2_parser.c +++ b/src/oceanic_atom2_parser.c @@ -587,7 +587,7 @@ oceanic_atom2_parser_vendor (oceanic_atom2_parser_t *parser, const unsigned char sample.vendor.type = SAMPLE_VENDOR_OCEANIC_ATOM2; sample.vendor.size = length; sample.vendor.data = data + offset; - if (callback) callback (DC_SAMPLE_VENDOR, sample, userdata); + if (callback) callback (DC_SAMPLE_VENDOR, &sample, userdata); offset += length; } @@ -751,7 +751,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ // Time time += interval; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Vendor specific data if (i == 0) { @@ -763,7 +763,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ // Depth sample.depth = 0.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); complete = 1; } @@ -788,7 +788,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ time += interval; } sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Vendor specific data oceanic_atom2_parser_vendor (parser, @@ -850,7 +850,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ temperature += (data[offset + 7] & 0x0C) >> 2; } sample.temperature = (temperature - 32.0) * (5.0 / 9.0); - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } // Tank Pressure (psi) @@ -878,7 +878,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ pressure -= data[offset + 1]; sample.pressure.tank = tank; sample.pressure.value = pressure * PSI / BAR; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } // Depth (1/16 ft) @@ -901,7 +901,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ else depth = (data[offset + 2] + (data[offset + 3] << 8)) & 0x0FFF; sample.depth = depth / 16.0 * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Gas mix unsigned int have_gasmix = 0; @@ -916,7 +916,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ return DC_STATUS_DATAFORMAT; } sample.gasmix = gasmix - 1; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } @@ -966,7 +966,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ } sample.deco.time = decotime * 60; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); } unsigned int have_rbt = 0; @@ -989,7 +989,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ } if (have_rbt) { sample.rbt = rbt; - if (callback) callback (DC_SAMPLE_RBT, sample, userdata); + if (callback) callback (DC_SAMPLE_RBT, &sample, userdata); } // Bookmarks @@ -1004,7 +1004,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ sample.event.time = 0; sample.event.flags = 0; sample.event.value = 0; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } count++; diff --git a/src/oceanic_veo250_parser.c b/src/oceanic_veo250_parser.c index d3d9e6e..ee14061 100644 --- a/src/oceanic_veo250_parser.c +++ b/src/oceanic_veo250_parser.c @@ -232,18 +232,18 @@ oceanic_veo250_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback // Time. time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Vendor specific data sample.vendor.type = SAMPLE_VENDOR_OCEANIC_VEO250; sample.vendor.size = PAGESIZE / 2; sample.vendor.data = data + offset; - if (callback) callback (DC_SAMPLE_VENDOR, sample, userdata); + if (callback) callback (DC_SAMPLE_VENDOR, &sample, userdata); // Depth (ft) unsigned int depth = data[offset + 2]; sample.depth = depth * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (°F) unsigned int temperature; @@ -254,7 +254,7 @@ oceanic_veo250_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback temperature = data[offset + 7]; } sample.temperature = (temperature - 32.0) * (5.0 / 9.0); - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // NDL / Deco unsigned int have_deco = 0; @@ -279,7 +279,7 @@ oceanic_veo250_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback } sample.deco.time = decotime * 60; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); } offset += PAGESIZE / 2; diff --git a/src/oceanic_vtpro_parser.c b/src/oceanic_vtpro_parser.c index 49d5937..4902033 100644 --- a/src/oceanic_vtpro_parser.c +++ b/src/oceanic_vtpro_parser.c @@ -334,13 +334,13 @@ oceanic_vtpro_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ else time = timestamp * 60 + (i + 1) * 60.0 / count + 0.5; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Vendor specific data sample.vendor.type = SAMPLE_VENDOR_OCEANIC_VTPRO; sample.vendor.size = PAGESIZE / 2; sample.vendor.data = data + offset; - if (callback) callback (DC_SAMPLE_VENDOR, sample, userdata); + if (callback) callback (DC_SAMPLE_VENDOR, &sample, userdata); // Depth (ft) unsigned int depth = 0; @@ -350,7 +350,7 @@ oceanic_vtpro_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ depth = data[offset + 3]; } sample.depth = depth * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (°F) unsigned int temperature = 0; @@ -360,7 +360,7 @@ oceanic_vtpro_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ temperature = data[offset + 6]; } sample.temperature = (temperature - 32.0) * (5.0 / 9.0); - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // NDL / Deco if (parser->model != AERIS500AI) { @@ -375,7 +375,7 @@ oceanic_vtpro_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ } sample.deco.time = decotime * 60; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); } offset += PAGESIZE / 2; diff --git a/src/oceans_s1_parser.c b/src/oceans_s1_parser.c index 23d4903..c31bfe1 100644 --- a/src/oceans_s1_parser.c +++ b/src/oceans_s1_parser.c @@ -251,18 +251,18 @@ oceans_s1_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca for (unsigned int i = 0; i < nsamples; ++i) { time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); sample.depth = 0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); } time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); sample.depth = depth / 100.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); } else if (strncmp(line, "enddive", 7) == 0) { if (sscanf(line, "enddive %u,%u", &maxdepth, &divetime) != 2) { ERROR (parser->base.context, "Failed to parse the line '%s'.", line); @@ -282,13 +282,13 @@ oceans_s1_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); sample.depth = depth / 100.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); sample.temperature = temperature; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); if (events & EVENT_DECO_STOP) { sample.deco.type = DC_DECO_DECOSTOP; @@ -300,7 +300,7 @@ oceans_s1_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca sample.deco.depth = 0.0; sample.deco.time = 0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); } } diff --git a/src/parser-private.h b/src/parser-private.h index af1a76e..9b8ed7c 100644 --- a/src/parser-private.h +++ b/src/parser-private.h @@ -84,7 +84,7 @@ typedef struct sample_statistics_t { #define SAMPLE_STATISTICS_INITIALIZER {0, 0.0} void -sample_statistics_cb (dc_sample_type_t type, dc_sample_value_t value, void *userdata); +sample_statistics_cb (dc_sample_type_t type, const dc_sample_value_t *value, void *userdata); #ifdef __cplusplus } diff --git a/src/parser.c b/src/parser.c index 77dcb84..8a74cb1 100644 --- a/src/parser.c +++ b/src/parser.c @@ -393,17 +393,17 @@ dc_parser_destroy (dc_parser_t *parser) void -sample_statistics_cb (dc_sample_type_t type, dc_sample_value_t value, void *userdata) +sample_statistics_cb (dc_sample_type_t type, const dc_sample_value_t *value, void *userdata) { sample_statistics_t *statistics = (sample_statistics_t *) userdata; switch (type) { case DC_SAMPLE_TIME: - statistics->divetime = value.time / 1000; + statistics->divetime = value->time / 1000; break; case DC_SAMPLE_DEPTH: - if (statistics->maxdepth < value.depth) - statistics->maxdepth = value.depth; + if (statistics->maxdepth < value->depth) + statistics->maxdepth = value->depth; break; default: break; diff --git a/src/reefnet_sensus_parser.c b/src/reefnet_sensus_parser.c index 2797651..eb860ef 100644 --- a/src/reefnet_sensus_parser.c +++ b/src/reefnet_sensus_parser.c @@ -280,12 +280,12 @@ reefnet_sensus_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback // Time (seconds) time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (adjusted feet of seawater). unsigned int depth = data[offset++]; sample.depth = ((depth + 33.0 - (double) SAMPLE_DEPTH_ADJUST) * FSW - parser->atmospheric) / parser->hydrostatic; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (degrees Fahrenheit) if ((nsamples % 6) == 0) { @@ -293,7 +293,7 @@ reefnet_sensus_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback return DC_STATUS_DATAFORMAT; unsigned int temperature = data[offset++]; sample.temperature = (temperature - 32.0) * (5.0 / 9.0); - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } // Current sample is complete. diff --git a/src/reefnet_sensuspro_parser.c b/src/reefnet_sensuspro_parser.c index 422a161..0100c28 100644 --- a/src/reefnet_sensuspro_parser.c +++ b/src/reefnet_sensuspro_parser.c @@ -279,15 +279,15 @@ reefnet_sensuspro_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callb // Time (seconds) time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Temperature (°F) sample.temperature = (temperature - 32.0) * (5.0 / 9.0); - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Depth (absolute pressure in fsw) sample.depth = (depth * FSW - parser->atmospheric) / parser->hydrostatic; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += 2; } diff --git a/src/reefnet_sensusultra_parser.c b/src/reefnet_sensusultra_parser.c index 90ead6f..9e43873 100644 --- a/src/reefnet_sensusultra_parser.c +++ b/src/reefnet_sensusultra_parser.c @@ -276,17 +276,17 @@ reefnet_sensusultra_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal // Time (seconds) time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Temperature (0.01 °K) unsigned int temperature = array_uint16_le (data + offset); sample.temperature = temperature / 100.0 - 273.15; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Depth (absolute pressure in millibar) unsigned int depth = array_uint16_le (data + offset + 2); sample.depth = (depth * BAR / 1000.0 - parser->atmospheric) / parser->hydrostatic; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); offset += 4; } diff --git a/src/seac_screen_parser.c b/src/seac_screen_parser.c index a0f7f3d..c50eaee 100644 --- a/src/seac_screen_parser.c +++ b/src/seac_screen_parser.c @@ -333,15 +333,15 @@ seac_screen_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t } time = timestamp; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/100 m). sample.depth = depth / 100.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (1/100 °C). sample.temperature = temperature / 100.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Gas mix if (o2 != o2_previous) { @@ -364,7 +364,7 @@ seac_screen_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t } sample.gasmix = idx; - if (callback) callback(DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback(DC_SAMPLE_GASMIX, &sample, userdata); o2_previous = o2; } @@ -379,11 +379,11 @@ seac_screen_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t sample.deco.depth = 0; } sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); // CNS sample.cns = cns / 100.0; - if (callback) callback (DC_SAMPLE_CNS, sample, userdata); + if (callback) callback (DC_SAMPLE_CNS, &sample, userdata); // Deco model if (gf_low == 0 && gf_high == 0) { diff --git a/src/shearwater_predator_parser.c b/src/shearwater_predator_parser.c index d8512db..fe0a6db 100644 --- a/src/shearwater_predator_parser.c +++ b/src/shearwater_predator_parser.c @@ -912,7 +912,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal // Time (seconds). time += interval; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m or ft). unsigned int depth = array_uint16_be (data + pnf + offset); @@ -920,7 +920,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal sample.depth = depth * FEET / 10.0; else sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (°C or °F). int temperature = (signed char) data[offset + pnf + 13]; @@ -935,7 +935,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal sample.temperature = (temperature - 32.0) * (5.0 / 9.0); else sample.temperature = temperature; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Status flags. unsigned int status = data[offset + pnf + 11]; @@ -946,19 +946,19 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal if ((status & PPO2_EXTERNAL) == 0) { sample.ppo2.sensor = DC_SENSOR_NONE; sample.ppo2.value = data[offset + pnf + 6] / 100.0; - if (callback) callback (DC_SAMPLE_PPO2, sample, userdata); + if (callback) callback (DC_SAMPLE_PPO2, &sample, userdata); sample.ppo2.sensor = 0; sample.ppo2.value = data[offset + pnf + 12] * parser->calibration[0]; - if (callback && (parser->calibrated & 0x01)) callback (DC_SAMPLE_PPO2, sample, userdata); + if (callback && (parser->calibrated & 0x01)) callback (DC_SAMPLE_PPO2, &sample, userdata); sample.ppo2.sensor = 1; sample.ppo2.value = data[offset + pnf + 14] * parser->calibration[1]; - if (callback && (parser->calibrated & 0x02)) callback (DC_SAMPLE_PPO2, sample, userdata); + if (callback && (parser->calibrated & 0x02)) callback (DC_SAMPLE_PPO2, &sample, userdata); sample.ppo2.sensor = 2; sample.ppo2.value = data[offset + pnf + 15] * parser->calibration[2]; - if (callback && (parser->calibrated & 0x04)) callback (DC_SAMPLE_PPO2, sample, userdata); + if (callback && (parser->calibrated & 0x04)) callback (DC_SAMPLE_PPO2, &sample, userdata); } // Setpoint @@ -972,13 +972,13 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal sample.setpoint = data[17] / 100.0; } } - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); } // CNS if (parser->petrel) { sample.cns = data[offset + pnf + 22] / 100.0; - if (callback) callback (DC_SAMPLE_CNS, sample, userdata); + if (callback) callback (DC_SAMPLE_CNS, &sample, userdata); } // Gaschange. @@ -993,7 +993,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); o2_previous = o2; he_previous = he; dil_previous = ccr; @@ -1013,7 +1013,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal } sample.deco.time = data[offset + pnf + 9] * 60; sample.deco.tts = array_uint16_be (data + offset + pnf + 4) * 60; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); // for logversion 7 and newer (introduced for Perdix AI) // detect tank pressure @@ -1035,7 +1035,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal pressure &= 0x0FFF; sample.pressure.tank = parser->tankidx[id]; sample.pressure.value = pressure * 2 * PSI / BAR; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } } @@ -1048,7 +1048,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal // 0xFB Tank size or max pressure haven’t been set up if (data[offset + pnf + 21] < 0xF0) { sample.rbt = data[offset + pnf + 21]; - if (callback) callback (DC_SAMPLE_RBT, sample, userdata); + if (callback) callback (DC_SAMPLE_RBT, &sample, userdata); } } } else if (type == LOG_RECORD_DIVE_SAMPLE_EXT) { @@ -1061,7 +1061,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal pressure &= 0x0FFF; sample.pressure.tank = parser->tankidx[id]; sample.pressure.value = pressure * 2 * PSI / BAR; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } } } @@ -1073,7 +1073,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal if (pressure) { sample.pressure.tank = parser->tankidx[id]; sample.pressure.value = pressure * 2 * PSI / BAR; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } } } @@ -1092,17 +1092,17 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal // Time (seconds). time += interval; sample.time = time; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (absolute pressure in millibar) unsigned int depth = array_uint16_be (data + idx + 1); sample.depth = (signed int)(depth - parser->atmospheric) * (BAR / 1000.0) / (parser->density * GRAVITY); - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (1/10 °C). int temperature = (signed short) array_uint16_be (data + idx + 3); sample.temperature = temperature / 10.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } } else if (type == LOG_RECORD_INFO_EVENT) { unsigned int event = data[offset + 1]; @@ -1114,7 +1114,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal // Compass heading if (w1 != 0xFFFFFFFF) { sample.bearing = w1; - if (callback) callback (DC_SAMPLE_BEARING, sample, userdata); + if (callback) callback (DC_SAMPLE_BEARING, &sample, userdata); } // Tag @@ -1122,7 +1122,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal sample.event.time = 0; sample.event.flags = 0; sample.event.value = w2; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } diff --git a/src/sporasub_sp2_parser.c b/src/sporasub_sp2_parser.c index 6c308d4..c84a35c 100644 --- a/src/sporasub_sp2_parser.c +++ b/src/sporasub_sp2_parser.c @@ -185,20 +185,20 @@ sporasub_sp2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Time (seconds) time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/100 m) sample.depth = depth / 100.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (1/10 °C) sample.temperature = temperature / 10.0 - 20.0; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // Heartrate if (heartrate) { sample.heartbeat = heartrate; - if (callback) callback (DC_SAMPLE_HEARTBEAT, sample, userdata); + if (callback) callback (DC_SAMPLE_HEARTBEAT, &sample, userdata); } offset += SZ_SAMPLE; diff --git a/src/suunto_d9_parser.c b/src/suunto_d9_parser.c index dba1338..43e9ccc 100644 --- a/src/suunto_d9_parser.c +++ b/src/suunto_d9_parser.c @@ -523,7 +523,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca // Time (seconds). sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Sample data. for (unsigned int i = 0; i < nparams; ++i) { @@ -538,19 +538,19 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca case 0x64: // Depth value = array_uint16_le (data + offset); sample.depth = value / (double) info[i].divisor; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); break; case 0x68: // Pressure value = array_uint16_le (data + offset); if (value != 0xFFFF) { sample.pressure.tank = 0; sample.pressure.value = value / (double) info[i].divisor; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } break; case 0x74: // Temperature sample.temperature = (signed char) data[offset] / (double) info[i].divisor; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); break; default: // Unknown sample type ERROR (abstract->context, "Unknown sample type 0x%02x.", info[i].type); @@ -568,7 +568,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca return DC_STATUS_DATAFORMAT; } sample.gasmix = parser->gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); } // Events @@ -608,7 +608,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca seconds = data[offset + 1]; sample.event.type = SAMPLE_EVENT_SURFACE; sample.event.time = seconds; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); offset += 2; break; case 0x03: // Event @@ -714,7 +714,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca sample.event.flags = SAMPLE_FLAGS_BEGIN; sample.event.time = seconds; if (sample.event.type != SAMPLE_EVENT_NONE) { - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } offset += 2; break; @@ -734,7 +734,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca sample.event.value = heading / 2; } sample.event.time = seconds; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); offset += 4; break; case 0x05: // Gas Change @@ -750,7 +750,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca return DC_STATUS_DATAFORMAT; } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); offset += 2; break; case 0x06: // Gas Change @@ -784,10 +784,10 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca return DC_STATUS_DATAFORMAT; } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); if (type & 0x80) { sample.setpoint = ppo2 / 10.0; - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); } offset += length; break; @@ -813,7 +813,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca sample.deco.time = 0; sample.deco.depth = 0.0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); time += interval_sample; nsamples++; diff --git a/src/suunto_eon_parser.c b/src/suunto_eon_parser.c index 77879d1..9bfadda 100644 --- a/src/suunto_eon_parser.c +++ b/src/suunto_eon_parser.c @@ -275,15 +275,15 @@ suunto_eon_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c // Time sample.time = 0; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (0 ft) sample.depth = 0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Initial gas mix. sample.gasmix = 0; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); unsigned int depth = 0; unsigned int time = 0; @@ -297,7 +297,7 @@ suunto_eon_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); complete = 0; } @@ -307,7 +307,7 @@ suunto_eon_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c // Depth (ft). sample.depth = depth * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); complete = 1; } else { @@ -335,7 +335,7 @@ suunto_eon_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c } if (sample.event.type != SAMPLE_EVENT_NONE) { - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } } @@ -344,12 +344,12 @@ suunto_eon_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c if (complete) { time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); } // Depth (0 ft) sample.depth = 0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); return DC_STATUS_SUCCESS; } diff --git a/src/suunto_eonsteel_parser.c b/src/suunto_eonsteel_parser.c index d7ab999..5c5c328 100644 --- a/src/suunto_eonsteel_parser.c +++ b/src/suunto_eonsteel_parser.c @@ -476,7 +476,7 @@ static void sample_time(struct sample_data *info, unsigned short time_delta) info->time += time_delta; sample.time = info->time; - if (info->callback) info->callback(DC_SAMPLE_TIME, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_TIME, &sample, info->userdata); } static void sample_depth(struct sample_data *info, unsigned short depth) @@ -487,7 +487,7 @@ static void sample_depth(struct sample_data *info, unsigned short depth) return; sample.depth = depth / 100.0; - if (info->callback) info->callback(DC_SAMPLE_DEPTH, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_DEPTH, &sample, info->userdata); } static void sample_temp(struct sample_data *info, short temp) @@ -498,7 +498,7 @@ static void sample_temp(struct sample_data *info, short temp) return; sample.temperature = temp / 10.0; - if (info->callback) info->callback(DC_SAMPLE_TEMPERATURE, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_TEMPERATURE, &sample, info->userdata); } static void sample_ndl(struct sample_data *info, short ndl) @@ -512,7 +512,7 @@ static void sample_ndl(struct sample_data *info, short ndl) sample.deco.type = DC_DECO_NDL; sample.deco.time = ndl; sample.deco.tts = 0; - if (info->callback) info->callback(DC_SAMPLE_DECO, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_DECO, &sample, info->userdata); } static void sample_tts(struct sample_data *info, unsigned short tts) @@ -536,7 +536,7 @@ static void sample_heading(struct sample_data *info, unsigned short heading) sample.event.type = SAMPLE_EVENT_HEADING; sample.event.value = heading; - if (info->callback) info->callback(DC_SAMPLE_EVENT, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_EVENT, &sample, info->userdata); } static void sample_abspressure(struct sample_data *info, unsigned short pressure) @@ -551,7 +551,7 @@ static void sample_gastime(struct sample_data *info, short gastime) return; sample.rbt = gastime / 60; - if (info->callback) info->callback (DC_SAMPLE_RBT, sample, info->userdata); + if (info->callback) info->callback (DC_SAMPLE_RBT, &sample, info->userdata); } /* @@ -579,7 +579,7 @@ static void sample_pressure(struct sample_data *info, unsigned short pressure) sample.pressure.tank = info->gasnr-1; sample.pressure.value = pressure / 100.0; - if (info->callback) info->callback(DC_SAMPLE_PRESSURE, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_PRESSURE, &sample, info->userdata); } static void sample_bookmark_event(struct sample_data *info, unsigned short idx) @@ -589,7 +589,7 @@ static void sample_bookmark_event(struct sample_data *info, unsigned short idx) sample.event.type = SAMPLE_EVENT_BOOKMARK; sample.event.value = idx; - if (info->callback) info->callback(DC_SAMPLE_EVENT, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_EVENT, &sample, info->userdata); } static void sample_gas_switch_event(struct sample_data *info, unsigned short idx) @@ -601,7 +601,7 @@ static void sample_gas_switch_event(struct sample_data *info, unsigned short idx return; sample.gasmix = idx - 1; - if (info->callback) info->callback(DC_SAMPLE_GASMIX, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_GASMIX, &sample, info->userdata); } /* @@ -701,7 +701,7 @@ static void sample_event_state_value(const struct type_desc *desc, struct sample return; sample.event.flags = value ? SAMPLE_FLAGS_BEGIN : SAMPLE_FLAGS_END; - if (info->callback) info->callback(DC_SAMPLE_EVENT, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_EVENT, &sample, info->userdata); } static void sample_event_notify_type(const struct type_desc *desc, struct sample_data *info, unsigned char type) @@ -743,7 +743,7 @@ static void sample_event_notify_value(const struct type_desc *desc, struct sampl return; sample.event.flags = value ? SAMPLE_FLAGS_BEGIN : SAMPLE_FLAGS_END; - if (info->callback) info->callback(DC_SAMPLE_EVENT, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_EVENT, &sample, info->userdata); } @@ -783,7 +783,7 @@ static void sample_event_warning_value(const struct type_desc *desc, struct samp return; sample.event.flags = value ? SAMPLE_FLAGS_BEGIN : SAMPLE_FLAGS_END; - if (info->callback) info->callback(DC_SAMPLE_EVENT, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_EVENT, &sample, info->userdata); } static void sample_event_alarm_type(const struct type_desc *desc, struct sample_data *info, unsigned char type) @@ -816,7 +816,7 @@ static void sample_event_alarm_value(const struct type_desc *desc, struct sample return; sample.event.flags = value ? SAMPLE_FLAGS_BEGIN : SAMPLE_FLAGS_END; - if (info->callback) info->callback(DC_SAMPLE_EVENT, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_EVENT, &sample, info->userdata); } // enum:0=Low,1=High,2=Custom @@ -842,7 +842,7 @@ static void sample_setpoint_type(const struct type_desc *desc, struct sample_dat return; } - if (info->callback) info->callback(DC_SAMPLE_SETPOINT, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_SETPOINT, &sample, info->userdata); free(type); } @@ -1001,7 +1001,7 @@ static int traverse_samples(unsigned short type, const struct type_desc *desc, c sample.deco.time = 0; sample.deco.depth = info->ceiling; sample.deco.tts = info->tts; - if (info->callback) info->callback(DC_SAMPLE_DECO, sample, info->userdata); + if (info->callback) info->callback(DC_SAMPLE_DECO, &sample, info->userdata); } // Warn if there are left-over bytes for something we did use part of diff --git a/src/suunto_solution_parser.c b/src/suunto_solution_parser.c index 1ec82f3..f8320aa 100644 --- a/src/suunto_solution_parser.c +++ b/src/suunto_solution_parser.c @@ -185,7 +185,7 @@ suunto_solution_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac // Time (minutes). time += 3 * 60; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (ft). depth += (signed char) value; @@ -198,12 +198,12 @@ suunto_solution_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac depth += (signed char) data[offset++]; } sample.depth = depth * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Gas change. if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } } else { @@ -228,7 +228,7 @@ suunto_solution_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callbac } if (sample.event.type != SAMPLE_EVENT_NONE) { - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } } diff --git a/src/suunto_vyper_parser.c b/src/suunto_vyper_parser.c index 8fab31b..fe9bfe2 100644 --- a/src/suunto_vyper_parser.c +++ b/src/suunto_vyper_parser.c @@ -332,16 +332,16 @@ suunto_vyper_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Time sample.time = 0; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (0 ft) sample.depth = 0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Initial gas mix if (!gauge) { sample.gasmix = 0; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); } unsigned int depth = 0; @@ -356,7 +356,7 @@ suunto_vyper_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); complete = 0; } @@ -366,7 +366,7 @@ suunto_vyper_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t // Depth (ft). sample.depth = depth * FEET; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); complete = 1; } else { @@ -410,7 +410,7 @@ suunto_vyper_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); sample.event.type = SAMPLE_EVENT_NONE; break; default: // Unknown @@ -419,7 +419,7 @@ suunto_vyper_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t } if (sample.event.type != SAMPLE_EVENT_NONE) { - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } } @@ -428,12 +428,12 @@ suunto_vyper_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t if (complete) { time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); } // Depth (0 ft) sample.depth = 0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); return DC_STATUS_SUCCESS; } diff --git a/src/tecdiving_divecomputereu_parser.c b/src/tecdiving_divecomputereu_parser.c index ccfbb05..b0f1552 100644 --- a/src/tecdiving_divecomputereu_parser.c +++ b/src/tecdiving_divecomputereu_parser.c @@ -160,28 +160,28 @@ tecdiving_divecomputereu_parser_samples_foreach (dc_parser_t *abstract, dc_sampl // Time (seconds). time += interval; sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (1/10 m). unsigned int depth = array_uint16_be (data + offset + 2); sample.depth = depth / 10.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Temperature (Celsius). signed int temperature = (signed char) data[offset]; sample.temperature = temperature; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); // ppO2 unsigned int ppo2 = data[offset + 1]; sample.ppo2.sensor = DC_SENSOR_NONE; sample.ppo2.value = ppo2 / 10.0; - if (callback) callback (DC_SAMPLE_PPO2, sample, userdata); + if (callback) callback (DC_SAMPLE_PPO2, &sample, userdata); // Setpoint unsigned int setpoint = data[offset + 4]; sample.setpoint = setpoint / 10.0; - if (callback) callback (DC_SAMPLE_SETPOINT, sample, userdata); + if (callback) callback (DC_SAMPLE_SETPOINT, &sample, userdata); offset += 8; } diff --git a/src/uwatec_memomouse_parser.c b/src/uwatec_memomouse_parser.c index 0e55b4d..7b28396 100644 --- a/src/uwatec_memomouse_parser.c +++ b/src/uwatec_memomouse_parser.c @@ -253,16 +253,16 @@ uwatec_memomouse_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba // Time (seconds) sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); // Depth (meters) sample.depth = depth * 10.0 / 64.0; - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); // Gas change. if (gasmix != gasmix_previous) { sample.gasmix = gasmix; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } @@ -275,7 +275,7 @@ uwatec_memomouse_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba sample.deco.time = 0; sample.deco.depth = 0.0; sample.deco.tts = 0; - if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + if (callback) callback (DC_SAMPLE_DECO, &sample, userdata); // Warnings for (unsigned int i = 0; i < 6; ++i) { @@ -304,7 +304,7 @@ uwatec_memomouse_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba break; } if (sample.event.type != SAMPLE_EVENT_NONE) { - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } } } @@ -328,7 +328,7 @@ uwatec_memomouse_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba offset++; } - if (callback) callback (DC_SAMPLE_VENDOR, sample, userdata); + if (callback) callback (DC_SAMPLE_VENDOR, &sample, userdata); } time += 20; diff --git a/src/uwatec_smart_parser.c b/src/uwatec_smart_parser.c index 017c10b..d98801b 100644 --- a/src/uwatec_smart_parser.c +++ b/src/uwatec_smart_parser.c @@ -1165,7 +1165,7 @@ uwatec_smart_parse (uwatec_smart_parser_t *parser, dc_sample_callback_t callback while (complete) { sample.time = time * 1000; - if (callback) callback (DC_SAMPLE_TIME, sample, userdata); + if (callback) callback (DC_SAMPLE_TIME, &sample, userdata); if (parser->ngasmixes && gasmix != gasmix_previous) { idx = uwatec_smart_find_gasmix (parser, gasmix); @@ -1174,13 +1174,13 @@ uwatec_smart_parse (uwatec_smart_parser_t *parser, dc_sample_callback_t callback return DC_STATUS_DATAFORMAT; } sample.gasmix = idx; - if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + if (callback) callback (DC_SAMPLE_GASMIX, &sample, userdata); gasmix_previous = gasmix; } if (have_temperature) { sample.temperature = temperature / 2.5; - if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata); + if (callback) callback (DC_SAMPLE_TEMPERATURE, &sample, userdata); } if (bookmark) { @@ -1188,12 +1188,12 @@ uwatec_smart_parse (uwatec_smart_parser_t *parser, dc_sample_callback_t callback sample.event.time = 0; sample.event.flags = 0; sample.event.value = 0; - if (callback) callback (DC_SAMPLE_EVENT, sample, userdata); + if (callback) callback (DC_SAMPLE_EVENT, &sample, userdata); } if (have_rbt || have_pressure) { sample.rbt = rbt; - if (callback) callback (DC_SAMPLE_RBT, sample, userdata); + if (callback) callback (DC_SAMPLE_RBT, &sample, userdata); } if (have_pressure) { @@ -1201,24 +1201,24 @@ uwatec_smart_parse (uwatec_smart_parser_t *parser, dc_sample_callback_t callback if (idx < parser->ntanks) { sample.pressure.tank = idx; sample.pressure.value = pressure / 4.0; - if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + if (callback) callback (DC_SAMPLE_PRESSURE, &sample, userdata); } } if (have_heartrate) { sample.heartbeat = heartrate; - if (callback) callback (DC_SAMPLE_HEARTBEAT, sample, userdata); + if (callback) callback (DC_SAMPLE_HEARTBEAT, &sample, userdata); } if (have_bearing) { sample.bearing = bearing; - if (callback) callback (DC_SAMPLE_BEARING, sample, userdata); + if (callback) callback (DC_SAMPLE_BEARING, &sample, userdata); have_bearing = 0; } if (have_depth) { sample.depth = (signed int)(depth - depth_calibration) * (2.0 * BAR / 1000.0) / (density * 10.0); - if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + if (callback) callback (DC_SAMPLE_DEPTH, &sample, userdata); } time += interval;