diff options
author | Uwe Hermann <uwe@hermann-uwe.de> | 2013-09-12 09:17:12 +0200 |
---|---|---|
committer | Uwe Hermann <uwe@hermann-uwe.de> | 2013-09-12 15:56:06 +0200 |
commit | 3a1803b09807eafba04c5e9fb0110d1c0d9f0eaf (patch) | |
tree | 601f153dc3a884f05e80ad5f74100863fbfbf7f2 /decoders/uart | |
parent | 4cace3b8485ffd04ed5c07ee81be812c7284c37b (diff) | |
download | libsigrokdecode-3a1803b09807eafba04c5e9fb0110d1c0d9f0eaf.tar.gz libsigrokdecode-3a1803b09807eafba04c5e9fb0110d1c0d9f0eaf.zip |
uart: Put annotations into proper annotation types.
There are now extra annotation types for data, start/stop/parity bits and
for warnings (e.g. "invalid parity" or "frame error" or such).
This allows users to select which of the annotation types they want to
see (they can select one/multiple/all annotations as needed), and also
allows them to use different visual representation for the different
annotation types in GUIs (e.g. different colors for the blobs, different
fonts, rectangle/round/elliptic blobs, and so on; how the annotation
blobs are displayed is entirely up to the GUI and its configuration by
the user).
Diffstat (limited to 'decoders/uart')
-rw-r--r-- | decoders/uart/pd.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/decoders/uart/pd.py b/decoders/uart/pd.py index af2e51c..5a6dfc0 100644 --- a/decoders/uart/pd.py +++ b/decoders/uart/pd.py @@ -98,6 +98,10 @@ class Decoder(srd.Decoder): } annotations = [ ['Data', 'UART data'], + ['Start bits', 'UART start bits'], + ['Parity bits', 'UART parity bits'], + ['Stop bits', 'UART stop bits'], + ['Warnings', 'Warnings'], ] def putx(self, rxtx, data): @@ -184,7 +188,7 @@ class Decoder(srd.Decoder): self.state[rxtx] = 'GET DATA BITS' self.putp(['STARTBIT', rxtx, self.startbit[rxtx]]) - self.putg([0, ['Start bit', 'Start', 'S']]) + self.putg([1, ['Start bit', 'Start', 'S']]) def get_data_bits(self, rxtx, signal): # Skip samples until we're in the middle of the desired data bit. @@ -248,11 +252,11 @@ class Decoder(srd.Decoder): if parity_ok(self.options['parity_type'], self.paritybit[rxtx], self.databyte[rxtx], self.options['num_data_bits']): self.putp(['PARITYBIT', rxtx, self.paritybit[rxtx]]) - self.putg([0, ['Parity bit', 'Parity', 'P']]) + self.putg([2, ['Parity bit', 'Parity', 'P']]) else: # TODO: Return expected/actual parity values. self.putp(['PARITY ERROR', rxtx, (0, 1)]) # FIXME: Dummy tuple... - self.putg([0, ['Parity error', 'Parity err', 'PE']]) + self.putg([4, ['Parity error', 'Parity err', 'PE']]) # TODO: Currently only supports 1 stop bit. def get_stop_bits(self, rxtx, signal): @@ -267,12 +271,13 @@ class Decoder(srd.Decoder): # Stop bits must be 1. If not, we report an error. if self.stopbit1[rxtx] != 1: self.putp(['INVALID STOPBIT', rxtx, self.stopbit1[rxtx]]) + self.putg([4, ['Frame error', 'Frame err', 'FE']]) # TODO: Abort? Ignore the frame? Other? self.state[rxtx] = 'WAIT FOR START BIT' self.putp(['STOPBIT', rxtx, self.stopbit1[rxtx]]) - self.putg([0, ['Stop bit', 'Stop', 'T']]) + self.putg([3, ['Stop bit', 'Stop', 'T']]) def decode(self, ss, es, data): # TODO: Either RX or TX could be omitted (optional probe). |