summaryrefslogtreecommitdiff
path: root/decoders/uart
diff options
context:
space:
mode:
authorUwe Hermann <uwe@hermann-uwe.de>2013-09-12 09:17:12 +0200
committerUwe Hermann <uwe@hermann-uwe.de>2013-09-12 15:56:06 +0200
commit3a1803b09807eafba04c5e9fb0110d1c0d9f0eaf (patch)
tree601f153dc3a884f05e80ad5f74100863fbfbf7f2 /decoders/uart
parent4cace3b8485ffd04ed5c07ee81be812c7284c37b (diff)
downloadlibsigrokdecode-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.py13
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).