(self)
| 125 | self.put(self.ss, self.es, self.out_ann, data) |
| 126 | |
| 127 | def decode(self): |
| 128 | while True: |
| 129 | self.wait({0: 'e'}) |
| 130 | self.state = 'DECODING' |
| 131 | |
| 132 | if not self.samplenumber_last: # Set counters to start of signal. |
| 133 | self.samplenumber_last = self.samplenum |
| 134 | self.ss = self.samplenum |
| 135 | continue |
| 136 | |
| 137 | if self.bit_count < 12: # Decode A0 to A11. |
| 138 | self.bit_count += 1 |
| 139 | for i in range(0, 4): # Get four pulses for each bit. |
| 140 | if i > 0: |
| 141 | self.wait({0: 'e'}) # Get next 3 edges. |
| 142 | samples = self.samplenum - self.samplenumber_last |
| 143 | self.pulses.append(samples) # Save the pulse width. |
| 144 | self.samplenumber_last = self.samplenum |
| 145 | self.es = self.samplenum |
| 146 | self.bits.append([decode_bit(self.pulses), self.ss, |
| 147 | self.es]) # Save states and times. |
| 148 | idx = bitvals.index(decode_bit(self.pulses)) |
| 149 | self.putx([idx, [decode_bit(self.pulses)]]) # Write decoded bit. |
| 150 | self.putx([5, [pinlabels(self.bit_count)]]) # Write pin labels. |
| 151 | self.pulses = [] |
| 152 | self.ss = self.samplenum |
| 153 | else: |
| 154 | if self.model != 'none': |
| 155 | self.labels = decode_model(self.model, self.bits) |
| 156 | self.put(self.labels[1], self.labels[2], self.out_ann, |
| 157 | [6, [self.labels[0]]]) # Write model decode. |
| 158 | self.put(self.labels[4], self.labels[5], self.out_ann, |
| 159 | [7, [self.labels[3]]]) # Write model decode. |
| 160 | samples = self.samplenum - self.samplenumber_last |
| 161 | self.wait({'skip': 8 * samples}) # Wait for end of sync bit. |
| 162 | self.es = self.samplenum |
| 163 | self.putx([4, ['Sync']]) # Write sync label. |
| 164 | self.reset() # Reset and wait for next set of pulses. |
| 165 | self.state = 'DECODE_TIMEOUT' |
| 166 | if not self.state == 'DECODE_TIMEOUT': |
| 167 | self.samplenumber_last = self.samplenum |
nothing calls this directly
no test coverage detected