+ for (self.samplenum, pins) in data:
+
+ # Ignore identical samples early on (for performance reasons).
+ if self.oldpins == pins:
+ continue
+ self.oldpins, (val, pon) = pins, pins
+
+ # Always remember the old PON state.
+ if self.oldpon != pon:
+ self.oldpon = pon
+
+ # Warn if PON goes low.
+ if self.oldpon == 1 and pon == 0:
+ self.pon_ss = self.samplenum
+ self.put(self.samplenum, self.samplenum, self.out_ann,
+ [1, ['Warning: PON goes low, DCF77 reception '
+ 'no longer possible']])
+ elif self.oldpon == 0 and pon == 1:
+ self.put(self.samplenum, self.samplenum, self.out_ann,
+ [0, ['PON goes high, DCF77 reception now possible']])
+ self.put(self.pon_ss, self.samplenum, self.out_ann,
+ [1, ['Warning: PON low, DCF77 reception disabled']])