From: Gerhard Sittig Date: Tue, 14 Mar 2017 14:35:27 +0000 (+0100) Subject: uart: Immediately skip reception of parity bits when not applicable X-Git-Tag: libsigrokdecode-0.5.0~63 X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff_plain;h=1078af01aeee50c9ad9633dd477e9de575521012 uart: Immediately skip reception of parity bits when not applicable When the UART frame does not contain a parity bit, then immediately advance to reception of stop bits after all data bits were received. This eliminates the necessity to run the parity check routine when parity does not apply in the first place. Without this change, some "dummy" sample needs to get inspected for correct operation of the state machine. --- diff --git a/decoders/uart/pd.py b/decoders/uart/pd.py index 070a2f4..51b0504 100644 --- a/decoders/uart/pd.py +++ b/decoders/uart/pd.py @@ -263,7 +263,11 @@ class Decoder(srd.Decoder): self.cur_data_bit[rxtx] += 1 return + # Skip to either reception of the parity bit, or reception of + # the STOP bits if parity is not applicable. self.state[rxtx] = 'GET PARITY BIT' + if self.options['parity_type'] == 'none': + self.state[rxtx] = 'GET STOP BITS' self.putpx(rxtx, ['DATA', rxtx, (self.datavalue[rxtx], self.databits[rxtx])]) @@ -322,11 +326,6 @@ class Decoder(srd.Decoder): return None def get_parity_bit(self, rxtx, signal): - # If no parity is used/configured, skip to the next state immediately. - if self.options['parity_type'] == 'none': - self.state[rxtx] = 'GET STOP BITS' - return - # Skip samples until we're in the middle of the parity bit. if not self.reached_bit(rxtx, self.options['num_data_bits'] + 1): return