X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=input.c;h=c62c96406917a74e424a4de7e054625bee5894c3;hp=4d3f358ab1316abafee71587085de4a3e83615eb;hb=7c6a0420448760fc138cbe38579a5c9e0a46132c;hpb=8d52f788755a9666e7053c2d411fec069f5afc4c diff --git a/input.c b/input.c index 4d3f358..c62c964 100644 --- a/input.c +++ b/input.c @@ -25,11 +25,6 @@ #include #include -extern gchar *opt_input_file; -extern gchar *opt_input_format; -extern gchar *opt_probes; - - /** * Return the input file format which the CLI tool should use. * @@ -93,6 +88,7 @@ static void load_input_file_format(void) { GHashTable *fmtargs = NULL; struct stat st; + struct sr_session *session; struct sr_input *in; struct sr_input_format *input_format; char *fmtspec = NULL; @@ -131,20 +127,20 @@ static void load_input_file_format(void) } } - if (select_probes(in->sdi) > 0) + if (select_channels(in->sdi) != SR_OK) return; - sr_session_new(); - sr_session_datafeed_callback_add(datafeed_in, NULL); - if (sr_session_dev_add(in->sdi) != SR_OK) { + sr_session_new(&session); + sr_session_datafeed_callback_add(session, &datafeed_in, NULL); + if (sr_session_dev_add(session, in->sdi) != SR_OK) { g_critical("Failed to use device."); - sr_session_destroy(); + sr_session_destroy(session); return; } input_format->loadfile(in, opt_input_file); - sr_session_destroy(); + sr_session_destroy(session); if (fmtargs) g_hash_table_destroy(fmtargs); @@ -152,17 +148,31 @@ static void load_input_file_format(void) void load_input_file(void) { + GSList *devices; + struct sr_session *session; + struct sr_dev_inst *sdi; + int ret; - if (sr_session_load(opt_input_file) == SR_OK) { + if (sr_session_load(opt_input_file, &session) == SR_OK) { /* sigrok session file */ - sr_session_datafeed_callback_add(datafeed_in, NULL); - sr_session_start(); - sr_session_run(); - sr_session_stop(); + ret = sr_session_dev_list(session, &devices); + if (ret != SR_OK || !devices->data) { + g_critical("Failed to access session device."); + sr_session_destroy(session); + return; + } + sdi = devices->data; + if (select_channels(sdi) != SR_OK) { + sr_session_destroy(session); + return; + } + sr_session_datafeed_callback_add(session, datafeed_in, NULL); + sr_session_start(session); + sr_session_run(session); + sr_session_stop(session); } else { /* fall back on input modules */ load_input_file_format(); } } -