libRDI.expect
author A.M. Thurnherr <athurnherr@yahoo.com>
Fri, 03 Jul 2020 10:25:08 -0400
changeset 12 5e67754f6457
parent 8 45809527a522
permissions -rwxr-xr-x
V1.6: no more master/slave terminology
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
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
     5
#                    dlm: Fri Jul  3 10:23:56 2020
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
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
     7
#                    uE-Info: 48 40 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
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
    46
# Dec 29, 2010: - implemented work-around to always wake up uplooker first
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
    47
# Jul  3, 2020: - expunged master/slave terminology
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
    48
#		- changed version to 1.6
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    49
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    50
# 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
    51
#	expect(1) syntax any more...
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    52
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    53
# PS0 ON BB150 NOTE:
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    54
#	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
    55
#	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
    56
#  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
    57
#  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
    58
#  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
    59
#  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
    60
#  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
    61
#  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
    62
#  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
    63
#  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
    64
#  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
    65
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    66
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
    67
set BREAK 	\003;	# ^C
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    68
set HELP	\010;	# ^H
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    69
set TOGGLE	\024;	# ^T
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    70
set DNLOAD	\030;	# ^X
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    71
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
    72
set cid -1;						# current instrument (DL or UL)
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    73
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    74
proc print_version {} {
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
    75
	send_user "acquire V1.6\n"
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    76
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    77
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    78
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
    79
	if {$cid == 0} {
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 1];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    81
	} elseif {$cid == 1} {
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 4];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    83
	} else {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    84
		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
    85
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    86
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    87
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    88
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
    89
	global cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    90
	set_color $cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    91
	send_error "\nError: $msg\n";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    92
	set_color;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    93
	exit 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    94
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    95
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    96
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
    97
	set continue_flushing 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    98
	while {$continue_flushing > 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    99
		expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   100
			timeout {set continue_flushing 0;}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   101
			-timeout 0 ">";
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   105
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   106
proc BREAK {} {						# send BREAK
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   107
	global BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   108
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   109
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   110
	send $BREAK;					# Wakeup Instrument
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   111
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   112
		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
   113
		-timeout 8 "RD Instruments (c)"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   114
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   115
	expect {					# gobble prompt as well
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   116
		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
   117
		-timeout 3 ">"
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   120
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   121
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
   122
	global BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   123
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   124
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   125
	send $BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   126
	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
   127
	expect -timeout 3 ">"
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   128
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   129
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   130
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
   131
	global NEXT_SPEED;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   132
	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   133
	send $NEXT_SPEED;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   134
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   135
		timeout {error "Cannot change speed"}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   136
		-timeout 5 ": end"
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
	sleep 1
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   139
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   140
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   141
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
   142
	global cid TOGGLE;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   143
	send $TOGGLE;					# switch
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   144
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   145
		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
   146
		-timeout 3 "Instrument"
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
	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
   149
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   150
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   151
proc select_DL {{toggle_first 1}} {			# select DL & check S/N
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   152
	global cid DL_sn UL_sn;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   153
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   154
	if {$toggle_first} toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   155
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   156
	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
   157
	send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   158
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   159
		timeout {error "Can't determine serial number"}
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   160
		-timeout 8 -re "Instrument S/N:  $DL_sn.*>|Xducer Ser #:  $DL_sn.*>|PS0...>" {}
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   161
		-timeout 8 -re "Instrument S/N:  $UL_sn.*>" {
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   162
			toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   163
			send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   164
			expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   165
				timeout {error "Can't determine serial number"}
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   166
				-timeout 8 -re "Instrument S/N:  $DL_sn.*>|Xducer Ser #:  $DL_sn.*>|PS0...>" {}
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   167
				-timeout 8 -re "Instrument S/N:  $UL_sn.*>" {
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   168
					error "Can't switch to DL"
4
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
		}
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
	set cid 0;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   174
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   175
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   176
proc select_UL {{toggle_first 1}} {			# select UL & check S/N
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   177
	global cid DL_sn UL_sn;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   178
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   179
	if {$toggle_first} toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   180
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   181
	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
   182
	send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   183
	expect {
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   184
		timeout {error "Can't determine DL/UL"}
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   185
		-timeout 8 -re "Instrument S/N:  $UL_sn.*>" {}
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   186
		-timeout 8 -re "Instrument S/N:  $DL_sn.*>|Xducer Ser #:  $DL_sn.*>|PS0...>" {
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   187
			toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   188
			send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   189
			expect {
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   190
				timeout {error "Can't determine DL/UL"}
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   191
				-timeout 8 -re "Instrument S/N:  $UL_sn.*>" {}
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   192
				-timeout 8 -re "Instrument S/N:  $DL_sn.*>|Xducer Ser #:  $DL_sn.*>|PS0...>" {
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   193
					error "Can't switch to UL"
4
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
		}
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
	set cid 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   199
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   200
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   201
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
   202
	global cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   203
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   204
		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
   205
		-timeout 10 "device" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   206
			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
   207
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   208
		-timeout 10 "Instrument 0" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   209
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   210
	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
   211
	sleep 1;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   212
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   213
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   214
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
   215
	no_error_BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   216
	send "\r";				# send NOP command
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   217
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   218
		timeout {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   219
			send_error ".";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   220
			BREAK;			# try again
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   221
		}
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
   222
		-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
   223
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   224
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   225
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
   226
# In 2010 on the DIMES UK2 cruise, it was found that the instruments did
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   227
# not communicate correctly, unless the UL was woken up first. On previous
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
   228
# 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
   229
# 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
   230
# 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
   231
# 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
   232
# the communication did not work, that statement could simply be uncommented.
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   233
# Another workaround would be to switch the serial ports the DL/UL
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
   234
# 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
   235
# I decided to modify the routine reset_two_instruments to wake up an instrument,
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   236
# determine whether it is the UL and, if not, send it back to sleep, toggle,
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
   237
# 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
   238
# 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
   239
# 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
   240
# 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
   241
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   242
proc reset_two_instruments {} {			# reset regardless of state
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   243
	global cid DL_sn UL_sn;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   244
	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
   245
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   246
	while {$ok < 2} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   247
		no_error_BREAK;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   248
		send "\r"; expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   249
			timeout {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   250
				set ok 0;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   251
				send_error "!";
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
			-timeout 5 ">" {incr ok}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   254
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   255
		toggle_instrument;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   256
	}
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
   257
### 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
   258
	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
   259
	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
   260
		timeout {error "Can't determine serial number"}
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   261
		-timeout 8 -re "Instrument S/N:  $DL_sn.*>|Xducer Ser #:  $DL_sn.*>|PS0...>" {
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
   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
			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
   264
			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
   265
			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
   266
			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
   267
		}
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   268
		-timeout 8 -re "Instrument S/N:  $UL_sn.*>" {
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
   269
			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
   270
                }
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
		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
   272
		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
   273
			timeout {error "Can't determine serial number"}
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   274
			-timeout 8 -re "Instrument S/N:  $DL_sn.*>|Xducer Ser #:  $DL_sn.*>|PS0...>" {}
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   275
			-timeout 8 -re "Instrument S/N:  $UL_sn.*>" {
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   276
				error "Can't switch to DL"
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
   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
		}
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
       }
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
	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
   281
### WORKAROUND ELSE
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   282
#	select_DL;
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
   283
### WORKAROUND END
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   284
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   285
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   286
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
   287
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   288
		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
   289
		-timeout $tout "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   290
			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
   291
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   292
		-timeout $tout ">"
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   295
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   296
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
   297
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   298
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   299
	send "CZ\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   300
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   301
		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
   302
		-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
   303
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   304
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   305
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   306
proc save_parameters {} {			# save parameters
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   307
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   308
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   309
	send "CK\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   310
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   311
		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
   312
		-timeout 5 -re "USER defaults"
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   315
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   316
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
   317
	gobble_prompts;				# unless already sleeping
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   318
	send "CZ\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   319
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   320
		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
   321
		-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
   322
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   323
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   324
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   325
proc start_download {} {			# start downloading
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   326
	global DNLOAD;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   327
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   328
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   329
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   330
	send $DNLOAD;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   331
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   332
		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
   333
		-timeout 10 "Receiving:"
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   336
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   337
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
   338
	global BREAK TOGGLE;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   339
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   340
		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
   341
		-timeout $tout "Transfer complete" {}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   342
		-timeout $tout "ABNORMALLY" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   343
			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
   344
			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
   345
		}
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
	expect -timeout 5 ">";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   348
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   349
	global cid DL_download_filename UL_download_filename;
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   350
	global DL_deployment_name_fmt UL_deployment_name_fmt;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   351
	if {$cid == 0} {
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   352
		rename_DL_download_file [format $DL_deployment_name_fmt $stn]000.000;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   353
	} else {
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   354
		rename_UL_download_file [format $UL_deployment_name_fmt $stn]000.000;
4
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   357
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   358
proc list_dir {} {				# list directory
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   359
	global cid;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   360
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   361
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   362
	send "RR\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   363
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   364
		-timeout 1 "ERR" {		# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   365
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   366
			send "RS\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   367
			log_user 1;
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
		-timeout 5 "Recorder Directory:";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   370
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   371
	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
   372
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   373
	log_user 0; set_color;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   374
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   375
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   376
proc erase_memory {} {				# erase memory
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   377
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   378
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   379
	send "RE ErAsE\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   380
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   381
		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
   382
		-timeout 5 "Erasing..." {	# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   383
			sleep 3;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   384
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   385
			return;
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
		-timeout 5 "Recorder erased."	# Workhorse
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
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   390
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   391
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   392
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
   393
	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
   394
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   395
	send "TT?\r";				# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   396
	expect -timeout 1 "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   397
		wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   398
		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
   399
		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
   400
				| 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
   401
				      -e /^>/d \
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   402
				> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   403
		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
   404
		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
   405
		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
   406
		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
   407
		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
   408
		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
   409
		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
   410
		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
   411
		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
   412
		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
   413
		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
   414
		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
   415
		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
   416
		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
   417
		return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   418
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   419
	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
   420
	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
   421
			| 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
   422
			      -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
   423
			> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   424
	log_file;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   425
	log_file -a -open $pipe;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   426
	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
   427
	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
   428
	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
   429
	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
   430
	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
   431
	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
   432
	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
   433
	send "DEPLOY?\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   434
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   435
		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
   436
		-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
   437
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   438
	send " "; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   439
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   440
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   441
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
   442
	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
   443
			> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   444
	log_file -a -open $pipe;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   445
}	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   446
	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   447
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
   448
	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
   449
			>> $filename" w];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   450
	log_file;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   451
	log_file -a -open $pipe;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   452
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   453
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   454
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
   455
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   456
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   457
	send "RA\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   458
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   459
		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
   460
		-timeout 3 -re {[1-9]} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   461
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   462
			return 0;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   463
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   464
		-timeout 3 ">" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   465
			return 1;
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   469
			
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   470
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
   471
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   472
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   473
	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
   474
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   475
		-timeout 1 "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   476
			gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   477
			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
   478
			send "TS$time\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   479
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   480
			return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   481
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   482
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   483
	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
   484
	send "TT$time\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   485
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   486
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   487
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   488
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
   489
	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
   490
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   491
	set cf [open $cfn "r"];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   492
	set lf [open $lfn "w"];
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   493
	while {[gets $cf line] >= 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   494
		regsub {[ 	]*;.*} $line {} line;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   495
		if {![regexp {^[ 	]*$} $line]} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   496
			puts -nonewline $lf "$line ... ";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   497
			if {$line == "CS" || $line == "cs"} {
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
   498
				send_error "*";
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   499
				save_hardware_config $hwfn;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   500
				send "$line\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   501
				expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   502
					timeout {};
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   503
					-timeout 3 expect ">" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   504
						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
   505
					}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   506
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   507
				puts $lf "INSTRUMENT PINGING";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   508
				close $cf; close $lf;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   509
				log_file;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   510
				return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   511
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   512
			send "$line\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   513
			send_error ".";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   514
			expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   515
				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
   516
				-timeout 5 "ERR" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   517
					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
   518
				}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   519
				-timeout 5 ">" {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   520
					puts $lf "OK";
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
		}
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
	close $cf; close $lf;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   526
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   527
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   528
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
   529
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   530
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   531
	send "CR1\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   532
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   533
		timeout {error "Can't get prompt"};
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
   534
		-timeout 10 "ERR" {
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   535
			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
   536
		}
5
f41d45fe7ae9 V1.5 initial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents: 4
diff changeset
   537
		-timeout 10 ">"
4
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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   540
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   541
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
   542
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   543
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   544
	send "RN$dn\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   545
	expect -timeout 1 "ERR";			# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   546
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   547
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   548
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   549
proc get_deployment_name {} {				# get deployment name
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   550
	global stn_format DL_deployment_name_fmt;
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   551
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   552
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   553
	send "RN?\r"; sleep 1;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   554
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   555
		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
   556
		-timeout 1 "ERR" {			# BB150
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   557
			if {![file isfile .last_stn]} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   558
				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
   559
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   560
			set stn [exec cat .last_stn];
12
5e67754f6457 V1.6: no more master/slave terminology
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 8
diff changeset
   561
			set dn [format $DL_deployment_name_fmt $stn];
4
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   562
			wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   563
			return $dn;			
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
		-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
   566
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   567
	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
   568
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   569
	return $dn;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   570
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   571
	
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   572
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
   573
	gobble_prompts;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   574
	send "\r"; wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   575
	send "PS0\r";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   576
	expect {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   577
		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
   578
		-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
   579
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   580
	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
   581
	wait_for_prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   582
	return $sn;
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
	
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
# User-Interation Routines
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   587
#======================================================================
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   588
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   589
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
   590
	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
   591
	while {1} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   592
		expect_user {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   593
			timeout {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   594
				if {$timeout_return == 0} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   595
					send_user "N\n";
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   596
				} else {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   597
					send_user "Y\n";
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
				return $timeout_return;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   600
			}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   601
			-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
   602
			-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
   603
			-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
   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
}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   607
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   608
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
   609
	while {1} {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   610
		send_user $prompt;
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   611
		expect_user {
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   612
			-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
   613
				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
   614
				return $decimal_val;
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
			-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
   617
		}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   618
	}
fda11de1826e version left on Poseidon at end of P403
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   619
}