]> sigrok.org Git - sigrok-cli.git/blobdiff - session.c
decode: start collecting internal state (samplerate)
[sigrok-cli.git] / session.c
index 65352bbd841481b31219c0d20111f65d3fb9d3b6..e8ec5a28ce3fc3bea3af7277dedc7727686bb006 100644 (file)
--- a/session.c
+++ b/session.c
@@ -107,11 +107,17 @@ const struct sr_output *setup_output_format(const struct sr_dev_inst *sdi, FILE
        o = sr_output_new(omod, fmtopts, sdi, opt_output_file);
 
        if (opt_output_file) {
-               if (!sr_output_test_flag(omod, SR_OUTPUT_INTERNAL_IO_HANDLING))
+               if (!sr_output_test_flag(omod, SR_OUTPUT_INTERNAL_IO_HANDLING)) {
                        *outfile = g_fopen(opt_output_file, "wb");
-               else
+                       if (!*outfile) {
+                               g_critical("Cannot write to output file '%s'.",
+                                       opt_output_file);
+                       }
+               } else {
                        *outfile = NULL;
+               }
        } else {
+               setup_binary_stdout();
                *outfile = stdout;
        }
 
@@ -318,6 +324,7 @@ void datafeed_in(const struct sr_dev_inst *sdi,
                                        g_critical("Failed to configure decode session.");
                                        break;
                                }
+                               pd_samplerate = samplerate;
                        }
                        if (srd_session_start(srd_sess) != SRD_OK) {
                                g_critical("Failed to start decode session.");
@@ -346,6 +353,7 @@ void datafeed_in(const struct sr_dev_inst *sdi,
                                                        g_variant_new_uint64(samplerate)) != SRD_OK) {
                                                g_critical("Failed to pass samplerate to decoder.");
                                        }
+                                       pd_samplerate = samplerate;
                                }
 #endif
                                break;