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 2eb9a573136cb206bffc4c30a052b2ebb9c76f49..5239818faa33a8fb9b8f8e4cd55faf5cba69a774 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 6cb7e934ac19bc929d41bdfa14e81e1003e5d940..8cb47a8c8d59dac08e2a770f4f359fe913b6d9a1 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 0dfd7c86bf08fa0ceb25656ab97b00f5daa07909..8945cdc5e2b1568c1ef474ce9f5be3d1cf57989c 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 dcc08dec55fd52eb1de3dc34b49ab4aa61ef0067..098c3a6bae0ea97b083c4e9325daac2e4d415ee5 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 cd72eca8b46d93432379469b33d10031296b9d5f..74d7a23cdb64022aa906d4c8f625bf752e802950 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 81c1f28da39506e4d714c779593b3ac77d60f5d3..d3af8c55fc78ed7ee7f83c654805928b7cbd6e3e 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 59168248a0eb0c1f603d3c9a43ce83ebc6f193cd..b038604ba7e44f5d5d0a5b292448748496f42224 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 5970f27c0f9c2b97120562e6cf075b2cac7e24c8..e284d27f44aae2613362dc52a304c33d736cac6d 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 f50af65b471b652814aaa45f22185a8afc8ea7e3..cda3b093303a36b9280d068e9d1fa8701d502b59 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 a6a5a1dfa328953355fb02ef8673538485891f89..e62122c39c01f9aa99a5616a032bfde44ee6a375 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 30c32f5fcc89d46d89a6555f00a5fcaac2ac4723..ffd79ec84da820265b660995c24ea10141713931 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 2530e8cc23b4c5bb0bb44a3281f96e90977e189d..3d6d154bd3b02bdc55dfa46867b6de29a281e4f2 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 7fedbbdfe18e4e18b8447134adc271591c143d21..184e632af850832b8e9490b9247553f0356bf439 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 d76d649cc593bfeb7101f636cbb5b4d476d64619..1084fe896fbe4c1f12d32e896c2a2f58caf61aef 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 e4a40f3f3c736aae108dcf3dbaf86af60f9e421c..da04997fa6ec556129e336220a0f7cc2325d0f02 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 9ed30c813e711b31e4794592ee39a243bdc718a0..4be08c34238c35d2b22fa480ea9ca733c1d9d267 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 034c314f4d28941e205f64a74110415da046dafa..fe39c6d34af97f63f0bed78cc5732ebfa7b090a3 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 49c586d23b417ebbbd8729e05ae2dfbbc6193e24..6f32b5400ee97363fbdea9932f594534787615b2 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 d76b869756c25fbb6fb23a513ba641f46b280819..f0eed2ca8a1b984b94bf03c3bf62e83a744d298b 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 778cfd1621e6a918977a9567b0f3898dd877c4f6..5c919c8ab216fc0f24197a6d7fdcdcf1c8a3ed9a 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 9fac9c6da0d582e601576a5eed818f4311145e8a..c4e26403bfac6cb2d530ebc07a42cca5b64eb7e2 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 7a3121a3009e0f5c062bb95c390366fb1483b3e4..15d6d041d62ad2b3d000e295514cdf2b0da6a3c0 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 e70c27de27b301ffcc52d12bf800f141263d3eb1..f452bcb00e53cc312f360a02fefc8af4be09ae89 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 e32fe6f737e9d9531a81ade40ca615ca33a38063..567badfd2aafefa148227edbe0b0a8fb6e9cfc48 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 2d349bcb16b03479cd01bccaa6d309486580fa39..16d0c4741eb5f0a1195624428d90fa3ea79e4371 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 5727722f36123259d21dbb3f69ba851225e0b117..5f026fa86b9e5dbfc28e01d426fb66a1af8c6e19 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 593ce137bc8dc25aad587f442b3baec110dd8b20..b3e1e46551e3b34e5620b9669a04bb5827de4af1 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 830606185f71fddd94b004258681ee83415343dc..fe2af3a42da51e41aa64696d32e86281addc5a7a 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 feb581c6684522c8d87a7fc449310403332976b3..4965493e014bac61d97b066048b5a3cd655f436a 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 0e81344855a204c2407cc285f6102e2f3dc14943..7151ab194a322baae6b1cb1b269d053bbe9efe9a 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 6ed04c80af0b40770113caf5e1c84eeab3fbacd0..c5c9406d9f9c27ed1d85afcd2020146444f47965 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 9402f7ef7692bc486cc9b6adf9b5e3ba379d8bdd..6f9d2cb2d63e9cb9a8f94835296dc25cc0f098a6 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 7c596345b1c1b8c655dab78e10a4748d0a0ee80f..8ed709800a48d3161505198648b2ef8a97dfdb1e 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 85bb1cb9e3195464fc55a983d3e87ecc78cf0baf..55bca63cb9776f53728e78859171a028a3bb5c71 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 61eab1ea104c03b1a45b8f646f2b16df697cf4eb..922c36db4e9f95d44c5d2d17ecb9609f62cb9b82 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 4bb68a419fdadf46c4f5d3b09515d256e84ced48..fa1bca9d3ece8f662fdc1a62f44c9a3f30200630 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 b7ff9a56b16ac83cc62bba2e6781876241b306dc..bcfcdbdab9dc779998d7d85e9cd73f0c10494b85 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 55620a7f52551df6e01ea1521711ce34fdf12496..84c80e4195641fcdfea2656a558f672ba057ff9e 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;