Responded to a code review. --- src/cochran_commander.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/cochran_commander.c b/src/cochran_commander.c index f7d2e91..068fd04 100644 --- a/src/cochran_commander.c +++ b/src/cochran_commander.c @@ -429,12 +429,24 @@ cochran_commander_read_id (cochran_commander_device_t *device, unsigned char id[
static dc_status_t -cochran_commander_read_config (cochran_commander_device_t *device, dc_event_progress_t *progress, unsigned char data[]) +cochran_commander_read_config (cochran_commander_device_t *device, dc_event_progress_t *progress, unsigned char data[], int data_size) { dc_device_t *abstract = (dc_device_t *) device; dc_status_t rc = DC_STATUS_SUCCESS;
- unsigned int pages = 2; + unsigned int pages = 0; + + switch (data_size) { + case 512: + pages = 1; + break; + case 1024: + pages = 2; + break; + default: + return DC_STATUS_INVALIDARGS; + break; + }
if (device->layout->model == COCHRAN_MODEL_COMMANDER_TM) pages = 1; @@ -816,7 +828,7 @@ cochran_commander_device_dump (dc_device_t *abstract, dc_buffer_t *buffer) vendor.size = sizeof (device->id); device_event_emit (abstract, DC_EVENT_VENDOR, &vendor);
- rc = cochran_commander_read_config (device, &progress, config); + rc = cochran_commander_read_config (device, &progress, config, config_size); if (rc != DC_STATUS_SUCCESS) return rc;
@@ -867,7 +879,7 @@ cochran_commander_device_foreach (dc_device_t *abstract, dc_dive_callback_t call
// Read config dc_status_t rc = DC_STATUS_SUCCESS; - rc = cochran_commander_read_config(device, &progress, data.config); + rc = cochran_commander_read_config(device, &progress, data.config, max_config); if (rc != DC_STATUS_SUCCESS) return rc;