summaryrefslogtreecommitdiff
path: root/examples/bluetooth/ble_advertising.py
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2025-07-20 21:38:03 +1000
committerDamien George <damien@micropython.org>2025-07-31 11:02:41 +1000
commita9b038a57e2ca730dd95e79fc89491d0d1154e6e (patch)
treed735f0b885b7da0b75dbf072b070099b62254644 /examples/bluetooth/ble_advertising.py
parent6a8c45b6c4683fa2dc68cab62219b0edad4dd15d (diff)
examples/bluetooth/ble_advertising.py: Fix decoding UUIDs.
The UUID32 case was incorrect: first, the "<d" should have been "<I", and second, the UUID constructor treats integer arguments as UUID16. So this UUID32 case needs to pass in the actual data bytes. And then it's simpler to just make all cases pass in the data bytes. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'examples/bluetooth/ble_advertising.py')
-rw-r--r--examples/bluetooth/ble_advertising.py9
1 files changed, 3 insertions, 6 deletions
diff --git a/examples/bluetooth/ble_advertising.py b/examples/bluetooth/ble_advertising.py
index 2fe17d640..f0b97d7f5 100644
--- a/examples/bluetooth/ble_advertising.py
+++ b/examples/bluetooth/ble_advertising.py
@@ -79,12 +79,9 @@ def decode_name(payload):
def decode_services(payload):
services = []
- for u in decode_field(payload, _ADV_TYPE_UUID16_COMPLETE):
- services.append(bluetooth.UUID(struct.unpack("<h", u)[0]))
- for u in decode_field(payload, _ADV_TYPE_UUID32_COMPLETE):
- services.append(bluetooth.UUID(struct.unpack("<d", u)[0]))
- for u in decode_field(payload, _ADV_TYPE_UUID128_COMPLETE):
- services.append(bluetooth.UUID(u))
+ for code in (_ADV_TYPE_UUID16_COMPLETE, _ADV_TYPE_UUID32_COMPLETE, _ADV_TYPE_UUID128_COMPLETE):
+ for u in decode_field(payload, code):
+ services.append(bluetooth.UUID(u))
return services