Move the version string to the common device structure.
The version string can be shared by all three backends, which will make it easier to use the version data directly from the common code.
This commit is contained in:
parent
14072ff8a6
commit
d0b7f2e584
@ -45,7 +45,6 @@
|
||||
typedef struct oceanic_atom2_device_t {
|
||||
oceanic_common_device_t base;
|
||||
serial_t *port;
|
||||
unsigned char version[PAGESIZE];
|
||||
} oceanic_atom2_device_t;
|
||||
|
||||
static dc_status_t oceanic_atom2_device_read (dc_device_t *abstract, unsigned int address, unsigned char data[], unsigned int size);
|
||||
@ -361,7 +360,6 @@ oceanic_atom2_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
|
||||
// Set the default values.
|
||||
device->port = NULL;
|
||||
memset (device->version, 0, sizeof (device->version));
|
||||
|
||||
// Open the device.
|
||||
int rc = serial_open (&device->port, context, name);
|
||||
@ -397,7 +395,7 @@ oceanic_atom2_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
// Switch the device from surface mode into download mode. Before sending
|
||||
// this command, the device needs to be in PC mode (automatically activated
|
||||
// by connecting the device), or already in download mode.
|
||||
dc_status_t status = oceanic_atom2_device_version ((dc_device_t *) device, device->version, sizeof (device->version));
|
||||
dc_status_t status = oceanic_atom2_device_version ((dc_device_t *) device, device->base.version, sizeof (device->base.version));
|
||||
if (status != DC_STATUS_SUCCESS) {
|
||||
serial_close (device->port);
|
||||
free (device);
|
||||
@ -405,27 +403,27 @@ oceanic_atom2_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
}
|
||||
|
||||
// Override the base class values.
|
||||
if (OCEANIC_COMMON_MATCH (device->version, aeris_f10_version)) {
|
||||
if (OCEANIC_COMMON_MATCH (device->base.version, aeris_f10_version)) {
|
||||
device->base.layout = &aeris_f10_layout;
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, oceanic_atom1_version)) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_atom1_version)) {
|
||||
device->base.layout = &oceanic_atom1_layout;
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, oceanic_atom2_version)) {
|
||||
if (array_uint16_be (device->version + 0x09) >= 0x3349) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_atom2_version)) {
|
||||
if (array_uint16_be (device->base.version + 0x09) >= 0x3349) {
|
||||
device->base.layout = &oceanic_atom2a_layout;
|
||||
} else {
|
||||
device->base.layout = &oceanic_atom2c_layout;
|
||||
}
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, oceanic_atom2a_version)) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_atom2a_version)) {
|
||||
device->base.layout = &oceanic_atom2a_layout;
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, oceanic_atom2b_version)) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_atom2b_version)) {
|
||||
device->base.layout = &oceanic_atom2b_layout;
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, oceanic_atom2c_version)) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_atom2c_version)) {
|
||||
device->base.layout = &oceanic_atom2c_layout;
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, tusa_zenair_version)) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, tusa_zenair_version)) {
|
||||
device->base.layout = &tusa_zenair_layout;
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, oceanic_oc1_version)) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_oc1_version)) {
|
||||
device->base.layout = &oceanic_oc1_layout;
|
||||
} else if (OCEANIC_COMMON_MATCH (device->version, oceanic_veo1_version)) {
|
||||
} else if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_veo1_version)) {
|
||||
device->base.layout = &oceanic_veo1_layout;
|
||||
} else {
|
||||
device->base.layout = &oceanic_default_layout;
|
||||
|
||||
@ -125,6 +125,7 @@ oceanic_common_device_init (oceanic_common_device_t *device, dc_context_t *conte
|
||||
device_init (&device->base, context, backend);
|
||||
|
||||
// Set the default values.
|
||||
memset (device->version, 0, sizeof (device->version));
|
||||
memset (device->fingerprint, 0, sizeof (device->fingerprint));
|
||||
device->layout = NULL;
|
||||
device->multipage = 1;
|
||||
|
||||
@ -59,6 +59,7 @@ typedef struct oceanic_common_layout_t {
|
||||
|
||||
typedef struct oceanic_common_device_t {
|
||||
dc_device_t base;
|
||||
unsigned char version[PAGESIZE];
|
||||
unsigned char fingerprint[FPMAXSIZE];
|
||||
const oceanic_common_layout_t *layout;
|
||||
unsigned int multipage;
|
||||
|
||||
@ -46,7 +46,6 @@ typedef struct oceanic_veo250_device_t {
|
||||
oceanic_common_device_t base;
|
||||
serial_t *port;
|
||||
unsigned int last;
|
||||
unsigned char version[PAGESIZE];
|
||||
} oceanic_veo250_device_t;
|
||||
|
||||
static dc_status_t oceanic_veo250_device_read (dc_device_t *abstract, unsigned int address, unsigned char data[], unsigned int size);
|
||||
@ -249,7 +248,6 @@ oceanic_veo250_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
// Set the default values.
|
||||
device->port = NULL;
|
||||
device->last = 0;
|
||||
memset (device->version, 0, sizeof (device->version));
|
||||
|
||||
// Open the device.
|
||||
int rc = serial_open (&device->port, context, name);
|
||||
@ -305,7 +303,7 @@ oceanic_veo250_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
// Switch the device from surface mode into download mode. Before sending
|
||||
// this command, the device needs to be in PC mode (manually activated by
|
||||
// the user), or already in download mode.
|
||||
status = oceanic_veo250_device_version ((dc_device_t *) device, device->version, sizeof (device->version));
|
||||
status = oceanic_veo250_device_version ((dc_device_t *) device, device->base.version, sizeof (device->base.version));
|
||||
if (status != DC_STATUS_SUCCESS) {
|
||||
serial_close (device->port);
|
||||
free (device);
|
||||
|
||||
@ -46,7 +46,6 @@
|
||||
typedef struct oceanic_vtpro_device_t {
|
||||
oceanic_common_device_t base;
|
||||
serial_t *port;
|
||||
unsigned char version[PAGESIZE];
|
||||
} oceanic_vtpro_device_t;
|
||||
|
||||
static dc_status_t oceanic_vtpro_device_read (dc_device_t *abstract, unsigned int address, unsigned char data[], unsigned int size);
|
||||
@ -278,7 +277,6 @@ oceanic_vtpro_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
|
||||
// Set the default values.
|
||||
device->port = NULL;
|
||||
memset (device->version, 0, sizeof (device->version));
|
||||
|
||||
// Open the device.
|
||||
int rc = serial_open (&device->port, context, name);
|
||||
@ -331,7 +329,7 @@ oceanic_vtpro_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
// Switch the device from surface mode into download mode. Before sending
|
||||
// this command, the device needs to be in PC mode (manually activated by
|
||||
// the user), or already in download mode.
|
||||
status = oceanic_vtpro_device_version ((dc_device_t *) device, device->version, sizeof (device->version));
|
||||
status = oceanic_vtpro_device_version ((dc_device_t *) device, device->base.version, sizeof (device->base.version));
|
||||
if (status != DC_STATUS_SUCCESS) {
|
||||
serial_close (device->port);
|
||||
free (device);
|
||||
@ -349,7 +347,7 @@ oceanic_vtpro_device_open (dc_device_t **out, dc_context_t *context, const char
|
||||
}
|
||||
|
||||
// Override the base class values.
|
||||
if (OCEANIC_COMMON_MATCH (device->version, oceanic_wisdom_version)) {
|
||||
if (OCEANIC_COMMON_MATCH (device->base.version, oceanic_wisdom_version)) {
|
||||
device->base.layout = &oceanic_wisdom_layout;
|
||||
} else {
|
||||
device->base.layout = &oceanic_vtpro_layout;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user