introduce BTUUID class

As a preparation to move away from bluepy, introduce a new class BTUUID.
Bluepy provides its unique UUID class which handles UUIDs of Bluetooth
devices well. Instead of it, introduce BTUUID which extends python
standard uuid.UUID class and support Bluetooth devices.

Signed-off-by: Shin'ichiro Kawasaki <kawasaki@juno.dti.ne.jp>
This commit is contained in:
Shin'ichiro Kawasaki
2023-08-27 11:25:37 +09:00
parent ed4df282b1
commit 63345442ca

View File

@@ -10,6 +10,7 @@ import ssl
import websockets
import socket
import json
import uuid
import base64
import logging
import sys
@@ -44,6 +45,24 @@ logger.propagate = False
HOSTNAME="device-manager.scratch.mit.edu"
scan_seconds=10.0
class BTUUID(uuid.UUID):
BLUETOOTH_BASE_UUID = "00001000800000805F9B34FB"
def __init__(self, val):
if isinstance(val, int):
if (val < 0) or (val > 0xFFFFFFFF):
raise ValueError(
"Short form UUIDs must be in range 0..0xFFFFFFFF")
val = "%04X" % val
else:
val = str(val)
val = val.replace("-", "")
if len(val) <= 8: # Short form
val = ("0" * (8 - len(val))) + val + self.BLUETOOTH_BASE_UUID
uuid.UUID.__init__(self, val)
class Session():
"""Base class for BTSession and BLESession"""
def __init__(self, websocket, loop):