class SensorTag(object): def __init__(self, address): self.requester = GATTRequester(address, False) def connect(self): print("Connecting...") self.requester.connect(True) print("Succeed.") def check_status(self): status = "connected" if self.requester.is_connected() else "not connected" print("Checking current status: {}".format(status)) def disconnect(self): print("Disconnecting...") self.requester.disconnect() print("Succeed.") def show_primary(self): print("Discover Primary...") primary = self.requester.discover_primary() for prim in primary: print(prim) print("Done.") def show_characteristic(self): print("Discover Characteristic...") characteristic = self.requester.discover_characteristics() for char in characteristic: print(char) print("Done.")
class Reader: def __init__(self, address): self.requester = GATTRequester(address, False) self.connect() self.request_name() characteristics = self.requester.discover_characteristics() for ch in characteristics: print(ch) data = self.requester.read_by_handle(0x000e) print(data) def connect(self): print("Connecting...", end=" ") sys.stdout.flush() self.requester.connect(True, channel_type="random") print("OK.") def request_name(self): data = self.requester.read_by_uuid( "00002a00-0000-1000-8000-00805f9b34fb")[0] try: print("Device name:", data.decode("utf-8")) except AttributeError: print("Device name:", data) def onNotification(self, args): pass
if prefix: result.append(prefix) if fmt: value = unpack(fmt, value) if len(value) == 1: value = value[0] result.append(str(value)) if suffix: result.append(suffix) return " ".join(result) characteristics = {} chars = req.discover_characteristics() for char in chars: characteristics[char['handle']] = Characteristic(**char) descs = req.discover_descriptors() for desc in descs: uuid = desc['uuid'] if uuid == UUID_SERVICE_DECL: pass elif uuid == UUID_CHARACTERISTIC_DECL: handle = desc['handle'] else: characteristics[handle].addDescriptor(desc) print("GATT Characteristics of BLE Device " + ADDRESS) print