X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=session_driver.c;h=e73411d521fa0fe74118e4c5df7753367410eec7;hb=936e27f19712572d5a1c506dc0ef59aad8743fc4;hp=34f8c34e2a9ea773ef8c7cf1a57eb39be0e0b324;hpb=25a0f108f4512ade836fed128c3ad649dedcb788;p=libsigrok.git diff --git a/session_driver.c b/session_driver.c index 34f8c34e..e73411d5 100644 --- a/session_driver.c +++ b/session_driver.c @@ -27,7 +27,9 @@ #include "libsigrok-internal.h" /* size of payloads sent across the session bus */ +/** @cond PRIVATE */ #define CHUNKSIZE (512 * 1024) +/** @endcond */ struct session_vdev { char *sessionfile; @@ -47,40 +49,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 +74,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); @@ -133,6 +100,7 @@ static int receive_data(int fd, int revents, void *cb_data) if (!got_data) { packet.type = SR_DF_END; sr_session_send(cb_data, &packet); + sr_session_source_remove(-1); } return TRUE; @@ -141,22 +109,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 SR_OK; } -/** - * TODO. - */ static int hw_cleanup(void) { GSList *l; @@ -166,8 +124,6 @@ static int hw_cleanup(void) g_slist_free(dev_insts); dev_insts = NULL; - sr_session_source_remove(-1); - return SR_OK; } @@ -207,17 +163,6 @@ static int hw_info_get(int info_id, const void **data, return SR_OK; } -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; -} - static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, const void *value) { @@ -260,7 +205,8 @@ static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap, 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; @@ -269,8 +215,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); @@ -326,6 +271,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) return SR_OK; } +/** @private */ SR_PRIV struct sr_dev_driver session_driver = { .name = "session", .longname = "Session-emulating driver", @@ -335,7 +281,6 @@ SR_PRIV struct sr_dev_driver session_driver = { .dev_open = hw_dev_open, .dev_close = NULL, .info_get = hw_info_get, - .dev_status_get = hw_dev_status_get, .dev_config_set = hw_dev_config_set, .dev_acquisition_start = hw_dev_acquisition_start, .dev_acquisition_stop = NULL,