X-Git-Url: http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fieee488%2Fpd.py;fp=decoders%2Fieee488%2Fpd.py;h=0451c14f4f0edb494e66a258278dd060cbd76b42;hp=4531cb306bef6de710ebc17a4b15ab2a64135e4e;hb=f697102ece64f8e99bfd26bbc2dedadaa037a0e5;hpb=0963cf62de26f00f2cbfcd2b4a841bf0a9c05384 diff --git a/decoders/ieee488/pd.py b/decoders/ieee488/pd.py index 4531cb3..0451c14 100644 --- a/decoders/ieee488/pd.py +++ b/decoders/ieee488/pd.py @@ -288,6 +288,8 @@ class Decoder(srd.Decoder): 'default': 'no', 'values': ('no', 'yes')}, {'id': 'delim', 'desc': 'Payload data delimiter', 'default': 'eol', 'values': ('none', 'eol')}, + {'id': 'atn_parity', 'desc': 'ATN commands use parity', + 'default': 'no', 'values': ('no', 'yes')}, ) annotations = ( ('bit', 'IEC bit'), @@ -486,6 +488,13 @@ class Decoder(srd.Decoder): upd_iec = False, py_type = None py_peers = False + if self.options['atn_parity'] == 'yes': + par = 1 if b & 0x80 else 0 + b &= ~0x80 + ones = bin(b).count('1') + par + if ones % 2: + warn_texts = ['Command parity error', 'parity', 'PAR'] + self.emit_warn_ann(self.ss_raw, self.es_raw, warn_texts) is_cmd, is_unl, is_unt = _is_command(b) laddr = _is_listen_addr(b) taddr = _is_talk_addr(b)