3 Copyright (c) 2010-2013 ARM Limited
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
9 http://www.apache.org/licenses/LICENSE-2.0
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
19 > from mbedRPC import*
20 > mbed = SerialRPC("COM5",9600);
21 > myled = DigitalOut(mbed, LED1);
25 import serial, urllib2, time
29 def __init__(self, id):
68 print("This will work as a demo but no transport mechanism has been selected")
70 def rpc(self, name, method, args):
71 print("Superclass method not overridden")
73 #Transport mechanisms, derived from mbed
75 class SerialRPC(mbed):
76 def __init__(self, port, baud=9600, reset=True, debug=False):
77 self.ser = serial.Serial(port)
78 self.ser.setBaudrate(baud)
80 self.ser.flushOutput()
88 def rpc(self, name, method, args):
89 request = "/" + name + "/" + method + " " + " ".join(args)
91 print "[RPC::TX] %s" % request
92 self.ser.write(request + "\n")
95 response = self.ser.readline().strip()
97 print "[RPC::RX] %s" % response
100 if not response.startswith('#'): break
105 def __init__(self, ip):
106 self.host = "http://" + ip
108 def rpc(self, name, method, args):
109 response = urllib2.urlopen(self.host + "/rpc/" + name + "/" + method + "," + ",".join(args))
110 return response.read().strip()
116 def __init__(self, this_mbed , mpin):
117 self.mbed = this_mbed
118 if isinstance(mpin, str):
120 elif isinstance(mpin, pin):
121 self.name = self.mbed.rpc("DigitalOut", "new", [mpin.name])
124 r = self.mbed.rpc(self.name, "delete", [])
126 def write(self, value):
127 r = self.mbed.rpc(self.name, "write", [str(value)])
130 r = self.mbed.rpc(self.name, "read", [])
135 def __init__(self, this_mbed , mpin):
136 self.mbed = this_mbed
137 if isinstance(mpin, str):
139 elif isinstance(mpin, pin):
140 self.name = self.mbed.rpc("AnalogIn", "new", [mpin.name])
143 r = self.mbed.rpc(self.name, "delete", [])
146 r = self.mbed.rpc(self.name, "read", [])
150 r = self.mbed.rpc(self.name, "read_u16", [])
155 def __init__(self, this_mbed , mpin):
156 self.mbed = this_mbed
157 if isinstance(mpin, str):
159 elif isinstance(mpin, pin):
160 self.name = self.mbed.rpc("AnalogOut", "new", [mpin.name])
163 r = self.mbed.rpc(self.name, "delete", [])
165 def write(self, value):
166 r = self.mbed.rpc(self.name, "write", [str(value)])
168 def write_u16(self, value):
169 r = self.mbed.rpc(self.name, "write_u16", [str(value)])
172 r = self.mbed.rpc(self.name, "read", [])
177 def __init__(self, this_mbed , mpin):
178 self.mbed = this_mbed
179 if isinstance(mpin, str):
181 elif isinstance(mpin, pin):
182 self.name = self.mbed.rpc("DigitalIn", "new", [mpin.name])
185 r = self.mbed.rpc(self.name, "delete", [])
188 r = self.mbed.rpc(self.name, "read", [])
193 def __init__(self, this_mbed , mpin):
194 self.mbed = this_mbed
195 if isinstance(mpin, str):
197 elif isinstance(mpin, pin):
198 self.name = self.mbed.rpc("PwmOut", "new", [mpin.name])
201 r = self.mbed.rpc(self.name, "delete", [])
203 def write(self, value):
204 r = self.mbed.rpc(self.name, "write", [str(value)])
207 r = self.mbed.rpc(self.name, "read", [])
210 def period(self, value):
211 r = self.mbed.rpc(self.name, "period", [str(value)])
213 def period_ms(self, value):
214 r = self.mbed.rpc(self.name, "period_ms", [str(value)])
216 def period_us(self, value):
217 r = self.mbed.rpc(self.name, "period_us", [str(value)])
219 def puslewidth(self, value):
220 r = self.mbed.rpc(self.name, "pulsewidth", [str(value)])
222 def puslewidth_ms(self, value):
223 r = self.mbed.rpc(self.name, "pulsewidth_ms", [str(value)])
225 def puslewidth_us(self, value):
226 r = self.mbed.rpc(self.name, "pulsewidth_us", [str(value)])
230 def __init__(self, this_mbed , tx, rx = ""):
231 self.mbed = this_mbed
232 if isinstance(tx, str):
234 elif isinstance(mpin, pin):
235 self.name = self.mbed.rpc("Serial", "new", [tx.name, rx.name])
238 r = self.mbed.rpc(self.name, "delete", [])
240 def putc(self, value):
241 r = self.mbed.rpc(self.name, "putc", [str(value)])
243 def puts(self, value):
244 r = self.mbed.rpc(self.name, "puts", [ "\"" + str(value) + "\""])
247 r = self.mbed.rpc(self.name, "getc", [])
252 def __init__(self, this_mbed , name):
253 self.mbed = this_mbed
254 if isinstance(name, str):
258 r = self.mbed.rpc(self.name, "delete", [])
261 r = self.mbed.rpc(self.name, "read", [])
264 def run(self, input):
265 r = self.mbed.rpc(self.name, "run", [input])
270 def __init__(self, this_mbed , name):
271 self.mbed = this_mbed
272 if isinstance(name, str):
276 r = self.mbed.rpc(self.name, "delete", [])
278 def write(self, value):
279 self.mbed.rpc(self.name, "write", [str(value)])
282 r = self.mbed.rpc(self.name, "read", [])