mbed-os/workspace_tools/host_tests/host_test.py

93 lines
2.5 KiB
Python

from optparse import OptionParser
from serial import Serial
from time import sleep
from sys import stdout
class Mbed:
"""
Base class for a host driven test
"""
def __init__(self):
parser = OptionParser()
parser.add_option("-m", "--micro", dest="micro",
help="The target microcontroller ", metavar="MICRO")
parser.add_option("-p", "--port", dest="port",
help="The serial port of the target mbed (ie: COM3)", metavar="PORT")
parser.add_option("-d", "--disk", dest="disk",
help="The target disk path", metavar="DISK_PATH")
parser.add_option("-t", "--timeout", dest="timeout",
help="Timeout", metavar="TIMEOUT")
(self.options, _) = parser.parse_args()
if self.options.port is None:
raise Exception("The serial port of the target mbed have to be provided as command line arguments")
self.port = self.options.port
self.disk = self.options.disk
self.serial = None
self.timeout = 10 if self.options.timeout is None else self.options.timeout
print 'Mbed: "%s" "%s"' % (self.port, self.disk)
def init_serial(self, baud=9600):
self.serial = Serial(self.port, timeout = 1)
self.serial.setBaudrate(baud)
self.flush()
def reset(self):
self.serial.sendBreak()
# Give time to wait for the image loading
sleep(2)
def flush(self):
self.serial.flushInput()
self.serial.flushOutput()
class Test:
def __init__(self):
self.mbed = Mbed()
def run(self):
try:
result = self.test()
self.print_result("success" if result else "failure")
except Exception, e:
print str(e)
self.print_result("error")
def notify(self, message):
print message
stdout.flush()
def print_result(self, result):
self.notify("\n{%s}\n{end}" % result)
class DefaultTest(Test):
def __init__(self):
Test.__init__(self)
self.mbed.init_serial()
self.mbed.reset()
class Simple(DefaultTest):
def run(self):
try:
while True:
c = self.mbed.serial.read(512)
stdout.write(c)
stdout.flush()
except KeyboardInterrupt, _:
print "\n[CTRL+c] exit"
if __name__ == '__main__':
Simple().run()