static void save_cylinder_info(struct membuffer *b, struct dive *dive) { int i, nr; nr = nr_cylinders(dive); for (i = 0; i < nr; i++) { cylinder_t *cylinder = dive->cylinder + i; int volume = cylinder->type.size.mliter; const char *description = cylinder->type.description; int o2 = cylinder->gasmix.o2.permille; int he = cylinder->gasmix.he.permille; put_string(b, "cylinder"); if (volume) put_milli(b, " vol=", volume, "l"); put_pressure(b, cylinder->type.workingpressure, " workpressure=", "bar"); show_utf8(b, " description=", description, ""); strip_mb(b); if (o2) { put_format(b, " o2=%u.%u%%", FRACTION(o2, 10)); if (he) put_format(b, " he=%u.%u%%", FRACTION(he, 10)); } put_pressure(b, cylinder->start, " start=", "bar"); put_pressure(b, cylinder->end, " end=", "bar"); put_string(b, "\n"); } }
static void save_airpressure(struct membuffer *b, struct divecomputer *dc) { if (!dc->surface_pressure.mbar) return; put_string(b, " <surface"); put_pressure(b, dc->surface_pressure, " pressure='", " bar'"); put_string(b, " />\n"); }
static void save_cylinder_info(struct membuffer *b, struct dive *dive) { int i, nr; nr = nr_cylinders(dive); for (i = 0; i < nr; i++) { cylinder_t *cylinder = dive->cylinder + i; int volume = cylinder->type.size.mliter; const char *description = cylinder->type.description; put_format(b, " <cylinder"); if (volume) put_milli(b, " size='", volume, " l'"); put_pressure(b, cylinder->type.workingpressure, " workpressure='", " bar'"); show_utf8(b, description, " description='", "'", 1); put_gasmix(b, &cylinder->gasmix); put_pressure(b, cylinder->start, " start='", " bar'"); put_pressure(b, cylinder->end, " end='", " bar'"); if (cylinder->cylinder_use != OC_GAS) show_utf8(b, cylinderuse_text[cylinder->cylinder_use], " use='", "'", 1); put_format(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_airpressure(struct membuffer *b, struct divecomputer *dc) { put_pressure(b, dc->surface_pressure, "surfacepressure ", "bar\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"); }