Add PD tags handling and some tags
authorSoeren Apel <soeren@apelpie.net>
Fri, 28 Dec 2018 10:41:41 +0000 (11:41 +0100)
committerUwe Hermann <uwe@hermann-uwe.de>
Wed, 13 Mar 2019 18:22:52 +0000 (19:22 +0100)
38 files changed:
decoder.c
decoders/ac97/pd.py
decoders/ade77xx/pd.py
decoders/adf435x/pd.py
decoders/adns5020/pd.py
decoders/am230x/pd.py
decoders/arm_etmv3/pd.py
decoders/arm_itm/pd.py
decoders/arm_tpiu/pd.py
decoders/atsha204a/pd.py
decoders/aud/pd.py
decoders/avr_isp/pd.py
decoders/avr_pdi/pd.py
decoders/can/pd.py
decoders/cec/pd.py
decoders/counter/pd.py
decoders/edid/pd.py
decoders/eeprom24xx/pd.py
decoders/eeprom93xx/pd.py
decoders/em4100/pd.py
decoders/em4305/pd.py
decoders/guess_bitrate/pd.py
decoders/i2c/pd.py
decoders/i2s/pd.py
decoders/jtag/pd.py
decoders/jtag_ejtag/pd.py
decoders/jtag_stm32/pd.py
decoders/maple_bus/pd.py
decoders/midi/pd.py
decoders/parallel/pd.py
decoders/ps2/pd.py
decoders/sdcard_sd/pd.py
decoders/sdcard_spi/pd.py
decoders/spi/pd.py
decoders/timing/pd.py
decoders/uart/pd.py
decoders/z80/pd.py
libsigrokdecode.h

index 2eb9a57..5239818 100644 (file)
--- a/decoder.c
+++ b/decoder.c
@@ -171,6 +171,7 @@ static void decoder_free(struct srd_decoder *dec)
 
        g_slist_free_full(dec->outputs, g_free);
        g_slist_free_full(dec->inputs, g_free);
+       g_slist_free_full(dec->tags, g_free);
        g_free(dec->license);
        g_free(dec->desc);
        g_free(dec->longname);
@@ -802,6 +803,11 @@ SRD_API int srd_decoder_load(const char *module_name)
                goto err_out;
        }
 
+       if (py_attr_as_strlist(d->py_dec, "tags", &(d->tags)) != SRD_OK) {
+               fail_txt = "missing or malformed 'tags' attribute";
+               goto err_out;
+       }
+
        /* All options and their default values. */
        if (get_options(d) != SRD_OK) {
                fail_txt = "cannot get options";
index 6cb7e93..8cb47a8 100644 (file)
@@ -60,6 +60,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['ac97']
+    tags = ['Logic', 'Audio']
     channels = (
         {'id': 'sync', 'name': 'SYNC', 'desc': 'Frame synchronization'},
         {'id': 'clk', 'name': 'BIT_CLK', 'desc': 'Data bits clock'},
index 0dfd7c8..8945cdc 100644 (file)
@@ -34,6 +34,7 @@ class Decoder(srd.Decoder):
     license = 'mit'
     inputs = ['spi']
     outputs = ['ade77xx']
+    tags = ['Logic', 'Sensors']
     annotations = (
         ('read', 'Register read commands'),
         ('write', 'Register write commands'),
index dcc08de..098c3a6 100644 (file)
@@ -96,6 +96,7 @@ class Decoder(srd.Decoder):
     license = 'gplv3+'
     inputs = ['spi']
     outputs = ['adf435x']
+    tags = ['Logic']
     annotations = (
         # Sent from the host to the chip.
         ('register', 'Register written to the device'),
index cd72eca..74d7a23 100644 (file)
@@ -47,6 +47,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['spi']
     outputs = ['adns5020']
+    tags = ['Logic', 'Sensors']
     annotations = (
         ('read', 'Register read commands'),
         ('write', 'Register write commands'),
index 81c1f28..d3af8c5 100644 (file)
@@ -42,6 +42,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['am230x']
+    tags = ['Logic', 'Sensors']
     channels = (
         {'id': 'sda', 'name': 'SDA', 'desc': 'Single wire serial data line'},
     )
index 5916824..b038604 100644 (file)
@@ -135,6 +135,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['uart']
     outputs = ['arm_etmv3']
+    tags = ['Logic', 'MCU Debugging']
     annotations = (
         ('trace', 'Trace info'),
         ('branch', 'Branches'),
index 5970f27..e284d27 100644 (file)
@@ -45,6 +45,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['uart']
     outputs = ['arm_itm']
+    tags = ['Logic', 'MCU Debugging']
     options = (
         {'id': 'objdump', 'desc': 'objdump path',
             'default': 'arm-none-eabi-objdump'},
index f50af65..cda3b09 100644 (file)
@@ -28,6 +28,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['uart']
     outputs = ['uart'] # Emulate uart output so that arm_itm/arm_etm can stack.
+    tags = ['Logic', 'MCU Debugging']
     options = (
         {'id': 'stream', 'desc': 'Stream index', 'default': 1},
         {'id': 'sync_offset', 'desc': 'Initial sync offset', 'default': 0},
index a6a5a1d..e62122c 100644 (file)
@@ -89,6 +89,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['i2c']
     outputs = ['atsha204a']
+    tags = ['Logic']
     annotations = (
         ('waddr', 'Word address'),
         ('count', 'Count'),
index 30c32f5..ffd79ec 100644 (file)
@@ -33,6 +33,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['aud']
+    tags = ['Logic', 'MCU Debugging']
     channels = (
         {'id': 'audck', 'name': 'AUDCK', 'desc': 'AUD clock'},
         {'id': 'naudsync', 'name': 'nAUDSYNC', 'desc': 'AUD sync'},
index 2530e8c..3d6d154 100644 (file)
@@ -31,6 +31,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['spi']
     outputs = ['avr_isp']
+    tags = ['Logic', 'MCU Debugging']
     annotations = (
         ('pe', 'Programming enable'),
         ('rsb0', 'Read signature byte 0'),
index 7fedbbd..184e632 100644 (file)
@@ -120,6 +120,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['pdi']
+    tags = ['Logic', 'MCU Debugging']
     channels = (
         {'id': 'reset', 'name': 'RESET', 'desc': 'RESET / PDI_CLK'},
         {'id': 'data', 'name': 'DATA', 'desc': 'PDI_DATA'},
index d76d649..1084fe8 100644 (file)
@@ -31,6 +31,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['can']
+    tags = ['Logic', 'Bus']
     channels = (
         {'id': 'can_rx', 'name': 'CAN RX', 'desc': 'CAN bus line'},
     )
index e4a40f3..da04997 100644 (file)
@@ -56,6 +56,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['cec']
+    tags = ['Logic', 'Bus', 'Video']
     channels = (
         {'id': 'cec', 'name': 'CEC', 'desc': 'CEC bus data'},
     )
index 9ed30c8..4be08c3 100644 (file)
@@ -31,6 +31,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = []
+    tags = ['Logic', 'Tools']
     channels = (
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
     )
index 034c314..fe39c6d 100644 (file)
@@ -81,6 +81,7 @@ class Decoder(srd.Decoder):
     license = 'gplv3+'
     inputs = ['i2c']
     outputs = ['edid']
+    tags = ['Logic', 'Video', 'Bus']
     annotations = (
         ('fields', 'EDID structure fields'),
         ('sections', 'EDID structure sections'),
index 49c586d..6f32b54 100644 (file)
@@ -29,6 +29,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['i2c']
     outputs = ['eeprom24xx']
+    tags = ['Logic', 'Memory']
     options = (
         {'id': 'chip', 'desc': 'Chip', 'default': 'generic',
             'values': tuple(chips.keys())},
index d76b869..f0eed2c 100644 (file)
@@ -28,6 +28,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['microwire']
     outputs = ['eeprom93xx']
+    tags = ['Logic', 'Memory']
     options = (
         {'id': 'addresssize', 'desc': 'Address size', 'default': 8},
         {'id': 'wordsize', 'desc': 'Word size', 'default': 16},
index 778cfd1..5c919c8 100644 (file)
@@ -31,6 +31,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['em4100']
+    tags = ['Logic', 'Wireless']
     channels = (
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
     )
index 9fac9c6..c4e2640 100644 (file)
@@ -31,6 +31,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['em4305']
+    tags = ['Logic', 'Wireless']
     channels = (
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
     )
index 7a3121a..15d6d04 100644 (file)
@@ -31,6 +31,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['guess_bitrate']
+    tags = ['Logic', 'Tools']
     channels = (
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
     )
index e70c27d..f452bcb 100644 (file)
@@ -70,6 +70,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['i2c']
+    tags = ['Logic', 'Bus']
     channels = (
         {'id': 'scl', 'name': 'SCL', 'desc': 'Serial clock line'},
         {'id': 'sda', 'name': 'SDA', 'desc': 'Serial data line'},
index e32fe6f..567badf 100644 (file)
@@ -42,6 +42,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['i2s']
+    tags = ['Logic', 'Bus', 'Audio']
     channels = (
         {'id': 'sck', 'name': 'SCK', 'desc': 'Bit clock line'},
         {'id': 'ws', 'name': 'WS', 'desc': 'Word select line'},
index 2d349bc..16d0c47 100644 (file)
@@ -62,6 +62,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['jtag']
+    tags = ['Logic', 'MCU Debugging', 'Bus']
     channels = (
         {'id': 'tdi',  'name': 'TDI',  'desc': 'Test data input'},
         {'id': 'tdo',  'name': 'TDO',  'desc': 'Test data output'},
index 5727722..5f026fa 100644 (file)
@@ -197,6 +197,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['jtag']
     outputs = ['jtag_ejtag']
+    tags = ['Logic', 'MCU Debugging', 'Bus']
     annotations = (
         ('instruction', 'Instruction'),
     ) + regs_items['ann'] + (
index 593ce13..b3e1e46 100644 (file)
@@ -147,6 +147,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['jtag']
     outputs = ['jtag_stm32']
+    tags = ['Logic', 'MCU Debugging', 'Bus']
     annotations = (
         ('item', 'Item'),
         ('field', 'Field'),
index 8306061..fe2af3a 100644 (file)
@@ -37,6 +37,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['maple_bus']
+    tags = ['Logic', 'Bus']
     channels = (
         {'id': 'sdcka', 'name': 'SDCKA', 'desc': 'Data/clock line A'},
         {'id': 'sdckb', 'name': 'SDCKB', 'desc': 'Data/clock line B'},
index feb581c..4965493 100644 (file)
@@ -33,6 +33,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['uart']
     outputs = ['midi']
+    tags = ['Logic', 'Bus', 'Audio']
     annotations = (
         ('text-verbose', 'Human-readable text (verbose)'),
         ('text-sysreal-verbose', 'Human-readable SysReal text (verbose)'),
index 0e81344..7151ab1 100644 (file)
@@ -75,6 +75,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['parallel']
+    tags = ['Logic', 'Bus']
     optional_channels = channel_list(NUM_CHANNELS)
     options = (
         {'id': 'clock_edge', 'desc': 'Clock edge to sample on',
index 6ed04c8..c5c9406 100644 (file)
@@ -34,6 +34,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['ps2']
+    tags = ['Logic', 'Bus']
     channels = (
         {'id': 'clk', 'name': 'Clock', 'desc': 'Clock line'},
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
index 9402f7e..6f9d2cb 100644 (file)
@@ -29,6 +29,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['sdcard_sd']
+    tags = ['Logic', 'Memory']
     channels = (
         {'id': 'cmd',  'name': 'CMD',  'desc': 'Command'},
         {'id': 'clk',  'name': 'CLK',  'desc': 'Clock'},
index 7c59634..8ed7098 100644 (file)
@@ -29,6 +29,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['spi']
     outputs = ['sdcard_spi']
+    tags = ['Logic', 'Memory']
     annotations = \
         tuple(('cmd%d' % i, 'CMD%d' % i) for i in range(64)) + \
         tuple(('acmd%d' % i, 'ACMD%d' % i) for i in range(64)) + ( \
index 85bb1cb..55bca63 100644 (file)
@@ -82,6 +82,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['spi']
+    tags = ['Logic', 'Bus']
     channels = (
         {'id': 'clk', 'name': 'CLK', 'desc': 'Clock'},
     )
index 61eab1e..922c36d 100644 (file)
@@ -54,6 +54,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['timing']
+    tags = ['Logic', 'Tools']
     channels = (
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
     )
index 4bb68a4..fa1bca9 100644 (file)
@@ -87,6 +87,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['uart']
+    tags = ['Logic', 'Bus']
     optional_channels = (
         # Allow specifying only one of the signals, e.g. if only one data
         # direction exists (or is relevant).
index b7ff9a5..bcfcdbd 100644 (file)
@@ -72,6 +72,7 @@ class Decoder(srd.Decoder):
     license  = 'gplv3+'
     inputs   = ['logic']
     outputs  = ['z80']
+    tags = ['Logic', 'MCU Debugging']
     channels = tuple({
             'id': 'd%d' % i,
             'name': 'D%d' % i,
index 55620a7..84c80e4 100644 (file)
@@ -161,6 +161,9 @@ struct srd_decoder {
        /** List of possible decoder output IDs. */
        GSList *outputs;
 
+       /** List of tags associated with this decoder. */
+       GSList *tags;
+
        /** List of channels required by this decoder. */
        GSList *channels;