X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=tests%2Flib.c;h=15beca27ae60096e070ff8bb41eb8be4716dc5e6;hp=523d4399c5a8986e2d18cc28a43646236ca14d31;hb=2622b4297fd4cc4bed5c06bb6ae0aaa8b40e0ece;hpb=34e4c273916d8fd246ca6aefbff05528f92391fc diff --git a/tests/lib.c b/tests/lib.c index 523d4399..15beca27 100644 --- a/tests/lib.c +++ b/tests/lib.c @@ -14,14 +14,35 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * along with this program; if not, see . */ +#include #include #include +#include +#include #include -#include "../libsigrok.h" +#include +#include "lib.h" + +struct sr_context *srtest_ctx; + +void srtest_setup(void) +{ + int ret; + + ret = sr_init(&srtest_ctx); + fail_unless(ret == SR_OK, "sr_init() failed: %d.", ret); +} + +void srtest_teardown(void) +{ + int ret; + + ret = sr_exit(srtest_ctx); + fail_unless(ret == SR_OK, "sr_exit() failed: %d.", ret); +} /* Get a libsigrok driver by name. */ struct sr_dev_driver *srtest_driver_get(const char *drivername) @@ -29,7 +50,7 @@ struct sr_dev_driver *srtest_driver_get(const char *drivername) struct sr_dev_driver **drivers, *driver = NULL; int i; - drivers = sr_driver_list(); + drivers = sr_driver_list(srtest_ctx); fail_unless(drivers != NULL, "No drivers found."); for (i = 0; drivers[i]; i++) { @@ -58,7 +79,7 @@ void srtest_driver_init_all(struct sr_context *sr_ctx) struct sr_dev_driver **drivers, *driver; int i, ret; - drivers = sr_driver_list(); + drivers = sr_driver_list(srtest_ctx); fail_unless(drivers != NULL, "No drivers found."); for (i = 0; drivers[i]; i++) { @@ -76,10 +97,10 @@ void srtest_set_samplerate(struct sr_dev_driver *driver, uint64_t samplerate) struct sr_dev_inst *sdi; GVariant *gvar; - sdi = g_slist_nth_data(driver->priv, 0); + sdi = g_slist_nth_data(driver->context, 0); gvar = g_variant_new_uint64(samplerate); - ret = driver->config_set(SR_CONF_SAMPLERATE, gvar, sdi); + ret = driver->config_set(SR_CONF_SAMPLERATE, gvar, sdi, NULL); g_variant_unref(gvar); fail_unless(ret == SR_OK, "%s: Failed to set SR_CONF_SAMPLERATE: %d.", @@ -94,9 +115,9 @@ uint64_t srtest_get_samplerate(struct sr_dev_driver *driver) struct sr_dev_inst *sdi; GVariant *gvar; - sdi = g_slist_nth_data(driver->priv, 0); + sdi = g_slist_nth_data(driver->context, 0); - ret = driver->config_get(SR_CONF_SAMPLERATE, &gvar, sdi); + ret = driver->config_get(SR_CONF_SAMPLERATE, &gvar, sdi, NULL); samplerate = g_variant_get_uint64(gvar); g_variant_unref(gvar); @@ -120,3 +141,22 @@ void srtest_check_samplerate(struct sr_context *sr_ctx, const char *drivername, fail_unless(s == samplerate, "%s: Incorrect samplerate: %" PRIu64 ".", drivername, s); } + +GArray *srtest_get_enabled_logic_channels(const struct sr_dev_inst *sdi) +{ + struct sr_channel *ch; + GArray *channels; + GSList *l; + + channels = g_array_new(FALSE, FALSE, sizeof(int)); + for (l = sr_dev_inst_channels_get(sdi); l; l = l->next) { + ch = l->data; + if (ch->type != SR_CHANNEL_LOGIC) + continue; + if (ch->enabled != TRUE) + continue; + g_array_append_val(channels, ch->index); + } + + return channels; +}