X-Git-Url: https://vault307.fbx.one/gitweb/micorpython_ir.git/blobdiff_plain/5bdfdd8333ec035dd71a5b4a031096087e07c682..e5768db31f053f95c6f6ede39346281e78cafb04:/ir_tx.py?ds=sidebyside diff --git a/ir_tx.py b/ir_tx.py index a1cc9e9..4a91336 100644 --- a/ir_tx.py +++ b/ir_tx.py @@ -100,6 +100,30 @@ class NEC(IR): self.aptr = 0 # Reset pointer self.cb(self._tim) # Initiate physical transmission. +# NEC protocol +class SONY(IR): + + def __init__(self, pin, bits=12, freq=40000, verbose=False): # Sony specifies 40KHz + super().__init__(pin, freq, 3 + bits * 2, 30, verbose) + if bits not in (12, 15, 20): + raise ValueError('bits must be 12, 15 or 20.') + self.bits = bits + + def tx(self, addr, data, ext): + self.append(2400, 600) + bits = self.bits + v = data & 0x7f + if bits == 12: + v |= (addr & 0x1f) << 7 + elif bits == 15: + v |= (addr & 0xff) << 7 + else: + v |= (addr & 0x1f) << 7 + v |= (ext & 0xff) << 12 + for _ in range(bits): + self.append(1200 if v & 1 else 600, 600) + v >>= 1 + # Philips RC5 protocol class RC5(IR):