Merge ~sylvain-pineau/checkbox-support:eddystone_scanner_python3.4 into checkbox-support:master

Proposed by Sylvain Pineau
Status: Merged
Approved by: Sylvain Pineau
Approved revision: cac03457a8c6e67cd4c64309f53a95066fdd2c75
Merge reported by: Sylvain Pineau
Merged at revision: cac03457a8c6e67cd4c64309f53a95066fdd2c75
Proposed branch: ~sylvain-pineau/checkbox-support:eddystone_scanner_python3.4
Merge into: checkbox-support:master
Diff against target: 65 lines (+17/-4)
1 file modified
checkbox_support/scripts/eddystone_scanner.py (+17/-4)
Reviewer Review Type Date Requested Status
Sylvain Pineau (community) Approve
Review via email: mp+356303@code.launchpad.net

Description of the change

Make the eddystone scanner script compliant with Trusty and python3.4 where the async/await keywords are not supported (introduced in python3.5)

+ logging to stderr/sdtout depending on the level

To post a comment you must log in.
Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :

self-approved

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/checkbox_support/scripts/eddystone_scanner.py b/checkbox_support/scripts/eddystone_scanner.py
index 3ee398a..62f6cc0 100644
--- a/checkbox_support/scripts/eddystone_scanner.py
+++ b/checkbox_support/scripts/eddystone_scanner.py
@@ -20,6 +20,8 @@
2020
21import argparse21import argparse
22import asyncio22import asyncio
23import logging
24import sys
2325
24from checkbox_support.vendor.aioblescan import create_bt_socket26from checkbox_support.vendor.aioblescan import create_bt_socket
25from checkbox_support.vendor.aioblescan import BLEScanRequester27from checkbox_support.vendor.aioblescan import BLEScanRequester
@@ -29,21 +31,31 @@ from checkbox_support.vendor.aioblescan.eddystone import EddyStone
2931
3032
31def main():33def main():
34 logger = logging.getLogger(__file__)
35 logger.setLevel(logging.DEBUG)
36 h1 = logging.StreamHandler(sys.stdout)
37 h1.setLevel(logging.DEBUG)
38 h1.addFilter(lambda record: record.levelno <= logging.INFO)
39 h2 = logging.StreamHandler()
40 h2.setLevel(logging.WARNING)
41 logger.addHandler(h1)
42 logger.addHandler(h2)
32 parser = argparse.ArgumentParser(43 parser = argparse.ArgumentParser(
33 description="Track BLE advertised packets")44 description="Track BLE advertised packets")
34 parser.add_argument("-D", "--device", default='hci0',45 parser.add_argument("-D", "--device", default='hci0',
35 help="Select the hciX device to use "46 help="Select the hciX device to use "
36 "(default hci0).")47 "(default hci0).")
3748
38 async def timeout():49 @asyncio.coroutine
39 await asyncio.sleep(10.0)50 def timeout():
51 yield from asyncio.sleep(10)
4052
41 def ble_process(data):53 def ble_process(data):
42 ev = HCI_Event()54 ev = HCI_Event()
43 ev.decode(data)55 ev.decode(data)
44 advertisement = EddyStone().decode(ev)56 advertisement = EddyStone().decode(ev)
45 if advertisement:57 if advertisement:
46 print("EddyStone URL: {}".format(advertisement['url']))58 logger.info("EddyStone URL: %s" % advertisement['url'])
47 for task in asyncio.Task.all_tasks():59 for task in asyncio.Task.all_tasks():
48 task.cancel()60 task.cancel()
4961
@@ -57,7 +69,7 @@ def main():
57 try:69 try:
58 mysocket = create_bt_socket(int(opts.device.replace('hci', '')))70 mysocket = create_bt_socket(int(opts.device.replace('hci', '')))
59 except OSError as e:71 except OSError as e:
60 print(e)72 logger.error('%s' % e)
61 return 173 return 1
62 # Create a connection with the STREAM socket74 # Create a connection with the STREAM socket
63 fac = event_loop._create_connection_transport(75 fac = event_loop._create_connection_transport(
@@ -70,6 +82,7 @@ def main():
70 btctrl.send_scan_request()82 btctrl.send_scan_request()
71 try:83 try:
72 event_loop.run_until_complete(timeout())84 event_loop.run_until_complete(timeout())
85 logger.error('No EddyStone URL advertisement detected!')
73 return 186 return 1
74 except asyncio.CancelledError:87 except asyncio.CancelledError:
75 return 088 return 0

Subscribers

People subscribed via source and target branches