1// +build netbsd openbsd 2 3package term 4 5import ( 6 "syscall" 7 8 "golang.org/x/sys/unix" 9) 10 11type attr unix.Termios 12 13func (a *attr) getSpeed() (int, error) { 14 // We generally only care about ospeed, since that's what would 15 // be used for padding characters, for example. 16 17 switch a.Ospeed { 18 case syscall.B50: 19 return 50, nil 20 case syscall.B75: 21 return 75, nil 22 case syscall.B110: 23 return 110, nil 24 case syscall.B134: 25 return 134, nil 26 case syscall.B150: 27 return 150, nil 28 case syscall.B200: 29 return 200, nil 30 case syscall.B300: 31 return 300, nil 32 case syscall.B600: 33 return 600, nil 34 case syscall.B1200: 35 return 1200, nil 36 case syscall.B1800: 37 return 1800, nil 38 case syscall.B2400: 39 return 2400, nil 40 case syscall.B4800: 41 return 4800, nil 42 case syscall.B9600: 43 return 9600, nil 44 case syscall.B19200: 45 return 19200, nil 46 case syscall.B38400: 47 return 38400, nil 48 case syscall.B57600: 49 return 57600, nil 50 case syscall.B115200: 51 return 115200, nil 52 case syscall.B230400: 53 return 230400, nil 54 default: 55 return 0, syscall.EINVAL 56 } 57} 58 59func (a *attr) setSpeed(baud int) error { 60 var rate int32 61 switch baud { 62 case 50: 63 rate = unix.B50 64 case 75: 65 rate = unix.B75 66 case 110: 67 rate = unix.B110 68 case 134: 69 rate = unix.B134 70 case 150: 71 rate = unix.B150 72 case 200: 73 rate = unix.B200 74 case 300: 75 rate = unix.B300 76 case 600: 77 rate = unix.B600 78 case 1200: 79 rate = unix.B1200 80 case 1800: 81 rate = unix.B1800 82 case 2400: 83 rate = unix.B2400 84 case 4800: 85 rate = unix.B4800 86 case 9600: 87 rate = unix.B9600 88 case 19200: 89 rate = unix.B19200 90 case 38400: 91 rate = unix.B38400 92 case 57600: 93 rate = unix.B57600 94 case 115200: 95 rate = unix.B115200 96 case 230400: 97 rate = unix.B230400 98 default: 99 return unix.EINVAL 100 } 101 (*unix.Termios)(a).Cflag = unix.CS8 | unix.CREAD | unix.CLOCAL | uint32(rate) 102 (*unix.Termios)(a).Ispeed = rate 103 (*unix.Termios)(a).Ospeed = rate 104 return nil 105} 106