import sigrokdecode as srd
+class SamplerateError(Exception):
+ pass
+
class Decoder(srd.Decoder):
api_version = 3
id = 'pwm'
desc = 'Analog level encoded in duty cycle percentage.'
license = 'gplv2+'
inputs = ['logic']
- outputs = ['pwm']
+ outputs = []
+ tags = ['Encoding']
channels = (
{'id': 'data', 'name': 'Data', 'desc': 'Data line'},
)
('period', 'Period'),
)
annotation_rows = (
- ('duty-cycle', 'Duty cycle', (0,)),
- ('period', 'Period', (1,)),
+ ('duty-cycle-vals', 'Duty cycles', (0,)),
+ ('periods', 'Periods', (1,)),
)
binary = (
('raw', 'RAW file'),
self.reset()
def reset(self):
+ self.samplerate = None
self.ss_block = self.es_block = None
def metadata(self, key, value):
self.put(self.ss_block, self.es_block, self.out_binary, data)
def decode(self):
+ if not self.samplerate:
+ raise SamplerateError('Cannot decode without samplerate.')
+
num_cycles = 0
average = 0