summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--uemis.c3
-rw-r--r--uemis.h10
2 files changed, 10 insertions, 3 deletions
diff --git a/uemis.c b/uemis.c
index 06ef5b423..557c419f3 100644
--- a/uemis.c
+++ b/uemis.c
@@ -229,7 +229,8 @@ void uemis_parse_divelog_binary(char *base64, void *datap) {
sample->depth.mm = pressure_to_depth(u_sample->water_pressure);
sample->temperature.mkelvin = (u_sample->dive_temperature * 100) + 273150;
sample->cylinderindex = u_sample->active_tank;
- sample->cylinderpressure.mbar= u_sample->tank_pressure * 10;
+ sample->cylinderpressure.mbar =
+ (u_sample->tank_pressure_high * 256 + u_sample->tank_pressure_low) * 10;
uemis_event(dive, sample, u_sample);
finish_sample(dive);
i += 0x25;
diff --git a/uemis.h b/uemis.h
index ba9a23402..baa6783a4 100644
--- a/uemis.h
+++ b/uemis.h
@@ -24,8 +24,14 @@ typedef struct {
uint16_t hold_depth;
uint16_t hold_time;
uint8_t active_tank;
- uint16_t tank_pressure; // (in cbar)
- uint16_t consumption; // (units unclear)
+ // bloody glib, when compiled for Windows, forces the whole program to use
+ // the Windows packing rules. So to avoid problems on Windows (and since
+ // only tank_pressure is currently used and that exactly once) I give in and
+ // make this silly low byte / high byte 8bit entries
+ uint8_t tank_pressure_low; // (in cbar)
+ uint8_t tank_pressure_high;
+ uint8_t consumption_low; // (units unclear)
+ uint8_t consumption_high;
uint8_t rgt; // (remaining gas time in minutes)
uint8_t cns;
uint8_t flags[8];