diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-17 14:00:28 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-02-10 07:03:24 -0800 |
commit | 22f66501ac4075084c0fd1d0b0d943aa92df1306 (patch) | |
tree | 8dedaff461f109d531f45c7e6045ec54585e4975 | |
parent | b88958ded55f6d437e74e6c753574128351ad257 (diff) | |
download | subsurface-22f66501ac4075084c0fd1d0b0d943aa92df1306.tar.gz |
Add support for heartrate and bearing information in samples
libdivecomputer already supports this, but we didn't save it.
Tested-by: Oscar Isoz <jan.oscar.isoz@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | dive.h | 2 | ||||
-rw-r--r-- | libdivecomputer.c | 4 | ||||
-rw-r--r-- | parse-xml.c | 4 | ||||
-rw-r--r-- | profile.c | 10 | ||||
-rw-r--r-- | profile.h | 2 | ||||
-rw-r--r-- | save-xml.c | 2 |
6 files changed, 22 insertions, 2 deletions
@@ -268,6 +268,8 @@ struct sample { bool in_deco; int cns; int po2; + int heartbeat; + int bearing; }; struct divetag { diff --git a/libdivecomputer.c b/libdivecomputer.c index 3e4af4935..b3cc1d5f7 100644 --- a/libdivecomputer.c +++ b/libdivecomputer.c @@ -220,10 +220,10 @@ sample_cb(dc_sample_type_t type, dc_sample_value_t value, void *userdata) printf(" <rbt>%u</rbt>\n", value.rbt); break; case DC_SAMPLE_HEARTBEAT: - printf(" <heartbeat>%u</heartbeat>\n", value.heartbeat); + sample->heartbeat = value.heartbeat; break; case DC_SAMPLE_BEARING: - printf(" <bearing>%u</bearing>\n", value.bearing); + sample->bearing = value.bearing; break; case DC_SAMPLE_VENDOR: printf(" <vendor time='%u:%02u' type=\"%u\" size=\"%u\">", FRACTION(sample->time.seconds, 60), diff --git a/parse-xml.c b/parse-xml.c index 1d88ab6b7..f5859ba74 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -853,6 +853,10 @@ static void try_to_fill_sample(struct sample *sample, const char *name, char *bu return; if (MATCH("po2.sample", double_to_permil, &sample->po2)) return; + if (MATCH("heartbeat", get_index, &sample->heartbeat)) + return; + if (MATCH("bearing", get_index, &sample->bearing)) + return; switch (import_source) { case DIVINGLOG: @@ -918,6 +918,8 @@ struct plot_data *populate_plot_entries(struct dive *dive, struct divecomputer * entry->temperature = lasttemp = sample->temperature.mkelvin; else entry->temperature = lasttemp; + entry->heartbeat = sample->heartbeat; + entry->bearing = sample->bearing; lasttime = time; lastdepth = depth; @@ -1520,6 +1522,14 @@ static void plot_string(struct plot_data *entry, char *buf, int bufsize, } } } + if (entry->heartbeat) { + memcpy(buf2, buf, bufsize); + snprintf(buf, bufsize, translate("gettextFromC","%s\nheartbeat:%d"), buf2, entry->heartbeat); + } + if (entry->bearing) { + memcpy(buf2, buf, bufsize); + snprintf(buf, bufsize, translate("gettextFromC","%s\nbearing:%d"), buf2, entry->bearing); + } free(buf2); } @@ -42,6 +42,8 @@ struct plot_data { int stoptime_calc; int stopdepth_calc; int pressure_time; + int heartbeat; + int bearing; }; //TODO: remove the calculatE_max_limits as soon as the new profile is done. void calculate_max_limits(struct dive *dive, struct divecomputer *dc, struct graphics_context *gc); diff --git a/save-xml.c b/save-xml.c index 374632624..7eba7165c 100644 --- a/save-xml.c +++ b/save-xml.c @@ -330,6 +330,8 @@ static void save_sample(struct membuffer *b, struct sample *sample, struct sampl 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"); } |