From: Gerhard Sittig Date: Wed, 22 Jul 2020 20:05:54 +0000 (+0200) Subject: can: avoid assignment to .id field during frame inspection X-Git-Url: http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff_plain;h=bd7efe23c7a2e6c6698a3652fc0ce0a0d5dab156 can: avoid assignment to .id field during frame inspection The CAN frame's ID field gets stored in an .id member, which is unfortunate. Use .ident instead. The 'id' identifier is a Python language word, though it's used for PD boilerplate as well. Assume that the boilerplate is worth keeping, and harder to adjust (more dependencies), so adjust this PD's implementation to resolve the ambiguity. --- diff --git a/decoders/can/pd.py b/decoders/can/pd.py index 4551896..bf8e10a 100644 --- a/decoders/can/pd.py +++ b/decoders/can/pd.py @@ -349,7 +349,7 @@ class Decoder(srd.Decoder): self.putb([4, ['Extended Identifier: %s' % s, 'Extended ID: %s' % s, 'Extended ID', 'EID']]) - self.fullid = self.id << 18 | self.eid + self.fullid = self.ident << 18 | self.eid s = '%d (0x%x)' % (self.fullid, self.fullid) self.putb([5, ['Full Identifier: %s' % s, 'Full ID: %s' % s, 'Full ID', 'FID']]) @@ -474,12 +474,13 @@ class Decoder(srd.Decoder): elif bitnum == 11: bits = self.bits[1:] bits.reverse() - # BEWARE! Clobbers the decoder's .id field! - self.id = bitpack(bits) - self.fullid = self.id - s = '%d (0x%x)' % (self.id, self.id), + # BEWARE! Don't clobber the decoder's .id field which is + # part of its boiler plate! + self.ident = bitpack(bits) + self.fullid = self.ident + s = '%d (0x%x)' % (self.ident, self.ident), self.putb([3, ['Identifier: %s' % s, 'ID: %s' % s, 'ID']]) - if (self.id & 0x7f0) == 0x7f0: + if (self.ident & 0x7f0) == 0x7f0: self.putb([16, ['Identifier bits 10..4 must not be all recessive']]) # RTR or SRR bit, depending on frame type (gets handled later).