X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=input.c;h=c62c96406917a74e424a4de7e054625bee5894c3;hp=7ef694d4bad2e9a3a429d4debc68fe593d698cdc;hb=4bf77ec67e693aa08f5b72b71fff9943df8a65e7;hpb=2be182e6437fb082aedca653fdc106d702518db0
diff --git a/input.c b/input.c
index 7ef694d..c62c964 100644
--- a/input.c
+++ b/input.c
@@ -17,15 +17,13 @@
* along with this program. If not, see .
*/
+#include "sigrok-cli.h"
#include "config.h"
+#include
+#include
+#include
+#include
#include
-#include
-#include "sigrok-cli.h"
-
-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.
@@ -90,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;
@@ -128,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);
@@ -149,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();
}
}
-