summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2017-07-07 13:48:24 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-07-07 13:48:24 -0700
commited43b5dcedd150235cdc1ac5e5aedecb62f1c657 (patch)
tree1463c3869c91091c9e0f9411a4b2fb4cdad0ed54
parent4834f51a73cab52ff31c59b21b36744eb751687e (diff)
downloadsubsurface-ed43b5dcedd150235cdc1ac5e5aedecb62f1c657.tar.gz
Add support for tank sensor battery for Perdix AI
This is a bit awkward with a VENDOR event - but at the time the strings are generated, we don't have the information, yet, that we need to determine these values (we need the last sample parsed, but the strings are created as part of the dive headers. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--core/libdivecomputer.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/core/libdivecomputer.c b/core/libdivecomputer.c
index 388bb33c0..b548e3641 100644
--- a/core/libdivecomputer.c
+++ b/core/libdivecomputer.c
@@ -380,6 +380,51 @@ sample_cb(dc_sample_type_t type, dc_sample_value_t value, void *userdata)
case DC_SAMPLE_BEARING:
sample->bearing.degrees = value.bearing;
break;
+#if defined(SAMPLE_VENDOR_SHEARWATER_TRANSMITTERDATA)
+ case DC_SAMPLE_VENDOR:
+ if (value.vendor.type == SAMPLE_VENDOR_SHEARWATER_TRANSMITTERDATA && value.vendor.size == 2) {
+ // logversion 7 allows us to get a reading of the transmitter battery
+ // but that information is only available in the sample, so we use a
+ // vendor sample to get it out
+ char *str = NULL;
+ unsigned char *data = (char *)value.vendor.data;
+ if (data[0] != 0xF) {
+ switch (data[0]) {
+ case 0:
+ str = "normal";
+ break;
+ case 1:
+ str = "critical";
+ break;
+ case 2:
+ str = "warning";
+ break;
+ default:
+ str = "unknown";
+ break;
+ }
+ add_extra_data(dc, "T1 battery", str);
+ }
+ if (data[1] != 0xF) {
+ switch (data[1]) {
+ case 0:
+ str = "normal";
+ break;
+ case 1:
+ str = "critical";
+ break;
+ case 2:
+ str = "warning";
+ break;
+ default:
+ str = "unknown";
+ break;
+ }
+ add_extra_data(dc, "T2 battery", str);
+ }
+ }
+ break;
+#endif
#ifdef DEBUG_DC_VENDOR
case DC_SAMPLE_VENDOR:
printf(" <vendor time='%u:%02u' type=\"%u\" size=\"%u\">", FRACTION(sample->time.seconds, 60),