User Interface Design

The design of the anvil user interface is driven by both the typical requirements of a UNIX command line interface and the IceCube Experiment Control requirements.

The design of the user interfacce for a generic UNIX command line interface is covered elsewhere, so this document will concentrate of the User Interface elements that are derived from the IceCube Experiment Control requirements.

Starting and Stopping

'Continuous' Sub-Systems

Requirement:
Start and stop each of the following 'continuous; sub-systems:
  • PnF;
  • SPADE;
  • SN DAQ;
  • Detector Status;
  • Cluster Status.

(test name: start.stop)

The anvil commands "start <sub-system>" and "stop <sub-system>" will be used to fulfill this requirement, with the following names being used for their respective sub-systems.

  • pnf - PnF;
  • spade - SPADE;
  • sn - SN DAQ;
  • status - Detector Status;
  • cluster - Cluster Status.

For simplicity's sake, it will be permisable to specify more that one sub-system in a start and stop commands.

[jboss@sps-expcont]$ anvil
anvil** start pnf spade
"pnf" started
"spade" started
anvil** start sn
"sn" started
anvil** start status
"status" started
anvil** start cluster
"cluster" started
anvil** stop cluster
"cluster" stopped
anvil** stop status sn
"status" stopped
"sn" stopped
anvil** stop spade
"spade" stopped
anvil** stop pnf
"pnf" stopped
anvil** 

It will be considered an error if an unknown sub-system is specfied, in which case the command will not execute anything.

[jboss@sps-expcont]$ anvil
anvil** start fred
Unknown Subsystem: fred
anvil** 

Data-Taking

Requirement:
Begin data-taking such that it does the following:
  • Start DAQ with a specified run number and DAQ configuration key;
  • Start TWR with a specified run number;
  • Pass a partial run summary on to PnF.

(test name: start.run)

The anvil command "start daq" will be used to fulfill this requirement. However, unlike invocations for the continuous sub-systems, invoking this command with daq as one of the sub-systems requires the configuration keys for the DAQ, JeB and PnF sub-system to be specified.

[jboss@sps-expcont]$ anvil
anvil** start -d 105 -j merge -p physics daq
"daq" started, daq=105 jeb="merge" and pnf="physics"
anvil** 

It will be considered an error if any of the configuration keys are not specified.

[jboss@sps-expcont]$ anvil
anvil** start -d 105 -j merge daq
Usage: all configuration keys must be specified when starting the daq sub-system
anvil** 
Requirement:
Stop data-taking such that it does the following:
  • Stop DAQ;
  • Stop TWR.
  • Pass a completed run summary on to PnF.

(test name: stop.run)

The anvil command "stop daq" will be used to fulfill this requirement

[jboss@sps-expcont]$ anvil
anvil** stop daq
"daq" stopped
anvil** 

Continous Data-Taking

Requirement:
Commence continuous data-taking such that new runs will be started whenever an error condition in DAQ or TWR is detector, or after a specified interval of time. (test name: start.sam)

The anvil command "start sam" will be used to fulfill this requirement as sam is the "start and monitor" watchdog sub-system. To allow the specification of the time interval, when sam is specified as one of the sub-systems to start the length of runs will be supplied using the -t option.

[jboss@sps-expcont]$ anvil
anvil** start -d 105 -j merge -p physics -t 4hr sam
"sam" started, daq=105 jeb="merge" and pnf="physics", with 4hr runs
anvil** 

It will be considered an error if any of the configuration keys or the run length are not specified.

[jboss@sps-expcont]$ anvil
anvil** start -d 105 -j merge -p physcis sam
Usage: the run length must be specified when starting the sam sub-system
anvil** 
Requirement:
Terminate continuous data-taking. (test name: stop.sam)

The anvil command "stop sam" will be used to fulfill this requirement.

[jboss@sps-expcont]$ anvil
anvil** stop sam
"sam" stopped
anvil** 

Flasher Runs

Requirements:
Commence flasher runs that are extensions of a normal data taking run modified to supply the following information to the DAQ at prescribed intervals:
  • Flasher configuration key;
  • Subrun Number

And, at the same time, a new run summary is created. (test name: flasher)

As each flasher run will require a sequence of flasher configurations it makes sense for these to be contained in a file that is then read by anvil. Thus, the "start flasher" command that will be used to fulfill this requirement take a -f option to specify the file containing the sequence of flasher configurations.

anvil** start -f flasher_settings flasher
flasher runs started using the settings in "flasher_settings"
anvil** 

Given that the sequence of flasher configurations in a flasher run is finite there is no need for a "stop flasher" command as this type of run will stop of its own accord. However, it should be possible to stop a flasher run that is in progress and so a "stop flasher" command will be supplied for this eventuallity.

anvil** stop flasher
"flasher" stopped
anvil** 

Monitoring

Requirement:
Check the status of each of the following sub-systems:
  • DAQ;
  • TWR;
  • PnF;
  • SPADE;
  • SN DAQ;
  • Detector Status;
  • Cluster Status.

(test name: check)

The "check <sub-system>" command will be used to fulfill this requirement, with success meaning that the specified sub-system is in a running state and failure meaning it is not. "Running" is defined as having been started and neither stopped nor in an error state.

For simplicity's sake, it will be permisable to specify more that one sub-system in a "check" command.

[jboss@sps-expcont]$ anvil
anvil** start pnf spade sn status cluster
"pnf" started
"spade" started
"sn" started
"status" started
"cluster" started
anvil** check pnf
"pnf" passed
anvil** check spade
"spade" passed
anvil** check sn status cluster
"sn" passed
"status" passed
"cluster" passed
anvil** start -d 105 -j merge -p physics -t 4hr sam
"sam" started, daq=105 jeb="merge" and pnf="physics", with 4hr runs
anvil** check daq
"daq" passed
anvil** check sam
"sam" passed
anvil** stop sam
"sam" stopped
anvil** check daq
Elements failed Check: daq
anvil** check sam
Elements failed Check: sam
anvil** stop pnf spade sn status cluster
"pnf" stopped
"spade" stopped
"sn" stopped
"status" stopped
"cluster" stopped
anvil** check cluster
Elements failed Check: cluster
anvil** check pnf spade sn status
Elements failed Check: pnf spade sn status
anvil**