X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Fcfp%2Fpd.py;h=57b52390619dec9ef9ae7bc6267192afff315d52;hp=78e4ebb29f3f95c4d7a4a97afffb8c0bdb939e92;hb=d6d8a8a440ea2a81e6ddde33d16bc84d01cdb432;hpb=5b2c45db1db190ba7f921b0808c123c6e48a47f3 diff --git a/decoders/cfp/pd.py b/decoders/cfp/pd.py index 78e4ebb..57b5239 100644 --- a/decoders/cfp/pd.py +++ b/decoders/cfp/pd.py @@ -58,6 +58,7 @@ class Decoder(srd.Decoder): license = 'BSD' inputs = ['mdio'] outputs = ['cfp'] + tags = ['Networking'] annotations = ( ('register', 'Register'), ('decode', 'Decode'), @@ -68,33 +69,42 @@ class Decoder(srd.Decoder): ) def __init__(self): + self.reset() + + def reset(self): pass def start(self): self.out_ann = self.register(srd.OUTPUT_ANN) + def putx(self, data): + self.put(self.ss, self.es, self.out_ann, data) + def decode(self, ss, es, data): - for (clause45, clause45_address, is_read, portad, devad, register) in data: - if is_read: - if clause45_address >= 0x8000 and clause45_address <= 0x807F: - self.put(ss, es, self.out_ann, [0, ['CFP NVR 1: Basic ID register', 'NVR1']]) - if clause45_address == 0x8000: - self.put(ss, es, self.out_ann, [1, ['Module identifier: %s' % MODULE_ID.get(register, 'Reserved')]]) - elif clause45_address >= 0x8080 and clause45_address <= 0x80FF: - self.put(ss, es, self.out_ann, [0, ['CFP NVR 2: Extended ID register', 'NVR2']]) - elif clause45_address >= 0x8100 and clause45_address <= 0x817F: - self.put(ss, es, self.out_ann, [0, ['CFP NVR 3: Network lane specific register', 'NVR3']]) - elif clause45_address >= 0x8180 and clause45_address <= 0x81FF: - self.put(ss, es, self.out_ann, [0, ['CFP NVR 4', 'NVR4']]) - elif clause45_address >= 0x8400 and clause45_address <= 0x847F: - self.put(ss, es, self.out_ann, [0, ['Vendor NVR 1: Vendor data register', 'V-NVR1']]) - elif clause45_address >= 0x8480 and clause45_address <= 0x84FF: - self.put(ss, es, self.out_ann, [0, ['Vendor NVR 2: Vendor data register', 'V-NVR2']]) - elif clause45_address >= 0x8800 and clause45_address <= 0x887F: - self.put(ss, es, self.out_ann, [0, ['User NVR 1: User data register', 'U-NVR1']]) - elif clause45_address >= 0x8880 and clause45_address <= 0x88FF: - self.put(ss, es, self.out_ann, [0, ['User NVR 2: User data register', 'U-NVR2']]) - elif clause45_address >= 0xA000 and clause45_address <= 0xA07F: - self.put(ss, es, self.out_ann, [0, ['CFP Module VR 1: CFP Module level control and DDM register', 'Mod-VR1']]) - elif clause45_address >= 0xA080 and clause45_address <= 0xA0FF: - self.put(ss, es, self.out_ann, [0, ['MLG VR 1: MLG Management Interface register', 'MLG-VR1']]) + self.ss, self.es = ss, es + for (clause45, clause45_addr, is_read, portad, devad, reg) in data: + if not is_read: + continue + if clause45_addr in range(0x8000, 0x807F + 1): + self.putx([0, ['CFP NVR 1: Basic ID register', 'NVR1']]) + if clause45_addr == 0x8000: + self.putx([1, ['Module identifier: %s' % \ + MODULE_ID.get(reg, 'Reserved')]]) + elif clause45_addr in range(0x8080, 0x80FF + 1): + self.putx([0, ['CFP NVR 2: Extended ID register', 'NVR2']]) + elif clause45_addr in range(0x8100, 0x817F + 1): + self.putx([0, ['CFP NVR 3: Network lane specific register', 'NVR3']]) + elif clause45_addr in range(0x8180, 0x81FF + 1): + self.putx([0, ['CFP NVR 4', 'NVR4']]) + elif clause45_addr in range(0x8400, 0x847F + 1): + self.putx([0, ['Vendor NVR 1: Vendor data register', 'V-NVR1']]) + elif clause45_addr in range(0x8480, 0x84FF + 1): + self.putx([0, ['Vendor NVR 2: Vendor data register', 'V-NVR2']]) + elif clause45_addr in range(0x8800, 0x887F + 1): + self.putx([0, ['User NVR 1: User data register', 'U-NVR1']]) + elif clause45_addr in range(0x8880, 0x88FF + 1): + self.putx([0, ['User NVR 2: User data register', 'U-NVR2']]) + elif clause45_addr in range(0xA000, 0xA07F + 1): + self.putx([0, ['CFP Module VR 1: CFP Module level control and DDM register', 'Mod-VR1']]) + elif clause45_addr in range(0xA080, 0xA0FF + 1): + self.putx([0, ['MLG VR 1: MLG Management Interface register', 'MLG-VR1']])