X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fnexus-osciprime%2Fapi.c;h=238cda515867bd5ee5d278e53e4c78493acc0b0f;hb=542dbd185b2e01e61df8a70a2ab850f5cfe03271;hp=a902b1435ce57df5a953c4081dd658102cc69274;hpb=1987b8d63e748f0813dc6a4630e99686e4fe1728;p=libsigrok.git diff --git a/hardware/nexus-osciprime/api.c b/hardware/nexus-osciprime/api.c index a902b143..238cda51 100644 --- a/hardware/nexus-osciprime/api.c +++ b/hardware/nexus-osciprime/api.c @@ -29,22 +29,20 @@ #define OSCI_FIRMWARE FIRMWARE_DIR "/nexus-osciprime.fw" #define OSCI_VIDPID "04b4.1004" -static const int hwopts[] = { - SR_HWOPT_CONN, - SR_HWOPT_SERIALCOMM, - 0, +static const int32_t hwopts[] = { + SR_CONF_CONN, + SR_CONF_SERIALCOMM, }; -static const int hwcaps[] = { - SR_HWCAP_OSCILLOSCOPE, - SR_HWCAP_LIMIT_SAMPLES, - SR_HWCAP_CONTINUOUS, - SR_HWCAP_TIMEBASE, - SR_HWCAP_VDIV, - 0, +static const int32_t hwcaps[] = { + SR_CONF_OSCILLOSCOPE, + SR_CONF_LIMIT_SAMPLES, + SR_CONF_CONTINUOUS, + SR_CONF_TIMEBASE, + SR_CONF_VDIV, }; -static const struct sr_rational timebases[] = { +static const uint64_t timebases[][2] = { /* 24 MHz */ { 42, 1e9 }, /* 12 MHz */ @@ -96,7 +94,7 @@ static const char *probe_names[] = { NULL, }; -static const struct sr_rational vdivs[] = { +static const uint64_t vdivs[][2] = { { 1, 1 }, { 2, 1 }, { 5, 2 }, @@ -139,17 +137,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) @@ -167,10 +155,7 @@ static GSList *hw_scan(GSList *options) (void)options; - if (!(drvc = di->priv)) { - sr_err("Driver was not initialized."); - return NULL; - } + drvc = di->priv; /* USB scan is always authoritative. */ clear_instances(); @@ -179,8 +164,8 @@ static GSList *hw_scan(GSList *options) for (l = options; l; l = l->next) { src = l->data; switch (src->key) { - case SR_HWOPT_CONN: - conn = src->value; + case SR_CONF_CONN: + conn = g_variant_get_string(src->data, NULL); break; } } @@ -231,18 +216,14 @@ static GSList *hw_scan(GSList *options) static GSList *hw_dev_list(void) { - struct drv_context *drvc; - - drvc = di->priv; - - return drvc->instances; + return ((struct drv_context *)(di->priv))->instances; } static int hw_dev_open(struct sr_dev_inst *sdi) { /* TODO */ - (void)sdi; + sdi->status = SR_ST_ACTIVE; return SR_OK; } @@ -251,7 +232,7 @@ static int hw_dev_close(struct sr_dev_inst *sdi) { /* TODO */ - (void)sdi; + sdi->status = SR_ST_INACTIVE; return SR_OK; } @@ -265,52 +246,48 @@ static int hw_cleanup(void) return SR_OK; } -static int hw_info_get(int info_id, const void **data, - const struct sr_dev_inst *sdi) +static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi) { + int ret; + /* TODO */ (void)data; - (void)sdi; - switch (info_id) { + if (sdi->status != SR_ST_ACTIVE) + return SR_ERR_DEV_CLOSED; + + ret = SR_OK; + switch (id) { + default: - return SR_ERR_ARG; + ret = SR_ERR_NA; } - return SR_OK; + return ret; } -static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, - const void *value) +static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi) { - int ret; - - /* TODO */ - (void)value; - - if (sdi->status != SR_ST_ACTIVE) { - sr_err("Device inactive, can't set config options."); - return SR_ERR; - } - - ret = SR_OK; - switch (hwcap) { + (void)sdi; + (void)data; + switch (key) { default: - sr_err("Unknown hardware capability: %d.", hwcap); - ret = SR_ERR_ARG; + return SR_ERR_NA; } - return ret; + return SR_OK; } static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) { /* TODO */ - (void)sdi; (void)cb_data; + if (sdi->status != SR_ST_ACTIVE) + return SR_ERR_DEV_CLOSED; + return SR_OK; } @@ -337,10 +314,11 @@ SR_PRIV struct sr_dev_driver nexus_osciprime_driver_info = { .scan = hw_scan, .dev_list = hw_dev_list, .dev_clear = clear_instances, + .config_get = NULL, + .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,