def _iobang(self, mask, level): bval, bmask, omask, bmode = self._b if not (mask & omask): ### pin isn't in port mask if level: ### remove from mask, let pullup handle it bmask &= ~mask _d2xx.mode(self._h, bmask, bmode) else: ### add to mask and drag it low bmask |= mask _d2xx.mode(self._h, bmask, bmode) self._b = (bval, bmask, omask, bmode) self.write(chr(bval & ~mask)) return ### pin is already in port mask -- adjust if level: bval |= mask else: bval &= ~mask self.write(chr(bval))
def mode(self, mask, mode): if (mode == _d2xx.FT_MODE_UART) or (not mask): self._b = None else: self._b = (0x00, mask, mask, mode) _d2xx.mode(self._h, mask, mode)