/* We're in samples - try to convert the random xml value to something useful */ static void try_to_fill_sample(struct sample *sample, const char *name, char *buf) { int len = strlen(name); int in_deco; start_match("sample", name, buf); if (MATCH(".sample.pressure", pressure, &sample->cylinderpressure)) return; if (MATCH(".sample.cylpress", pressure, &sample->cylinderpressure)) return; if (MATCH(".sample.cylinderindex", get_cylinderindex, &sample->sensor)) return; if (MATCH(".sample.sensor", get_sensor, &sample->sensor)) return; if (MATCH(".sample.depth", depth, &sample->depth)) return; if (MATCH(".sample.temp", temperature, &sample->temperature)) return; if (MATCH(".sample.temperature", temperature, &sample->temperature)) return; if (MATCH(".sample.sampletime", sampletime, &sample->time)) return; if (MATCH(".sample.time", sampletime, &sample->time)) return; if (MATCH(".sample.ndl", sampletime, &sample->ndl)) return; if (MATCH(".sample.in_deco", get_index, &in_deco)) { sample->in_deco = (in_deco == 1); return; } if (MATCH(".sample.stoptime", sampletime, &sample->stoptime)) return; if (MATCH(".sample.stopdepth", depth, &sample->stopdepth)) return; if (MATCH(".sample.cns", get_index, &sample->cns)) return; if (MATCH(".sample.po2", double_to_permil, &sample->po2)) return; switch (import_source) { case DIVINGLOG: if (divinglog_fill_sample(sample, name, len, buf)) return; break; case UDDF: if (uddf_fill_sample(sample, name, len, buf)) return; break; default: break; } nonmatch("sample", name, buf); }
static void try_to_match_autogroup(const char *name, char *buf) { int len = strlen(name); int autogroupvalue; start_match("autogroup", name, buf); if (MATCH(".autogroup.state", get_index, &autogroupvalue)) { set_autogroup(autogroupvalue); return; } nonmatch("autogroup", name, buf); }
static void try_to_fill_event(const char *name, char *buf) { int len = strlen(name); start_match("event", name, buf); if (MATCH(".event", utf8_string, &event.name)) return; if (MATCH(".name", utf8_string, &event.name)) return; if (MATCH(".time", eventtime, &event.time)) return; if (MATCH(".type", get_index, &event.type)) return; if (MATCH(".flags", get_index, &event.flags)) return; nonmatch("event", name, buf); }
static void try_to_fill_dc_settings(const char *name, char *buf) { int len = strlen(name); start_match("divecomputerid", name, buf); if (MATCH("divecomputerid.model", utf8_string, &cur_settings.dc.model)) return; if (MATCH("divecomputerid.deviceid", hex_value, &cur_settings.dc.deviceid)) return; if (MATCH("divecomputerid.nickname", utf8_string, &cur_settings.dc.nickname)) return; if (MATCH("divecomputerid.serial", utf8_string, &cur_settings.dc.serial_nr)) return; if (MATCH("divecomputerid.firmware", utf8_string, &cur_settings.dc.firmware)) return; nonmatch("divecomputerid", name, buf); }
/* We're in samples - try to convert the random xml value to something useful */ static void try_to_fill_sample(struct sample *sample, const char *name, char *buf) { int len = strlen(name); start_match("sample", name, buf); if (MATCH(".sample.pressure", pressure, &sample->cylinderpressure)) return; if (MATCH(".sample.cylpress", pressure, &sample->cylinderpressure)) return; if (MATCH(".sample.cylinderindex", get_index, &sample->cylinderindex)) return; if (MATCH(".sample.depth", depth, &sample->depth)) return; if (MATCH(".sample.temp", temperature, &sample->temperature)) return; if (MATCH(".sample.temperature", temperature, &sample->temperature)) return; if (MATCH(".sample.sampletime", sampletime, &sample->time)) return; if (MATCH(".sample.time", sampletime, &sample->time)) return; switch (import_source) { case UEMIS: if (uemis_fill_sample(sample, name, len, buf)) return; break; case DIVINGLOG: if (divinglog_fill_sample(sample, name, len, buf)) return; break; case UDDF: if (uddf_fill_sample(sample, name, len, buf)) return; break; default: break; } nonmatch("sample", name, buf); }
/* We're in the top-level trip xml. Try to convert whatever value to a trip value */ static void try_to_fill_trip(dive_trip_t **dive_trip_p, const char *name, char *buf) { int len = strlen(name); start_match("trip", name, buf); dive_trip_t *dive_trip = *dive_trip_p; if (MATCH(".date", divedate, &dive_trip->when)) return; if (MATCH(".time", divetime, &dive_trip->when)) return; if (MATCH(".location", utf8_string, &dive_trip->location)) return; if (MATCH(".notes", utf8_string, &dive_trip->notes)) return; nonmatch("trip", name, buf); }
/* We're in the top-level dive xml. Try to convert whatever value to a dive value */ static void try_to_fill_dc(struct divecomputer *dc, const char *name, char *buf) { int len = strlen(name); start_match("divecomputer", name, buf); if (MATCH(".date", divedate, &dc->when)) return; if (MATCH(".time", divetime, &dc->when)) return; if (MATCH(".model", utf8_string, &dc->model)) return; if (MATCH(".deviceid", hex_value, &dc->deviceid)) return; if (MATCH(".diveid", hex_value, &dc->diveid)) return; if (match_dc_data_fields(dc, name, len, buf)) return; nonmatch("divecomputer", name, buf); }
/* We're in the top-level dive xml. Try to convert whatever value to a dive value */ static void try_to_fill_dive(struct dive *dive, const char *name, char *buf) { int len = strlen(name); start_match("dive", name, buf); switch (import_source) { case DIVINGLOG: if (divinglog_dive_match(dive, name, len, buf)) return; break; case UDDF: if (uddf_dive_match(dive, name, len, buf)) return; break; default: break; } if (MATCH(".number", get_index, &dive->number)) return; if (MATCH(".tripflag", get_tripflag, &dive->tripflag)) return; if (MATCH(".date", divedate, &dive->when)) return; if (MATCH(".time", divetime, &dive->when)) return; if (MATCH(".datetime", divedatetime, &dive->when)) return; /* * Legacy format note: per-dive depths and duration get saved * in the first dive computer entry */ if (match_dc_data_fields(&dive->dc, name, len, buf)) return; if (MATCH(".cylinderstartpressure", pressure, &dive->cylinder[0].start)) return; if (MATCH(".cylinderendpressure", pressure, &dive->cylinder[0].end)) return; if (MATCH(".gps", gps_location, dive)) return; if (MATCH(".Place", gps_location, dive)) return; if (MATCH(".latitude", gps_lat, dive)) return; if (MATCH(".sitelat", gps_lat, dive)) return; if (MATCH(".lat", gps_lat, dive)) return; if (MATCH(".longitude", gps_long, dive)) return; if (MATCH(".sitelon", gps_long, dive)) return; if (MATCH(".lon", gps_long, dive)) return; if (MATCH(".location", utf8_string, &dive->location)) return; if (MATCH("dive.name", utf8_string, &dive->location)) return; if (MATCH(".suit", utf8_string, &dive->suit)) return; if (MATCH(".divesuit", utf8_string, &dive->suit)) return; if (MATCH(".notes", utf8_string, &dive->notes)) return; if (MATCH(".divemaster", utf8_string, &dive->divemaster)) return; if (MATCH(".buddy", utf8_string, &dive->buddy)) return; if (MATCH("dive.rating", get_rating, &dive->rating)) return; if (MATCH("dive.visibility", get_rating, &dive->visibility)) return; if (MATCH(".cylinder.size", cylindersize, &dive->cylinder[cur_cylinder_index].type.size)) return; if (MATCH(".cylinder.workpressure", pressure, &dive->cylinder[cur_cylinder_index].type.workingpressure)) return; if (MATCH(".cylinder.description", utf8_string, &dive->cylinder[cur_cylinder_index].type.description)) return; if (MATCH(".cylinder.start", pressure, &dive->cylinder[cur_cylinder_index].start)) return; if (MATCH(".cylinder.end", pressure, &dive->cylinder[cur_cylinder_index].end)) return; if (MATCH(".weightsystem.description", utf8_string, &dive->weightsystem[cur_ws_index].description)) return; if (MATCH(".weightsystem.weight", weight, &dive->weightsystem[cur_ws_index].weight)) return; if (MATCH("weight", weight, &dive->weightsystem[cur_ws_index].weight)) return; if (MATCH(".o2", gasmix, &dive->cylinder[cur_cylinder_index].gasmix.o2)) return; if (MATCH(".o2percent", gasmix, &dive->cylinder[cur_cylinder_index].gasmix.o2)) return; if (MATCH(".n2", gasmix_nitrogen, &dive->cylinder[cur_cylinder_index].gasmix)) return; if (MATCH(".he", gasmix, &dive->cylinder[cur_cylinder_index].gasmix.he)) return; if (MATCH(".divetemperature.air", temperature, &dive->airtemp)) return; nonmatch("dive", name, buf); }