def bcd2int(b):
return (b & 0x0f) + ((b >> 4) * 10)
+class SamplerateError(Exception):
+ pass
+
class Decoder(srd.Decoder):
- api_version = 1
+ api_version = 2
id = 'dcf77'
name = 'DCF77'
longname = 'DCF77 time protocol'
self.dcf77_bitnumber_is_known = 0
def start(self):
- # self.out_python = self.register(srd.OUTPUT_PYTHON)
self.out_ann = self.register(srd.OUTPUT_ANN)
def metadata(self, key, value):
# Even parity over date bits (36-58): DCF77 bit 58.
parity = self.datebits.count(1)
s = 'OK' if ((parity % 2) == 0) else 'INVALID!'
- self.putx([16, ['Date parity: %s' % s, 'DP: %s' %s]])
+ self.putx([16, ['Date parity: %s' % s, 'DP: %s' % s]])
self.datebits = []
else:
raise Exception('Invalid DCF77 bit: %d' % c)
def decode(self, ss, es, data):
- if self.samplerate is None:
- raise Exception("Cannot decode without samplerate.")
+ if not self.samplerate:
+ raise SamplerateError('Cannot decode without samplerate.')
for (self.samplenum, pins) in data:
# Ignore identical samples early on (for performance reasons).
self.state = 'WAIT FOR RISING EDGE'
- else:
- raise Exception('Invalid state: %s' % self.state)
-
self.oldval = val
-