| 42 | */ |
| 43 | |
| 44 | int serialOpen (const char *device, const int baud) |
| 45 | { |
| 46 | struct termios options ; |
| 47 | speed_t myBaud ; |
| 48 | int status, fd ; |
| 49 | |
| 50 | switch (baud) |
| 51 | { |
| 52 | case 50: myBaud = B50 ; break ; |
| 53 | case 75: myBaud = B75 ; break ; |
| 54 | case 110: myBaud = B110 ; break ; |
| 55 | case 134: myBaud = B134 ; break ; |
| 56 | case 150: myBaud = B150 ; break ; |
| 57 | case 200: myBaud = B200 ; break ; |
| 58 | case 300: myBaud = B300 ; break ; |
| 59 | case 600: myBaud = B600 ; break ; |
| 60 | case 1200: myBaud = B1200 ; break ; |
| 61 | case 1800: myBaud = B1800 ; break ; |
| 62 | case 2400: myBaud = B2400 ; break ; |
| 63 | case 4800: myBaud = B4800 ; break ; |
| 64 | case 9600: myBaud = B9600 ; break ; |
| 65 | case 19200: myBaud = B19200 ; break ; |
| 66 | case 38400: myBaud = B38400 ; break ; |
| 67 | case 57600: myBaud = B57600 ; break ; |
| 68 | case 115200: myBaud = B115200 ; break ; |
| 69 | case 230400: myBaud = B230400 ; break ; |
| 70 | case 460800: myBaud = B460800 ; break ; |
| 71 | case 500000: myBaud = B500000 ; break ; |
| 72 | case 576000: myBaud = B576000 ; break ; |
| 73 | case 921600: myBaud = B921600 ; break ; |
| 74 | case 1000000: myBaud = B1000000 ; break ; |
| 75 | case 1152000: myBaud = B1152000 ; break ; |
| 76 | case 1500000: myBaud = B1500000 ; break ; |
| 77 | case 2000000: myBaud = B2000000 ; break ; |
| 78 | case 2500000: myBaud = B2500000 ; break ; |
| 79 | case 3000000: myBaud = B3000000 ; break ; |
| 80 | case 3500000: myBaud = B3500000 ; break ; |
| 81 | case 4000000: myBaud = B4000000 ; break ; |
| 82 | |
| 83 | default: |
| 84 | return -2 ; |
| 85 | } |
| 86 | |
| 87 | if ((fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK)) == -1) |
| 88 | return -1 ; |
| 89 | |
| 90 | fcntl (fd, F_SETFL, O_RDWR) ; |
| 91 | |
| 92 | // Get and modify current options: |
| 93 | |
| 94 | tcgetattr (fd, &options) ; |
| 95 | |
| 96 | cfmakeraw (&options) ; |
| 97 | cfsetispeed (&options, myBaud) ; |
| 98 | cfsetospeed (&options, myBaud) ; |
| 99 | |
| 100 | options.c_cflag |= (CLOCAL | CREAD) ; |
| 101 | options.c_cflag &= ~PARENB ; |
no outgoing calls