The ESI Spectrograph Online Documentation

inconfig

inconfig is a small standalone GUI which is used for the same purpose as the old "configure" command. It configures the detente positions and names for a DC stage.

Rather than infoman, inconfig uses a database server, and dispatcher files, to cache the mapping of names to ordinal positions.

The user of inconfig can reconfigure not only name/detente mapping, but also the raw encoder count positions of the different detentes. This makes inconfig a potentially dangerous tool. Only an instrument scientist or other instrument support staff should use it.

When the user hits COMMIT two things happen, not necessarily in this order.

DISPATCHER CONFIG

A crippled version of CodeGen runs, which produces only dispatcher config files. Of those, it copies only one to the target location, which is

$KROOT/data/INSTRUMENT/dyna
for example
/opt/kroot/data/pfcam/dyna
The file it copies is mapRON.cfg. This file is human- readable. It's just ascii. The user can and should visually verify whether it contains the info we think it should.

The mapRON (map Raw/Ord/Nam) file tells the dispatcher how to map the NAM and ORD keywords to raw positions. If you ask for filter "V" the dispatcher has to translate that into an encoder position so it can tell the Galil to move the stage.

The dispatcher has a mapRON.cfg file by default that contains "vanilla" position names like "Filter 1" and "Filter 2". If it starts with the -u flag

-u dyna
then it looks in KROOT/data/INSTRUMENT/dyna for an alternate "dynamic" mapRON.cfg file which it will use in preference to the vanilla (factory) file. 'dyna' in this case is the name of the directory. But it doesn't have to be called dyna.
-u foo
would make the dispatcher
look in KROOT/data/INSTRUMENT/foo! One could imagine starting dispatchers with different -u flags to get canned setups, but don't go there! There's another dependency which I will describe in a minute.

So, the control (backend) part depends on 2 things: you have to update the database and generate a new dyna mapRON file, AND the dispatcher must be started with the "use dynamic" flag so that it knows to use that file.

Now, what inconfig did before running CodeGen was to update the database server. CodeGen used these data to generate the dispatcher config files, which are the first human-visible result of running inconfig.

The dispatcher is started before the GUI. So the effect of inconfig on the dispatcher is described first. However, the change to the database also affects the GUI (dashboard) the next time it is started up.

GUI (dashboard) CONFIG

How about the UI? How will it know the new names or detentes defined by the instrument scientist? It does not "ask" the dispatcher about this map. It can't. Instead, at startup, it looks in the database.

inconfig wrote on a table called "DynaMaps" which is a "shadow" of the Mmaps table. The UI, on startup, is smart enough to check DynaMaps data and use them to OVERRIDE the default (Mmaps) data which it inherited with its kwd file. Any menu or bar graph which is "dynamic" (has a "dyna" flag set by the designer) will paint itself using these values.

This is why you can't have lots of directories under KROOT/data/INSTRUMENT and just switch around between setups. The database (of which there is only ONE copy) has to match. Otherwise you would have one set of names in the menus of the GUI and another inside the dispatcher, and unhappiness would result. Only one "state" is possible at a time.

The Observer documents are hand-written. The Technical Documents are produced from plain text files in the CVS source tree by some Tcl scripts written at UCO/Lick Observatory. The Reference Documents are mostly generated by software from data in a relational database. Individual authors are responsible for the content of the Observer and Technical Documentation. The Lick SPG as a whole is responsible for the content of the Reference doco. Send mail to de@ucolick.org to report inconsistencies or errors in the documentation.