Skip to content

Commit 896f74d

Browse files
committed
ScanBluetooth: Don't loose a BLE device name
If we get a name of a device, don't lost it by overwrite it with "unknown" ;)
1 parent 8f08205 commit 896f74d

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

internal_filesystem/apps/com.micropythonos.scan_bluetooth/assets/scan_bluetooth.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
_ADV_TYPE_NAME = const(9)
2929

3030

31-
def decode_name(payload: bytes) -> str:
31+
def decode_name(payload: bytes) -> str | None:
3232
i = 0
3333
payload_len = len(payload)
3434
while i < payload_len:
@@ -42,7 +42,6 @@ def decode_name(payload: bytes) -> str:
4242
else:
4343
print(f"Unsupported: {field_type=} with {length=}")
4444
i += length + 1
45-
return "Unknown"
4645

4746

4847
def set_dynamic_column_widths(table, font=None, padding=8):
@@ -98,6 +97,7 @@ def onCreate(self):
9897
self.scan_count = 0
9998
self.mac2column = {}
10099
self.mac2counts = {}
100+
self.mac2name = {}
101101

102102
self.ble = bluetooth.BLE()
103103

@@ -145,7 +145,10 @@ def ble_irq_handler(self, event: int, data: tuple) -> None:
145145
addr_type, addr, adv_type, rssi, adv_data = data
146146
addr = ":".join(f"{b:02x}" for b in addr)
147147
print(f"{addr=} {rssi=} {len(adv_data)=}")
148-
name = decode_name(adv_data)
148+
if name := decode_name(adv_data):
149+
self.mac2name[addr] = name
150+
else:
151+
name = self.mac2name.get(addr, "Unknown")
149152

150153
if not (column_index := self.mac2column.get(addr)):
151154
column_index = len(self.mac2column) + 1

0 commit comments

Comments
 (0)