Index: tools/telemetry/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py |
diff --git a/tools/telemetry/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py b/tools/telemetry/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..62cda43aa78e5524d799268be06e221383026ad2 |
--- /dev/null |
+++ b/tools/telemetry/third_party/pyserial/serial/urlhandler/protocol_hwgrep.py |
@@ -0,0 +1,45 @@ |
+#! python |
+# |
+# Python Serial Port Extension for Win32, Linux, BSD, Jython |
+# see __init__.py |
+# |
+# This module implements a special URL handler that uses the port listing to |
+# find ports by searching the string descriptions. |
+# |
+# (C) 2011 Chris Liechti <cliechti@gmx.net> |
+# this is distributed under a free software license, see license.txt |
+# |
+# URL format: hwgrep://regexp |
+ |
+import serial |
+import serial.tools.list_ports |
+ |
+class Serial(serial.Serial): |
+ """Just inherit the native Serial port implementation and patch the open function.""" |
+ |
+ def setPort(self, value): |
+ """translate port name before storing it""" |
+ if isinstance(value, basestring) and value.startswith('hwgrep://'): |
+ serial.Serial.setPort(self, self.fromURL(value)) |
+ else: |
+ serial.Serial.setPort(self, value) |
+ |
+ def fromURL(self, url): |
+ """extract host and port from an URL string""" |
+ if url.lower().startswith("hwgrep://"): url = url[9:] |
+ # use a for loop to get the 1st element from the generator |
+ for port, desc, hwid in serial.tools.list_ports.grep(url): |
+ return port |
+ else: |
+ raise serial.SerialException('no ports found matching regexp %r' % (url,)) |
+ |
+ # override property |
+ port = property(serial.Serial.getPort, setPort, doc="Port setting") |
+ |
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+if __name__ == '__main__': |
+ #~ s = Serial('hwgrep://ttyS0') |
+ s = Serial(None) |
+ s.port = 'hwgrep://ttyS0' |
+ print s |
+ |