From 32fd37df2c5660c655d7fd8f93ac5bac8252422e Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Fri, 15 Jan 2010 09:51:15 +0000 Subject: [PATCH] Keep only a single PAGESIZE macro. --- src/oceanic_atom2.c | 60 ++++++++++++++++++------------------- src/oceanic_atom2.h | 1 - src/oceanic_atom2_parser.c | 15 +++++----- src/oceanic_common.c | 2 -- src/oceanic_common.h | 2 ++ src/oceanic_veo250.c | 42 +++++++++++++------------- src/oceanic_veo250.h | 7 ++--- src/oceanic_veo250_parser.c | 15 +++++----- src/oceanic_vtpro.c | 52 ++++++++++++++++---------------- src/oceanic_vtpro.h | 7 ++--- src/oceanic_vtpro_parser.c | 15 +++++----- 11 files changed, 109 insertions(+), 109 deletions(-) diff --git a/src/oceanic_atom2.c b/src/oceanic_atom2.c index 4b2a4e6..9512fdb 100644 --- a/src/oceanic_atom2.c +++ b/src/oceanic_atom2.c @@ -44,7 +44,7 @@ typedef struct oceanic_atom2_device_t { oceanic_common_device_t base; struct serial *port; - unsigned char version[OCEANIC_ATOM2_PACKET_SIZE]; + unsigned char version[PAGESIZE]; } oceanic_atom2_device_t; static device_status_t oceanic_atom2_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size); @@ -347,19 +347,19 @@ oceanic_atom2_device_version (device_t *abstract, unsigned char data[], unsigned if (! device_is_oceanic_atom2 (abstract)) return DEVICE_STATUS_TYPE_MISMATCH; - if (size < OCEANIC_ATOM2_PACKET_SIZE) + if (size < PAGESIZE) return DEVICE_STATUS_MEMORY; - unsigned char answer[OCEANIC_ATOM2_PACKET_SIZE + 1] = {0}; + unsigned char answer[PAGESIZE + 1] = {0}; unsigned char command[2] = {0x84, 0x00}; device_status_t rc = oceanic_atom2_transfer (device, command, sizeof (command), answer, sizeof (answer)); if (rc != DEVICE_STATUS_SUCCESS) return rc; - memcpy (data, answer, OCEANIC_ATOM2_PACKET_SIZE); + memcpy (data, answer, PAGESIZE); #ifndef NDEBUG - answer[OCEANIC_ATOM2_PACKET_SIZE] = 0; + answer[PAGESIZE] = 0; message ("ATOM2ReadVersion()=\"%s\"\n", answer); #endif @@ -375,17 +375,17 @@ oceanic_atom2_device_read (device_t *abstract, unsigned int address, unsigned ch if (! device_is_oceanic_atom2 (abstract)) return DEVICE_STATUS_TYPE_MISMATCH; - assert (address % OCEANIC_ATOM2_PACKET_SIZE == 0); - assert (size % OCEANIC_ATOM2_PACKET_SIZE == 0); + assert (address % PAGESIZE == 0); + assert (size % PAGESIZE == 0); // The data transmission is split in packages - // of maximum $OCEANIC_ATOM2_PACKET_SIZE bytes. + // of maximum $PAGESIZE bytes. unsigned int nbytes = 0; while (nbytes < size) { // Read the package. - unsigned int number = address / OCEANIC_ATOM2_PACKET_SIZE; - unsigned char answer[OCEANIC_ATOM2_PACKET_SIZE + 1] = {0}; + unsigned int number = address / PAGESIZE; + unsigned char answer[PAGESIZE + 1] = {0}; unsigned char command[4] = {0xB1, (number >> 8) & 0xFF, // high (number ) & 0xFF, // low @@ -394,19 +394,19 @@ oceanic_atom2_device_read (device_t *abstract, unsigned int address, unsigned ch if (rc != DEVICE_STATUS_SUCCESS) return rc; - memcpy (data, answer, OCEANIC_ATOM2_PACKET_SIZE); + memcpy (data, answer, PAGESIZE); #ifndef NDEBUG - message ("ATOM2Read(0x%04x,%d)=\"", address, OCEANIC_ATOM2_PACKET_SIZE); - for (unsigned int i = 0; i < OCEANIC_ATOM2_PACKET_SIZE; ++i) { + message ("ATOM2Read(0x%04x,%d)=\"", address, PAGESIZE); + for (unsigned int i = 0; i < PAGESIZE; ++i) { message("%02x", data[i]); } message("\"\n"); #endif - nbytes += OCEANIC_ATOM2_PACKET_SIZE; - address += OCEANIC_ATOM2_PACKET_SIZE; - data += OCEANIC_ATOM2_PACKET_SIZE; + nbytes += PAGESIZE; + address += PAGESIZE; + data += PAGESIZE; } return DEVICE_STATUS_SUCCESS; @@ -421,16 +421,16 @@ oceanic_atom2_device_write (device_t *abstract, unsigned int address, const unsi if (! device_is_oceanic_atom2 (abstract)) return DEVICE_STATUS_TYPE_MISMATCH; - assert (address % OCEANIC_ATOM2_PACKET_SIZE == 0); - assert (size % OCEANIC_ATOM2_PACKET_SIZE == 0); + assert (address % PAGESIZE == 0); + assert (size % PAGESIZE == 0); // The data transmission is split in packages - // of maximum $OCEANIC_ATOM2_PACKET_SIZE bytes. + // of maximum $PAGESIZE bytes. unsigned int nbytes = 0; while (nbytes < size) { // Prepare to write the package. - unsigned int number = address / OCEANIC_ATOM2_PACKET_SIZE; + unsigned int number = address / PAGESIZE; unsigned char prepare[4] = {0xB2, (number >> 8) & 0xFF, // high (number ) & 0xFF, // low @@ -440,28 +440,28 @@ oceanic_atom2_device_write (device_t *abstract, unsigned int address, const unsi return rc; #ifndef NDEBUG - message ("ATOM2PrepareWrite(0x%04x,%d)\n", address, OCEANIC_ATOM2_PACKET_SIZE); + message ("ATOM2PrepareWrite(0x%04x,%d)\n", address, PAGESIZE); #endif // Write the package. - unsigned char command[OCEANIC_ATOM2_PACKET_SIZE + 2] = {0}; - memcpy (command, data, OCEANIC_ATOM2_PACKET_SIZE); - command[OCEANIC_ATOM2_PACKET_SIZE] = checksum_add_uint8 (command, OCEANIC_ATOM2_PACKET_SIZE, 0x00); + unsigned char command[PAGESIZE + 2] = {0}; + memcpy (command, data, PAGESIZE); + command[PAGESIZE] = checksum_add_uint8 (command, PAGESIZE, 0x00); rc = oceanic_atom2_transfer (device, command, sizeof (command), NULL, 0); if (rc != DEVICE_STATUS_SUCCESS) return rc; #ifndef NDEBUG - message ("ATOM2Write(0x%04x,%d)=\"", address, OCEANIC_ATOM2_PACKET_SIZE); - for (unsigned int i = 0; i < OCEANIC_ATOM2_PACKET_SIZE; ++i) { + message ("ATOM2Write(0x%04x,%d)=\"", address, PAGESIZE); + for (unsigned int i = 0; i < PAGESIZE; ++i) { message("%02x", data[i]); } message("\"\n"); #endif - nbytes += OCEANIC_ATOM2_PACKET_SIZE; - address += OCEANIC_ATOM2_PACKET_SIZE; - data += OCEANIC_ATOM2_PACKET_SIZE; + nbytes += PAGESIZE; + address += PAGESIZE; + data += PAGESIZE; } return DEVICE_STATUS_SUCCESS; @@ -482,7 +482,7 @@ oceanic_atom2_device_dump (device_t *abstract, dc_buffer_t *buffer) } return device_dump_read (abstract, dc_buffer_get_data (buffer), - dc_buffer_get_size (buffer), OCEANIC_ATOM2_PACKET_SIZE); + dc_buffer_get_size (buffer), PAGESIZE); } diff --git a/src/oceanic_atom2.h b/src/oceanic_atom2.h index 9a1363d..bcbfc36 100644 --- a/src/oceanic_atom2.h +++ b/src/oceanic_atom2.h @@ -30,7 +30,6 @@ extern "C" { #endif /* __cplusplus */ #define OCEANIC_ATOM2_MEMORY_SIZE 0x10000 -#define OCEANIC_ATOM2_PACKET_SIZE 0x10 device_status_t oceanic_atom2_device_open (device_t **device, const char* name); diff --git a/src/oceanic_atom2_parser.c b/src/oceanic_atom2_parser.c index af1be38..ab5e76c 100644 --- a/src/oceanic_atom2_parser.c +++ b/src/oceanic_atom2_parser.c @@ -23,6 +23,7 @@ #include #include "oceanic_atom2.h" +#include "oceanic_common.h" #include "parser-private.h" #include "array.h" #include "units.h" @@ -110,7 +111,7 @@ oceanic_atom2_parser_samples_foreach (parser_t *abstract, sample_callback_t call const unsigned char *data = abstract->data; unsigned int size = abstract->size; - if (size < 11 * OCEANIC_ATOM2_PACKET_SIZE / 2) + if (size < 11 * PAGESIZE / 2) return PARSER_STATUS_ERROR; unsigned int time = 0; @@ -136,13 +137,13 @@ oceanic_atom2_parser_samples_foreach (parser_t *abstract, sample_callback_t call unsigned int pressure = data[0x42] + (data[0x42 + 1] << 8); unsigned int temperature = data[0x47]; - unsigned int offset = 9 * OCEANIC_ATOM2_PACKET_SIZE / 2; - while (offset + OCEANIC_ATOM2_PACKET_SIZE / 2 <= size - OCEANIC_ATOM2_PACKET_SIZE) { + unsigned int offset = 9 * PAGESIZE / 2; + while (offset + PAGESIZE / 2 <= size - PAGESIZE) { parser_sample_value_t sample = {0}; // Ignore empty samples. - if (array_isequal (data + offset, OCEANIC_ATOM2_PACKET_SIZE / 2, 0x00)) { - offset += OCEANIC_ATOM2_PACKET_SIZE / 2; + if (array_isequal (data + offset, PAGESIZE / 2, 0x00)) { + offset += PAGESIZE / 2; continue; } @@ -155,7 +156,7 @@ oceanic_atom2_parser_samples_foreach (parser_t *abstract, sample_callback_t call // Vendor specific data sample.vendor.type = SAMPLE_VENDOR_OCEANIC_ATOM2; - sample.vendor.size = OCEANIC_ATOM2_PACKET_SIZE / 2; + sample.vendor.size = PAGESIZE / 2; sample.vendor.data = data + offset; if (callback) callback (SAMPLE_TYPE_VENDOR, sample, userdata); @@ -191,7 +192,7 @@ oceanic_atom2_parser_samples_foreach (parser_t *abstract, sample_callback_t call complete = 1; } - offset += OCEANIC_ATOM2_PACKET_SIZE / 2; + offset += PAGESIZE / 2; } return PARSER_STATUS_SUCCESS; diff --git a/src/oceanic_common.c b/src/oceanic_common.c index 230fe0a..ca87b3a 100644 --- a/src/oceanic_common.c +++ b/src/oceanic_common.c @@ -29,8 +29,6 @@ #include "array.h" #include "utils.h" -#define PAGESIZE 0x10 - #define RB_LOGBOOK_DISTANCE(a,b,l) ringbuffer_distance (a, b, 0, l->rb_logbook_begin, l->rb_logbook_end) #define RB_LOGBOOK_INCR(a,b,l) ringbuffer_increment (a, b, l->rb_logbook_begin, l->rb_logbook_end) diff --git a/src/oceanic_common.h b/src/oceanic_common.h index de7ec36..dcb12ce 100644 --- a/src/oceanic_common.h +++ b/src/oceanic_common.h @@ -28,6 +28,8 @@ extern "C" { #endif /* __cplusplus */ +#define PAGESIZE 0x10 + typedef struct oceanic_common_device_t { device_t base; unsigned char fingerprint[8]; diff --git a/src/oceanic_veo250.c b/src/oceanic_veo250.c index 3288a5c..caddbba 100644 --- a/src/oceanic_veo250.c +++ b/src/oceanic_veo250.c @@ -45,7 +45,7 @@ typedef struct oceanic_veo250_device_t { oceanic_common_device_t base; struct serial *port; unsigned int last; - unsigned char version[OCEANIC_VEO250_PACKET_SIZE]; + unsigned char version[PAGESIZE]; } oceanic_veo250_device_t; static device_status_t oceanic_veo250_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size); @@ -354,27 +354,27 @@ oceanic_veo250_device_version (device_t *abstract, unsigned char data[], unsigne if (! device_is_oceanic_veo250 (abstract)) return DEVICE_STATUS_TYPE_MISMATCH; - if (size < OCEANIC_VEO250_PACKET_SIZE) + if (size < PAGESIZE) return DEVICE_STATUS_MEMORY; - unsigned char answer[OCEANIC_VEO250_PACKET_SIZE + 2] = {0}; + unsigned char answer[PAGESIZE + 2] = {0}; unsigned char command[2] = {0x90, 0x00}; device_status_t rc = oceanic_veo250_transfer (device, command, sizeof (command), answer, sizeof (answer)); if (rc != DEVICE_STATUS_SUCCESS) return rc; // Verify the checksum of the answer. - unsigned char crc = answer[OCEANIC_VEO250_PACKET_SIZE]; - unsigned char ccrc = checksum_add_uint8 (answer, OCEANIC_VEO250_PACKET_SIZE, 0x00); + unsigned char crc = answer[PAGESIZE]; + unsigned char ccrc = checksum_add_uint8 (answer, PAGESIZE, 0x00); if (crc != ccrc) { WARNING ("Unexpected answer CRC."); return DEVICE_STATUS_PROTOCOL; } - memcpy (data, answer, OCEANIC_VEO250_PACKET_SIZE); + memcpy (data, answer, PAGESIZE); #ifndef NDEBUG - answer[OCEANIC_VEO250_PACKET_SIZE] = 0; + answer[PAGESIZE] = 0; message ("VEO250ReadVersion()=\"%s\"\n", answer); #endif @@ -390,17 +390,17 @@ oceanic_veo250_device_read (device_t *abstract, unsigned int address, unsigned c if (! device_is_oceanic_veo250 (abstract)) return DEVICE_STATUS_TYPE_MISMATCH; - assert (address % OCEANIC_VEO250_PACKET_SIZE == 0); - assert (size % OCEANIC_VEO250_PACKET_SIZE == 0); + assert (address % PAGESIZE == 0); + assert (size % PAGESIZE == 0); // The data transmission is split in packages - // of maximum $OCEANIC_VEO250_PACKET_SIZE bytes. + // of maximum $PAGESIZE bytes. unsigned int nbytes = 0; while (nbytes < size) { // Read the package. - unsigned int number = address / OCEANIC_VEO250_PACKET_SIZE; - unsigned char answer[OCEANIC_VEO250_PACKET_SIZE + 2] = {0}; + unsigned int number = address / PAGESIZE; + unsigned char answer[PAGESIZE + 2] = {0}; unsigned char command[6] = {0x20, (number ) & 0xFF, // low (number >> 8) & 0xFF, // high @@ -414,26 +414,26 @@ oceanic_veo250_device_read (device_t *abstract, unsigned int address, unsigned c device->last = number; // Verify the checksum of the answer. - unsigned char crc = answer[OCEANIC_VEO250_PACKET_SIZE]; - unsigned char ccrc = checksum_add_uint8 (answer, OCEANIC_VEO250_PACKET_SIZE, 0x00); + unsigned char crc = answer[PAGESIZE]; + unsigned char ccrc = checksum_add_uint8 (answer, PAGESIZE, 0x00); if (crc != ccrc) { WARNING ("Unexpected answer CRC."); return DEVICE_STATUS_PROTOCOL; } - memcpy (data, answer, OCEANIC_VEO250_PACKET_SIZE); + memcpy (data, answer, PAGESIZE); #ifndef NDEBUG - message ("VEO250Read(0x%04x,%d)=\"", address, OCEANIC_VEO250_PACKET_SIZE); - for (unsigned int i = 0; i < OCEANIC_VEO250_PACKET_SIZE; ++i) { + message ("VEO250Read(0x%04x,%d)=\"", address, PAGESIZE); + for (unsigned int i = 0; i < PAGESIZE; ++i) { message("%02x", data[i]); } message("\"\n"); #endif - nbytes += OCEANIC_VEO250_PACKET_SIZE; - address += OCEANIC_VEO250_PACKET_SIZE; - data += OCEANIC_VEO250_PACKET_SIZE; + nbytes += PAGESIZE; + address += PAGESIZE; + data += PAGESIZE; } return DEVICE_STATUS_SUCCESS; @@ -454,7 +454,7 @@ oceanic_veo250_device_dump (device_t *abstract, dc_buffer_t *buffer) } return device_dump_read (abstract, dc_buffer_get_data (buffer), - dc_buffer_get_size (buffer), OCEANIC_VEO250_PACKET_SIZE); + dc_buffer_get_size (buffer), PAGESIZE); } diff --git a/src/oceanic_veo250.h b/src/oceanic_veo250.h index 1bd47d6..8d50686 100644 --- a/src/oceanic_veo250.h +++ b/src/oceanic_veo250.h @@ -22,15 +22,14 @@ #ifndef OCEANIC_VEO250_H #define OCEANIC_VEO250_H +#include "device.h" +#include "parser.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -#include "device.h" -#include "parser.h" - #define OCEANIC_VEO250_MEMORY_SIZE 0x8000 -#define OCEANIC_VEO250_PACKET_SIZE 0x10 device_status_t oceanic_veo250_device_open (device_t **device, const char* name); diff --git a/src/oceanic_veo250_parser.c b/src/oceanic_veo250_parser.c index bc6c868..d870116 100644 --- a/src/oceanic_veo250_parser.c +++ b/src/oceanic_veo250_parser.c @@ -23,6 +23,7 @@ #include #include "oceanic_veo250.h" +#include "oceanic_common.h" #include "parser-private.h" #include "array.h" #include "units.h" @@ -110,7 +111,7 @@ oceanic_veo250_parser_samples_foreach (parser_t *abstract, sample_callback_t cal const unsigned char *data = abstract->data; unsigned int size = abstract->size; - if (size < 7 * OCEANIC_VEO250_PACKET_SIZE / 2) + if (size < 7 * PAGESIZE / 2) return PARSER_STATUS_ERROR; unsigned int time = 0; @@ -130,13 +131,13 @@ oceanic_veo250_parser_samples_foreach (parser_t *abstract, sample_callback_t cal break; } - unsigned int offset = 5 * OCEANIC_VEO250_PACKET_SIZE / 2; - while (offset + OCEANIC_VEO250_PACKET_SIZE / 2 <= size - OCEANIC_VEO250_PACKET_SIZE) { + unsigned int offset = 5 * PAGESIZE / 2; + while (offset + PAGESIZE / 2 <= size - PAGESIZE) { parser_sample_value_t sample = {0}; // Ignore empty samples. - if (array_isequal (data + offset, OCEANIC_VEO250_PACKET_SIZE / 2, 0x00)) { - offset += OCEANIC_VEO250_PACKET_SIZE / 2; + if (array_isequal (data + offset, PAGESIZE / 2, 0x00)) { + offset += PAGESIZE / 2; continue; } @@ -147,7 +148,7 @@ oceanic_veo250_parser_samples_foreach (parser_t *abstract, sample_callback_t cal // Vendor specific data sample.vendor.type = SAMPLE_VENDOR_OCEANIC_VEO250; - sample.vendor.size = OCEANIC_VEO250_PACKET_SIZE / 2; + sample.vendor.size = PAGESIZE / 2; sample.vendor.data = data + offset; if (callback) callback (SAMPLE_TYPE_VENDOR, sample, userdata); @@ -161,7 +162,7 @@ oceanic_veo250_parser_samples_foreach (parser_t *abstract, sample_callback_t cal sample.temperature = (temperature - 32.0) * (5.0 / 9.0); if (callback) callback (SAMPLE_TYPE_TEMPERATURE, sample, userdata); - offset += OCEANIC_VEO250_PACKET_SIZE / 2; + offset += PAGESIZE / 2; } return PARSER_STATUS_SUCCESS; diff --git a/src/oceanic_vtpro.c b/src/oceanic_vtpro.c index 4b14e36..142bbe9 100644 --- a/src/oceanic_vtpro.c +++ b/src/oceanic_vtpro.c @@ -45,7 +45,7 @@ typedef struct oceanic_vtpro_device_t { oceanic_common_device_t base; struct serial *port; - unsigned char version[OCEANIC_VTPRO_PACKET_SIZE]; + unsigned char version[PAGESIZE]; } oceanic_vtpro_device_t; static device_status_t oceanic_vtpro_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size); @@ -375,7 +375,7 @@ oceanic_vtpro_device_version (device_t *abstract, unsigned char data[], unsigned if (! device_is_oceanic_vtpro (abstract)) return DEVICE_STATUS_TYPE_MISMATCH; - if (size < OCEANIC_VTPRO_PACKET_SIZE) + if (size < PAGESIZE) return DEVICE_STATUS_MEMORY; // Switch the device into download mode. The response is ignored here, @@ -383,21 +383,21 @@ oceanic_vtpro_device_version (device_t *abstract, unsigned char data[], unsigned // response of the first part of the other command in this function. unsigned char cmd[2] = {0x88, 0x00}; - unsigned char ans[OCEANIC_VTPRO_PACKET_SIZE / 2 + 1] = {0}; + unsigned char ans[PAGESIZE / 2 + 1] = {0}; device_status_t rc = oceanic_vtpro_transfer (device, cmd, sizeof (cmd), ans, sizeof (ans)); if (rc != DEVICE_STATUS_SUCCESS) return rc; // Verify the checksum of the answer. - unsigned char crc = ans[OCEANIC_VTPRO_PACKET_SIZE / 2]; - unsigned char ccrc = checksum_add_uint4 (ans, OCEANIC_VTPRO_PACKET_SIZE / 2, 0x00); + unsigned char crc = ans[PAGESIZE / 2]; + unsigned char ccrc = checksum_add_uint4 (ans, PAGESIZE / 2, 0x00); if (crc != ccrc) { WARNING ("Unexpected answer CRC."); return DEVICE_STATUS_PROTOCOL; } #ifndef NDEBUG - ans[OCEANIC_VTPRO_PACKET_SIZE / 2] = 0; + ans[PAGESIZE / 2] = 0; message ("VTPROVersion(init)=\"%s\"\n", ans); #endif @@ -406,30 +406,30 @@ oceanic_vtpro_device_version (device_t *abstract, unsigned char data[], unsigned for (unsigned int i = 0; i < 2; ++i) { unsigned char command[4] = {0x72, 0x03, i * 0x10, 0x00}; - unsigned char answer[OCEANIC_VTPRO_PACKET_SIZE / 2 + 2] = {0}; + unsigned char answer[PAGESIZE / 2 + 2] = {0}; rc = oceanic_vtpro_transfer (device, command, sizeof (command), answer, sizeof (answer)); if (rc != DEVICE_STATUS_SUCCESS) return rc; // Verify the checksum of the answer. - unsigned char crc = answer[OCEANIC_VTPRO_PACKET_SIZE / 2]; - unsigned char ccrc = checksum_add_uint4 (answer, OCEANIC_VTPRO_PACKET_SIZE / 2, 0x00); + unsigned char crc = answer[PAGESIZE / 2]; + unsigned char ccrc = checksum_add_uint4 (answer, PAGESIZE / 2, 0x00); if (crc != ccrc) { WARNING ("Unexpected answer CRC."); return DEVICE_STATUS_PROTOCOL; } // Verify the last byte of the answer. - if (answer[OCEANIC_VTPRO_PACKET_SIZE / 2 + 1] != END) { + if (answer[PAGESIZE / 2 + 1] != END) { WARNING ("Unexpected answer byte."); return DEVICE_STATUS_PROTOCOL; } // Append the answer to the output buffer. - memcpy (data + i * OCEANIC_VTPRO_PACKET_SIZE / 2, answer, OCEANIC_VTPRO_PACKET_SIZE / 2); + memcpy (data + i * PAGESIZE / 2, answer, PAGESIZE / 2); #ifndef NDEBUG - answer[OCEANIC_VTPRO_PACKET_SIZE / 2] = 0; + answer[PAGESIZE / 2] = 0; message ("VTPROVersion(%u)=\"%s\"\n", i, answer); #endif } @@ -446,17 +446,17 @@ oceanic_vtpro_device_read (device_t *abstract, unsigned int address, unsigned ch if (! device_is_oceanic_vtpro (abstract)) return DEVICE_STATUS_TYPE_MISMATCH; - assert (address % OCEANIC_VTPRO_PACKET_SIZE == 0); - assert (size % OCEANIC_VTPRO_PACKET_SIZE == 0); + assert (address % PAGESIZE == 0); + assert (size % PAGESIZE == 0); // The data transmission is split in packages - // of maximum $OCEANIC_VTPRO_PACKET_SIZE bytes. + // of maximum $PAGESIZE bytes. unsigned int nbytes = 0; while (nbytes < size) { // Read the package. - unsigned int number = address / OCEANIC_VTPRO_PACKET_SIZE; - unsigned char answer[OCEANIC_VTPRO_PACKET_SIZE + 1] = {0}; + unsigned int number = address / PAGESIZE; + unsigned char answer[PAGESIZE + 1] = {0}; unsigned char command[6] = {0x34, (number >> 8) & 0xFF, // high (number ) & 0xFF, // low @@ -468,26 +468,26 @@ oceanic_vtpro_device_read (device_t *abstract, unsigned int address, unsigned ch return rc; // Verify the checksum of the answer. - unsigned char crc = answer[OCEANIC_VTPRO_PACKET_SIZE]; - unsigned char ccrc = checksum_add_uint8 (answer, OCEANIC_VTPRO_PACKET_SIZE, 0x00); + unsigned char crc = answer[PAGESIZE]; + unsigned char ccrc = checksum_add_uint8 (answer, PAGESIZE, 0x00); if (crc != ccrc) { WARNING ("Unexpected answer CRC."); return DEVICE_STATUS_PROTOCOL; } - memcpy (data, answer, OCEANIC_VTPRO_PACKET_SIZE); + memcpy (data, answer, PAGESIZE); #ifndef NDEBUG - message ("VTPRORead(0x%04x,%d)=\"", address, OCEANIC_VTPRO_PACKET_SIZE); - for (unsigned int i = 0; i < OCEANIC_VTPRO_PACKET_SIZE; ++i) { + message ("VTPRORead(0x%04x,%d)=\"", address, PAGESIZE); + for (unsigned int i = 0; i < PAGESIZE; ++i) { message("%02x", data[i]); } message("\"\n"); #endif - nbytes += OCEANIC_VTPRO_PACKET_SIZE; - address += OCEANIC_VTPRO_PACKET_SIZE; - data += OCEANIC_VTPRO_PACKET_SIZE; + nbytes += PAGESIZE; + address += PAGESIZE; + data += PAGESIZE; } return DEVICE_STATUS_SUCCESS; @@ -508,7 +508,7 @@ oceanic_vtpro_device_dump (device_t *abstract, dc_buffer_t *buffer) } return device_dump_read (abstract, dc_buffer_get_data (buffer), - dc_buffer_get_size (buffer), OCEANIC_VTPRO_PACKET_SIZE); + dc_buffer_get_size (buffer), PAGESIZE); } diff --git a/src/oceanic_vtpro.h b/src/oceanic_vtpro.h index 8087d7a..a7af26f 100644 --- a/src/oceanic_vtpro.h +++ b/src/oceanic_vtpro.h @@ -22,15 +22,14 @@ #ifndef OCEANIC_VTPRO_H #define OCEANIC_VTPRO_H +#include "device.h" +#include "parser.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -#include "device.h" -#include "parser.h" - #define OCEANIC_VTPRO_MEMORY_SIZE 0x8000 -#define OCEANIC_VTPRO_PACKET_SIZE 0x10 device_status_t oceanic_vtpro_device_open (device_t **device, const char* name); diff --git a/src/oceanic_vtpro_parser.c b/src/oceanic_vtpro_parser.c index 3167107..88d8246 100644 --- a/src/oceanic_vtpro_parser.c +++ b/src/oceanic_vtpro_parser.c @@ -23,6 +23,7 @@ #include #include "oceanic_vtpro.h" +#include "oceanic_common.h" #include "parser-private.h" #include "array.h" #include "units.h" @@ -110,7 +111,7 @@ oceanic_vtpro_parser_samples_foreach (parser_t *abstract, sample_callback_t call const unsigned char *data = abstract->data; unsigned int size = abstract->size; - if (size < 7 * OCEANIC_VTPRO_PACKET_SIZE / 2) + if (size < 7 * PAGESIZE / 2) return PARSER_STATUS_ERROR; unsigned int time = 0; @@ -130,13 +131,13 @@ oceanic_vtpro_parser_samples_foreach (parser_t *abstract, sample_callback_t call break; } - unsigned int offset = 5 * OCEANIC_VTPRO_PACKET_SIZE / 2; - while (offset + OCEANIC_VTPRO_PACKET_SIZE / 2 <= size - OCEANIC_VTPRO_PACKET_SIZE) { + unsigned int offset = 5 * PAGESIZE / 2; + while (offset + PAGESIZE / 2 <= size - PAGESIZE) { parser_sample_value_t sample = {0}; // Ignore empty samples. - if (array_isequal (data + offset, OCEANIC_VTPRO_PACKET_SIZE / 2, 0x00)) { - offset += OCEANIC_VTPRO_PACKET_SIZE / 2; + if (array_isequal (data + offset, PAGESIZE / 2, 0x00)) { + offset += PAGESIZE / 2; continue; } @@ -147,7 +148,7 @@ oceanic_vtpro_parser_samples_foreach (parser_t *abstract, sample_callback_t call // Vendor specific data sample.vendor.type = SAMPLE_VENDOR_OCEANIC_VTPRO; - sample.vendor.size = OCEANIC_VTPRO_PACKET_SIZE / 2; + sample.vendor.size = PAGESIZE / 2; sample.vendor.data = data + offset; if (callback) callback (SAMPLE_TYPE_VENDOR, sample, userdata); @@ -161,7 +162,7 @@ oceanic_vtpro_parser_samples_foreach (parser_t *abstract, sample_callback_t call sample.temperature = (temperature - 32.0) * (5.0 / 9.0); if (callback) callback (SAMPLE_TYPE_TEMPERATURE, sample, userdata); - offset += OCEANIC_VTPRO_PACKET_SIZE / 2; + offset += PAGESIZE / 2; } return PARSER_STATUS_SUCCESS;