There is one annotation type for the RX side of the communication/data
output now, and another one for the TX side.
This allows GUIs to show them in two different traces, and/or show them in
the same trace but with different colors.
This also has the additional benefit that it is clear which databyte
belongs to which direction. Previously the annotations had to look like
"RX: 5F" or "TX:
11001011", but the "RX: " and "TX: " prefixes are now
no longer required, making the GUI traces (and CLI output too) much more
readable.
# TODO: Options to invert the signal(s).
}
annotations = [
# TODO: Options to invert the signal(s).
}
annotations = [
+ ['RX data', 'UART RX data'],
+ ['TX data', 'UART TX data'],
['Start bits', 'UART start bits'],
['Parity bits', 'UART parity bits'],
['Stop bits', 'UART stop bits'],
['Start bits', 'UART start bits'],
['Parity bits', 'UART parity bits'],
['Stop bits', 'UART stop bits'],
self.state[rxtx] = 'GET DATA BITS'
self.putp(['STARTBIT', rxtx, self.startbit[rxtx]])
self.state[rxtx] = 'GET DATA BITS'
self.putp(['STARTBIT', rxtx, self.startbit[rxtx]])
- self.putg([1, ['Start bit', 'Start', 'S']])
+ self.putg([2, ['Start bit', 'Start', 'S']])
def get_data_bits(self, rxtx, signal):
# Skip samples until we're in the middle of the desired data bit.
def get_data_bits(self, rxtx, signal):
# Skip samples until we're in the middle of the desired data bit.
self.putp(['DATA', rxtx, self.databyte[rxtx]])
self.putp(['DATA', rxtx, self.databyte[rxtx]])
- s = 'RX: ' if (rxtx == RX) else 'TX: '
b, f = self.databyte[rxtx], self.options['format']
if f == 'ascii':
b, f = self.databyte[rxtx], self.options['format']
if f == 'ascii':
- self.putx(rxtx, [0, [s + chr(b)]])
+ self.putx(rxtx, [rxtx, [chr(b)]])
- self.putx(rxtx, [0, [s + str(b)]])
+ self.putx(rxtx, [rxtx, [str(b)]])
- self.putx(rxtx, [0, [s + hex(b)[2:].zfill(2).upper()]])
+ self.putx(rxtx, [rxtx, [hex(b)[2:].zfill(2).upper()]])
- self.putx(rxtx, [0, [s + oct(b)[2:].zfill(3)]])
+ self.putx(rxtx, [rxtx, [oct(b)[2:].zfill(3)]])
- self.putx(rxtx, [0, [s + bin(b)[2:].zfill(8)]])
+ self.putx(rxtx, [rxtx, [bin(b)[2:].zfill(8)]])
else:
raise Exception('Invalid data format option: %s' % f)
else:
raise Exception('Invalid data format option: %s' % f)
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]])
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([2, ['Parity bit', 'Parity', 'P']])
+ self.putg([3, ['Parity bit', 'Parity', 'P']])
else:
# TODO: Return expected/actual parity values.
self.putp(['PARITY ERROR', rxtx, (0, 1)]) # FIXME: Dummy tuple...
else:
# TODO: Return expected/actual parity values.
self.putp(['PARITY ERROR', rxtx, (0, 1)]) # FIXME: Dummy tuple...
- self.putg([4, ['Parity error', 'Parity err', 'PE']])
+ self.putg([5, ['Parity error', 'Parity err', 'PE']])
# TODO: Currently only supports 1 stop bit.
def get_stop_bits(self, rxtx, signal):
# TODO: Currently only supports 1 stop bit.
def get_stop_bits(self, rxtx, signal):
# Stop bits must be 1. If not, we report an error.
if self.stopbit1[rxtx] != 1:
self.putp(['INVALID STOPBIT', rxtx, self.stopbit1[rxtx]])
# 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']])
+ self.putg([5, ['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]])
# TODO: Abort? Ignore the frame? Other?
self.state[rxtx] = 'WAIT FOR START BIT'
self.putp(['STOPBIT', rxtx, self.stopbit1[rxtx]])
- self.putg([3, ['Stop bit', 'Stop', 'T']])
+ self.putg([4, ['Stop bit', 'Stop', 'T']])
def decode(self, ss, es, data):
# TODO: Either RX or TX could be omitted (optional probe).
def decode(self, ss, es, data):
# TODO: Either RX or TX could be omitted (optional probe).