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; }
SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples) { devc->limit_samples = samples; if (samples <= 2 * 1024) devc->memory_size = MEMORY_SIZE_8K; else if (samples <= 16 * 1024) devc->memory_size = MEMORY_SIZE_64K; else if (samples <= 32 * 1024 || devc->max_memory_size <= 32 * 1024) devc->memory_size = MEMORY_SIZE_128K; else devc->memory_size = MEMORY_SIZE_512K; sr_info("Setting memory size to %dK.", get_memory_size(devc->memory_size) / 1024); analyzer_set_memory_size(devc->memory_size); return SR_OK; }