diff options
-rw-r--r-- | ParrotZik.py | 52 | ||||
-rwxr-xr-x | ParrotZikTray | 6 | ||||
-rw-r--r-- | bluetooth_paired_devices.py (renamed from BluetoothPairedDevices.py) | 53 | ||||
-rw-r--r-- | resource_manager.py | 3 |
4 files changed, 55 insertions, 59 deletions
diff --git a/ParrotZik.py b/ParrotZik.py index 8e4b31b..52414b5 100644 --- a/ParrotZik.py +++ b/ParrotZik.py @@ -1,58 +1,6 @@ -import sys - -from resource_manager import GenericResourceManager from resource_manager import Version1ResourceManager from resource_manager import Version2ResourceManager -if sys.platform == "darwin": - import lightblue -else: - import bluetooth - - -def connect(addr=None): - uuids = ["0ef0f502-f0ee-46c9-986c-54ed027807fb", - "8B6814D3-6CE7-4498-9700-9312C1711F63"] - - if sys.platform == "darwin": - service_matches = lightblue.findservices( - name="Parrot RFcomm service", addr=addr) - else: - for uuid in uuids: - service_matches = bluetooth.find_service(uuid=uuid, - address=addr) - if service_matches: - break - - if len(service_matches) == 0: - print "Failed to find Parrot Zik RFCOMM service" - return GenericResourceManager(None) - - if sys.platform == "darwin": - first_match = service_matches[0] - port = first_match[1] - name = first_match[2] - host = first_match[0] - else: - first_match = service_matches[0] - port = first_match["port"] - name = first_match["name"] - host = first_match["host"] - - print "Connecting to \"%s\" on %s" % (name, host) - - if sys.platform == "darwin": - sock = lightblue.socket() - else: - sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) - - sock.connect((host, port)) - - sock.send('\x00\x03\x00') - data = sock.recv(1024) - return GenericResourceManager(sock) - - class BatteryStates: CHARGED = 'charged' diff --git a/ParrotZikTray b/ParrotZikTray index 6850a3f..e43ac90 100755 --- a/ParrotZikTray +++ b/ParrotZikTray @@ -3,12 +3,12 @@ import functools import gtk -import BluetoothPairedDevices +import bluetooth_paired_devices from ParrotZik import BatteryStates from ParrotZik import ParrotZikVersion1 from ParrotZik import ParrotZikVersion2 from ParrotZik import NoiseControlTypes -from ParrotZik import connect +from bluetooth_paired_devices import connect from ParrotZik import Rooms from SysIndicator import MenuItem from SysIndicator import Menu @@ -67,7 +67,7 @@ class ParrotZikIndicator(SysIndicator): else: self.reconnect.stop() else: - mac = BluetoothPairedDevices.ParrotZikMac() + mac = bluetooth_paired_devices.get_parrot_zik_mac() if mac: self.info_item.set_label("Connecting") resource_manager = connect(mac) diff --git a/BluetoothPairedDevices.py b/bluetooth_paired_devices.py index aa5b056..139ca3d 100644 --- a/BluetoothPairedDevices.py +++ b/bluetooth_paired_devices.py @@ -2,13 +2,18 @@ import sys import re import os +from resource_manager import GenericResourceManager + if sys.platform == "darwin": from binplist import binplist -elif sys.platform == "win32": - import _winreg + import lightblue +else: + import bluetooth + if sys.platform == "win32": + import _winreg -def ParrotZikMac(): +def get_parrot_zik_mac(): p = re.compile('90:03:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}|' 'A0:14:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}') if sys.platform == "linux2": @@ -43,3 +48,45 @@ def ParrotZikMac(): except EnvironmentError: pass + + +def connect(addr=None): + if sys.platform == "darwin": + service_matches = lightblue.findservices( + name="Parrot RFcomm service", addr=addr) + else: + uuids = ["0ef0f502-f0ee-46c9-986c-54ed027807fb", + "8B6814D3-6CE7-4498-9700-9312C1711F63"] + service_matches = [] + for uuid in uuids: + service_matches = bluetooth.find_service(uuid=uuid, address=addr) + if service_matches: + break + + if len(service_matches) == 0: + print "Failed to find Parrot Zik RFCOMM service" + return GenericResourceManager(None) + + if sys.platform == "darwin": + first_match = service_matches[0] + port = first_match[1] + name = first_match[2] + host = first_match[0] + else: + first_match = service_matches[0] + port = first_match["port"] + name = first_match["name"] + host = first_match["host"] + + print "Connecting to \"%s\" on %s" % (name, host) + + if sys.platform == "darwin": + sock = lightblue.socket() + else: + sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) + + sock.connect((host, port)) + + sock.send('\x00\x03\x00') + sock.recv(1024) + return GenericResourceManager(sock) diff --git a/resource_manager.py b/resource_manager.py index f0703ac..ddd39fb 100644 --- a/resource_manager.py +++ b/resource_manager.py @@ -1,9 +1,11 @@ from operator import itemgetter import sys + from BeautifulSoup import BeautifulSoup from message import Message + class ResourceManagerBase(object): resources = [ ] @@ -137,4 +139,3 @@ class Version2ResourceManager(ResourceManagerBase): '/api/audio/noise_control/enabled': ['get', 'set'], '/api/audio/track/metadata': ['get'], } - |