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
1diff --git a/checkbox_support/scripts/eddystone_scanner.py b/checkbox_support/scripts/eddystone_scanner.py
2index 3ee398a..62f6cc0 100644
3--- a/checkbox_support/scripts/eddystone_scanner.py
4+++ b/checkbox_support/scripts/eddystone_scanner.py
5@@ -20,6 +20,8 @@
6
7 import argparse
8 import asyncio
9+import logging
10+import sys
11
12 from checkbox_support.vendor.aioblescan import create_bt_socket
13 from checkbox_support.vendor.aioblescan import BLEScanRequester
14@@ -29,21 +31,31 @@ from checkbox_support.vendor.aioblescan.eddystone import EddyStone
15
16
17 def main():
18+ logger = logging.getLogger(__file__)
19+ logger.setLevel(logging.DEBUG)
20+ h1 = logging.StreamHandler(sys.stdout)
21+ h1.setLevel(logging.DEBUG)
22+ h1.addFilter(lambda record: record.levelno <= logging.INFO)
23+ h2 = logging.StreamHandler()
24+ h2.setLevel(logging.WARNING)
25+ logger.addHandler(h1)
26+ logger.addHandler(h2)
27 parser = argparse.ArgumentParser(
28 description="Track BLE advertised packets")
29 parser.add_argument("-D", "--device", default='hci0',
30 help="Select the hciX device to use "
31 "(default hci0).")
32
33- async def timeout():
34- await asyncio.sleep(10.0)
35+ @asyncio.coroutine
36+ def timeout():
37+ yield from asyncio.sleep(10)
38
39 def ble_process(data):
40 ev = HCI_Event()
41 ev.decode(data)
42 advertisement = EddyStone().decode(ev)
43 if advertisement:
44- print("EddyStone URL: {}".format(advertisement['url']))
45+ logger.info("EddyStone URL: %s" % advertisement['url'])
46 for task in asyncio.Task.all_tasks():
47 task.cancel()
48
49@@ -57,7 +69,7 @@ def main():
50 try:
51 mysocket = create_bt_socket(int(opts.device.replace('hci', '')))
52 except OSError as e:
53- print(e)
54+ logger.error('%s' % e)
55 return 1
56 # Create a connection with the STREAM socket
57 fac = event_loop._create_connection_transport(
58@@ -70,6 +82,7 @@ def main():
59 btctrl.send_scan_request()
60 try:
61 event_loop.run_until_complete(timeout())
62+ logger.error('No EddyStone URL advertisement detected!')
63 return 1
64 except asyncio.CancelledError:
65 return 0

Subscribers

People subscribed via source and target branches