Index: tools/telemetry/third_party/pyserial/serial/serialjava.py |
diff --git a/tools/telemetry/third_party/pyserial/serial/serialjava.py b/tools/telemetry/third_party/pyserial/serial/serialjava.py |
deleted file mode 100644 |
index 46a78f84a8a572edb45e4af26864d976abee29d1..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/pyserial/serial/serialjava.py |
+++ /dev/null |
@@ -1,262 +0,0 @@ |
-#!jython |
-# |
-# Python Serial Port Extension for Win32, Linux, BSD, Jython |
-# module for serial IO for Jython and JavaComm |
-# see __init__.py |
-# |
-# (C) 2002-2008 Chris Liechti <cliechti@gmx.net> |
-# this is distributed under a free software license, see license.txt |
- |
-from serial.serialutil import * |
- |
-def my_import(name): |
- mod = __import__(name) |
- components = name.split('.') |
- for comp in components[1:]: |
- mod = getattr(mod, comp) |
- return mod |
- |
- |
-def detect_java_comm(names): |
- """try given list of modules and return that imports""" |
- for name in names: |
- try: |
- mod = my_import(name) |
- mod.SerialPort |
- return mod |
- except (ImportError, AttributeError): |
- pass |
- raise ImportError("No Java Communications API implementation found") |
- |
- |
-# Java Communications API implementations |
-# http://mho.republika.pl/java/comm/ |
- |
-comm = detect_java_comm([ |
- 'javax.comm', # Sun/IBM |
- 'gnu.io', # RXTX |
-]) |
- |
- |
-def device(portnumber): |
- """Turn a port number into a device name""" |
- enum = comm.CommPortIdentifier.getPortIdentifiers() |
- ports = [] |
- while enum.hasMoreElements(): |
- el = enum.nextElement() |
- if el.getPortType() == comm.CommPortIdentifier.PORT_SERIAL: |
- ports.append(el) |
- return ports[portnumber].getName() |
- |
- |
-class JavaSerial(SerialBase): |
- """Serial port class, implemented with Java Communications API and |
- thus usable with jython and the appropriate java extension.""" |
- |
- def open(self): |
- """Open port with current settings. This may throw a SerialException |
- if the port cannot be opened.""" |
- if self._port is None: |
- raise SerialException("Port must be configured before it can be used.") |
- if self._isOpen: |
- raise SerialException("Port is already open.") |
- if type(self._port) == type(''): # strings are taken directly |
- portId = comm.CommPortIdentifier.getPortIdentifier(self._port) |
- else: |
- portId = comm.CommPortIdentifier.getPortIdentifier(device(self._port)) # numbers are transformed to a comport id obj |
- try: |
- self.sPort = portId.open("python serial module", 10) |
- except Exception, msg: |
- self.sPort = None |
- raise SerialException("Could not open port: %s" % msg) |
- self._reconfigurePort() |
- self._instream = self.sPort.getInputStream() |
- self._outstream = self.sPort.getOutputStream() |
- self._isOpen = True |
- |
- def _reconfigurePort(self): |
- """Set communication parameters on opened port.""" |
- if not self.sPort: |
- raise SerialException("Can only operate on a valid port handle") |
- |
- self.sPort.enableReceiveTimeout(30) |
- if self._bytesize == FIVEBITS: |
- jdatabits = comm.SerialPort.DATABITS_5 |
- elif self._bytesize == SIXBITS: |
- jdatabits = comm.SerialPort.DATABITS_6 |
- elif self._bytesize == SEVENBITS: |
- jdatabits = comm.SerialPort.DATABITS_7 |
- elif self._bytesize == EIGHTBITS: |
- jdatabits = comm.SerialPort.DATABITS_8 |
- else: |
- raise ValueError("unsupported bytesize: %r" % self._bytesize) |
- |
- if self._stopbits == STOPBITS_ONE: |
- jstopbits = comm.SerialPort.STOPBITS_1 |
- elif stopbits == STOPBITS_ONE_POINT_FIVE: |
- self._jstopbits = comm.SerialPort.STOPBITS_1_5 |
- elif self._stopbits == STOPBITS_TWO: |
- jstopbits = comm.SerialPort.STOPBITS_2 |
- else: |
- raise ValueError("unsupported number of stopbits: %r" % self._stopbits) |
- |
- if self._parity == PARITY_NONE: |
- jparity = comm.SerialPort.PARITY_NONE |
- elif self._parity == PARITY_EVEN: |
- jparity = comm.SerialPort.PARITY_EVEN |
- elif self._parity == PARITY_ODD: |
- jparity = comm.SerialPort.PARITY_ODD |
- elif self._parity == PARITY_MARK: |
- jparity = comm.SerialPort.PARITY_MARK |
- elif self._parity == PARITY_SPACE: |
- jparity = comm.SerialPort.PARITY_SPACE |
- else: |
- raise ValueError("unsupported parity type: %r" % self._parity) |
- |
- jflowin = jflowout = 0 |
- if self._rtscts: |
- jflowin |= comm.SerialPort.FLOWCONTROL_RTSCTS_IN |
- jflowout |= comm.SerialPort.FLOWCONTROL_RTSCTS_OUT |
- if self._xonxoff: |
- jflowin |= comm.SerialPort.FLOWCONTROL_XONXOFF_IN |
- jflowout |= comm.SerialPort.FLOWCONTROL_XONXOFF_OUT |
- |
- self.sPort.setSerialPortParams(self._baudrate, jdatabits, jstopbits, jparity) |
- self.sPort.setFlowControlMode(jflowin | jflowout) |
- |
- if self._timeout >= 0: |
- self.sPort.enableReceiveTimeout(self._timeout*1000) |
- else: |
- self.sPort.disableReceiveTimeout() |
- |
- def close(self): |
- """Close port""" |
- if self._isOpen: |
- if self.sPort: |
- self._instream.close() |
- self._outstream.close() |
- self.sPort.close() |
- self.sPort = None |
- self._isOpen = False |
- |
- def makeDeviceName(self, port): |
- return device(port) |
- |
- # - - - - - - - - - - - - - - - - - - - - - - - - |
- |
- def inWaiting(self): |
- """Return the number of characters currently in the input buffer.""" |
- if not self.sPort: raise portNotOpenError |
- return self._instream.available() |
- |
- def read(self, size=1): |
- """Read size bytes from the serial port. If a timeout is set it may |
- return less characters as requested. With no timeout it will block |
- until the requested number of bytes is read.""" |
- if not self.sPort: raise portNotOpenError |
- read = bytearray() |
- if size > 0: |
- while len(read) < size: |
- x = self._instream.read() |
- if x == -1: |
- if self.timeout >= 0: |
- break |
- else: |
- read.append(x) |
- return bytes(read) |
- |
- def write(self, data): |
- """Output the given string over the serial port.""" |
- if not self.sPort: raise portNotOpenError |
- if not isinstance(data, (bytes, bytearray)): |
- raise TypeError('expected %s or bytearray, got %s' % (bytes, type(data))) |
- self._outstream.write(data) |
- return len(data) |
- |
- def flushInput(self): |
- """Clear input buffer, discarding all that is in the buffer.""" |
- if not self.sPort: raise portNotOpenError |
- self._instream.skip(self._instream.available()) |
- |
- def flushOutput(self): |
- """Clear output buffer, aborting the current output and |
- discarding all that is in the buffer.""" |
- if not self.sPort: raise portNotOpenError |
- self._outstream.flush() |
- |
- def sendBreak(self, duration=0.25): |
- """Send break condition. Timed, returns to idle state after given duration.""" |
- if not self.sPort: raise portNotOpenError |
- self.sPort.sendBreak(duration*1000.0) |
- |
- def setBreak(self, level=1): |
- """Set break: Controls TXD. When active, to transmitting is possible.""" |
- if self.fd is None: raise portNotOpenError |
- raise SerialException("The setBreak function is not implemented in java.") |
- |
- def setRTS(self, level=1): |
- """Set terminal status line: Request To Send""" |
- if not self.sPort: raise portNotOpenError |
- self.sPort.setRTS(level) |
- |
- def setDTR(self, level=1): |
- """Set terminal status line: Data Terminal Ready""" |
- if not self.sPort: raise portNotOpenError |
- self.sPort.setDTR(level) |
- |
- def getCTS(self): |
- """Read terminal status line: Clear To Send""" |
- if not self.sPort: raise portNotOpenError |
- self.sPort.isCTS() |
- |
- def getDSR(self): |
- """Read terminal status line: Data Set Ready""" |
- if not self.sPort: raise portNotOpenError |
- self.sPort.isDSR() |
- |
- def getRI(self): |
- """Read terminal status line: Ring Indicator""" |
- if not self.sPort: raise portNotOpenError |
- self.sPort.isRI() |
- |
- def getCD(self): |
- """Read terminal status line: Carrier Detect""" |
- if not self.sPort: raise portNotOpenError |
- self.sPort.isCD() |
- |
- |
-# assemble Serial class with the platform specific implementation and the base |
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O |
-# library, derive from io.RawIOBase |
-try: |
- import io |
-except ImportError: |
- # classic version with our own file-like emulation |
- class Serial(JavaSerial, FileLike): |
- pass |
-else: |
- # io library present |
- class Serial(JavaSerial, io.RawIOBase): |
- pass |
- |
- |
-if __name__ == '__main__': |
- s = Serial(0, |
- baudrate=19200, # baudrate |
- bytesize=EIGHTBITS, # number of databits |
- parity=PARITY_EVEN, # enable parity checking |
- stopbits=STOPBITS_ONE, # number of stopbits |
- timeout=3, # set a timeout value, None for waiting forever |
- xonxoff=0, # enable software flow control |
- rtscts=0, # enable RTS/CTS flow control |
- ) |
- s.setRTS(1) |
- s.setDTR(1) |
- s.flushInput() |
- s.flushOutput() |
- s.write('hello') |
- sys.stdio.write('%r\n' % s.read(5)) |
- sys.stdio.write('%s\n' % s.inWaiting()) |
- del s |
- |
- |