diff options
author | Лена <lena@Lena-macbook.local> | 2013-12-13 02:46:17 +0600 |
---|---|---|
committer | Лена <lena@Lena-macbook.local> | 2013-12-13 02:46:17 +0600 |
commit | 44dcd4e9a5b717d1791e3ba989f180c67b914aef (patch) | |
tree | e80da0987949194bbd2f8b3df71cd3989b0d397f | |
parent | 4325ee398097af85cd5660e2150472acc26c6ef0 (diff) | |
download | pyParrotZikTCP-44dcd4e9a5b717d1791e3ba989f180c67b914aef.tar.xz pyParrotZikTCP-44dcd4e9a5b717d1791e3ba989f180c67b914aef.zip |
Parrot Zik mac address search moved to separate file; Initial mac os x support
-rw-r--r-- | BluetoothPairedDevices.py | 40 | ||||
-rwxr-xr-x | ParrotZikTray | 27 |
2 files changed, 42 insertions, 25 deletions
diff --git a/BluetoothPairedDevices.py b/BluetoothPairedDevices.py new file mode 100644 index 0000000..d167068 --- /dev/null +++ b/BluetoothPairedDevices.py @@ -0,0 +1,40 @@ +#!/usr/bin/python + +import sys +import re + + +def ParrotZikMac(): + 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}') + if sys.platform == "linux2": + out = os.popen("bluez-test-device list").read() + res = p.findall(out) + if len(res)>0: + return res[0] + + elif sys.platform == "darwin": + fd = open("/Library/Preferences/com.apple.Bluetooth.plist", "rb") + plist = binplist.BinaryPlist(file_obj=fd) + parsed_plist = plist.Parse() + for mac in parsed_plist['PairedDevices']: + if p.match(mac.replace("-",":")): + return mac.replace("-",":") + + elif sys.platform == "win32": + aReg = _winreg.ConnectRegistry(None,_winreg.HKEY_LOCAL_MACHINE) + aKey = _winreg.OpenKey(aReg, 'SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Devices') + for i in range(10): + try: + asubkey_name=_winreg.EnumKey(aKey,i) + mac =':'.join(asubkey_name[i:i+2] for i in range(0,12,2)) + res = self.p.findall(mac) + if len(res)>0: + return res[0] + + except EnvironmentError: + pass + +if sys.platform == "darwin": + from binplist import binplist +elif sys.platform == "win32": + import _winreg
\ No newline at end of file diff --git a/ParrotZikTray b/ParrotZikTray index 571a76e..05285ef 100755 --- a/ParrotZikTray +++ b/ParrotZikTray @@ -5,6 +5,7 @@ import gtk import re import os import ParrotZik +import BluetoothPairedDevices UPDATE_FREQUENCY = 30 # seconds @@ -99,30 +100,6 @@ class ParrotZikIndicator: self.quit_item.show() self.menu.append(self.quit_item) - def ParrotZikMac(self): - if sys.platform == "linux2": - out = os.popen("bluez-test-device list").read() - res = self.p.findall(out) - if len(res)>0: - return res[0] - else: - return '' - else: - import _winreg - aReg = _winreg.ConnectRegistry(None,_winreg.HKEY_LOCAL_MACHINE) - aKey = _winreg.OpenKey(aReg, 'SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Devices') - for i in range(10): - try: - asubkey_name=_winreg.EnumKey(aKey,i) - mac =':'.join(asubkey_name[i:i+2] for i in range(0,12,2)) - res = self.p.findall(mac) - if len(res)>0: - return res[0] - - except EnvironmentError: - break - - def EstablishConnection(self): if self.connected: if not self.parrot.sock: @@ -131,7 +108,7 @@ class ParrotZikIndicator: else: print "Connection already established" else: - mac=self.ParrotZikMac() + mac=BluetoothPairedDevices.ParrotZikMac() if mac: self.parrot = ParrotZik.ParrotZik(mac) if not self.parrot.sock: |