libRDI.expect
author A.M. Thurnherr <ant@ldeo.columbia.edu>
Fri, 07 Jan 2011 23:12:57 +0000
changeset 8 45809527a522
parent 7 0373c17d8b57
child 12 5e67754f6457
permissions -rwxr-xr-x
updated History in libRDI.expect
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     1
#!/usr/bin/expect -f
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     2
#======================================================================
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     3
#                    L I B R D I . E X P E C T 
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     4
#                    doc: Mon Mar  8 02:57:35 2004
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
     5
#                    dlm: Wed Dec 29 16:00:39 2010
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     6
#                    (c) 2004 A.M. Thurnherr
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
     7
#                    uE-Info: 255 0 NIL 0 0 72 2 2 8 NIL ofnI
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     8
#======================================================================
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     9
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    10
# HISTORY:
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    11
# Mar  8, 2004: - incepted (NBP0402)
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    12
# Mar 15, 2004: - released
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    13
# Mar 18, 2004: - improved download-error handling
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    14
# 		- BUG: set correct color in toggle_instrument
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    15
# 		- new reset_two_instruments
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    16
# Mar 20, 2004: - increased instrument-toggle timeout to 2s
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    17
# 		- cleaned-up get_deployment_name
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    18
#		- added save_hardware_config to upload_file (just before CS)
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    19
#		- renamed continue_logging to resume_logging
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    20
# Mar 21, 2004: - debugged user-interaction routines
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    21
# 		- generally increased timeouts
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    22
# Apr  4, 2004: - added comments
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    23
# Jun 15, 2004: - changed \n to \r for BB150 (CLIVAR P02)
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    24
#		- started adaptation to BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    25
# Jun 18, 2004: - BUG: could not handle station 008 (illegal octal digit)
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    26
# Jun 27, 2004: - doubled wait_for_startup timeouts
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    27
# Sep 28, 2006: - added sleep 1 to wait_for_startup (marked AMARYLIS)
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    28
# Oct 30, 2006: - improved error messages
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    29
# Nov  6, 2006: - added ensure_sleep
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    30
#		- BUG: input_int had interpreted 010 as octal
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    31
# Nov 15, 2006: - added next_speed
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    32
# Nov 17, 2006: - added get_serial_number
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    33
# 		- added save_parameters
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    34
# Oct 22, 2007: - removed erroneous line of code (that did nothing)
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    35
# 		- changed expect target in next_speed()
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    36
# Oct 23, 2007: - cosmetics
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    37
# Nov 19, 2008: - added load_factory_defaults()
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    38
#		- added print_version()
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    39
# Oct 12, 2009: - BUG: load_factory_defaults errmesg used non-existent variable
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    40
# Nov 19, 2009: - get_deployment_name needed a delay (sleep 1) for the
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    41
#		  instruments sent to the DIMES cruise
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    42
# Aug 25, 2010: - libBB.expect -> libRDI.expect
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
    43
# Dec  1, 2010: - replaced ! by * in upload_file
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
    44
# Dec  9, 2010: - increased timeout to 10s in load_factory_defaults
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
    45
# Dec 10, 2010: - changed version to 1.5
8
45809527a522 updated History in libRDI.expect
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 7
diff changeset
    46
# Dec 29, 2010: - implemented work-around to always wake up slave first
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    47
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    48
# NOTE: after having written this, I am not much of a fan of TCL and and
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    49
#	expect(1) syntax any more...
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    50
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    51
# PS0 ON BB150 NOTE:
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    52
#	I AM NOT SURE ABOUT THE FOLLOWING ANY MORE. THE CURRENT CODE
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    53
#	MAY THEREFORE NOT RUN WITH BB150s!!!
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    54
#  PS0 does not produce any output on the BB150 unless the factory 
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    55
#  defaults are in effect. (I have not checked exactly which user defaults
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    56
#  cause this behaviour.) Therefore, every time before PS0 is sent
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    57
#  to the instrument, the current values are stored, the factory
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    58
#  defaults restored, PS0 is sent, and then the user values
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    59
#  are restored. For safety, I removed PS0 from save_hardware_config
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    60
#  code for the BB150; because it would be really bad if the factory
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    61
#  defaults would be restored immediately before pinging starts...
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    62
#  The behaviour was detected on CPU firmware 5.52.
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    63
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    64
set NEXT_SPEED	\002;	# ^B				# bbabble commands
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    65
set BREAK 	\003;	# ^C
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    66
set HELP	\010;	# ^H
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    67
set TOGGLE	\024;	# ^T
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    68
set DNLOAD	\030;	# ^X
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    69
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
    70
set cid -1;						# current instrument (master or slave)
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    71
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    72
proc print_version {} {
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
    73
	send_user "acquire V1.5\n"
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    74
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    75
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    76
proc set_color {{cid -1}} {				# set instrument color
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    77
	if {$cid == 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    78
		send_user [exec tput setaf 1];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    79
	} elseif {$cid == 1} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    80
		send_user [exec tput setaf 4];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    81
	} else {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    82
		send_user [exec tput setaf 0];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    83
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    84
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    85
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    86
proc error {msg} {					# print error & exit
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    87
	global cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    88
	set_color $cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    89
	send_error "\nError: $msg\n";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    90
	set_color;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    91
	exit 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    92
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    93
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    94
proc gobble_prompts {} {				# gobble old prompts
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    95
	set continue_flushing 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    96
	while {$continue_flushing > 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    97
		expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    98
			timeout {set continue_flushing 0;}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    99
			-timeout 0 ">";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   100
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   101
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   102
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   103
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   104
proc BREAK {} {						# send BREAK
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   105
	global BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   106
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   107
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   108
	send $BREAK;					# Wakeup Instrument
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   109
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   110
		timeout {error "Can't wake Instrument"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   111
		-timeout 8 "RD Instruments (c)"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   112
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   113
	expect {					# gobble prompt as well
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   114
		timeout {error "Can't get wakeup prompt"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   115
		-timeout 3 ">"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   116
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   117
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   118
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   119
proc no_error_BREAK {} {				# send BREAK without errcheck
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   120
	global BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   121
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   122
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   123
	send $BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   124
	expect -timeout 8 "RD Instruments (c)"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   125
	expect -timeout 3 ">"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   126
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   127
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   128
proc next_speed {} {					# select next baudrate
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   129
	global NEXT_SPEED;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   130
	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   131
	send $NEXT_SPEED;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   132
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   133
		timeout {error "Cannot change speed"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   134
		-timeout 5 ": end"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   135
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   136
	sleep 1
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   137
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   138
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   139
proc toggle_instrument {} {				# select other instrument
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   140
	global cid TOGGLE;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   141
	send $TOGGLE;					# switch
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   142
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   143
		timeout {error "Can't switch instruments"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   144
		-timeout 3 "Instrument"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   145
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   146
	if {$cid == 0} {set cid 1} else {set cid 0}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   147
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   148
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   149
proc select_master {{toggle_first 1}} {			# select master & check S/N
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   150
	global cid master_sn slave_sn;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   151
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   152
	if {$toggle_first} toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   153
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   154
	send "\r"; wait_for_prompt;			# save current value
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   155
	send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   156
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   157
		timeout {error "Can't determine serial number"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   158
		-timeout 8 -re "Instrument S/N:  $master_sn.*>|Xducer Ser #:  $master_sn.*>|PS0...>" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   159
		-timeout 8 -re "Instrument S/N:  $slave_sn.*>" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   160
			toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   161
			send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   162
			expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   163
				timeout {error "Can't determine serial number"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   164
				-timeout 8 -re "Instrument S/N:  $master_sn.*>|Xducer Ser #:  $master_sn.*>|PS0...>" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   165
				-timeout 8 -re "Instrument S/N:  $slave_sn.*>" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   166
					error "Can't switch to master"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   167
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   168
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   169
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   170
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   171
	set cid 0;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   172
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   173
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   174
proc select_slave {{toggle_first 1}} {			# select slave & check S/N
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   175
	global cid master_sn slave_sn;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   176
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   177
	if {$toggle_first} toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   178
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   179
	send "\r"; wait_for_prompt;			# save current value
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   180
	send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   181
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   182
		timeout {error "Can't determine master/slave"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   183
		-timeout 8 -re "Instrument S/N:  $slave_sn.*>" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   184
		-timeout 8 -re "Instrument S/N:  $master_sn.*>|Xducer Ser #:  $master_sn.*>|PS0...>" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   185
			toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   186
			send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   187
			expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   188
				timeout {error "Can't determine master/slave"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   189
				-timeout 8 -re "Instrument S/N:  $slave_sn.*>" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   190
				-timeout 8 -re "Instrument S/N:  $master_sn.*>|Xducer Ser #:  $master_sn.*>|PS0...>" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   191
					error "Can't switch to slave"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   192
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   193
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   194
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   195
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   196
	set cid 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   197
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   198
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   199
proc wait_for_startup {} {			# wait for bbabble startup
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   200
	global cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   201
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   202
		timeout {error "bbabble failed to start up"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   203
		-timeout 10 "device" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   204
			error "No such device: cables plugged in???"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   205
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   206
		-timeout 10 "Instrument 0" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   207
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   208
	set cid 0;
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   209
	sleep 1;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   210
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   211
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   212
proc reset_instrument {} {			# reset regardless of state
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   213
	no_error_BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   214
	send "\r";				# send NOP command
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   215
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   216
		timeout {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   217
			send_error ".";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   218
			BREAK;			# try again
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   219
		}
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   220
		-timeout 5 ">";			# instrument response received
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   221
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   222
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   223
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   224
# In 2010 on the DIMES UK2 cruise, it was found that the instruments did
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   225
# not communicate correctly, unless the slave was woken up first. On previous
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   226
# cruises it had also been found that the order in which the instruments are
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   227
# woken up can matter, although it had not been recorded which of the instruments
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   228
# has to be woken first. An early workaround consisted in having a commented-out
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   229
# toggle_instrument statement at the beginning of reset_two_instruments. In case
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   230
# the communication did not work, that statement could simply be uncommented.
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   231
# Another workaround would be to switch the serial ports the master/slave
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   232
# ADCPs were connected to. Neither workaround is satisfacory, of course. Therefore
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   233
# I decided to modify the routine reset_two_instruments to wake up an instrument,
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   234
# determine whether it is the slave and, if not, send it back to sleep, toggle,
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   235
# and wake up the other one. I am hoping that this is solves the problems once
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   236
# and for all. If not, the code between the ### WORKAROUND markers should be
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   237
# removed because it slows down comms with the ADCPs even more. In case of
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   238
# wakeup/comms problems, the serial lines should then be switched.
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   239
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   240
proc reset_two_instruments {} {			# reset regardless of state
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   241
	global cid master_sn slave_sn;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   242
	set ok 0;
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   243
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   244
	while {$ok < 2} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   245
		no_error_BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   246
		send "\r"; expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   247
			timeout {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   248
				set ok 0;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   249
				send_error "!";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   250
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   251
			-timeout 5 ">" {incr ok}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   252
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   253
		toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   254
	}
7
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   255
### WORKAROUND BEGIN
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   256
	send "PS0\r";
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   257
	expect {
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   258
		timeout {error "Can't determine serial number"}
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   259
		-timeout 8 -re "Instrument S/N:  $master_sn.*>|Xducer Ser #:  $master_sn.*>|PS0...>" {
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   260
			put_to_sleep;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   261
			toggle_instrument;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   262
			put_to_sleep;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   263
			reset_two_instruments;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   264
			toggle_instrument;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   265
		}
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   266
		-timeout 8 -re "Instrument S/N:  $slave_sn.*>" {
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   267
			toggle_instrument;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   268
                }
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   269
		send "PS0\r";
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   270
		expect {
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   271
			timeout {error "Can't determine serial number"}
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   272
			-timeout 8 -re "Instrument S/N:  $master_sn.*>|Xducer Ser #:  $master_sn.*>|PS0...>" {}
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   273
			-timeout 8 -re "Instrument S/N:  $slave_sn.*>" {
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   274
				error "Can't switch to master"
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   275
			}
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   276
		}
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   277
       }
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   278
	set cid 0;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   279
### WORKAROUND ELSE
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   280
#	select_master;
0373c17d8b57 modified libRDI.expect to reliably wake up both instruments by making sure slave is woken up first
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 5
diff changeset
   281
### WORKAROUND END
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   282
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   283
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   284
proc wait_for_prompt {{tout 5}} {		# wait for prompt
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   285
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   286
		timeout {error "Can't get prompt"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   287
		-timeout $tout "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   288
			error "Instrument returned error $expect_out(buffer)";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   289
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   290
		-timeout $tout ">"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   291
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   292
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   293
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   294
proc put_to_sleep {} {				# send instrument to sleep
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   295
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   296
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   297
	send "CZ\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   298
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   299
		timeout {error "Can't put Instrument to sleep"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   300
		-timeout 5 -re "Powering Down|POWERING DOWN"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   301
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   302
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   303
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   304
proc save_parameters {} {			# save parameters
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   305
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   306
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   307
	send "CK\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   308
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   309
		timeout {error "Can't put Instrument to sleep"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   310
		-timeout 5 -re "USER defaults"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   311
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   312
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   313
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   314
proc ensure_sleep {} {				# send instrument to sleep...
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   315
	gobble_prompts;				# unless already sleeping
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   316
	send "CZ\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   317
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   318
		timeout {error "Can't put Instrument to sleep"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   319
		-timeout 5 -re "Powering Down|POWERING DOWN"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   320
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   321
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   322
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   323
proc start_download {} {			# start downloading
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   324
	global DNLOAD;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   325
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   326
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   327
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   328
	send $DNLOAD;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   329
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   330
		timeout {error "Can't start download (memory empty?)"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   331
		-timeout 10 "Receiving:"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   332
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   333
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   334
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   335
proc wait_for_download_finish {stn tout} {	# wait for timeout to finish
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   336
	global BREAK TOGGLE;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   337
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   338
		timeout {error "Download did not finish ok"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   339
		-timeout $tout "Transfer complete" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   340
		-timeout $tout "ABNORMALLY" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   341
			send $BREAK; send $TOGGLE; send $BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   342
			error "Download did not finish ok";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   343
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   344
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   345
	expect -timeout 5 ">";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   346
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   347
	global cid master_download_filename slave_download_filename;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   348
	global master_deployment_name_fmt slave_deployment_name_fmt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   349
	if {$cid == 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   350
		rename_master_download_file [format $master_deployment_name_fmt $stn]000.000;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   351
	} else {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   352
		rename_slave_download_file [format $slave_deployment_name_fmt $stn]000.000;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   353
        }
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   354
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   355
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   356
proc list_dir {} {				# list directory
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   357
	global cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   358
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   359
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   360
	send "RR\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   361
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   362
		-timeout 1 "ERR" {		# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   363
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   364
			send "RS\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   365
			log_user 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   366
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   367
		-timeout 5 "Recorder Directory:";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   368
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   369
	set_color $cid; log_user 1; 
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   370
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   371
	log_user 0; set_color;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   372
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   373
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   374
proc erase_memory {} {				# erase memory
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   375
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   376
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   377
	send "RE ErAsE\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   378
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   379
		timeout {error "Can't erase recorder"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   380
		-timeout 5 "Erasing..." {	# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   381
			sleep 3;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   382
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   383
			return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   384
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   385
		-timeout 5 "Recorder erased."	# Workhorse
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   386
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   387
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   388
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   389
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   390
proc save_hardware_config {filename} {		# NB: logging continues in ...
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   391
	gobble_prompts;				# ... file given as parameter
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   392
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   393
	send "TT?\r";				# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   394
	expect -timeout 1 "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   395
		wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   396
		set time [exec date +%y/%m/%d,%H:%M:%S];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   397
		set pipe [open "| tr -d \\\r \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   398
				| sed -e s@Time\\ Set.*@LOGGING\\ COMPUTER:\\ $time@ \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   399
				      -e /^>/d \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   400
				> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   401
		log_file; log_file -a -open $pipe;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   402
		send "T?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   403
		send "RA?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   404
		send "RS?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   405
		send "W?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   406
		send "B?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   407
		send "E?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   408
		send "CG?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   409
		send "CL?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   410
		send "CP?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   411
		send "CQ?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   412
		send "CT?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   413
		send "CX?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   414
		send "PS3\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   415
		return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   416
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   417
	set time [exec date +%Y/%m/%d,%H:%M:%S];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   418
	set pipe [open "| tr -d \\\r \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   419
			| sed -e s/^Press\\ any\\ key\\ to\\ continue\\ *// \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   420
			      -e s@Time\\ Set.*@LOGGING\\ COMPUTER:\\ $time@ \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   421
			> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   422
	log_file;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   423
	log_file -a -open $pipe;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   424
	send "TT?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   425
	send "RF\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   426
	send "RR\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   427
	send "PS0\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   428
	send "PS3\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   429
	send "AC\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   430
	send "RN?\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   431
	send "DEPLOY?\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   432
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   433
		timeout {error "Can't get DEPLOY? output"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   434
		-timeout 10 "Press any key to continue"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   435
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   436
	send " "; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   437
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   438
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   439
proc start_logging {{filename "bbabble.log"}} {	# write UNIX conformant log file
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   440
	set pipe [open "| tr -d \\\r \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   441
			> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   442
	log_file -a -open $pipe;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   443
}	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   444
	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   445
proc resume_logging {{filename "bbabble.log"}} {# append to UNIX conf. log file
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   446
	set pipe [open "| tr -d \\\r \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   447
			>> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   448
	log_file;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   449
	log_file -a -open $pipe;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   450
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   451
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   452
proc memory_empty {} {				# check whether memory is empty
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   453
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   454
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   455
	send "RA\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   456
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   457
		timeout {error "Can't get number of deployments"};
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   458
		-timeout 3 -re {[1-9]} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   459
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   460
			return 0;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   461
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   462
		-timeout 3 ">" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   463
			return 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   464
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   465
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   466
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   467
			
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   468
proc set_instrument_clock {} {			# set instrument clock
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   469
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   470
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   471
	send "TT?\r";				# check for BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   472
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   473
		-timeout 1 "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   474
			gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   475
			set time [exec date +%y/%m/%d,%H:%M:%S];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   476
			send "TS$time\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   477
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   478
			return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   479
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   480
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   481
	set time [exec date +%Y/%m/%d,%H:%M:%S];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   482
	send "TT$time\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   483
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   484
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   485
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   486
proc upload_file {cfn lfn hwfn} {		# upload command file
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   487
	gobble_prompts;				# logging stops in this routine
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   488
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   489
	set cf [open $cfn "r"];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   490
	set lf [open $lfn "w"];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   491
	while {[gets $cf line] >= 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   492
		regsub {[ 	]*;.*} $line {} line;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   493
		if {![regexp {^[ 	]*$} $line]} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   494
			puts -nonewline $lf "$line ... ";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   495
			if {$line == "CS" || $line == "cs"} {
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
   496
				send_error "*";
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   497
				save_hardware_config $hwfn;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   498
				send "$line\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   499
				expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   500
					timeout {};
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   501
					-timeout 3 expect ">" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   502
						error "Got prompt after CS command";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   503
					}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   504
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   505
				puts $lf "INSTRUMENT PINGING";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   506
				close $cf; close $lf;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   507
				log_file;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   508
				return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   509
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   510
			send "$line\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   511
			send_error ".";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   512
			expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   513
				timeout {error "Can't get prompt after sending $line"};
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   514
				-timeout 5 "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   515
					error "Sending command $line returned $expect_out(buffer)";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   516
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   517
				-timeout 5 ">" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   518
					puts $lf "OK";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   519
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   520
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   521
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   522
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   523
	close $cf; close $lf;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   524
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   525
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   526
proc load_factory_defaults {} {				# set default params
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   527
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   528
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   529
	send "CR1\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   530
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   531
		timeout {error "Can't get prompt"};
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
   532
		-timeout 10 "ERR" {
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   533
			error "command CR1 returned $expect_out(buffer)";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   534
		}
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
   535
		-timeout 10 ">"
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   536
        }
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   537
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   538
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   539
proc set_deployment_name {{dn UNSET}} {			# set deployment name
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   540
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   541
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   542
	send "RN$dn\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   543
	expect -timeout 1 "ERR";			# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   544
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   545
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   546
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   547
proc get_deployment_name {} {				# get deployment name
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   548
	global stn_format master_deployment_name_fmt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   549
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   550
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   551
	send "RN?\r"; sleep 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   552
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   553
		timeout {error "Can't get deployment name";}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   554
		-timeout 1 "ERR" {			# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   555
			if {![file isfile .last_stn]} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   556
				error "Can't find .last_stn";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   557
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   558
			set stn [exec cat .last_stn];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   559
			set dn [format $master_deployment_name_fmt $stn];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   560
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   561
			return $dn;			
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   562
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   563
		-timeout 5 -re {Current deployment name = ([^\r]*)}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   564
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   565
	set dn $expect_out(1,string);
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   566
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   567
	return $dn;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   568
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   569
	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   570
proc get_serial_number {} {				# get serial number
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   571
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   572
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   573
	send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   574
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   575
		timeout {error "Can't get serial number";}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   576
		-timeout 5 -re {Instrument S/N: *([0-9]*)}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   577
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   578
	set sn $expect_out(1,string);
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   579
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   580
	return $sn;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   581
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   582
	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   583
#======================================================================
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   584
# User-Interation Routines
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   585
#======================================================================
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   586
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   587
proc affirm {prompt {to -1} {timeout_return 0}} {	# yes/no question with timeout
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   588
	send_user $prompt;				# and default answer
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   589
	while {1} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   590
		expect_user {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   591
			timeout {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   592
				if {$timeout_return == 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   593
					send_user "N\n";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   594
				} else {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   595
					send_user "Y\n";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   596
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   597
				return $timeout_return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   598
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   599
			-timeout $to -re "^y.*|^Y.*" 	{return 1;}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   600
			-timeout $to -re "^n.*|^N.*"	{return 0;}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   601
			-re {..*} {send_user "Please answer Y or N..."}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   602
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   603
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   604
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   605
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   606
proc input_int {prompt} {				# input an integer
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   607
	while {1} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   608
		send_user $prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   609
		expect_user {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   610
			-timeout -1 -re {^[0-9]+\n} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   611
				regsub {^0*} $expect_out(0,string) {} decimal_val;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   612
				return $decimal_val;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   613
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   614
			-timeout -1 -re {.+} {send_user "only integers, please!\n"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   615
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   616
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   617
}