[Libdivecomputer PATCH] Correct firmware string for OSTC4
Anton Lundin
glance at acc.umu.se
Sun Jan 8 06:12:36 PST 2017
OSTC4 stores firmware in another format than OSTC3's.
Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
src/hw_ostc_parser.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c
index 5fef74c..67cf677 100644
--- a/src/hw_ostc_parser.c
+++ b/src/hw_ostc_parser.c
@@ -574,7 +574,19 @@ hw_ostc_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, unsigned
break;
case 2: /* firmware */
string->desc = "FW Version";
- snprintf(buf, BUFLEN, "%0u.%02u", data[layout->firmware], data[layout->firmware + 1]);
+ /* OSTC4 stores firmware as XXXX XYYY YYZZ ZZZB, -> X.Y.Z beta? */
+ if (parser->model == OSTC4) {
+ int firmwareOnDevice = array_uint16_le (data + layout->firmware);
+ unsigned char X = 0, Y = 0, Z = 0, beta = 0;
+ X = (firmwareOnDevice & 0xF800) >> 11;
+ Y = (firmwareOnDevice & 0x07C0) >> 6;
+ Z = (firmwareOnDevice & 0x003E) >> 1;
+ beta = firmwareOnDevice & 0x0001;
+
+ snprintf(buf, BUFLEN, "%u.%u.%u%s\n", X, Y, Z, beta? "beta": "");
+ } else {
+ snprintf(buf, BUFLEN, "%0u.%02u", data[layout->firmware], data[layout->firmware + 1]);
+ }
break;
case 3: /* serial */
string->desc = "Serial";
--
2.9.3
More information about the subsurface
mailing list