| 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))
|
|
|