X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Ffx2lafw%2Ffx2lafw.c;h=a0955371a21e105fd129208a03e7c6d4ef264691;hb=063e7aef6d41d4c44591ff93672079998bf9622f;hp=304873ae9f3a8f9b6b8ac7a4ab7bd93d325768d1;hpb=1987b8d63e748f0813dc6a4630e99686e4fe1728;p=libsigrok.git diff --git a/hardware/fx2lafw/fx2lafw.c b/hardware/fx2lafw/fx2lafw.c index 304873ae..a0955371 100644 --- a/hardware/fx2lafw/fx2lafw.c +++ b/hardware/fx2lafw/fx2lafw.c @@ -82,12 +82,12 @@ static const struct fx2lafw_profile supported_fx2[] = { }; static const int hwcaps[] = { - SR_HWCAP_LOGIC_ANALYZER, - SR_HWCAP_SAMPLERATE, + SR_CONF_LOGIC_ANALYZER, + SR_CONF_SAMPLERATE, /* These are really implemented in the driver, not the hardware. */ - SR_HWCAP_LIMIT_SAMPLES, - SR_HWCAP_CONTINUOUS, + SR_CONF_LIMIT_SAMPLES, + SR_CONF_CONTINUOUS, 0, }; @@ -127,8 +127,7 @@ static const struct sr_samplerates samplerates = { SR_PRIV struct sr_dev_driver fx2lafw_driver_info; static struct sr_dev_driver *di = &fx2lafw_driver_info; static int hw_dev_close(struct sr_dev_inst *sdi); -static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, - const void *value); +static int config_set(int id, const void *value, const struct sr_dev_inst *sdi); static int hw_dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data); /** @@ -385,17 +384,7 @@ static int clear_instances(void) static int hw_init(struct sr_context *sr_ctx) { - struct drv_context *drvc; - - if (!(drvc = g_try_malloc0(sizeof(struct drv_context)))) { - sr_err("Driver context malloc failed."); - return SR_ERR_MALLOC; - } - - drvc->sr_ctx = sr_ctx; - di->priv = drvc; - - return SR_OK; + return std_hw_init(sr_ctx, di, DRIVER_LOG_DOMAIN); } static GSList *hw_scan(GSList *options) @@ -561,8 +550,8 @@ static int hw_dev_open(struct sr_dev_inst *sdi) if (devc->cur_samplerate == 0) { /* Samplerate hasn't been set; default to the slowest one. */ - if (hw_dev_config_set(sdi, SR_HWCAP_SAMPLERATE, - &supported_samplerates[0]) == SR_ERR) + if (config_set(SR_CONF_SAMPLERATE, &supported_samplerates[0], + sdi) == SR_ERR) return SR_ERR; } @@ -603,22 +592,12 @@ static int hw_cleanup(void) return ret; } -static int hw_info_get(int info_id, const void **data, - const struct sr_dev_inst *sdi) +static int config_get(int id, const void **data, const struct sr_dev_inst *sdi) { struct dev_context *devc; - switch (info_id) { - case SR_DI_HWCAPS: - *data = hwcaps; - break; - case SR_DI_SAMPLERATES: - *data = &samplerates; - break; - case SR_DI_TRIGGER_TYPES: - *data = TRIGGER_TYPES; - break; - case SR_DI_CUR_SAMPLERATE: + switch (id) { + case SR_CONF_SAMPLERATE: if (sdi) { devc = sdi->priv; *data = &devc->cur_samplerate; @@ -632,18 +611,17 @@ static int hw_info_get(int info_id, const void **data, return SR_OK; } -static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, - const void *value) +static int config_set(int id, const void *value, const struct sr_dev_inst *sdi) { struct dev_context *devc; int ret; devc = sdi->priv; - if (hwcap == SR_HWCAP_SAMPLERATE) { + if (id == SR_CONF_SAMPLERATE) { devc->cur_samplerate = *(const uint64_t *)value; ret = SR_OK; - } else if (hwcap == SR_HWCAP_LIMIT_SAMPLES) { + } else if (id == SR_CONF_LIMIT_SAMPLES) { devc->limit_samples = *(const uint64_t *)value; ret = SR_OK; } else { @@ -653,6 +631,28 @@ static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, return ret; } +static int config_list(int key, const void **data, const struct sr_dev_inst *sdi) +{ + + (void)sdi; + + switch (key) { + case SR_CONF_DEVICE_OPTIONS: + *data = hwcaps; + break; + case SR_CONF_SAMPLERATE: + *data = &samplerates; + break; + case SR_CONF_TRIGGER_TYPE: + *data = TRIGGER_TYPE; + break; + default: + return SR_ERR_ARG; + } + + return SR_OK; +} + static int receive_data(int fd, int revents, void *cb_data) { struct timeval tv; @@ -1025,10 +1025,11 @@ SR_PRIV struct sr_dev_driver fx2lafw_driver_info = { .scan = hw_scan, .dev_list = hw_dev_list, .dev_clear = clear_instances, + .config_get = config_get, + .config_set = config_set, + .config_list = config_list, .dev_open = hw_dev_open, .dev_close = hw_dev_close, - .info_get = hw_info_get, - .dev_config_set = hw_dev_config_set, .dev_acquisition_start = hw_dev_acquisition_start, .dev_acquisition_stop = hw_dev_acquisition_stop, .priv = NULL,