X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fsession.c;h=dc8fd4fbeaffc2ce3c78cdeabcd5156f30c44363;hb=db560903d196c39bceeaa543317fa602a02b51ac;hp=148da24b0e59fe788ea34e5b72606bfc1198677c;hpb=41de54ffb1d36cbf5021705403a85b171662ec96;p=libsigrok.git diff --git a/src/session.c b/src/session.c index 148da24b..dc8fd4fb 100644 --- a/src/session.c +++ b/src/session.c @@ -189,8 +189,6 @@ SR_API int sr_session_dev_add(struct sr_session *session, /* If sdi->driver is NULL, this is a virtual device. */ if (!sdi->driver) { - sr_dbg("%s: sdi->driver was NULL, this seems to be " - "a virtual device; continuing", __func__); /* Just add the device, don't run dev_open(). */ session->devs = g_slist_append(session->devs, (gpointer)sdi); sdi->session = session; @@ -436,8 +434,9 @@ static int verify_trigger(struct sr_trigger *trigger) SR_API int sr_session_start(struct sr_session *session) { struct sr_dev_inst *sdi; - GSList *l; - int ret; + struct sr_channel *ch; + GSList *l, *c; + int enabled_channels, ret; if (!session) { sr_err("%s: session was NULL", __func__); @@ -458,6 +457,21 @@ SR_API int sr_session_start(struct sr_session *session) ret = SR_OK; for (l = session->devs; l; l = l->next) { sdi = l->data; + enabled_channels = 0; + for (c = sdi->channels; c; c = c->next) { + ch = c->data; + if (ch->enabled) { + enabled_channels++; + break; + } + } + if (enabled_channels == 0) { + ret = SR_ERR; + sr_err("%s instance %d has no enabled channels!", + sdi->driver->name, sdi->index); + break; + } + if ((ret = sr_config_commit(sdi)) != SR_OK) { sr_err("Failed to commit device settings before " "starting acquisition (%s)", sr_strerror(ret));