diff --git a/doc/configuration.rst b/doc/configuration.rst index 4a3ffea66..c982192b5 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -31,6 +31,7 @@ enumeration order. RawSerialPort: port: '/dev/ttyUSB0' speed: 115200 + xonxoff: False The example would access the serial port ``/dev/ttyUSB0`` on the local computer with a baud rate of ``115200``. @@ -38,6 +39,7 @@ with a baud rate of ``115200``. Arguments: - port (str): path to the serial device - speed (int, default=115200): desired baud rate + - xonxoff (bool, default=False): software flow control Used by: - `SerialDriver`_ diff --git a/doc/overview.rst b/doc/overview.rst index 8d69d85f8..77e092c1c 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -137,15 +137,15 @@ specific driver set a binding mapping before creating the driver: >>> >>> t = Target("Test") >>> SerialPort(t, "First") - SerialPort(target=Target(name='Test', env=None), name='First', state=, avail=True, port=None, speed=115200) + SerialPort(target=Target(name='Test', env=None), name='First', state=, avail=True, port=None, speed=115200, xonxoff=False) >>> SerialPort(t, "Second") - SerialPort(target=Target(name='Test', env=None), name='Second', state=, avail=True, port=None, speed=115200) + SerialPort(target=Target(name='Test', env=None), name='Second', state=, avail=True, port=None, speed=115200, xonxoff=False) >>> t.set_binding_map({"port": "Second"}) >>> sd = SerialDriver(t, "Driver") >>> sd SerialDriver(target=Target(name='Test', env=None), name='Driver', state=, txdelay=0.0, timeout=3.0) >>> sd.port - SerialPort(target=Target(name='Test', env=None), name='Second', state=, avail=True, port=None, speed=115200) + SerialPort(target=Target(name='Test', env=None), name='Second', state=, avail=True, port=None, speed=115200, xonxoff=False) Priorities ~~~~~~~~~~ diff --git a/doc/usage.rst b/doc/usage.rst index 9d423d50b..409d0ad62 100644 --- a/doc/usage.rst +++ b/doc/usage.rst @@ -222,7 +222,7 @@ to the resource object created above: .. doctest:: >>> sd.port - RawSerialPort(target=Target(name='example', env=None), name=None, state=, avail=True, port='/dev/ttyUSB0', speed=115200) + RawSerialPort(target=Target(name='example', env=None), name=None, state=, avail=True, port='/dev/ttyUSB0', speed=115200, xonxoff=False) >>> sd.port is rsp True diff --git a/labgrid/driver/serialdriver.py b/labgrid/driver/serialdriver.py index 884522622..536278f34 100644 --- a/labgrid/driver/serialdriver.py +++ b/labgrid/driver/serialdriver.py @@ -39,6 +39,7 @@ def on_activate(self): if isinstance(self.port, SerialPort): self.serial.port = self.port.port self.serial.baudrate = self.port.speed + self.serial.xonxoff = self.port.xonxoff else: host, port = proxymanager.get_host_and_port(self.port) if self.port.protocol == "rfc2217": diff --git a/labgrid/resource/base.py b/labgrid/resource/base.py index d8cdb984c..f4625a08a 100644 --- a/labgrid/resource/base.py +++ b/labgrid/resource/base.py @@ -10,9 +10,11 @@ class SerialPort(Resource): Args: port (str): port to connect to - speed (int): speed of the port, defaults to 115200""" + speed (int): speed of the port, defaults to 115200 + xonxoff (bool): software flow control, defaults to False (=off)""" port = attr.ib(default=None) speed = attr.ib(default=115200, validator=attr.validators.instance_of(int)) + xonxoff = attr.ib(default=False, validator=attr.validators.instance_of(bool)) @target_factory.reg_resource diff --git a/tests/test_serialport.py b/tests/test_serialport.py index 0f315b9ea..78485b573 100644 --- a/tests/test_serialport.py +++ b/tests/test_serialport.py @@ -10,4 +10,5 @@ def test_instanziation_with(self, target): s = RawSerialPort(target, 'serial', 'port', 115200) assert (s.port == 'port') assert (s.speed == 115200) + assert (s.xonxoff == False) assert s in target.resources