1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#!/usr/bin/env python
import sys
if sys.platform == "darwin":
import lightblue
else:
import bluetooth
import ParrotProtocol
import struct
from BeautifulSoup import BeautifulSoup
class ParrotZik(object):
def __init__(self,addr=None):
uuid = "0ef0f502-f0ee-46c9-986c-54ed027807fb"
if sys.platform == "darwin":
service_matches = lightblue.findservices( name = "RFCOMM", addr = addr )
else:
service_matches = bluetooth.find_service( uuid = uuid, address = addr )
if len(service_matches) == 0:
print "Failed to find Parrot Zik RFCOMM service"
self.sock =""
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)
if sys.platform == "darwin":
self.sock=lightblue.lightblueSocket( lightblue.RFCOMM )
else:
self.sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
self.sock.connect((host, port))
self.sock.send('\x00\x03\x00')
data = self.sock.recv(3)
self.BatteryLevel = 100
self.BatteryCharging = False
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"]
if data.answer.system.battery["state"] == 'charging':
self.BatteryCharging = True
else:
self.BatteryCharging = False
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/bluetooth/friendlyname/get")
return data.answer.bluetooth["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 getLouReedMode(self):
data = self.sendGetMessage("/api/audio/specific_mode/enabled/get")
return data.answer.audio.specific_mode["enabled"]
def setLouReedMode(self,arg):
data = self.sendSetMessage("/api/audio/specific_mode/enabled/set",arg)
return data
def getParrotConcertHall(self):
data = self.sendGetMessage("/api/audio/sound_effect/enabled/get")
return data.answer.audio.sound_effect["enabled"]
def setParrotConcertHall(self,arg):
data = self.sendSetMessage("/api/audio/sound_effect/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):
try:
self.sock.send(str(message))
except:
self.sock =""
return
data = self.sock.recv(7)
data = self.sock.recv(1024)
data=BeautifulSoup(data)
return data
def Close(self):
self.sock.close()
|