static void save_dive_temperature(struct membuffer *b, struct dive *dive) { if (dive->airtemp.mkelvin != dc_airtemp(&dive->dc)) put_temperature(b, dive->airtemp, "airtemp ", "°C\n"); if (dive->watertemp.mkelvin != dc_watertemp(&dive->dc)) put_temperature(b, dive->watertemp, "watertemp ", "°C\n"); }
static void save_temperatures(struct membuffer *b, struct divecomputer *dc) { if (!dc->airtemp.mkelvin && !dc->watertemp.mkelvin) return; put_string(b, " <temperature"); put_temperature(b, dc->airtemp, " air='", " C'"); put_temperature(b, dc->watertemp, " water='", " C'"); put_string(b, " />\n"); }
static void save_dive_temperature(struct membuffer *b, struct dive *dive) { if (!dive->airtemp.mkelvin && !dive->watertemp.mkelvin) return; if (dive->airtemp.mkelvin == dc_airtemp(&dive->dc) && dive->watertemp.mkelvin == dc_watertemp(&dive->dc)) return; put_string(b, " <divetemperature"); if (dive->airtemp.mkelvin != dc_airtemp(&dive->dc)) put_temperature(b, dive->airtemp, " air='", " C'"); if (dive->watertemp.mkelvin != dc_watertemp(&dive->dc)) put_temperature(b, dive->watertemp, " water='", " C'"); put_string(b, "/>\n"); }
/* * Samples are saved as densely as possible while still being readable, * since they are the bulk of the data. * * For parsing, look at the units to figure out what the numbers are. */ static void save_sample(struct membuffer *b, struct sample *sample, struct sample *old) { put_format(b, "%3u:%02u", FRACTION(sample->time.seconds, 60)); put_milli(b, " ", sample->depth.mm, "m"); put_temperature(b, sample->temperature, " ", "°C"); put_pressure(b, sample->cylinderpressure, " ", "bar"); /* * We only show sensor information for samples with pressure, and only if it * changed from the previous sensor we showed. */ if (sample->cylinderpressure.mbar && sample->sensor != old->sensor) { put_format(b, " sensor=%d", sample->sensor); old->sensor = sample->sensor; } /* the deco/ndl values are stored whenever they change */ if (sample->ndl.seconds != old->ndl.seconds) { put_format(b, " ndl=%u:%02u", FRACTION(sample->ndl.seconds, 60)); old->ndl = sample->ndl; } if (sample->in_deco != old->in_deco) { put_format(b, " in_deco=%d", sample->in_deco ? 1 : 0); old->in_deco = sample->in_deco; } if (sample->stoptime.seconds != old->stoptime.seconds) { put_format(b, " stoptime=%u:%02u", FRACTION(sample->stoptime.seconds, 60)); old->stoptime = sample->stoptime; } if (sample->stopdepth.mm != old->stopdepth.mm) { put_milli(b, " stopdepth=", sample->stopdepth.mm, "m"); old->stopdepth = sample->stopdepth; } if (sample->cns != old->cns) { put_format(b, " cns=%u%%", sample->cns); old->cns = sample->cns; } if (sample->po2.mbar != old->po2.mbar) { put_milli(b, " po2=", sample->po2.mbar, "bar"); old->po2 = sample->po2; } show_index(b, sample->heartbeat, "heartbeat=", ""); show_index(b, sample->bearing.degrees, "bearing=", "°"); put_format(b, "\n"); }
static void save_sample(struct membuffer *b, struct sample *sample, struct sample *old) { put_format(b, " <sample time='%u:%02u min'", FRACTION(sample->time.seconds, 60)); put_milli(b, " depth='", sample->depth.mm, " m'"); put_temperature(b, sample->temperature, " temp='", " C'"); put_pressure(b, sample->cylinderpressure, " pressure='", " bar'"); /* * We only show sensor information for samples with pressure, and only if it * changed from the previous sensor we showed. */ if (sample->cylinderpressure.mbar && sample->sensor != old->sensor) { put_format(b, " sensor='%d'", sample->sensor); old->sensor = sample->sensor; } /* the deco/ndl values are stored whenever they change */ if (sample->ndl.seconds != old->ndl.seconds) { put_format(b, " ndl='%u:%02u min'", FRACTION(sample->ndl.seconds, 60)); old->ndl = sample->ndl; } if (sample->in_deco != old->in_deco) { put_format(b, " in_deco='%d'", sample->in_deco ? 1 : 0); old->in_deco = sample->in_deco; } if (sample->stoptime.seconds != old->stoptime.seconds) { put_format(b, " stoptime='%u:%02u min'", FRACTION(sample->stoptime.seconds, 60)); old->stoptime = sample->stoptime; } if (sample->stopdepth.mm != old->stopdepth.mm) { put_milli(b, " stopdepth='", sample->stopdepth.mm, " m'"); old->stopdepth = sample->stopdepth; } if (sample->cns != old->cns) { put_format(b, " cns='%u%%'", sample->cns); old->cns = sample->cns; } if (sample->po2 != old->po2) { put_milli(b, " po2='", sample->po2, " bar'"); old->po2 = sample->po2; } show_index(b, sample->heartbeat, "heartbeat='", "'"); show_index(b, sample->bearing, "bearing='", "'"); put_format(b, " />\n"); }
static void save_temperatures(struct membuffer *b, struct divecomputer *dc) { put_temperature(b, dc->airtemp, "airtemp ", "°C\n"); put_temperature(b, dc->watertemp, "watertemp ", "°C\n"); }
static void save_sample(struct membuffer *b, struct sample *sample, struct sample *old) { put_format(b, " <sample time='%u:%02u min'", FRACTION(sample->time.seconds, 60)); put_milli(b, " depth='", sample->depth.mm, " m'"); if (sample->temperature.mkelvin && sample->temperature.mkelvin != old->temperature.mkelvin) { put_temperature(b, sample->temperature, " temp='", " C'"); old->temperature = sample->temperature; } put_pressure(b, sample->cylinderpressure, " pressure='", " bar'"); put_pressure(b, sample->o2cylinderpressure, " o2pressure='", " bar'"); /* * We only show sensor information for samples with pressure, and only if it * changed from the previous sensor we showed. */ if (sample->cylinderpressure.mbar && sample->sensor != old->sensor) { put_format(b, " sensor='%d'", sample->sensor); old->sensor = sample->sensor; } /* the deco/ndl values are stored whenever they change */ if (sample->ndl.seconds != old->ndl.seconds) { put_format(b, " ndl='%u:%02u min'", FRACTION(sample->ndl.seconds, 60)); old->ndl = sample->ndl; } if (sample->tts.seconds != old->tts.seconds) { put_format(b, " tts='%u:%02u min'", FRACTION(sample->tts.seconds, 60)); old->tts = sample->tts; } if (sample->rbt.seconds) put_format(b, " rbt='%u:%02u min'", FRACTION(sample->rbt.seconds, 60)); if (sample->in_deco != old->in_deco) { put_format(b, " in_deco='%d'", sample->in_deco ? 1 : 0); old->in_deco = sample->in_deco; } if (sample->stoptime.seconds != old->stoptime.seconds) { put_format(b, " stoptime='%u:%02u min'", FRACTION(sample->stoptime.seconds, 60)); old->stoptime = sample->stoptime; } if (sample->stopdepth.mm != old->stopdepth.mm) { put_milli(b, " stopdepth='", sample->stopdepth.mm, " m'"); old->stopdepth = sample->stopdepth; } if (sample->cns != old->cns) { put_format(b, " cns='%u%%'", sample->cns); old->cns = sample->cns; } if ((sample->o2sensor[0].mbar) && (sample->o2sensor[0].mbar != old->o2sensor[0].mbar)) { put_milli(b, " sensor1='", sample->o2sensor[0].mbar, " bar'"); old->o2sensor[0] = sample->o2sensor[0]; } if ((sample->o2sensor[1].mbar) && (sample->o2sensor[1].mbar != old->o2sensor[1].mbar)) { put_milli(b, " sensor2='", sample->o2sensor[1].mbar, " bar'"); old->o2sensor[1] = sample->o2sensor[1]; } if ((sample->o2sensor[2].mbar) && (sample->o2sensor[2].mbar != old->o2sensor[2].mbar)) { put_milli(b, " sensor3='", sample->o2sensor[2].mbar, " bar'"); old->o2sensor[2] = sample->o2sensor[2]; } if (sample->setpoint.mbar != old->setpoint.mbar) { put_milli(b, " po2='", sample->setpoint.mbar, " bar'"); old->setpoint = sample->setpoint; } show_index(b, sample->heartbeat, "heartbeat='", "'"); show_index(b, sample->bearing.degrees, "bearing='", "'"); put_format(b, " />\n"); }