Skip to content

Commit

Permalink
Isolate better BT low level code #patch
Browse files Browse the repository at this point in the history
  • Loading branch information
fabricepipart committed Jan 1, 2020
1 parent f9e9e53 commit 97111ec
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 283 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
- name: Coverage report
run: |
coverage combine .coverage_1 .coverage_2
coverage report -m > client-coverage-report.txt --omit=src/main/client/scan/bluetooth_scanner.py,src/main/client/scan/blescan.py
coverage report -m > client-coverage-report.txt --omit=src/main/client/scan/blescan.py
coverage xml -i
- uses: codecov/codecov-action@v1.0.3
with:
Expand Down
17 changes: 0 additions & 17 deletions .tern-project

This file was deleted.

96 changes: 0 additions & 96 deletions Jenkinsfile

This file was deleted.

26 changes: 0 additions & 26 deletions src/main/client/old/testblescan.py

This file was deleted.

71 changes: 0 additions & 71 deletions src/main/client/old/trd_course.py

This file was deleted.

33 changes: 7 additions & 26 deletions src/main/client/scan/blescan.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
import os
import sys
import struct
import bluetooth._bluetooth as bluez
if os.getenv('DEMO_MODE', 'false') == 'false':
import bluetooth._bluetooth as bluez

LE_META_EVENT = 0x3e
LE_PUBLIC_ADDRESS = 0x00
Expand Down Expand Up @@ -58,33 +59,12 @@ def returnnumberpacket(pkt):
return myInteger


"""
def returnstringpacket(pkt):
myString = ""
for i in range(len(pkt)):
c = pkt[i:i + 1]
myString += "%02x" % struct.unpack("B", c)[0]
return myString
"""


def printpacket(pkt):
for i in range(len(pkt)):
c = pkt[i:i + 1]
sys.stdout.write("%02x " % struct.unpack("B", c)[0])


"""
def get_packed_bdaddr(bdaddr_string):
packable_addr = []
addr = bdaddr_string.split(':')
addr.reverse()
for b in addr:
packable_addr.append(int(b, 16))
return struct.pack("<BBBBBB", *packable_addr)
"""


def packed_bdaddr_to_string(bdaddr_packed):
return ':'.join('%02x' % i for i in struct.unpack("<BBBBBB", bdaddr_packed[::-1]))

Expand All @@ -93,10 +73,11 @@ def hci_enable_le_scan(sock):
hci_toggle_le_scan(sock, 0x01)


"""
def hci_disable_le_scan(sock):
hci_toggle_le_scan(sock, 0x00)
"""
def connect(dev_id):
sock = bluez.hci_open_dev(dev_id)
hci_le_set_scan_parameters(sock)
hci_enable_le_scan(sock)
return sock


def hci_toggle_le_scan(sock, enable):
Expand Down
20 changes: 12 additions & 8 deletions src/main/client/scan/bluetooth_scanner.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@
#!python3

import bluetooth._bluetooth as bluez
import sys
import os
import logging
import random
import time
from scan.beacon_scan import BeaconScan
from scan.blescan import hci_le_set_scan_parameters, hci_enable_le_scan, parse_events
from scan.blescan import parse_events, connect
from scan.demo_scanner import fake_scan


class BluetoothScanner:
def __init__(self):
self.dev_id = 0
self.failuresCount = 0
self.sock = None
self.demo_mode = (os.getenv('DEMO_MODE', 'false') == 'true')
self.logger = logging.getLogger('BluetoothScanner')
self.bt_logger = logging.getLogger('BT')

def init(self):
try:
self.logger.info("Loading Scanner ...")
self.sock = bluez.hci_open_dev(self.dev_id)
if not self.demo_mode:
self.sock = connect(self.dev_id)
except:
self.logger.error("No bluetooth controller found ...")
sys.exit(1)
hci_le_set_scan_parameters(self.sock)
hci_enable_le_scan(self.sock)
self.logger.info("Scanner loaded")

def scan(self):
try:
current = parse_events(self.sock, 1)
if self.demo_mode:
current = fake_scan()
else:
current = parse_events(self.sock, 1)
except Exception as ex:
self.logger.debug("No bluetooth device found : " + type(ex).__name__)
print(ex)
Expand All @@ -40,4 +44,4 @@ def scan(self):
if isinstance(scanned.major, int) and isinstance(scanned.minor, int) and scanned.minor == scanned.major and scanned.minor > 0:
self.bt_logger.debug('Saw : ' + str(scanned))
return scanned
return None
return None
33 changes: 12 additions & 21 deletions src/main/client/scan/demo_scanner.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,17 @@
import time
from scan.beacon_scan import BeaconScan

LAST_BEACON = 1

class FakeBluetoothScanner:
def __init__(self):
self.logger = logging.getLogger('BluetoothScanner')
self.beacon_nb = 1

def init(self):
self.logger.info("Loading Scanner ...")
self.logger.info("Scanner loaded")

def scan(self):
time.sleep(0.5)
rollDice = random.randint(1, 6)
# 5/6 chances to have a signal from same
if rollDice > 5:
self.beacon_nb = random.randint(1, 10)
tx = str(random.randint(30, 90))
scanned = BeaconScan()
beacon_nb_str = str(self.beacon_nb)
scanned.init("12:34:56:78:9A:DF,uuid," + beacon_nb_str + ',' + beacon_nb_str + ',rssi,-' + tx)
self.logger.debug('Saw : ' + str(scanned))
return scanned
return None
def fake_scan():
global LAST_BEACON
time.sleep(0.5)
rollDice = random.randint(1, 6)
# 5/6 chances to have a signal from same
if rollDice > 5:
LAST_BEACON = random.randint(1, 10)
tx = str(random.randint(30, 90))
beacon_nb_str = str(LAST_BEACON)
scan = "12:34:56:78:9A:DF,uuid," + beacon_nb_str + ',' + beacon_nb_str + ',rssi,-' + tx
return [scan]
15 changes: 0 additions & 15 deletions src/main/client/scan/factory.py

This file was deleted.

Loading

0 comments on commit 97111ec

Please sign in to comment.