]> sigrok.org Git - libsigrok.git/commitdiff
Introduce OutputFlag
authorSoeren Apel <redacted>
Sat, 15 Aug 2015 21:40:29 +0000 (23:40 +0200)
committerUwe Hermann <redacted>
Sat, 15 Aug 2015 21:53:12 +0000 (23:53 +0200)
19 files changed:
bindings/cxx/classes.cpp
bindings/cxx/enums.py
bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
include/libsigrok/libsigrok.h
include/libsigrok/proto.h
src/libsigrok-internal.h
src/output/analog.c
src/output/ascii.c
src/output/binary.c
src/output/bits.c
src/output/chronovu_la8.c
src/output/csv.c
src/output/gnuplot.c
src/output/hex.c
src/output/ols.c
src/output/output.c
src/output/srzip.c
src/output/vcd.c
src/output/wav.c

index 357c9d6f3cbccac46f24a7d1c74025c525b40324..f8a0231497c599480be06565c735650b3e612453 100644 (file)
@@ -1573,6 +1573,11 @@ shared_ptr<Output> OutputFormat::create_output(string filename,
                Output::Deleter());
 }
 
+bool OutputFormat::test_flag(const OutputFlag *flag)
+{
+       return sr_output_test_flag(_structure, flag->id());
+}
+
 Output::Output(shared_ptr<OutputFormat> format,
                shared_ptr<Device> device, map<string, Glib::VariantBase> options) :
        UserOwned(sr_output_new(format->_structure,
index aed42120c5151ddb06387261e8f19eec36bd30bf..90120d7f9fe85c43146a300ba17901c692657b8d 100644 (file)
@@ -40,7 +40,8 @@ mapping = dict([
     ('sr_configkey', ('ConfigKey', 'Configuration key')),
     ('sr_datatype', ('DataType', 'Configuration data type')),
     ('sr_channeltype', ('ChannelType', 'Channel type')),
-    ('sr_trigger_matches', ('TriggerMatchType', 'Trigger match type'))])
+    ('sr_trigger_matches', ('TriggerMatchType', 'Trigger match type')),
+    ('sr_output_flag', ('OutputFlag', 'Flag applied to output modules'))])
 
 index = ElementTree.parse(index_file)
 
index 9bc9cdaa11282ae4352839527d13c8b44900d286..e1e8d7b96b96ce4bd61c74ad5ff129b4345684e9 100644 (file)
@@ -96,6 +96,7 @@ class SR_API Session;
 class SR_API ConfigKey;
 class SR_API InputFormat;
 class SR_API OutputFormat;
+class SR_API OutputFlag;
 class SR_API LogLevel;
 class SR_API ChannelGroup;
 class SR_API Trigger;
@@ -969,6 +970,13 @@ public:
                shared_ptr<Device> device,
                map<string, Glib::VariantBase> options =
                        map<string, Glib::VariantBase>());
+       /**
+        * Checks whether a given flag is set.
+        * @param flag Flag to check
+        * @return true if flag is set for this module
+        * @see sr_output_flags
+        */
+       bool test_flag(const OutputFlag *flag);
 protected:
        OutputFormat(const struct sr_output_module *structure);
        ~OutputFormat();
index 356739cc05a8f9bcb15df1923c8e82b0475dcc90..085ac06173b18f7bd83e513d8caf52d073fc4560 100644 (file)
@@ -518,6 +518,12 @@ struct sr_option {
        GSList *values;
 };
 
+/** Output module flags. */
+enum sr_output_flag {
+       /** If set, this output module writes the output itself. */
+       SR_OUTPUT_INTERNAL_IO_HANDLING = 0x01,
+};
+
 struct sr_input;
 struct sr_input_module;
 struct sr_output;
index 788f80de1087601f751457cbdddb545fa2c6bdb2..1aa2ee7649d9cb7433c5218f25fbb2eec39245f4 100644 (file)
@@ -155,6 +155,8 @@ SR_API const char *const *sr_input_extensions_get(
                const struct sr_input_module *imod);
 SR_API const struct sr_input_module *sr_input_find(char *id);
 SR_API const struct sr_option **sr_input_options_get(const struct sr_input_module *imod);
+SR_API gboolean sr_output_test_flag(const struct sr_output_module *omod,
+               uint64_t flag);
 SR_API void sr_input_options_free(const struct sr_option **options);
 SR_API struct sr_input *sr_input_new(const struct sr_input_module *imod,
                GHashTable *options);
index 3ab181b3f87c80e2eb6a8d60e634aee8368b08bc..b127d0ef14efd6481f6100296b64e2eb8076a7e8 100644 (file)
@@ -412,6 +412,13 @@ struct sr_output_module {
         */
        const char *const *exts;
 
+       /**
+        * Bitfield containing flags that describe certain properties
+        * this output module may or may not have.
+        * @see sr_output_flags
+        */
+       const uint64_t flags;
+
        /**
         * Returns a NULL-terminated list of options this module can take.
         * Can be NULL, if the module has no options.
index 406d8c6e593c0f8b3f6c0bb2a1707963f7013638..ff5e91f32f092eb60e67ff29e35d1ad90ca17a41 100644 (file)
@@ -345,6 +345,7 @@ SR_PRIV struct sr_output_module output_analog = {
        .name = "Analog",
        .desc = "Analog data and types",
        .exts = NULL,
+       .flags = 0,
        .options = get_options,
        .init = init,
        .receive = receive,
index d2ad3acae449d45461e83bf680b2e873b365d6e2..e50724169ea04a69224c1813c765dad79f4f8092 100644 (file)
@@ -253,6 +253,7 @@ SR_PRIV struct sr_output_module output_ascii = {
        .name = "ASCII",
        .desc = "ASCII art",
        .exts = (const char*[]){"txt", NULL},
+       .flags = 0,
        .options = get_options,
        .init = init,
        .receive = receive,
index 04627f32287c13e46adc09fcf88d96ef6344d64c..4037d9e909db5b446f2ec31c22e1d055ad62f309 100644 (file)
@@ -47,6 +47,7 @@ SR_PRIV struct sr_output_module output_binary = {
        .name = "Binary",
        .desc = "Raw binary",
        .exts = NULL,
+       .flags = 0,
        .options = NULL,
        .receive = receive,
 };
index 180ea563d59137b1b5aedaebf0ff6ae1efc70b97..a26424d5968913a33ed86f8a6339c3a20f8c6b72 100644 (file)
@@ -239,6 +239,7 @@ SR_PRIV struct sr_output_module output_bits = {
        .name = "Bits",
        .desc = "0/1 digits",
        .exts = (const char*[]){"txt", NULL},
+       .flags = 0,
        .options = get_options,
        .init = init,
        .receive = receive,
index 1c0953f71745f98463648e4da7774db2fbd82d93..cfabf4cd99fa6f057f205e904562675636799020 100644 (file)
@@ -188,6 +188,7 @@ SR_PRIV struct sr_output_module output_chronovu_la8 = {
        .name = "ChronoVu LA8",
        .desc = "ChronoVu LA8 native file format",
        .exts = (const char*[]){"kdt", NULL},
+       .flags = 0,
        .options = NULL,
        .init = init,
        .receive = receive,
index d947ba2d8e8beb9586011c9f9db5765166afb466..5f0d647c3d5605be98cc1c883b85be2a29b377ef 100644 (file)
@@ -333,6 +333,7 @@ SR_PRIV struct sr_output_module output_csv = {
        .name = "CSV",
        .desc = "Comma-separated values",
        .exts = (const char*[]){"csv", NULL},
+       .flags = 0,
        .options = NULL,
        .init = init,
        .receive = receive,
index 053f042495bdd45adbbb44f14e4f54c26fbf6c31..fc3c15ac7c04e554abb223a1a3b05212da3d77af 100644 (file)
@@ -221,6 +221,7 @@ SR_PRIV struct sr_output_module output_gnuplot = {
        .name = "Gnuplot",
        .desc = "Gnuplot data file format",
        .exts = (const char*[]){"dat", NULL},
+       .flags = 0,
        .options = NULL,
        .init = init,
        .receive = receive,
index bad607513f653f385352faf954f7cb8903951521..a499e354e6aa5daaa554125fa1cc2e1e2d65c6c3 100644 (file)
@@ -253,6 +253,7 @@ SR_PRIV struct sr_output_module output_hex = {
        .name = "Hexadecimal",
        .desc = "Hexadecimal digits",
        .exts = (const char*[]){"txt", NULL},
+       .flags = 0,
        .options = get_options,
        .init = init,
        .receive = receive,
index bf1aacbd2771f76876e1e894f4374f636b3788b1..1202a93ec74cac8ad37f1cdab3138ff859cf620d 100644 (file)
@@ -151,6 +151,7 @@ SR_PRIV struct sr_output_module output_ols = {
        .name = "OLS",
        .desc = "OpenBench Logic Sniffer",
        .exts = (const char*[]){"ols", NULL},
+       .flags = 0,
        .options = NULL,
        .init = init,
        .receive = receive,
index 04f3054cf1deafeb7674e2fda07adc5c7a926fbb..d06002e3307ca687511352e657e6855cf05c4c90 100644 (file)
@@ -156,6 +156,18 @@ SR_API const char *const *sr_output_extensions_get(
        return omod->exts;
 }
 
+/*
+ * Checks whether a given flag is set.
+ *
+ * @see sr_output_flag
+ * @since 0.4.0
+ */
+SR_API gboolean sr_output_test_flag(const struct sr_output_module *omod,
+               uint64_t flag)
+{
+       return (flag & omod->flags);
+}
+
 /**
  * Return the output module with the specified ID, or NULL if no module
  * with that id is found.
index 409421cbbf3b862721942d676f66e90dc5149faa..dd4933345062214b9a87ca5bac7cfefb1b437dd5 100644 (file)
@@ -317,6 +317,7 @@ SR_PRIV struct sr_output_module output_srzip = {
        .name = "srzip",
        .desc = "srzip session file",
        .exts = (const char*[]){"sr", NULL},
+       .flags = SR_OUTPUT_INTERNAL_IO_HANDLING,
        .options = get_options,
        .init = init,
        .receive = receive,
index 9d3516b74b30d8d22e9274f7251c1f9525a61af4..7403d575600862a7b180ec25dc3548997113ccdf 100644 (file)
@@ -264,6 +264,7 @@ struct sr_output_module output_vcd = {
        .name = "VCD",
        .desc = "Value Change Dump",
        .exts = (const char*[]){"vcd", NULL},
+       .flags = 0,
        .options = NULL,
        .init = init,
        .receive = receive,
index e9c7d6fd1a70bee549121c7ac1872619532e377d..a16f45eaca320115bc576673d6317360843e7e3d 100644 (file)
@@ -352,6 +352,7 @@ SR_PRIV struct sr_output_module output_wav = {
        .name = "WAV",
        .desc = "Microsoft WAV file format",
        .exts = (const char*[]){"wav", NULL},
+       .flags = 0,
        .options = get_options,
        .init = init,
        .receive = receive,