]> sigrok.org Git - sigrok-cli.git/blobdiff - session.c
options: String options are only allowed once.
[sigrok-cli.git] / session.c
index d1937f82af08efb512f7c0f242480848ee6c6f5e..07144aa4ee70fb02eeefe68de64d140095382c38 100644 (file)
--- a/session.c
+++ b/session.c
@@ -28,16 +28,6 @@ static int default_output_format = FALSE;
 static uint64_t limit_samples = 0;
 static uint64_t limit_frames = 0;
 
-extern gchar *opt_output_file;
-extern gchar *opt_output_format;
-extern gchar *opt_pds;
-extern gboolean opt_wait_trigger;
-extern gchar *opt_time;
-extern gchar *opt_samples;
-extern gchar *opt_frames;
-extern gchar *opt_continuous;
-extern gchar *opt_config;
-extern gchar *opt_triggers;
 #ifdef HAVE_SRD
 extern struct srd_session *srd_sess;
 #endif
@@ -155,7 +145,7 @@ void datafeed_in(const struct sr_dev_inst *sdi,
 
        switch (packet->type) {
        case SR_DF_HEADER:
-               g_debug("cli: Received SR_DF_HEADER");
+               g_debug("cli: Received SR_DF_HEADER.");
                o = setup_output_format(sdi);
 
                /* Prepare non-stdout output. */
@@ -195,14 +185,14 @@ void datafeed_in(const struct sr_dev_inst *sdi,
                break;
 
        case SR_DF_META:
-               g_debug("cli: received SR_DF_META");
+               g_debug("cli: Received SR_DF_META.");
                meta = packet->payload;
                for (l = meta->config; l; l = l->next) {
                        src = l->data;
                        switch (src->key) {
                        case SR_CONF_SAMPLERATE:
                                samplerate = g_variant_get_uint64(src->data);
-                               g_debug("cli: got samplerate %"PRIu64" Hz", samplerate);
+                               g_debug("cli: Got samplerate %"PRIu64" Hz.", samplerate);
 #ifdef HAVE_SRD
                                if (opt_pds) {
                                        if (srd_session_metadata_set(srd_sess, SRD_CONF_SAMPLERATE,
@@ -214,7 +204,7 @@ void datafeed_in(const struct sr_dev_inst *sdi,
                                break;
                        case SR_CONF_SAMPLE_INTERVAL:
                                samplerate = g_variant_get_uint64(src->data);
-                               g_debug("cli: got sample interval %"PRIu64" ms", samplerate);
+                               g_debug("cli: Got sample interval %"PRIu64" ms.", samplerate);
                                break;
                        default:
                                /* Unknown metadata is not an error. */
@@ -224,13 +214,14 @@ void datafeed_in(const struct sr_dev_inst *sdi,
                break;
 
        case SR_DF_TRIGGER:
-               g_debug("cli: received SR_DF_TRIGGER");
+               g_debug("cli: Received SR_DF_TRIGGER.");
                triggered = 1;
                break;
 
        case SR_DF_LOGIC:
                logic = packet->payload;
-               g_message("cli: received SR_DF_LOGIC, %"PRIu64" bytes", logic->length);
+               g_message("cli: Received SR_DF_LOGIC (%"PRIu64" bytes, unitsize = %d).",
+                               logic->length, logic->unitsize);
                if (logic->length == 0)
                        break;
 
@@ -278,7 +269,7 @@ void datafeed_in(const struct sr_dev_inst *sdi,
 
        case SR_DF_ANALOG:
                analog = packet->payload;
-               g_message("cli: received SR_DF_ANALOG, %d samples", analog->num_samples);
+               g_message("cli: Received SR_DF_ANALOG (%d samples).", analog->num_samples);
                if (analog->num_samples == 0)
                        break;
 
@@ -289,18 +280,18 @@ void datafeed_in(const struct sr_dev_inst *sdi,
                break;
 
        case SR_DF_FRAME_BEGIN:
-               g_debug("cli: received SR_DF_FRAME_BEGIN");
+               g_debug("cli: Received SR_DF_FRAME_BEGIN.");
                break;
 
        case SR_DF_FRAME_END:
-               g_debug("cli: received SR_DF_FRAME_END");
+               g_debug("cli: Received SR_DF_FRAME_END.");
                break;
 
        default:
                break;
        }
 
-       if (o) {
+       if (o && outfile && !opt_pds) {
                if (sr_output_send(o, packet, &out) == SR_OK && out) {
                        fwrite(out->str, 1, out->len, outfile);
                        fflush(outfile);
@@ -311,7 +302,7 @@ void datafeed_in(const struct sr_dev_inst *sdi,
        /* SR_DF_END needs to be handled after the output module's receive()
         * is called, so it can properly clean up that module. */
        if (packet->type == SR_DF_END) {
-               g_debug("cli: Received SR_DF_END");
+               g_debug("cli: Received SR_DF_END.");
 
                if (o)
                        sr_output_free(o);
@@ -371,7 +362,7 @@ int opt_to_gvar(char *key, char *value, struct sr_config *src)
                        break;
                src->data = g_variant_new_int32(tmp_u64);
                break;
-       case SR_T_CHAR:
+       case SR_T_STRING:
                src->data = g_variant_new_string(value);
                break;
        case SR_T_BOOL:
@@ -456,8 +447,6 @@ void run_session(void)
        GVariant *gvar;
        struct sr_dev_inst *sdi;
        uint64_t min_samples, max_samples;
-       int max_channels, i;
-       char **triggerlist;
 
        devices = device_scan();
        if (!devices) {
@@ -499,18 +488,10 @@ void run_session(void)
        }
 
        if (opt_triggers) {
-               if (!(triggerlist = sr_parse_triggerstring(sdi, opt_triggers))) {
+               if (!parse_triggerstring(sdi, opt_triggers)) {
                        sr_session_destroy();
                        return;
                }
-               max_channels = g_slist_length(sdi->channels);
-               for (i = 0; i < max_channels; i++) {
-                       if (triggerlist[i]) {
-                               sr_dev_trigger_set(sdi, i, triggerlist[i]);
-                               g_free(triggerlist[i]);
-                       }
-               }
-               g_free(triggerlist);
        }
 
        if (opt_continuous) {