Added support for new RPC objects with multiple pins. Added baud function for serial RPC.

pull/1198/head^2
sarahmarshy 2015-06-18 15:05:33 -05:00
parent 8f33cfd27c
commit cc12836b52
1 changed files with 130 additions and 118 deletions

View File

@ -37,9 +37,9 @@ class mbed:
def rpc(self, name, method, args): def rpc(self, name, method, args):
print("Superclass method not overridden") print("Superclass method not overridden")
# Transport mechanisms, derived from mbed # Transport mechanisms, derived from mbed
class SerialRPC(mbed): class SerialRPC(mbed):
def __init__(self, port, baud): def __init__(self, port, baud):
self.ser = serial.Serial(port) self.ser = serial.Serial(port)
self.ser.setBaudrate(baud) self.ser.setBaudrate(baud)
@ -55,8 +55,8 @@ class SerialRPC(mbed):
ret_val = self.ser.readline().strip() ret_val = self.ser.readline().strip()
return ret_val return ret_val
class HTTPRPC(mbed):
class HTTPRPC(mbed):
def __init__(self, ip): def __init__(self, ip):
self.host = "http://" + ip self.host = "http://" + ip
@ -72,30 +72,37 @@ class mbed_interface():
self.mbed = this_mbed self.mbed = this_mbed
if isinstance(mpin, str): if isinstance(mpin, str):
self.name = mpin self.name = mpin
def __del__(self): def __del__(self):
r = self.mbed.rpc(self.name, "delete", []) r = self.mbed.rpc(self.name, "delete", [])
def new(self, class_name, name, pin1, pin2 = ""):
args = [pin1,pin2,name] if pin2 != "" else [pin1,name]
r = self.mbed.rpc(class_name, "new", args)
# generic read # generic read
def read(self): def read(self):
r = self.mbed.rpc(self.name, "read", []) r = self.mbed.rpc(self.name, "read", [])
return int(r) return int(r)
# for classes that need write functionality - inherits from the generic reading interface # for classes that need write functionality - inherits from the generic reading interface
class mbed_interface_write(mbed_interface): class mbed_interface_write(mbed_interface):
def __init__(self, this_mbed, mpin): def __init__(self, this_mbed, mpin):
mbed_interface.__init__(self, this_mbed, mpin) mbed_interface.__init__(self, this_mbed, mpin)
# generic write # generic write
def write(self, value): def write(self, value):
r = self.mbed.rpc(self.name, "write", [str(value)]) r = self.mbed.rpc(self.name, "write", [str(value)])
# mbed interfaces # mbed interfaces
class DigitalOut(mbed_interface_write): class DigitalOut(mbed_interface_write):
def __init__(self, this_mbed, mpin): def __init__(self, this_mbed, mpin):
mbed_interface_write.__init__(self, this_mbed, mpin) mbed_interface_write.__init__(self, this_mbed, mpin)
class AnalogIn(mbed_interface):
class AnalogIn(mbed_interface):
def __init__(self, this_mbed, mpin): def __init__(self, this_mbed, mpin):
mbed_interface.__init__(self, this_mbed, mpin) mbed_interface.__init__(self, this_mbed, mpin)
@ -103,8 +110,8 @@ class AnalogIn(mbed_interface):
r = self.mbed.rpc(self.name, "read_u16", []) r = self.mbed.rpc(self.name, "read_u16", [])
return int(r) return int(r)
class AnalogOut(mbed_interface_write):
class AnalogOut(mbed_interface_write):
def __init__(self, this_mbed, mpin): def __init__(self, this_mbed, mpin):
mbed_interface_write.__init__(self, this_mbed, mpin) mbed_interface_write.__init__(self, this_mbed, mpin)
@ -115,13 +122,13 @@ class AnalogOut(mbed_interface_write):
r = self.mbed.rpc(self.name, "read", []) r = self.mbed.rpc(self.name, "read", [])
return float(r) return float(r)
class DigitalIn(mbed_interface):
class DigitalIn(mbed_interface):
def __init__(self, this_mbed, mpin): def __init__(self, this_mbed, mpin):
mbed_interface.__init__(self, this_mbed, mpin) mbed_interface.__init__(self, this_mbed, mpin)
class PwmOut(mbed_interface_write):
class PwmOut(mbed_interface_write):
def __init__(self, this_mbed, mpin): def __init__(self, this_mbed, mpin):
mbed_interface_write.__init__(self, this_mbed, mpin) mbed_interface_write.__init__(self, this_mbed, mpin)
@ -147,8 +154,8 @@ class PwmOut(mbed_interface_write):
def pulsewidth_us(self, value): def pulsewidth_us(self, value):
self.mbed.rpc(self.name, "pulsewidth_us", [str(value)]) self.mbed.rpc(self.name, "pulsewidth_us", [str(value)])
class RPCFunction(mbed_interface):
class RPCFunction(mbed_interface):
def __init__(self, this_mbed, name): def __init__(self, this_mbed, name):
mbed_interface.__init__(self, this_mbed, name) mbed_interface.__init__(self, this_mbed, name)
@ -156,24 +163,29 @@ class RPCFunction(mbed_interface):
r = self.mbed.rpc(self.name, "run", [input]) r = self.mbed.rpc(self.name, "run", [input])
return r return r
class RPCVariable(mbed_interface_write):
class RPCVariable(mbed_interface_write):
def __init__(self, this_mbed, name): def __init__(self, this_mbed, name):
mbed_interface_write.__init__(self, this_mbed, name) mbed_interface_write.__init__(self, this_mbed, name)
def read(self): def read(self):
r = self.mbed.rpc(self.name, "read", []) r = self.mbed.rpc(self.name, "read", [])
return r return r
# Serial # Serial
class Serial(): class Serial():
def __init__(self, this_mbed, tx, rx=""): def __init__(self, this_mbed, tx, rx=""):
self.mbed = this_mbed self.mbed = this_mbed
if isinstance(tx, str): if isinstance(tx, str):
self.name = tx self.name = tx
def __del__(self): def __del__(self):
r = self.mbed.rpc(self.name, "delete", []) r = self.mbed.rpc(self.name, "delete", [])
def baud(self, value):
r = self.mbed.rpc(self.name, "baud", [str(value)])
def putc(self, value): def putc(self, value):
r = self.mbed.rpc(self.name, "putc", [str(value)]) r = self.mbed.rpc(self.name, "putc", [str(value)])