Index: tools/telemetry/third_party/pyserial/serial/sermsdos.py |
diff --git a/tools/telemetry/third_party/pyserial/serial/sermsdos.py b/tools/telemetry/third_party/pyserial/serial/sermsdos.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..09a00177b07a6059c8d6749ccbfa85ecb32a59ac |
--- /dev/null |
+++ b/tools/telemetry/third_party/pyserial/serial/sermsdos.py |
@@ -0,0 +1,200 @@ |
+# sermsdos.py |
+# |
+# History: |
+# |
+# 3rd September 2002 Dave Haynes |
+# 1. First defined |
+# |
+# Although this code should run under the latest versions of |
+# Python, on DOS-based platforms such as Windows 95 and 98, |
+# it has been specifically written to be compatible with |
+# PyDOS, available at: |
+# http://www.python.org/ftp/python/wpy/dos.html |
+# |
+# PyDOS is a stripped-down version of Python 1.5.2 for |
+# DOS machines. Therefore, in making changes to this file, |
+# please respect Python 1.5.2 syntax. In addition, please |
+# limit the width of this file to 60 characters. |
+# |
+# Note also that the modules in PyDOS contain fewer members |
+# than other versions, so we are restricted to using the |
+# following: |
+# |
+# In module os: |
+# ------------- |
+# environ, chdir, getcwd, getpid, umask, fdopen, close, |
+# dup, dup2, fstat, lseek, open, read, write, O_RDONLY, |
+# O_WRONLY, O_RDWR, O_APPEND, O_CREAT, O_EXCL, O_TRUNC, |
+# access, F_OK, R_OK, W_OK, X_OK, chmod, listdir, mkdir, |
+# remove, rename, renames, rmdir, stat, unlink, utime, |
+# execl, execle, execlp, execlpe, execvp, execvpe, _exit, |
+# system. |
+# |
+# In module os.path: |
+# ------------------ |
+# curdir, pardir, sep, altsep, pathsep, defpath, linesep. |
+# |
+ |
+import os |
+import sys |
+import string |
+import serial.serialutil |
+ |
+BAUD_RATES = { |
+ 110: "11", |
+ 150: "15", |
+ 300: "30", |
+ 600: "60", |
+ 1200: "12", |
+ 2400: "24", |
+ 4800: "48", |
+ 9600: "96", |
+ 19200: "19"} |
+ |
+(PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, |
+PARITY_SPACE) = (0, 1, 2, 3, 4) |
+(STOPBITS_ONE, STOPBITS_ONEANDAHALF, |
+STOPBITS_TWO) = (1, 1.5, 2) |
+FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS = (5, 6, 7, 8) |
+(RETURN_ERROR, RETURN_BUSY, RETURN_RETRY, RETURN_READY, |
+RETURN_NONE) = ('E', 'B', 'P', 'R', 'N') |
+portNotOpenError = ValueError('port not open') |
+ |
+def device(portnum): |
+ return 'COM%d' % (portnum+1) |
+ |
+class Serial(serialutil.FileLike): |
+ """ |
+ port: number of device; numbering starts at |
+ zero. if everything fails, the user can |
+ specify a device string, note that this |
+ isn't portable any more |
+ baudrate: baud rate |
+ bytesize: number of databits |
+ parity: enable parity checking |
+ stopbits: number of stopbits |
+ timeout: set a timeout (None for waiting forever) |
+ xonxoff: enable software flow control |
+ rtscts: enable RTS/CTS flow control |
+ retry: DOS retry mode |
+ """ |
+ def __init__(self, |
+ port, |
+ baudrate = 9600, |
+ bytesize = EIGHTBITS, |
+ parity = PARITY_NONE, |
+ stopbits = STOPBITS_ONE, |
+ timeout = None, |
+ xonxoff = 0, |
+ rtscts = 0, |
+ retry = RETURN_RETRY |
+ ): |
+ |
+ if type(port) == type(''): |
+ # strings are taken directly |
+ self.portstr = port |
+ else: |
+ # numbers are transformed to a string |
+ self.portstr = device(port+1) |
+ |
+ self.baud = BAUD_RATES[baudrate] |
+ self.bytesize = str(bytesize) |
+ |
+ if parity == PARITY_NONE: |
+ self.parity = 'N' |
+ elif parity == PARITY_EVEN: |
+ self.parity = 'E' |
+ elif parity == PARITY_ODD: |
+ self.parity = 'O' |
+ elif parity == PARITY_MARK: |
+ self.parity = 'M' |
+ elif parity == PARITY_SPACE: |
+ self.parity = 'S' |
+ |
+ self.stop = str(stopbits) |
+ self.retry = retry |
+ self.filename = "sermsdos.tmp" |
+ |
+ self._config(self.portstr, self.baud, self.parity, |
+ self.bytesize, self.stop, self.retry, self.filename) |
+ |
+ def __del__(self): |
+ self.close() |
+ |
+ def close(self): |
+ pass |
+ |
+ def _config(self, port, baud, parity, data, stop, retry, |
+ filename): |
+ comString = string.join(("MODE ", port, ":" |
+ , " BAUD= ", baud, " PARITY= ", parity |
+ , " DATA= ", data, " STOP= ", stop, " RETRY= ", |
+ retry, " > ", filename ), '') |
+ os.system(comString) |
+ |
+ def setBaudrate(self, baudrate): |
+ self._config(self.portstr, BAUD_RATES[baudrate], |
+ self.parity, self.bytesize, self.stop, self.retry, |
+ self.filename) |
+ |
+ def inWaiting(self): |
+ """returns the number of bytes waiting to be read""" |
+ raise NotImplementedError |
+ |
+ def read(self, num = 1): |
+ """Read num bytes from serial port""" |
+ handle = os.open(self.portstr, |
+ os.O_RDONLY | os.O_BINARY) |
+ rv = os.read(handle, num) |
+ os.close(handle) |
+ return rv |
+ |
+ def write(self, s): |
+ """Write string to serial port""" |
+ handle = os.open(self.portstr, |
+ os.O_WRONLY | os.O_BINARY) |
+ rv = os.write(handle, s) |
+ os.close(handle) |
+ return rv |
+ |
+ def flushInput(self): |
+ raise NotImplementedError |
+ |
+ def flushOutput(self): |
+ raise NotImplementedError |
+ |
+ def sendBreak(self): |
+ raise NotImplementedError |
+ |
+ def setRTS(self,level=1): |
+ """Set terminal status line""" |
+ raise NotImplementedError |
+ |
+ def setDTR(self,level=1): |
+ """Set terminal status line""" |
+ raise NotImplementedError |
+ |
+ def getCTS(self): |
+ """Eead terminal status line""" |
+ raise NotImplementedError |
+ |
+ def getDSR(self): |
+ """Eead terminal status line""" |
+ raise NotImplementedError |
+ |
+ def getRI(self): |
+ """Eead terminal status line""" |
+ raise NotImplementedError |
+ |
+ def getCD(self): |
+ """Eead terminal status line""" |
+ raise NotImplementedError |
+ |
+ def __repr__(self): |
+ return string.join(( "<Serial>: ", self.portstr |
+ , self.baud, self.parity, self.bytesize, self.stop, |
+ self.retry , self.filename), ' ') |
+ |
+if __name__ == '__main__': |
+ s = Serial(0) |
+ sys.stdio.write('%s %s\n' % (__name__, s)) |