From 8c9d567850bcaef24df3ee8a01266bd708f283ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BD=D0=B0?= Date: Fri, 13 Dec 2013 02:50:54 +0600 Subject: Initial support of mac os x --- ParrotZikMac.py | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 ParrotZikMac.py (limited to 'ParrotZikMac.py') diff --git a/ParrotZikMac.py b/ParrotZikMac.py new file mode 100644 index 0000000..a4b536c --- /dev/null +++ b/ParrotZikMac.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python + +import lightblue +import ParrotProtocol +import struct +from BeautifulSoup import BeautifulSoup + +class ParrotZik(object): + def __init__(self,addr=None): + uuid = "0ef0f502-f0ee-46c9-986c-54ed027807fb" + + service_matches = lightblue.findservices( name = "RFCOMM", addr = addr ) + + if len(service_matches) == 0: + print "Couldn't find Parrot Zik" + return + + 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) + + self.sock=lightblue.lightblueSocket( lightblue.RFCOMM ) + self.sock.connect((host, port)) + + self.sock.send('\x00\x03\x00') + data = self.sock.recv(3) + + self.BatteryLevel = 100 + print "Connected" + + def getBatteryState(self): + data = self.sendGetMessage("/api/system/battery/get") + return data.answer.system.battery["state"] + + def getBatteryLevel(self): + data = self.sendGetMessage("/api/system/battery/get") + try: + if data.answer.system.battery["level"] <> '': + self.BatteryLevel = data.answer.system.battery["level"] + except: + pass + + try: + print "notification received" + data.notify["path"] + except: + pass + + return self.BatteryLevel + + def getVersion(self): + data = self.sendGetMessage("/api/software/version/get") + return data.answer.software["version"] + + def getFriendlyName(self): + data = self.sendGetMessage("/api/lightblue/friendlyname/get") + return data.answer.lightblue["friendlyname"] + + def getAutoConnection(self): + data = self.sendGetMessage("/api/system/auto_connection/enabled/get") + return data.answer.system.auto_connection["enabled"] + + def setAutoConnection(self,arg): + data = self.sendSetMessage("/api/system/auto_connection/enabled/set",arg) + return data + + def getAncPhoneMode(self): + data = self.sendGetMessage("/api/system/anc_phone_mode/enabled/get") + return data.answer.system.anc_phone_mode["enabled"] + + def getNoiseCancel(self): + data = self.sendGetMessage("/api/audio/noise_cancellation/enabled/get") + return data.answer.audio.noise_cancellation["enabled"] + + def setNoiseCancel(self,arg): + data = self.sendSetMessage("/api/audio/noise_cancellation/enabled/set",arg) + return data + + def sendGetMessage(self,message): + message = ParrotProtocol.getRequest(message) + return self.sendMessage(message) + + def sendSetMessage(self,message,arg): + message = ParrotProtocol.setRequest(message,arg) + return self.sendMessage(message) + + def sendMessage(self,message): + self.sock.send(str(message)) + data = self.sock.recv(7) + len = struct.unpack('B', data[1])[0] + data = self.sock.recv(1024) + data=BeautifulSoup(data) + return data + + def Close(self): + self.sock.close() -- cgit v1.2.1