projects
/
visomat-utils.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix parsing systolic pressure
[visomat-utils.git]
/
src
/
visomat-data-downloader.c
diff --git
a/src/visomat-data-downloader.c
b/src/visomat-data-downloader.c
index
0eca9c1
..
d925388
100644
(file)
--- a/
src/visomat-data-downloader.c
+++ b/
src/visomat-data-downloader.c
@@
-63,6
+63,7
@@
struct datetime {
};
struct pressure {
};
struct pressure {
+ unsigned int flag; /* XXX Maybe this means arrhythmia? */
unsigned int systolic;
unsigned int diastolic;
unsigned int pulses;
unsigned int systolic;
unsigned int diastolic;
unsigned int pulses;
@@
-102,10
+103,16
@@
static void print_record_csv_compat(struct datetime *d, struct pressure *p)
pulse_pressure = p->systolic - p->diastolic;
printf("%u;", pulse_pressure);
pulse_pressure = p->systolic - p->diastolic;
printf("%u;", pulse_pressure);
+ if (p->flag)
+ printf("x");
+
+#if 0
+ /* The original software does not seem to be doing that */
if (p->pulses > 100)
printf("tachycardia");
else if (p->pulses < 60)
printf("bradycardia");
if (p->pulses > 100)
printf("tachycardia");
else if (p->pulses < 60)
printf("bradycardia");
+#endif
printf("\n");
}
printf("\n");
}
@@
-157,11
+164,12
@@
static int decode_eeprom(unsigned char *buffer, unsigned int len)
i += 10;
ret = sscanf((char *)(buffer + i),
i += 10;
ret = sscanf((char *)(buffer + i),
- "%04u%03u%03u",
+ "%1u%03u%03u%03u",
+ &p.flag,
&p.systolic,
&p.diastolic,
&p.pulses);
&p.systolic,
&p.diastolic,
&p.pulses);
- if (ret !=
3
)
+ if (ret !=
4
)
return -EINVAL;
/* pressure data is 10 bytes */
return -EINVAL;
/* pressure data is 10 bytes */
@@
-315,8
+323,8
@@
int main(void)
}
libusb_set_configuration(dev, 1);
}
libusb_set_configuration(dev, 1);
- libusb_claim_interface(dev, 1);
libusb_detach_kernel_driver(dev, 1);
libusb_detach_kernel_driver(dev, 1);
+ libusb_claim_interface(dev, 1);
ret = visomat_get_datetime(dev);
if (ret < 0)
ret = visomat_get_datetime(dev);
if (ret < 0)