DC_PARSER_SAMPLES_FOREACH(3)

NAME
dc_parser_samples_foreach - iterate over samples taken during a dive

LIBRARY
libdivecomputer

SYNOPSIS
#include <libdivecomputer/parser.h>
typedef void
(*dc_sample_callback_t)(dc_sample_type_t type, dc_sample_value_t value, void *userdata);
dc_status_t
dc_parser_samples_foreach(dc_parser_t *parser, dc_sample_callback_t callback, void *userdata);

DESCRIPTION
Extract the samples taken during a dive as previously initialised with dc_parser_set_data(3). Each sample is passed to callback with the type of the sample and its data value.

Samples are invoked as a sequence of sample sets. Each sequence begins with a DC_SAMPLE_TIME, then a number of sample types in the set. When the next DC_SAMPLE_TIME is recorded, the sample set may be closed and a new one reopened. After all samples have been rendered, the last sample set should be closed.

The following sample types may be raised:

DC_SAMPLE_TIME
    The time of the sample taken in seconds after the dive began. Set in the time field.

DC_SAMPLE_DEPTH
    The depth taken at the sample in metres. Set in the depth field.

DC_SAMPLE_PRESSURE
    Tank pressure taken at the sample. Sets the tank index (see the DC_FIELD_TANK_COUNT in dc_parser_get_field(3)) and the pressure in bar.

DC_SAMPLE_TEMPERATURE
    Temperature in celsius. Sets the temperature field.

DC_SAMPLE_EVENT
    An diving event raised by the computer. This may have the type value of the event structure set to SAMPLE_EVENT_NONE, SAMPLE_EVENT_DECOSTOP, SAMPLE_EVENT_RBT, SAMPLE_EVENT_ASCENT, SAMPLE_EVENT_CEILING, SAMPLE_EVENT_WORKLOAD, SAMPLE_EVENT_TRANSMITTER, SAMPLE_EVENT_VIOLATION, SAMPLE_EVENT_BOOKMARK, SAMPLE_EVENT_SURFACE, SAMPLE_EVENT_SAFETYSTOP, SAMPLE_EVENT_SAFETYSTOP_VOLUNTARY, SAMPLE_EVENT_SAFETYSTOP_MANDATORY, SAMPLE_EVENT_DEEPSTOP, SAMPLE_EVENT_CEILING_SAFETYSTOP, SAMPLE_EVENT_FLOOR, SAMPLE_EVENT_DIVETIME, SAMPLE_EVENT_MAXDEPTH, SAMPLE_EVENT_OLF, SAMPLE_EVENT_PO2, SAMPLE_EVENT_AIRTIME, SAMPLE_EVENT_RGBM, SAMPLE_EVENT_HEADING, or SAMPLE_EVENT_TISSUELEVEL.

DC_SAMPLE_RBT
    The remaining bottom time in seconds. Sets the rbt field.

DC_SAMPLE_HEARTBEAT
    The diver's heartbeet in beats per minute. Sets the heartbeat field.

DC_SAMPLE_BEARING
    The diver's bearing in degrees. Sets the bearing field.

DC_SAMPLE_VENDOR
    A vendor-specific data field.

DC_SAMPLE_SETPOINT
    The closed-circuit setpoint (PO2) has changed. Sets the setpoint value in bar.

DC_SAMPLE_PPO2
    The partial pressure of oxygen has changed (in bar). Sets the ppo2 field.

DC_SAMPLE_CNS
    The CNS (central nervous system oxygen toxicity) value as a unit fraction. Sets the cns value.

DC_SAMPLE_DECO
    Decompression phase of type DC_DECO_NDL (no decompression limit), DC_DECO_SAFETYSTOP (the safety stop), DC_DECO_DECOSTOP (a decompression stop), or DC_DECO_DEEPSTOP (a mandatory or suggested deep-stop). Also sets the depth in metres and the time in seconds.

DC_SAMPLE_GASMIX
    Switch to a given gas mix index (see the DC_FIELD_GASMIX_COUNT in dc_parser_get_field(3)). Sets the gasmix field.

RETURN VALUES
Returns DC_STATUS_OK on success and another code on failure.

SEE ALSO
dc_parser_set_data(3)

AUTHORS
The libdivecomputer library was written by Jef Driesen, jef@libdivecomputer.org. The manpages were written by Kristaps Dzonsons, kristaps@bsd.lv.