Source code for pylibftdi.serial_device

"""
pylibftdi - python wrapper for libftdi

Copyright (c) 2010-2014 Ben Bass <benbass@codedstructure.net>
See LICENSE file for details and (absence of) warranty

pylibftdi: http://bitbucket.org/codedstructure/pylibftdi

"""
from pylibftdi.device import Device

from ctypes import c_uint16, byref

CTS_MASK = 1 << 4
DSR_MASK = 1 << 5
RI_MASK = 1 << 6


[docs]class SerialDevice(Device): """ simple subclass to support serial(rs232) lines cts, dsr, ri - input dtr, rts - output Note: These lines are all active-low by default, though this can be changed in the EEPROM settings. pylibftdi does not attempt to hide these settings, and simply writes out the given values (i.e. '1' will typically make an output line 'active' - and therefore low) """ _dtr = None _rts = None @property def dtr(self): """ set (or get the previous set) state of the DTR line :return: the state of the DTR line; None if not previously set """ return self._dtr @dtr.setter def dtr(self, value): value &= 1 if value != self._dtr: self.ftdi_fn.ftdi_setdtr(value) self._dtr = value @property def rts(self): """ set (or get the previous set) state of the DTR line :return: the state of the RTS line; None if not previously set """ return self._rts @rts.setter def rts(self, value): value &= 1 if value != self._rts: self.ftdi_fn.ftdi_setrts(value) self._rts = value def _modem_status(self): status = c_uint16() self.ftdi_fn.ftdi_poll_modem_status(byref(status)) return status.value @property def cts(self): """ get the state of CTS (1 = 'active') """ return int(bool(self._modem_status() & CTS_MASK)) @property def dsr(self): """ get the state of DSR (1 = 'active') """ return int(bool(self._modem_status() & DSR_MASK)) @property def ri(self): """ get the state of RI (1 = 'active') """ return int(bool(self._modem_status() & RI_MASK))