static int hw_dev_open(int dev_index) { struct sr_dev_inst *sdi; struct context *ctx; int ret; if (!(sdi = zp_open_dev(dev_index))) { sr_err("zp: unable to open device"); return SR_ERR; } /* TODO: Note: sdi is retrieved in zp_open_dev(). */ if (!(ctx = sdi->priv)) { sr_err("zp: %s: sdi->priv was NULL", __func__); return SR_ERR_ARG; } ret = libusb_set_configuration(ctx->usb->devhdl, USB_CONFIGURATION); if (ret < 0) { sr_err("zp: Unable to set USB configuration %d: %d", USB_CONFIGURATION, ret); return SR_ERR; } ret = libusb_claim_interface(ctx->usb->devhdl, USB_INTERFACE); if (ret != 0) { sr_err("zp: Unable to claim interface: %d", ret); return SR_ERR; } analyzer_reset(ctx->usb->devhdl); analyzer_initialize(ctx->usb->devhdl); analyzer_set_memory_size(MEMORY_SIZE_512K); // analyzer_set_freq(g_freq, g_freq_scale); analyzer_set_trigger_count(1); // analyzer_set_ramsize_trigger_address((((100 - g_pre_trigger) // * get_memory_size(g_memory_size)) / 100) >> 2); analyzer_set_ramsize_trigger_address( (100 * get_memory_size(MEMORY_SIZE_512K) / 100) >> 2); #if 0 if (g_double_mode == 1) analyzer_set_compression(COMPRESSION_DOUBLE); else if (g_compression == 1) analyzer_set_compression(COMPRESSION_ENABLE); else #endif analyzer_set_compression(COMPRESSION_NONE); if (ctx->cur_samplerate == 0) { /* Samplerate hasn't been set. Default to the slowest one. */ if (hw_dev_config_set(dev_index, SR_HWCAP_SAMPLERATE, &samplerates.list[0]) == SR_ERR) return SR_ERR; } return SR_OK; }
static int dev_open(struct sr_dev_inst *sdi) { struct dev_context *devc; struct drv_context *drvc; struct sr_usb_dev_inst *usb; libusb_device **devlist, *dev; struct libusb_device_descriptor des; int device_count, ret, i; drvc = di->priv; usb = sdi->conn; if (!(devc = sdi->priv)) { sr_err("%s: sdi->priv was NULL", __func__); return SR_ERR_ARG; } device_count = libusb_get_device_list(drvc->sr_ctx->libusb_ctx, &devlist); if (device_count < 0) { sr_err("Failed to retrieve device list."); return SR_ERR; } dev = NULL; for (i = 0; i < device_count; i++) { if ((ret = libusb_get_device_descriptor(devlist[i], &des))) { sr_err("Failed to get device descriptor: %s.", libusb_error_name(ret)); continue; } if (libusb_get_bus_number(devlist[i]) == usb->bus && libusb_get_device_address(devlist[i]) == usb->address) { dev = devlist[i]; break; } } if (!dev) { sr_err("Device on bus %d address %d disappeared!", usb->bus, usb->address); return SR_ERR; } if (!(ret = libusb_open(dev, &(usb->devhdl)))) { sdi->status = SR_ST_ACTIVE; sr_info("Opened device %d on %d.%d interface %d.", sdi->index, usb->bus, usb->address, USB_INTERFACE); } else { sr_err("Failed to open device: %s.", libusb_error_name(ret)); return SR_ERR; } ret = libusb_set_configuration(usb->devhdl, USB_CONFIGURATION); if (ret < 0) { sr_err("Unable to set USB configuration %d: %s.", USB_CONFIGURATION, libusb_error_name(ret)); return SR_ERR; } ret = libusb_claim_interface(usb->devhdl, USB_INTERFACE); if (ret != 0) { sr_err("Unable to claim interface: %s.", libusb_error_name(ret)); return SR_ERR; } /* Set default configuration after power on. */ if (analyzer_read_status(usb->devhdl) == 0) analyzer_configure(usb->devhdl); analyzer_reset(usb->devhdl); analyzer_initialize(usb->devhdl); //analyzer_set_memory_size(MEMORY_SIZE_512K); // analyzer_set_freq(g_freq, g_freq_scale); analyzer_set_trigger_count(1); // analyzer_set_ramsize_trigger_address((((100 - g_pre_trigger) // * get_memory_size(g_memory_size)) / 100) >> 2); #if 0 if (g_double_mode == 1) analyzer_set_compression(COMPRESSION_DOUBLE); else if (g_compression == 1) analyzer_set_compression(COMPRESSION_ENABLE); else #endif analyzer_set_compression(COMPRESSION_NONE); if (devc->cur_samplerate == 0) { /* Samplerate hasn't been set. Default to 1MHz. */ analyzer_set_freq(1, FREQ_SCALE_MHZ); devc->cur_samplerate = SR_MHZ(1); } if (devc->cur_threshold == 0) set_voltage_threshold(devc, 1.5); return SR_OK; }