1#!/bin/sh 2# 3# Copyright (c) 1996 Andrey A. Chernov 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27# $FreeBSD: src/etc/rc.d/serial,v 1.20 2003/05/05 03:26:50 bde Exp $ 28# 29 30# PROVIDE: serial 31# REQUIRE: FILESYSTEMS 32# BEFORE: NETWORKING 33 34. /etc/rc.subr 35dummy_rc_command "$1" 36 37# Change some defaults for serial devices. 38# Standard defaults are: 39# dtrwait 300 drainwait `sysctl -n kern.drainwait` 40# initial cflag from <sys/ttydefaults.h> = cread cs8 hupcl 41# initial iflag, lflag and oflag all 0 42# speed 115200 43# special chars from <sys/ttydefaults.h> 44# nothing locked 45# except for serial consoles the initial iflag, lflag and oflag are from 46# <sys/ttydefaults.h> and clocal is locked on. 47 48default() { 49 # Reset everything changed by the other functions to initial defaults. 50 51 ci=$1; shift # call in device identifier 52 co=$1; shift # call out device identifier 53 drainwait=`${SYSCTL_N} kern.drainwait` 54 55 for i in $* 56 do 57 comcontrol /dev/tty${ci}${i} dtrwait 300 drainwait $drainwait 58 stty < /dev/ttyi${ci}${i} -clocal crtscts hupcl 115200 reprint ^R 59 stty < /dev/ttyl${ci}${i} -clocal -crtscts -hupcl 0 60 stty < /dev/cuai${co}${i} -clocal crtscts hupcl 115200 reprint ^R 61 stty < /dev/cual${co}${i} -clocal -crtscts -hupcl 0 62 done 63} 64 65maybe() { 66 # Special settings. 67 68 ci=$1; shift 69 co=$1; shift 70 71 for i in $* 72 do 73 # Don't use ^R; it breaks bash's ^R when typed ahead. 74 stty < /dev/ttyi${ci}${i} reprint undef 75 stty < /dev/cuai${co}${i} reprint undef 76 # Lock clocal off on dialin device for security. 77 stty < /dev/ttyl${ci}${i} clocal 78 # Lock the speeds to use old binaries that don't support them. 79 # Any legal speed works to lock the initial speed. 80 stty < /dev/ttyl${ci}${i} 300 81 stty < /dev/cual${co}${i} 300 82 done 83} 84 85modem() { 86 # Modem that supports CTS and perhaps RTS handshaking. 87 88 ci=$1; shift 89 co=$1; shift 90 91 for i in $* 92 do 93 # may depend on modem 94 comcontrol /dev/tty${ci}${i} dtrwait 100 drainwait 180 95 # Lock crtscts on. 96 # Speed reasonable for V42bis. 97 stty < /dev/ttyi${ci}${i} crtscts 115200 98 stty < /dev/ttyl${ci}${i} crtscts 99 stty < /dev/cuai${co}${i} crtscts 115200 100 stty < /dev/cual${co}${i} crtscts 101 done 102} 103 104mouse() { 105 # Mouse on either callin or callout port. 106 107 ci=$1; shift 108 co=$1; shift 109 110 for i in $* 111 do 112 # Lock clocal on, hupcl off. 113 # Standard speed for Microsoft mouse. 114 stty < /dev/ttyi${ci}${i} clocal -hupcl 1200 115 stty < /dev/ttyl${ci}${i} clocal hupcl 116 stty < /dev/cuai${co}${i} clocal -hupcl 1200 117 stty < /dev/cual${co}${i} clocal hupcl 118 done 119} 120 121terminal() { 122 # Terminal that supports CTS and perhaps RTS handshaking 123 # with the cable or terminal arranged so that DCD is on 124 # at least while the terminal is on. 125 # Also works for bidirectional communications to another pc 126 # provided at most one side runs getty. 127 # Same as modem() except we want a faster speed and no dtrwait. 128 129 ci=$1; shift 130 co=$1; shift 131 132 modem ${ci} ${co} $* 133 for i in $* 134 do 135 comcontrol /dev/tty${ci}${i} dtrwait 0 136 stty < /dev/ttyi${ci}${i} 115200 137 stty < /dev/cuai${co}${i} 115200 138 done 139} 140 141# Don't use anything from this file unless you have some buggy programs 142# that require it. 143 144# Edit the functions and the examples to suit your system. 145# $1 is the call in device identifier, $2 is the call out device identifier 146# and the remainder of the line lists the device numbers. 147 148# Initialize assorted 8250-16550 (sio) ports. 149# maybe d a 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v 150# mouse d a 2 151# modem d a 1 152# terminal d a 0 153 154# Initialize all ports on a Cyclades-8yo. 155# modem c c 00 01 02 03 04 05 06 07 156 157# Initialize all ports on a Cyclades-16ye. 158# modem c c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 159 160# Initialize all ports on a Digiboard 8. 161# modem D D 00 01 02 03 04 05 06 07 162