Prefer size types for indices and length specs. Separate function calls
from result inspection from flow control, to improve readability. Trim
text line length in complex expressions. Eliminate redundant data types
in malloc calls. Eliminate else after return. Remove dead code.
struct libusb_device_handle *hdl;
libusb_device **devlist;
GSList *devices;
struct libusb_device_handle *hdl;
libusb_device **devlist;
GSList *devices;
+ int ret;
+ size_t i, j;
+ uint8_t bus, addr;
const struct zp_model *check;
char serial_num[64], connection_id[64];
const struct zp_model *check;
char serial_num[64], connection_id[64];
/* Find all ZEROPLUS analyzers and add them to device list. */
libusb_get_device_list(drvc->sr_ctx->libusb_ctx, &devlist); /* TODO: Errors. */
/* Find all ZEROPLUS analyzers and add them to device list. */
libusb_get_device_list(drvc->sr_ctx->libusb_ctx, &devlist); /* TODO: Errors. */
for (i = 0; devlist[i]; i++) {
libusb_get_device_descriptor(devlist[i], &des);
for (i = 0; devlist[i]; i++) {
libusb_get_device_descriptor(devlist[i], &des);
continue;
/* Get the device's serial number from USB strings. */
continue;
/* Get the device's serial number from USB strings. */
- if ((ret = libusb_open(devlist[i], &hdl)) < 0)
+ ret = libusb_open(devlist[i], &hdl);
+ if (ret < 0)
- if (des.iSerialNumber == 0) {
- serial_num[0] = '\0';
- } else if ((ret = libusb_get_string_descriptor_ascii(hdl,
- des.iSerialNumber, (unsigned char *) serial_num,
- sizeof(serial_num))) < 0) {
- sr_warn("Failed to get serial number string descriptor: %s.",
- libusb_error_name(ret));
- continue;
+ serial_num[0] = '\0';
+ if (des.iSerialNumber != 0) {
+ ret = libusb_get_string_descriptor_ascii(hdl,
+ des.iSerialNumber,
+ (uint8_t *)serial_num, sizeof(serial_num));
+ if (ret < 0) {
+ sr_warn("Cannot get USB serial number: %s.",
+ libusb_error_name(ret));
+ continue;
+ }
sr_info("Found ZEROPLUS %s.", prof->model_name);
sr_info("Found ZEROPLUS %s.", prof->model_name);
- sdi = g_malloc0(sizeof(struct sr_dev_inst));
+ sdi = g_malloc0(sizeof(*sdi));
sdi->status = SR_ST_INACTIVE;
sdi->vendor = g_strdup("ZEROPLUS");
sdi->model = g_strdup(prof->model_name);
sdi->serial_num = g_strdup(serial_num);
sdi->connection_id = g_strdup(connection_id);
sdi->status = SR_ST_INACTIVE;
sdi->vendor = g_strdup("ZEROPLUS");
sdi->model = g_strdup(prof->model_name);
sdi->serial_num = g_strdup(serial_num);
sdi->connection_id = g_strdup(connection_id);
- devc = g_malloc0(sizeof(struct dev_context));
+ bus = libusb_get_bus_number(devlist[i]);
+ addr = libusb_get_device_address(devlist[i]);
+ sdi->inst_type = SR_INST_USB;
+ sdi->conn = sr_usb_dev_inst_new(bus, addr, NULL);
+
+ devc = g_malloc0(sizeof(*devc));
sdi->priv = devc;
devc->prof = prof;
devc->num_channels = prof->channels;
sdi->priv = devc;
devc->prof = prof;
devc->num_channels = prof->channels;
#endif
devc->max_samplerate *= SR_MHZ(1);
devc->memory_size = MEMORY_SIZE_8K;
#endif
devc->max_samplerate *= SR_MHZ(1);
devc->memory_size = MEMORY_SIZE_8K;
- // memset(devc->trigger_buffer, 0, NUM_TRIGGER_STAGES);
- for (j = 0; j < devc->num_channels; j++)
+ for (j = 0; j < devc->num_channels; j++) {
sr_channel_new(sdi, j, SR_CHANNEL_LOGIC, TRUE,
channel_names[j]);
sr_channel_new(sdi, j, SR_CHANNEL_LOGIC, TRUE,
channel_names[j]);
devices = g_slist_append(devices, sdi);
devices = g_slist_append(devices, sdi);
- sdi->inst_type = SR_INST_USB;
- sdi->conn = sr_usb_dev_inst_new(
- libusb_get_bus_number(devlist[i]),
- libusb_get_device_address(devlist[i]), NULL);
}
libusb_free_device_list(devlist, 1);
}
libusb_free_device_list(devlist, 1);
#include <math.h>
#include "protocol.h"
#include <math.h>
#include "protocol.h"
-SR_PRIV unsigned int get_memory_size(int type)
+SR_PRIV size_t get_memory_size(int type)
{
if (type == MEMORY_SIZE_8K)
return (8 * 1024);
{
if (type == MEMORY_SIZE_8K)
return (8 * 1024);
- else if (type <= MEMORY_SIZE_8M)
+ if (type <= MEMORY_SIZE_8M)
return (32 * 1024) << type;
return (32 * 1024) << type;
}
static int clz(unsigned int x)
}
static int clz(unsigned int x)
SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples)
{
SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples)
{
if (samples > devc->max_sample_depth)
samples = devc->max_sample_depth;
if (samples > devc->max_sample_depth)
samples = devc->max_sample_depth;
else
devc->memory_size = 19 - clz(samples - 1);
else
devc->memory_size = 19 - clz(samples - 1);
- sr_info("Setting memory size to %dK.",
- get_memory_size(devc->memory_size) / 1024);
+ mem_kb = get_memory_size(devc->memory_size) / 1024;
+ sr_info("Setting memory size to %zuK.", mem_kb);
analyzer_set_memory_size(devc->memory_size);
analyzer_set_memory_size(devc->memory_size);
#define LOG_PREFIX "zeroplus-logic-cube"
#define LOG_PREFIX "zeroplus-logic-cube"
struct dev_context {
uint64_t cur_samplerate;
uint64_t max_samplerate;
uint64_t limit_samples;
struct dev_context {
uint64_t cur_samplerate;
uint64_t max_samplerate;
uint64_t limit_samples;
- int num_channels;
- int memory_size;
- unsigned int max_sample_depth;
- //uint8_t channel_mask;
- //uint8_t trigger_mask[NUM_TRIGGER_STAGES];
- //uint8_t trigger_value[NUM_TRIGGER_STAGES];
- // uint8_t trigger_buffer[NUM_TRIGGER_STAGES];
+ size_t num_channels;
+ size_t memory_size;
+ size_t max_sample_depth;
int trigger;
uint64_t capture_ratio;
double cur_threshold;
const struct zp_model *prof;
};
int trigger;
uint64_t capture_ratio;
double cur_threshold;
const struct zp_model *prof;
};
-SR_PRIV unsigned int get_memory_size(int type);
+SR_PRIV size_t get_memory_size(int type);
SR_PRIV int zp_set_samplerate(struct dev_context *devc, uint64_t samplerate);
SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples);
SR_PRIV int set_voltage_threshold(struct dev_context *devc, double thresh);
SR_PRIV int zp_set_samplerate(struct dev_context *devc, uint64_t samplerate);
SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples);
SR_PRIV int set_voltage_threshold(struct dev_context *devc, double thresh);