|
6 | 6 | import asyncio |
7 | 7 | from threading import Thread, Event |
8 | 8 | from typing import Optional |
| 9 | +from print_color import print |
9 | 10 |
|
10 | 11 | from bleak import BleakScanner, BleakClient |
11 | 12 |
|
|
16 | 17 | TORADIO_UUID = "f75c76d2-129e-4dad-a1dd-7866124401e7" |
17 | 18 | FROMRADIO_UUID = "2c55e69e-4993-11ed-b878-0242ac120002" |
18 | 19 | FROMNUM_UUID = "ed9da18c-a800-4f66-a670-aa7547e34453" |
| 20 | +LOGRADIO_UUID = "6c6fd238-78fa-436b-aacf-15c5be1ef2e2" |
| 21 | + |
19 | 22 |
|
20 | 23 |
|
21 | 24 | class BLEInterface(MeshInterface): |
@@ -70,13 +73,28 @@ def __init__(self, address: Optional[str], noProto: bool = False, debugOut = Non |
70 | 73 |
|
71 | 74 | logging.debug("Register FROMNUM notify callback") |
72 | 75 | self.client.start_notify(FROMNUM_UUID, self.from_num_handler) |
| 76 | + self.client.start_notify(LOGRADIO_UUID, self.log_radio_handler) |
73 | 77 |
|
74 | 78 |
|
75 | 79 | async def from_num_handler(self, _, b): # pylint: disable=C0116 |
76 | 80 | from_num = struct.unpack('<I', bytes(b))[0] |
77 | 81 | logging.debug(f"FROMNUM notify: {from_num}") |
78 | 82 | self.should_read = True |
79 | 83 |
|
| 84 | + async def log_radio_handler(self, _, b): # pylint: disable=C0116 |
| 85 | + log_radio = b.decode('utf-8').replace('\n', '') |
| 86 | + if log_radio.startswith("DEBUG"): |
| 87 | + print(log_radio, color="cyan", end=None) |
| 88 | + elif log_radio.startswith("INFO"): |
| 89 | + print(log_radio, color="white", end=None) |
| 90 | + elif log_radio.startswith("WARN"): |
| 91 | + print(log_radio, color="yellow", end=None) |
| 92 | + elif log_radio.startswith("ERROR"): |
| 93 | + print(log_radio, color="red", end=None) |
| 94 | + else: |
| 95 | + print(log_radio, end=None) |
| 96 | + |
| 97 | + self.should_read = False |
80 | 98 |
|
81 | 99 | def scan(self): |
82 | 100 | "Scan for available BLE devices" |
|
0 commit comments