zeroplus: Cosmetics, small fixes, drop unneeded stuff.

This commit is contained in:
Uwe Hermann 2013-02-08 22:18:55 +01:00
parent 58c5f2ed17
commit e495a676eb
3 changed files with 28 additions and 39 deletions

View File

@ -19,44 +19,37 @@
#include "protocol.h" #include "protocol.h"
#define USB_VENDOR 0x0c12
#define VENDOR_NAME "ZEROPLUS" #define VENDOR_NAME "ZEROPLUS"
#define MODEL_NAME "Logic Cube LAP-C"
#define MODEL_VERSION NULL
#define NUM_PROBES 16
#define USB_INTERFACE 0 #define USB_INTERFACE 0
#define USB_CONFIGURATION 1 #define USB_CONFIGURATION 1
#define NUM_TRIGGER_STAGES 4 #define NUM_TRIGGER_STAGES 4
#define TRIGGER_TYPE "01" #define TRIGGER_TYPE "01"
#define PACKET_SIZE 2048 /* ?? */ #define PACKET_SIZE 2048 /* ?? */
//#define ZP_EXPERIMENTAL //#define ZP_EXPERIMENTAL
typedef struct { struct zp_model {
unsigned short vid; uint16_t vid;
unsigned short pid; uint16_t pid;
char *model_name; char *model_name;
unsigned int channels; unsigned int channels;
unsigned int sample_depth; /* In Ksamples/channel */ unsigned int sample_depth; /* In Ksamples/channel */
unsigned int max_sampling_freq; unsigned int max_sampling_freq;
} model_t; };
/* /*
* Note -- 16032, 16064 and 16128 *usually* -- but not always -- have the * Note -- 16032, 16064 and 16128 *usually* -- but not always -- have the
* same 128K sample depth. * same 128K sample depth.
*/ */
static model_t zeroplus_models[] = { static const struct zp_model zeroplus_models[] = {
{0x0c12, 0x7009, "LAP-C(16064)", 16, 64, 100}, {0x0c12, 0x7009, "LAP-C(16064)", 16, 64, 100},
{0x0c12, 0x700A, "LAP-C(16128)", 16, 128, 200}, {0x0c12, 0x700a, "LAP-C(16128)", 16, 128, 200},
/* TODO: we don't know anything about these /* TODO: We don't know anything about these.
{0x0c12, 0x700B, "LAP-C(32128)", 32, 128, 200}, {0x0c12, 0x700b, "LAP-C(32128)", 32, 128, 200},
{0x0c12, 0x700C, "LAP-C(321000)", 32, 1024, 200}, {0x0c12, 0x700c, "LAP-C(321000)", 32, 1024, 200},
{0x0c12, 0x700D, "LAP-C(322000)", 32, 2048, 200}, {0x0c12, 0x700d, "LAP-C(322000)", 32, 2048, 200},
*/ */
{0x0c12, 0x700E, "LAP-C(16032)", 16, 32, 100}, {0x0c12, 0x700e, "LAP-C(16032)", 16, 32, 100},
{0x0c12, 0x7016, "LAP-C(162000)", 16, 2048, 200}, {0x0c12, 0x7016, "LAP-C(162000)", 16, 2048, 200},
{ 0, 0, 0, 0, 0, 0 } { 0, 0, 0, 0, 0, 0 }
}; };
@ -65,8 +58,6 @@ static const int hwcaps[] = {
SR_CONF_LOGIC_ANALYZER, SR_CONF_LOGIC_ANALYZER,
SR_CONF_SAMPLERATE, SR_CONF_SAMPLERATE,
SR_CONF_CAPTURE_RATIO, SR_CONF_CAPTURE_RATIO,
/* These are really implemented in the driver, not the hardware. */
SR_CONF_LIMIT_SAMPLES, SR_CONF_LIMIT_SAMPLES,
0, 0,
}; };
@ -75,13 +66,12 @@ static const int hwcaps[] = {
* ZEROPLUS LAP-C (16032) numbers the 16 probes A0-A7 and B0-B7. * ZEROPLUS LAP-C (16032) numbers the 16 probes A0-A7 and B0-B7.
* We currently ignore other untested/unsupported devices here. * We currently ignore other untested/unsupported devices here.
*/ */
static const char *probe_names[NUM_PROBES + 1] = { static const char *probe_names[] = {
"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7",
"B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7",
NULL, NULL,
}; };
/* List of struct sr_dev_inst, maintained by dev_open()/dev_close(). */
SR_PRIV struct sr_dev_driver zeroplus_logic_cube_driver_info; SR_PRIV struct sr_dev_driver zeroplus_logic_cube_driver_info;
static struct sr_dev_driver *di = &zeroplus_logic_cube_driver_info; static struct sr_dev_driver *di = &zeroplus_logic_cube_driver_info;
@ -252,7 +242,7 @@ static GSList *hw_scan(GSList *options)
struct sr_probe *probe; struct sr_probe *probe;
struct drv_context *drvc; struct drv_context *drvc;
struct dev_context *devc; struct dev_context *devc;
model_t *prof; const struct zp_model *prof;
struct libusb_device_descriptor des; struct libusb_device_descriptor des;
libusb_device **devlist; libusb_device **devlist;
GSList *devices; GSList *devices;
@ -285,10 +275,10 @@ static GSList *hw_scan(GSList *options)
prof = &zeroplus_models[j]; prof = &zeroplus_models[j];
} }
} }
/* Skip if the device was not found */ /* Skip if the device was not found. */
if (!prof) if (!prof)
continue; continue;
sr_info("Found ZEROPLUS model %s.", prof->model_name); sr_info("Found ZEROPLUS %s.", prof->model_name);
/* Register the device with libsigrok. */ /* Register the device with libsigrok. */
if (!(sdi = sr_dev_inst_new(devcnt, SR_ST_INACTIVE, if (!(sdi = sr_dev_inst_new(devcnt, SR_ST_INACTIVE,
@ -303,6 +293,7 @@ static GSList *hw_scan(GSList *options)
sr_err("Device context malloc failed."); sr_err("Device context malloc failed.");
return NULL; return NULL;
} }
sdi->priv = devc; sdi->priv = devc;
devc->num_channels = prof->channels; devc->num_channels = prof->channels;
#ifdef ZP_EXPERIMENTAL #ifdef ZP_EXPERIMENTAL
@ -345,11 +336,13 @@ static GSList *hw_dev_list(void)
static int hw_dev_open(struct sr_dev_inst *sdi) static int hw_dev_open(struct sr_dev_inst *sdi)
{ {
struct dev_context *devc; struct dev_context *devc;
struct drv_context *drvc = di->priv; struct drv_context *drvc;
libusb_device **devlist, *dev; libusb_device **devlist, *dev;
struct libusb_device_descriptor des; struct libusb_device_descriptor des;
int device_count, ret, i; int device_count, ret, i;
drvc = di->priv;
if (!(devc = sdi->priv)) { if (!(devc = sdi->priv)) {
sr_err("%s: sdi->priv was NULL", __func__); sr_err("%s: sdi->priv was NULL", __func__);
return SR_ERR_ARG; return SR_ERR_ARG;
@ -405,7 +398,7 @@ static int hw_dev_open(struct sr_dev_inst *sdi)
return SR_ERR; return SR_ERR;
} }
/* Set default configuration after power on */ /* Set default configuration after power on. */
if (analyzer_read_status(devc->usb->devhdl) == 0) if (analyzer_read_status(devc->usb->devhdl) == 0)
analyzer_configure(devc->usb->devhdl); analyzer_configure(devc->usb->devhdl);
@ -513,6 +506,8 @@ static int config_set(int id, const void *value, const struct sr_dev_inst *sdi)
default: default:
return SR_ERR; return SR_ERR;
} }
return SR_OK;
} }
static int config_list(int key, const void **data, const struct sr_dev_inst *sdi) static int config_list(int key, const void **data, const struct sr_dev_inst *sdi)
@ -543,8 +538,7 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
struct sr_datafeed_logic logic; struct sr_datafeed_logic logic;
//uint64_t samples_read; //uint64_t samples_read;
int res; int res;
unsigned int packet_num; unsigned int packet_num, n;
unsigned int n;
unsigned char *buf; unsigned char *buf;
struct dev_context *devc; struct dev_context *devc;
@ -560,7 +554,7 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
set_triggerbar(devc); set_triggerbar(devc);
/* push configured settings to device */ /* Push configured settings to device. */
analyzer_configure(devc->usb->devhdl); analyzer_configure(devc->usb->devhdl);
analyzer_start(devc->usb->devhdl); analyzer_start(devc->usb->devhdl);

View File

@ -42,7 +42,7 @@ SR_PRIV int zp_set_samplerate(struct dev_context *devc, uint64_t samplerate)
break; break;
if (!zp_supported_samplerates[i] || samplerate > devc->max_samplerate) { if (!zp_supported_samplerates[i] || samplerate > devc->max_samplerate) {
sr_err("Unsupported samplerate."); sr_err("Unsupported samplerate: %" PRIu64 "Hz.", samplerate);
return SR_ERR_ARG; return SR_ERR_ARG;
} }
@ -68,8 +68,7 @@ SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples)
devc->memory_size = MEMORY_SIZE_8K; devc->memory_size = MEMORY_SIZE_8K;
else if (samples <= 16 * 1024) else if (samples <= 16 * 1024)
devc->memory_size = MEMORY_SIZE_64K; devc->memory_size = MEMORY_SIZE_64K;
else if (samples <= 32 * 1024 || else if (samples <= 32 * 1024 || devc->max_memory_size <= 32 * 1024)
devc->max_memory_size <= 32 * 1024)
devc->memory_size = MEMORY_SIZE_128K; devc->memory_size = MEMORY_SIZE_128K;
else else
devc->memory_size = MEMORY_SIZE_512K; devc->memory_size = MEMORY_SIZE_512K;
@ -98,9 +97,7 @@ SR_PRIV int set_capture_ratio(struct dev_context *devc, uint64_t ratio)
SR_PRIV void set_triggerbar(struct dev_context *devc) SR_PRIV void set_triggerbar(struct dev_context *devc)
{ {
unsigned int ramsize; unsigned int ramsize, n, triggerbar;
unsigned int n;
unsigned int triggerbar;
ramsize = get_memory_size(devc->memory_size) / 4; ramsize = get_memory_size(devc->memory_size) / 4;
if (devc->trigger) { if (devc->trigger) {

View File

@ -42,7 +42,7 @@ struct dev_context {
uint64_t cur_samplerate; uint64_t cur_samplerate;
uint64_t max_samplerate; uint64_t max_samplerate;
uint64_t limit_samples; uint64_t limit_samples;
int num_channels; /* TODO: This isn't initialized before it's needed :( */ int num_channels;
int memory_size; int memory_size;
unsigned int max_memory_size; unsigned int max_memory_size;
//uint8_t probe_mask; //uint8_t probe_mask;
@ -51,8 +51,6 @@ struct dev_context {
// uint8_t trigger_buffer[NUM_TRIGGER_STAGES]; // uint8_t trigger_buffer[NUM_TRIGGER_STAGES];
int trigger; int trigger;
unsigned int capture_ratio; unsigned int capture_ratio;
/* TODO: this belongs in the device instance */
struct sr_usb_dev_inst *usb; struct sr_usb_dev_inst *usb;
}; };