All pastes #636831 Raw Edit

Cody Brocious

public python v1 · immutable
#636831 ·published 2007-07-28 07:51 UTC
rendered paste body
import fcntl, struct, sys, termios, ttyclass Modem(object):    def __init__(self, speed=115200):        self.speed = None                self.openModem()        self.setSpeed(speed)        def openModem(self):        self.tty = file('/dev/tty.baseband', 'r+b')        def initModem(self):        self.write('at\r')        if self.read() == 'at':            self.read()                        self.write('atv0\r')            self.read()            self.read()                        self.write('atE0\r')            self.read()        def setSpeed(self, speed):        if self.speed != None:            self.write('at+ipr=%i\r' % speed)            self.tty.close()            self.openModem()                tty.setraw(self.tty.fileno(), termios.TCSANOW)                attr = termios.tcgetattr(self.tty.fileno())                attr[0] = (attr[0] & 0xFFFFF0CDL) | 5        attr[1] =  attr[1] & 0xFFFFFFFEL        attr[2] = (attr[2] & 0xFFFC6CFFL) | 0x3CB00        attr[3] =  attr[3] & 0xFFFFFA77L                attr[2] = (attr[3] & ~termios.CSIZE) | termios.CS8        attr[2] &= ~termios.PARENB        attr[3] |= termios.ICANON        attr[3] &= ~termios.ECHO                attr[4] = speed        attr[5] = speed                attr[6][termios.VEOL] = '\r'                termios.tcsetattr(self.tty.fileno(), termios.TCSANOW, attr)        self.handshake()                self.initModem()                self.speed = speed        def handshake(self):        from termios import TIOCM_DTR, TIOCM_RTS, TIOCM_CTS, TIOCM_DSR                handshake = TIOCM_DTR | TIOCM_RTS | TIOCM_CTS | TIOCM_DSR        handshake = struct.pack('I', handshake)                fcntl.ioctl(self.tty.fileno(), termios.TIOCMSET, handshake)        def write(self, data):        print 'write:', data.rstrip('\r')        self.tty.write(data)        def read(self):        buf = self.tty.read()                if buf[0] == '\n':            return self.read()                buf = buf.rstrip('\r')                print 'read:', data                return bufif __name__ == '__main__':    modem = Modem()    if len(sys.argv) > 1:        modem.setSpeed(int(sys.argv[1]))