SeaServer


SeaServer

The SeaServer is a sics server running in parallel to the Server for instrument control. The server program is just a copy of the SICServer. However, when testing new features, different versions might be used for instrument control (sics server process) and for sample environment (sea server process).

Directory Structure

All stuff related to sea are placed in $HOME/sea. All script files needed for the sea server process are identical on all instruments and are placed in the directory ~/sea/tcl. There is one exception, ~/sea/sea.tcl. This file contains the location of the files and the instrument name, and calls the instrument independent startup file ~/sea/tcl/seainit.tcl. This file calls all scripts in the directory ~/sea/tcl/startup/'.

The server log files are located in sea/log, and the database for the logger in sea/logger. The copy of the SICServer for sea is sea/SICServer, and there is a link to it (sea/SeaServer) which is started with the script sea/startwithpid.

Connection between Sea and SICS

The following lines should to be included into the instruments startup script:

  source $home/sea/tcl/remob.tcl
  connect_sea
The macro
connect_sea tries to make a connection to sea. If the connection is successful, remob objects are created on sics for all objects listed in the variable env_object_list on sea. Likewise the sea server tries to make a connection to sics on startup and initiates the update of configured objects.

Sea Configuration

To select the sample environment device, the command samenv (defined in sea/tcl/seacom.tcl) is used. It calles the configuration script for the given device (sea/tcl/<name>.config). The configuration scripts do not call makeobject directly, but use the makenv script, which keeps a list of created objects and takes the host:port information from a small database managed by cfgenv.

Syntax:

samenv <device name>         configure sea for the given SE device

samenv                       show the actual configuration

samenv none                  remove all objects related with the actual
                             SE device

cfgenv <driver> <host:port>  configure the serial connection of a controller

cfgenv                       list all configured controllers

makenv <object> <driver>     make an object, using the configuration defined
                             with cfgenv (this command can be used in
                             configuration scripts only)