projects
/
visomat-utils.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
visomat-data-downloader: use uint8_t for bytes
[visomat-utils.git]
/
src
/
visomat-data-downloader.c
diff --git
a/src/visomat-data-downloader.c
b/src/visomat-data-downloader.c
index
818473f
..
1b4cde9
100644
(file)
--- a/
src/visomat-data-downloader.c
+++ b/
src/visomat-data-downloader.c
@@
-71,7
+71,7
@@
struct pressure {
unsigned int pulses;
};
unsigned int pulses;
};
-static inline int extract_datetime(u
nsigned char
*buffer, struct datetime *d)
+static inline int extract_datetime(u
int8_t
*buffer, struct datetime *d)
{
int ret;
{
int ret;
@@
-119,8
+119,8
@@
static void print_record_csv_compat(struct datetime *d, struct pressure *p)
printf("\n");
}
printf("\n");
}
-/* TODO
separate better
decoding data from printing it */
-static int decode_eeprom(u
nsigned char
*buffer,
+/* TODO
: it would be better to separate
decoding data from printing it */
+static int decode_eeprom(u
int8_t
*buffer,
unsigned int len,
unsigned int user_mask)
{
unsigned int len,
unsigned int user_mask)
{
@@
-156,6
+156,13
@@
static int decode_eeprom(unsigned char *buffer,
/* user_id and num_records take 3 bytes */
i += 3;
/* user_id and num_records take 3 bytes */
i += 3;
+ /*
+ * when there are no records, there is a dummy byte
+ * which has to be consumed
+ */
+ if (num_records == 0)
+ i += 1;
+
for (j = 0; j < num_records; j++) {
ret = extract_datetime(buffer + i, &d);
if (ret < 0)
for (j = 0; j < num_records; j++) {
ret = extract_datetime(buffer + i, &d);
if (ret < 0)
@@
-189,12
+196,12
@@
static int decode_eeprom(unsigned char *buffer,
return 0;
}
return 0;
}
-static int decode_datetime(u
nsigned char
*buffer, unsigned int len)
+static int decode_datetime(u
int8_t
*buffer, unsigned int len)
{
int ret;
{
int ret;
- u
nsigned char
code[4] = { 0 };
+ u
int8_t
code[4] = { 0 };
struct datetime d;
struct datetime d;
- u
nsigned char
*pbuffer = buffer;
+ u
int8_t
*pbuffer = buffer;
if (len != 15)
return -EINVAL;
if (len != 15)
return -EINVAL;
@@
-217,7
+224,7
@@
static int send_command(libusb_device_handle *dev, visomat_command cmd)
{
int ret;
int transferred;
{
int ret;
int transferred;
- u
nsigned char
request[5];
+ u
int8_t
request[5];
request[0] = STX;
request[1] = command_codes[cmd][0];
request[0] = STX;
request[1] = command_codes[cmd][0];
@@
-236,12
+243,12
@@
static int send_command(libusb_device_handle *dev, visomat_command cmd)
}
static int get_response(libusb_device_handle *dev,
}
static int get_response(libusb_device_handle *dev,
- u
nsigned char
*buffer,
+ u
int8_t
*buffer,
unsigned int len)
{
int ret;
int transferred;
unsigned int len)
{
int ret;
int transferred;
- u
nsigned char
response[64] = { 0 };
+ u
int8_t
response[64] = { 0 };
unsigned int i;
i = 0;
unsigned int i;
i = 0;
@@
-275,7
+282,7
@@
static int get_response(libusb_device_handle *dev,
static int visomat_dump_eeprom(visomat_device *dev, unsigned int user_mask)
{
/* Assuming an EEPROM of 1 KiB */
static int visomat_dump_eeprom(visomat_device *dev, unsigned int user_mask)
{
/* Assuming an EEPROM of 1 KiB */
- u
nsigned char
buffer[1024] = { 0 };
+ u
int8_t
buffer[1024] = { 0 };
int ret;
ret = send_command(dev, VISOMAT_CMD_DUMP_EEPROM);
int ret;
ret = send_command(dev, VISOMAT_CMD_DUMP_EEPROM);
@@
-295,7
+302,7
@@
static int visomat_dump_eeprom(visomat_device *dev, unsigned int user_mask)
static int visomat_get_datetime(visomat_device *dev)
{
static int visomat_get_datetime(visomat_device *dev)
{
- u
nsigned char
buffer[255] = { 0 };
+ u
int8_t
buffer[255] = { 0 };
int ret;
ret = send_command(dev, VISOMAT_CMD_GET_DATETIME);
int ret;
ret = send_command(dev, VISOMAT_CMD_GET_DATETIME);
@@
-321,7
+328,8
@@
int main(void)
ret = libusb_init(NULL);
if (ret < 0) {
ret = libusb_init(NULL);
if (ret < 0) {
- fprintf(stderr, "libusb_init failed: %s\n", libusb_error_name(ret));
+ fprintf(stderr, "libusb_init failed: %s\n",
+ libusb_error_name(ret));
goto out;
}
goto out;
}
@@
-349,7
+357,7
@@
int main(void)
if (ret < 0) {
fprintf(stderr, "libusb_set_configuration failed: %s\n",
libusb_error_name(ret));
if (ret < 0) {
fprintf(stderr, "libusb_set_configuration failed: %s\n",
libusb_error_name(ret));
- fprintf(stderr, "Cannot set configuration %
hhu
\n",
+ fprintf(stderr, "Cannot set configuration %
d
\n",
VISOMAT_CONFIGURATION);
goto out_libusb_close;
}
VISOMAT_CONFIGURATION);
goto out_libusb_close;
}
@@
-361,7
+369,7
@@
int main(void)
if (ret < 0) {
fprintf(stderr, "libusb_claim_interface failed: %s\n",
libusb_error_name(ret));
if (ret < 0) {
fprintf(stderr, "libusb_claim_interface failed: %s\n",
libusb_error_name(ret));
- fprintf(stderr, "Cannot claim interface %
hhu
\n",
+ fprintf(stderr, "Cannot claim interface %
d
\n",
VISOMAT_INTERFACE);
goto out_libusb_close;
}
VISOMAT_INTERFACE);
goto out_libusb_close;
}
@@
-378,7
+386,7
@@
int main(void)
}
if (current_configuration != VISOMAT_CONFIGURATION) {
}
if (current_configuration != VISOMAT_CONFIGURATION) {
- fprintf(stderr, "libusb configuration changed (expected: %
hhu, current: %hhu
\n",
+ fprintf(stderr, "libusb configuration changed (expected: %
d, current: %d)
\n",
VISOMAT_CONFIGURATION, current_configuration);
ret = -EINVAL;
goto out_libusb_release_interface;
VISOMAT_CONFIGURATION, current_configuration);
ret = -EINVAL;
goto out_libusb_release_interface;