From e655a751153d3c658b3ade07944ce3d25cacb7cb Mon Sep 17 00:00:00 2001 From: Tomas Krejci Date: Tue, 28 May 2024 23:27:06 +0200 Subject: [PATCH 1/2] up device id for BLE device name --- main.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index d901048..aa0fe72 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ # OLT protocol. # Tomas Krejci [Njord] -import machine, time +import machine, time, re from sys import platform ESP32 = platform == "esp32" @@ -14,10 +14,14 @@ else: from pyb import Pin, LED import uasyncio as asyncio -device_id = "" +#### Device ID ### +device_id_str = "" for b in machine.unique_id(): - device_id += "{:02X}".format(b) -# device_id_hex = int(device_id) + device_id_str += "{:02X}".format(b) + +device_id_str = device_id_str[-4:] # Keep last 8 char +device_id = int(device_id_str, 16) # Convert to int from hex in string +# device_id_str = str(device_id, 16) # Convert back to hex print(f"{device_id:0x}") #### BLE UART ### import ble_uart @@ -30,7 +34,7 @@ def print_handler(): ble = bluetooth.BLE() -uart = ble_uart.Ble_uart(ble, on_rx=print_handler, name=print("LaserTag")) +uart = ble_uart.Ble_uart(ble, on_rx=print_handler, name="OpenLaserTag " + device_id_str) #### OLT IR RX imports ### import ustruct @@ -155,7 +159,7 @@ async def cb(byte1, byte2, byte3, packet): async def main(proto): logger.debug("main start") - print(f"Device ID: {device_id}") + print(f"Device ID: {device_id_str}") ### alive check ### asyncio.create_task(alive_check()) From c7fb8990838cf18080dc8a1814291179238bb212 Mon Sep 17 00:00:00 2001 From: Tomas Krejci Date: Tue, 28 May 2024 23:41:54 +0200 Subject: [PATCH 2/2] fix shot ir rx check --- lib/olt_lib/ir_rx/olt.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/olt_lib/ir_rx/olt.py b/lib/olt_lib/ir_rx/olt.py index 2561069..cc84459 100644 --- a/lib/olt_lib/ir_rx/olt.py +++ b/lib/olt_lib/ir_rx/olt.py @@ -4,13 +4,14 @@ from utime import ticks_us, ticks_diff from olt_lib.ir_rx import IR_RX + # Bit reverse a 32 bit value def rbit32(v): - v = (v & 0x0000ffff) << 16 | (v & 0xffff0000) >> 16 - v = (v & 0x00ff00ff) << 8 | (v & 0xff00ff00) >> 8 - v = (v & 0x0f0f0f0f) << 4 | (v & 0xf0f0f0f0) >> 4 - v = (v & 0x33333333) << 2 | (v & 0xcccccccc) >> 2 - return (v & 0x55555555) << 1 | (v & 0xaaaaaaaa) >> 1 + v = (v & 0x0000FFFF) << 16 | (v & 0xFFFF0000) >> 16 + v = (v & 0x00FF00FF) << 8 | (v & 0xFF00FF00) >> 8 + v = (v & 0x0F0F0F0F) << 4 | (v & 0xF0F0F0F0) >> 4 + v = (v & 0x33333333) << 2 | (v & 0xCCCCCCCC) >> 2 + return (v & 0x55555555) << 1 | (v & 0xAAAAAAAA) >> 1 class SONY_ABC(IR_RX): # Abstract base class @@ -26,13 +27,13 @@ class SONY_ABC(IR_RX): # Abstract base class def decode(self, _): try: nedges = self.edge # No. of edges detected - self.verbose and print('nedges', nedges) + self.verbose and print("nedges", nedges) if nedges > 50: raise RuntimeError(self.OVERRUN) bits = (nedges - 2) // 2 - if nedges not in (26, 32, 42, 50) or bits > self._bits: + if nedges not in (58, 30, 50) or bits > self._bits: raise RuntimeError(self.BADBLOCK) - self.verbose and print('SIRC {}bit'.format(bits)) + self.verbose and print("SIRC {}bit".format(bits)) width = ticks_diff(self._times[1], self._times[0]) if not 1800 < width < 3000: # 2.4ms leading mark for all valid data raise RuntimeError(self.BADSTART) @@ -55,15 +56,15 @@ class SONY_ABC(IR_RX): # Abstract base class val = rbit32(val) val >>= 8 packet = val - byte3 = val & 0xff # 8 bit command + byte3 = val & 0xFF # 8 bit command val >>= 8 - byte2 = val & 0xff # 8 bit command + byte2 = val & 0xFF # 8 bit command val >>= 8 - byte1 = val & 0xff # 8 bit command - #if nedges < 42: + byte1 = val & 0xFF # 8 bit command + # if nedges < 42: # addr = val & 0xff # 5 or 8 bit addr # val = 0 - #else: + # else: # addr = val & 0x1f # 5 bit addr # val >>= 5 # 8 bit extended except RuntimeError as e: @@ -71,21 +72,25 @@ class SONY_ABC(IR_RX): # Abstract base class byte1 = 0 byte2 = 0 byte3 = 0 - #packet = 0 + # packet = 0 self.do_callback(byte1, byte2, byte3, packet) + class SONY_12(SONY_ABC): def __init__(self, pin, callback, *args): super().__init__(pin, 12, callback, *args) + class SONY_15(SONY_ABC): def __init__(self, pin, callback, *args): super().__init__(pin, 15, callback, *args) + class SONY_20(SONY_ABC): def __init__(self, pin, callback, *args): super().__init__(pin, 20, callback, *args) + class LT_24(SONY_ABC): def __init__(self, pin, callback, *args): super().__init__(pin, 24, callback, *args)