diff options
author | Uwe Hermann <uwe@hermann-uwe.de> | 2016-08-26 15:15:12 +0200 |
---|---|---|
committer | Uwe Hermann <uwe@hermann-uwe.de> | 2016-12-07 22:45:46 +0100 |
commit | 2d557217c8e394e0bcacf3aea62f407ee804b06d (patch) | |
tree | 768c949e3cb80900479adee0e282778c8af41253 /decoders | |
parent | 54dad54a0215683b594cc891c9e41f79530b7f1d (diff) | |
download | libsigrokdecode-2d557217c8e394e0bcacf3aea62f407ee804b06d.tar.gz libsigrokdecode-2d557217c8e394e0bcacf3aea62f407ee804b06d.zip |
jtag: Convert to PD API version 3.
Diffstat (limited to 'decoders')
-rw-r--r-- | decoders/jtag/pd.py | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/decoders/jtag/pd.py b/decoders/jtag/pd.py index 83d4b28..e1f32e0 100644 --- a/decoders/jtag/pd.py +++ b/decoders/jtag/pd.py @@ -55,7 +55,7 @@ jtag_states = [ ] class Decoder(srd.Decoder): - api_version = 2 + api_version = 3 id = 'jtag' name = 'JTAG' longname = 'Joint Test Action Group (IEEE 1149.1)' @@ -92,13 +92,10 @@ class Decoder(srd.Decoder): # self.state = 'TEST-LOGIC-RESET' self.state = 'RUN-TEST/IDLE' self.oldstate = None - self.oldpins = (-1, -1, -1, -1) - self.oldtck = -1 self.bits_tdi = [] self.bits_tdo = [] self.bits_samplenums_tdi = [] self.bits_samplenums_tdo = [] - self.samplenum = 0 self.ss_item = self.es_item = None self.ss_bitstring = self.es_bitstring = None self.saved_item = None @@ -162,7 +159,9 @@ class Decoder(srd.Decoder): elif self.state == 'UPDATE-IR': self.state = 'SELECT-DR-SCAN' if (tms) else 'RUN-TEST/IDLE' - def handle_rising_tck_edge(self, tdi, tdo, tck, tms): + def handle_rising_tck_edge(self, pins): + (tdi, tdo, tck, tms, trst, srst, rtck) = pins + # Rising TCK edges always advance the state machine. self.advance_state_machine(tms) @@ -230,28 +229,7 @@ class Decoder(srd.Decoder): self.ss_item = self.samplenum - def decode(self, ss, es, data): - for (self.samplenum, pins) in data: - - # If none of the pins changed, there's nothing to do. - if self.oldpins == pins: - continue - - # Store current pin values for the next round. - self.oldpins = pins - - # Get individual pin values into local variables. - # Unused channels will have a value of > 1. - (tdi, tdo, tck, tms, trst, srst, rtck) = pins - - # We only care about TCK edges (either rising or falling). - if (self.oldtck == tck): - continue - - # Store start/end sample for later usage. - self.ss, self.es = ss, es - - if (self.oldtck == 0 and tck == 1): - self.handle_rising_tck_edge(tdi, tdo, tck, tms) - - self.oldtck = tck + def decode(self): + while True: + # Wait for a rising edge on TCK. + self.handle_rising_tck_edge(self.wait({2: 'r'})) |