summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2014-01-17 14:00:28 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-02-10 07:03:24 -0800
commit22f66501ac4075084c0fd1d0b0d943aa92df1306 (patch)
tree8dedaff461f109d531f45c7e6045ec54585e4975
parentb88958ded55f6d437e74e6c753574128351ad257 (diff)
downloadsubsurface-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.h2
-rw-r--r--libdivecomputer.c4
-rw-r--r--parse-xml.c4
-rw-r--r--profile.c10
-rw-r--r--profile.h2
-rw-r--r--save-xml.c2
6 files changed, 22 insertions, 2 deletions
diff --git a/dive.h b/dive.h
index bcaeda9d2..625ea4351 100644
--- a/dive.h
+++ b/dive.h
@@ -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:
diff --git a/profile.c b/profile.c
index f947b9d59..db8a89af8 100644
--- a/profile.c
+++ b/profile.c
@@ -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);
}
diff --git a/profile.h b/profile.h
index 6a6936dbe..ef81763bf 100644
--- a/profile.h
+++ b/profile.h
@@ -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");
}