#!xchat
# @(#) Hangup.Hayes V1.1 Tue Sep  1 14:04:25 1992 (Bob Denny)
#
# xchat script for hanging up a Hayes-type modem. When used with Taylor
# UUCP, this script should be run as the dialer-complete and dialer-abort
# script with xchat.
#
# Usage:
#	xchat Hangup.Hayes [ x ]
#
# where 'x' is any string. If it is present, this script will log the
# modem reset as an ABORT reset, otherwise it will not log anything.
#
# Uncomment the lines starting with '###' to get debugging log.
#
start:
###	dbgfile			Hangup.Log
###	dbgset			15
	zero
	sleep	2000			# Wait for trailing garbage
	flush				# Toss it out
	ifnstr	wakemodem	0	# No abort indicator
	log	Hangup on abort
#
# Get modem's attention via Hayes 'escape' protocol.
#
wakemodem:
	sleep	4000
	send	+++
	sleep	4000
	send	\r
	timeout	reset		2000
	expect	reset		OK
#
# We're (probably) in command mode. Use ATZ (reset) to hang up
# as some modems don't behave well with ATH0 command.
#
reset:
	send	ATZ\r
	timeout	silent		5000
	expect	done		OK
#
# Finished, modem is back in initial state.
#
done:
	success
#
# No response to escape protocol. Log the error and force DTR low
# in an attempt to get control of the modem. Then send ATZ just to
# make sure.
#
silent:
	logerr	Hangup: no response from modem
	hangup				# Force DTR low as last gasp
	send	ATZ\r
	sleep	5000
	failed
