X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Flink-mso19%2Flink-mso19.c;h=62c3882e59bf3bc1d0ea49153fe09ff23c12e566;hb=d3683c42e74fa61c21fc0f1bf360ae201fc4b1d1;hp=138ffe970125de629fd56b528c716552fc9cd045;hpb=5c64390e5ac8a0052d8b7eeb49c781d86027c814;p=libsigrok.git diff --git a/hardware/link-mso19/link-mso19.c b/hardware/link-mso19/link-mso19.c index 138ffe97..62c3882e 100644 --- a/hardware/link-mso19/link-mso19.c +++ b/hardware/link-mso19/link-mso19.c @@ -416,7 +416,7 @@ static int hw_init(const char *deviceinfo) */ udev = udev_new(); if (!udev) { - sr_warn("Failed to initialize udev."); + sr_err("Failed to initialize udev."); goto ret; } enumerate = udev_enumerate_new(udev); @@ -436,8 +436,8 @@ static int hw_init(const char *deviceinfo) parent = udev_device_get_parent_with_subsystem_devtype( dev, "usb", "usb_device"); if (!parent) { - sr_warn("Unable to find parent usb device for %s", - sysname); + sr_err("Unable to find parent usb device for %s", + sysname); continue; } @@ -455,7 +455,7 @@ static int hw_init(const char *deviceinfo) s = strcspn(iProduct, " "); if (s > sizeof(product) || strlen(iProduct) - s > sizeof(manufacturer)) { - sr_warn("Could not parse iProduct: %s", iProduct); + sr_err("Could not parse iProduct: %s", iProduct); continue; } strncpy(product, iProduct, s); @@ -468,7 +468,7 @@ static int hw_init(const char *deviceinfo) } if (mso_parse_serial(iSerial, iProduct, mso) != SR_OK) { - sr_warn("Invalid iSerial: %s", iSerial); + sr_err("Invalid iSerial: %s", iSerial); goto err_free_mso; } sprintf(hwrev, "r%d", mso->hwrev); @@ -486,18 +486,18 @@ static int hw_init(const char *deviceinfo) mso->protocol_trigger.spimode = 0; } - sdi = sr_device_instance_new(devcnt, SR_ST_INITIALIZING, + sdi = sr_dev_inst_new(devcnt, SR_ST_INITIALIZING, manufacturer, product, hwrev); if (!sdi) { - sr_warn("Unable to create device instance for %s", - sysname); + sr_err("Unable to create device instance for %s", + sysname); goto err_free_mso; } /* save a pointer to our private instance data */ sdi->priv = mso; - sdi->serial = sr_serial_device_instance_new(path, -1); + sdi->serial = sr_serial_dev_inst_new(path, -1); if (!sdi->serial) goto err_device_instance_free; @@ -506,9 +506,9 @@ static int hw_init(const char *deviceinfo) continue; err_device_instance_free: - sr_device_instance_free(sdi); + sr_dev_inst_free(sdi); err_free_mso: - free(mso); + g_free(mso); } udev_enumerate_unref(enumerate); @@ -518,25 +518,30 @@ ret: return devcnt; } -static void hw_cleanup(void) +static int hw_cleanup(void) { GSList *l; struct sr_device_instance *sdi; + int ret = SR_OK; /* Properly close all devices. */ for (l = device_instances; l; l = l->next) { - sdi = l->data; + if (!(sdi = l->data)) { + /* Log error, but continue cleaning up the rest. */ + sr_err("mso19: %s: sdi was NULL, continuing", __func__); + ret = SR_ERR_BUG; + continue; + } if (sdi->serial->fd != -1) serial_close(sdi->serial->fd); - if (sdi->priv != NULL) - { - free(sdi->priv); - sdi->priv = NULL; - } - sr_device_instance_free(sdi); + g_free(sdi->priv); + sdi->priv = NULL; + sr_dev_inst_free(sdi); } g_slist_free(device_instances); device_instances = NULL; + + return SR_OK; } static int hw_opendev(int device_index) @@ -545,7 +550,7 @@ static int hw_opendev(int device_index) struct mso *mso; int ret = SR_ERR; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_get_dev_inst(device_instances, device_index))) return ret; mso = sdi->priv; @@ -585,7 +590,7 @@ static int hw_closedev(int device_index) { struct sr_device_instance *sdi; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) { + if (!(sdi = sr_get_dev_inst(device_instances, device_index))) { sr_err("mso19: %s: sdi was NULL", __func__); return SR_ERR; /* TODO: SR_ERR_ARG? */ } @@ -607,7 +612,7 @@ static void *hw_get_device_info(int device_index, int device_info_id) struct mso *mso; void *info = NULL; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_get_dev_inst(device_instances, device_index))) return NULL; mso = sdi->priv; @@ -638,7 +643,7 @@ static int hw_get_status(int device_index) { struct sr_device_instance *sdi; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_get_dev_inst(device_instances, device_index))) return SR_ST_NOT_FOUND; return sdi->status; @@ -653,7 +658,7 @@ static int hw_set_configuration(int device_index, int capability, void *value) { struct sr_device_instance *sdi; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_get_dev_inst(device_instances, device_index))) return SR_ERR; switch (capability) { @@ -750,7 +755,7 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) struct sr_datafeed_header header; int ret = SR_ERR; - if (!(sdi = sr_get_device_instance(device_instances, device_index))) + if (!(sdi = sr_get_dev_inst(device_instances, device_index))) return ret; mso = sdi->priv; @@ -816,7 +821,7 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) } /* FIXME */ -static void hw_stop_acquisition(int device_index, gpointer session_device_id) +static int hw_stop_acquisition(int device_index, gpointer session_device_id) { struct sr_datafeed_packet packet; @@ -824,6 +829,8 @@ static void hw_stop_acquisition(int device_index, gpointer session_device_id) packet.type = SR_DF_END; sr_session_bus(session_device_id, &packet); + + return SR_OK; } SR_PRIV struct sr_device_plugin link_mso19_plugin_info = {