| 87 | self.put(self.ss_frame_field, self.samplenum, self.out_ann, data) |
| 88 | |
| 89 | def putdata(self): |
| 90 | self.put(self.ss_frame_field, self.mdiobits[0][2], self.out_ann, |
| 91 | [2, ['DATA: %04X' % self.data, 'DATA', 'D']]) |
| 92 | |
| 93 | if self.clause45 and self.opcode == 0: |
| 94 | self.clause45_addr = self.data |
| 95 | |
| 96 | # Decode data. |
| 97 | if self.opcode > 0 or not self.clause45: |
| 98 | decoded_min = '' |
| 99 | if self.clause45 and self.clause45_addr != -1: |
| 100 | decoded_min += str.format('ADDR: %04X ' % self.clause45_addr) |
| 101 | elif self.clause45: |
| 102 | decoded_min += str.format('ADDR: UKWN ') |
| 103 | |
| 104 | if self.clause45 and self.opcode > 1 \ |
| 105 | or (not self.clause45 and self.opcode): |
| 106 | decoded_min += str.format('READ: %04X' % self.data) |
| 107 | is_read = 1 |
| 108 | else: |
| 109 | decoded_min += str.format('WRITE: %04X' % self.data) |
| 110 | is_read = 0 |
| 111 | decoded_ext = str.format(' %s: %02d' % \ |
| 112 | ('PRTAD' if self.clause45 else 'PHYAD', self.portad)) |
| 113 | decoded_ext += str.format(' %s: %02d' % \ |
| 114 | ('DEVAD' if self.clause45 else 'REGAD', self.devad)) |
| 115 | if self.ta_invalid or self.op_invalid: |
| 116 | decoded_ext += ' ERROR' |
| 117 | self.put(self.ss_frame, self.mdiobits[0][2], self.out_ann, |
| 118 | [5, [decoded_min + decoded_ext, decoded_min]]) |
| 119 | |
| 120 | self.put(self.ss_frame, self.mdiobits[0][2], self.out_python, |
| 121 | [(bool(self.clause45), int(self.clause45_addr), \ |
| 122 | bool(is_read), int(self.portad), int(self.devad), \ |
| 123 | int(self.data))]) |
| 124 | |
| 125 | # Post read increment address. |
| 126 | if self.clause45 and self.opcode == 2 and self.clause45_addr != -1: |
| 127 | self.clause45_addr += 1 |
| 128 | |
| 129 | def reset_decoder_state(self): |
| 130 | self.mdiobits = [] |