X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=session_driver.c;h=9f87c8e058f5f040ec87c4c26b3dda98eddad2a7;hb=8012ae1e3b40a88bbe20deaded7d66942a82380e;hp=ed397a96e466a250020dfd73c2da5a61f00da28b;hpb=40dda2c3a509e9e031078427e32249e2ebc33ec5;p=libsigrok.git diff --git a/session_driver.c b/session_driver.c index ed397a96..9f87c8e0 100644 --- a/session_driver.c +++ b/session_driver.c @@ -47,40 +47,6 @@ static const int hwcaps[] = { 0, }; -/** - * TODO. - * - * @param dev_index TODO. - */ -static struct session_vdev *get_vdev_by_index(int dev_index) -{ - struct sr_dev_inst *sdi; - struct session_vdev *vdev; - - /* TODO: Sanity checks on dev_index. */ - - if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) { - sr_err("session driver: %s: device instance with device " - "index %d was not found", __func__, dev_index); - return NULL; - } - - /* TODO: Is sdi->priv == NULL valid? */ - - vdev = sdi->priv; - - return vdev; -} - -/** - * TODO. - * - * @param fd TODO. - * @param revents TODO. - * @param cb_data TODO. - * - * @return TODO. - */ static int receive_data(int fd, int revents, void *cb_data) { struct sr_dev_inst *sdi; @@ -106,9 +72,8 @@ static int receive_data(int fd, int revents, void *cb_data) continue; if (!(buf = g_try_malloc(CHUNKSIZE))) { - sr_err("session driver: %s: buf malloc failed", - __func__); - return FALSE; /* TODO: SR_ERR_MALLOC */ + sr_err("session driver: %s: buf malloc failed", __func__); + return FALSE; } ret = zip_fread(vdev->capfile, buf, CHUNKSIZE); @@ -141,22 +106,12 @@ static int receive_data(int fd, int revents, void *cb_data) /* driver callbacks */ static int hw_cleanup(void); -/** - * TODO. - * - * @param devinfo TODO. - * - * @return TODO. - */ static int hw_init(void) { - return 0; + return SR_OK; } -/** - * TODO. - */ static int hw_cleanup(void) { GSList *l; @@ -171,14 +126,8 @@ static int hw_cleanup(void) return SR_OK; } -static int hw_dev_open(int dev_index) +static int hw_dev_open(struct sr_dev_inst *sdi) { - struct sr_dev_inst *sdi; - - sdi = sr_dev_inst_new(dev_index, SR_ST_INITIALIZING, - NULL, NULL, NULL); - if (!sdi) - return SR_ERR; if (!(sdi->priv = g_try_malloc0(sizeof(struct session_vdev)))) { sr_err("session driver: %s: sdi->priv malloc failed", __func__); @@ -190,51 +139,36 @@ static int hw_dev_open(int dev_index) return SR_OK; } -static const void *hw_dev_info_get(int dev_index, int dev_info_id) +static int hw_info_get(int info_id, const void **data, + const struct sr_dev_inst *sdi) { struct session_vdev *vdev; - void *info; - - if (dev_info_id != SR_DI_CUR_SAMPLERATE) - return NULL; - - if (!(vdev = get_vdev_by_index(dev_index))) - return NULL; - - info = &vdev->samplerate; - - return info; -} -static int hw_dev_status_get(int dev_index) -{ - /* Avoid compiler warnings. */ - (void)dev_index; - - if (sr_dev_list() != NULL) - return SR_OK; - else - return SR_ERR; -} + switch (info_id) { + case SR_DI_HWCAPS: + *data = hwcaps; + break; + case SR_DI_CUR_SAMPLERATE: + if (sdi) { + vdev = sdi->priv; + *data = &vdev->samplerate; + } else + return SR_ERR; + break; + default: + return SR_ERR_ARG; + } -/** - * Get the list of hardware capabilities. - * - * @return A pointer to the (hardware) capabilities of this virtual session - * driver. This could be NULL, if no such capabilities exist. - */ -static const int *hw_hwcap_get_all(void) -{ - return hwcaps; + return SR_OK; } -static int hw_dev_config_set(int dev_index, int hwcap, const void *value) +static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, + const void *value) { struct session_vdev *vdev; const uint64_t *tmp_u64; - if (!(vdev = get_vdev_by_index(dev_index))) - return SR_ERR; + vdev = sdi->priv; switch (hwcap) { case SR_HWCAP_SAMPLERATE: @@ -270,7 +204,8 @@ static int hw_dev_config_set(int dev_index, int hwcap, const void *value) return SR_OK; } -static int hw_dev_acquisition_start(int dev_index, void *cb_data) +static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, + void *cb_data) { struct zip_stat zs; struct session_vdev *vdev; @@ -279,8 +214,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) struct sr_datafeed_meta_logic meta; int ret; - if (!(vdev = get_vdev_by_index(dev_index))) - return SR_ERR; + vdev = sdi->priv; sr_info("session_driver: opening archive %s file %s", vdev->sessionfile, vdev->capturefile); @@ -344,9 +278,7 @@ SR_PRIV struct sr_dev_driver session_driver = { .cleanup = hw_cleanup, .dev_open = hw_dev_open, .dev_close = NULL, - .dev_info_get = hw_dev_info_get, - .dev_status_get = hw_dev_status_get, - .hwcap_get_all = hw_hwcap_get_all, + .info_get = hw_info_get, .dev_config_set = hw_dev_config_set, .dev_acquisition_start = hw_dev_acquisition_start, .dev_acquisition_stop = NULL,