EUROPEAN SOUTHERN OBSERVATORY

Organisation Européenne pour des Recherches Astronomiques dans l'Hémisphère Austral

Europäische Organisation für astronomische Forschung in der südlichen Hemisphäre

 

 

 

 

VLT PROGRAMME

 

 

VERY LARGE TELESCOPE

 

 

 

 

 

VLT Software

---

Base ICS control panel

User Manual

 

 

 

 

 

 

Doc. No.: VLT-MAN-ESO-17240-2606

 

Issue: 4

 

Date: 09/12/2005

 

 

 

 

 

 

Name                                                       Date                         Signature

                Prepared:               A.Longinotti                         09/12/2005

 

 

Name                                                       Date                         Signature

          Approved:             K.Wirenstrand                                                     

 

Name                                                       Date                         Signature

                Released:               M.Cullum                                 

 

 

VLT PROGRAMME * TELEPHONE: (089) 3 20 06-0 * FAX: (089) 3 20 06 514


 

CHANGE RECORD

 

 

ISSUE

DATE

SECTION/PAGE

AFFECTED

REASON/INITIATION

DOCUMENTS/REMARKS

 

1.0

30/10/2001

All

First issue

2

28/03/2002

All

MAR2002, SPR VLTSW20010501, VLTSW20010502, VLTSW20010666, VLTSW20010690

3

31/03/2004

 

 

 

2.1 Table 1, 6.1.15

5 Table 3

 

 

5 Table 3, App. A

 

 

2.1 Table 2

3.1 Figure 1

3.1.1 Figure 2

3.1.2 Figure 3

3.1.3 Figure 4

3.1.4 Figure 5

4.5.2 6.1.5

5.1

Appendix B

APR2004

 

VLTSW20030226:

new class icbpanSensor

INS.SENSOR.UIFCOL/UIFROW/UIFWID

 

VLTSW20030303:

multiple panels (INS.UIF.NAME)

 

VLTSW20030305:

icbpanICSCmd icbpanICSDevControl obsolete

new panel layout

new menu options

new state widget

new devices area layout

new action buttons

new widget icbpanEntry

sensors values turning red (abnormal conditions)

Porting old panels to new layout

4

31/03/2005

 

2.1 Table 1,

5 Table 3

 

JAN2006

Assemblies supported (VLTSW20040336)

 

Grating without order (VLTSW20050206)

 


 

TABLE OF CONTENTS

 

 

TABLE OF CONTENTS............................................................................................................................................................................. 3

1     INTRODUCTION................................................................................................................................................................................ 5

1.1      Purpose...................................................................................................................................................................................... 5

1.2      Scope........................................................................................................................................................................................... 5

1.3      Applicable Documents.................................................................................................................................................... 5

1.4      Reference Documents...................................................................................................................................................... 5

1.5      Abbreviations and Acronyms................................................................................................................................... 6

1.6      Glossary.................................................................................................................................................................................. 6

1.7      Stylistic Conventions..................................................................................................................................................... 6

1.8      Naming Conventions........................................................................................................................................................ 6

1.9      Problem Reporting/Change Request....................................................................................................................... 6

2     OVERVIEW......................................................................................................................................................................................... 7

2.1      ICS control panel architecture.............................................................................................................................. 7

2.1.1       Software Modules.............................................................................................................................................................. 8

3     OPERATOR’S GUIDE....................................................................................................................................................................... 9

3.1      Panel Start-up..................................................................................................................................................................... 9

3.1.1       Menu bar.......................................................................................................................................................................... 10

3.1.2       Global State..................................................................................................................................................................... 10

3.1.3       Single Devices................................................................................................................................................................. 10

3.1.4       Command Feedback, Short Help and Action Buttons............................................................................................. 11

4     Figure 5: Command feedback, short help and action buttons area TUTORIAL: IMPLEMENTING ICS CONTROL PANEL FROM SCRATCH................................................................................................................................................ 12

4.1      Create the ICS control panel module................................................................................................................ 12

4.2      Design the ICS control panel layout.................................................................................................................. 12

4.3      Configure the ICS control panel layout.......................................................................................................... 13

4.4      Starting the ICS control panel.............................................................................................................................. 13

4.5      Creating a special device............................................................................................................................................ 13

4.5.1       Overriding default behavior......................................................................................................................................... 13

4.5.2       Building an uifClass from scratch............................................................................................................................... 13

5     CONFIGURATION GUIDE............................................................................................................................................................. 15

5.1      Abnormal conditions reported by sensors.................................................................................................... 16

6     REFERENCE...................................................................................................................................................................................... 18

6.1      icbpan...................................................................................................................................................................................... 18

6.1.1       icbpanLib.tcl.................................................................................................................................................................... 18

6.1.2       icbpanGUIcfg.tcl............................................................................................................................................................. 20

6.1.3       icbpanUIF.tcl................................................................................................................................................................... 22

6.1.4       icbpanICSControl.tcl..................................................................................................................................................... 23

6.1.5       icbpanEntry.tcl................................................................................................................................................................ 24

6.1.6       icbpanLamp.tcl................................................................................................................................................................ 26

6.1.7       icbpanShutter.tcl............................................................................................................................................................ 28

6.1.8       icbpanNamedPos.tcl...................................................................................................................................................... 30

6.1.9       icbpanContPos.tcl.......................................................................................................................................................... 32

6.1.10     icbpanSlit2.tcl................................................................................................................................................................. 34

6.1.11     icbpanGrat.tcl................................................................................................................................................................. 36

6.1.12     icbpanGratNoOrd.tcl..................................................................................................................................................... 38

6.1.13     icbpanDpol.tcl................................................................................................................................................................. 40

6.1.14     icbpanAdc.tcl................................................................................................................................................................... 42

6.1.15     icbpanDrot.tcl................................................................................................................................................................. 44

6.1.16     icbpanSensor.tcl............................................................................................................................................................. 46

6.1.17     icbpanPmt.tcl................................................................................................................................................................... 48

6.2      xxipan...................................................................................................................................................................................... 50

6.2.1       xxipanControl.pan......................................................................................................................................................... 50

Appendix A. Multiple panels for the same ICS.............................................................................................................. 53

Appendix B. Porting older existing ICS panels to APR2004 layout................................................................ 54

 

1          INTRODUCTION

The software described in this manual is intended to be used in the ESO VLT project by ESO and authorized external contractors only.

 

While every precaution has been taken in the development of the software and in the preparation of this documentation, ESO assumes no responsibility for errors or omissions, or for damage resulting from the use of the software or of the information contained herein.

1.1              Purpose

All instruments need an ICS stand-alone Graphical User Interface (GUI) to be able to operate its functions, e.g. for engineering and maintenance purposes.

As from the OCT2001 release of the VLT Software, the Base ICS package provides instrumentation applications with common code dedicated to the development of ICS GUIs. The purpose is to make the ICS GUIs development faster, reducing the amount of application specific code and therefore the maintenance efforts associated to it, and at the same time to make the look & feel more homogeneous.

The common code is implemented in the module icbpan. An example of application using it is provided by the Template Instrument (see [RD 13]) and in particular the module xxipan.

1.2              Scope

This document covers only the part of Base ICS dedicated to the development of ICS GUIs.

The part dedicated to the ICS control applications is described in .

1.3              Applicable Documents

The following documents, of the exact issue shown, form a part of this document to the extent specified herein. In the event of conflict between the documents referenced herein and the contents of this document, the contents of this document shall be considered as a superseding requirement.

 

Reference

Document Number

Issue

Date

Title

[AD 01]

VLT-PRO-ESO-10000-0228

1.0

10/03/1993

VLT Software Programming Standards

[AD 02]

VLT-MAN-ESO-17210-0667

1.0

03/12/1997

Guidelines for VLT applications.

[AD 03]

VLT-SPE-ESO-17212-0001

2.0

23/02/1995

INS Software Specification

[AD 04]

VLT-SPE-ESO-17240-0385

2.1

15/07/1996

INS Common Software Specification

1.4              Reference Documents

The following documents are referenced in this document.

 

Reference

Document Number

Issue

Date

Title

[RD 01]

VLT-MAN-ESO-17200-0888

1.0

17/08/1995

VLT Common Software Overview

[RD 02]

VLT-MAN-ESO-17200-0642

2

30/03/2002

VLT Common Software Installation Manual

[RD 03]

VLT-MAN-ESO-17210-0669

1.4

20/10/1997

Motor Engineering Interface User Manual

[RD 04]

VLT-MAN-ESO-17210-0619

2.2

31/03/2002

Central Control Software User Manual

[RD 05]

VLT-MAN-ESO-17210-0707

1.6

30/09/1999

On Line Database Loader User Manual

[RD 06]

VLT-MAN-ESO-17210-0690

4.3

31/03/2002

Panel Editor User Manual

[RD 07]

VLT-MAN-ESO-17240-0853

1.4

25/04/2001

INS Common sw – oslx User Manual

[RD 08]

VLT-MAN-ESO-17240-0934

3

30/03/2002

Base ICS User Manual

[RD 09]

VLT-MAN-ESO-17240-1913

2

30/03/2002

Installation Tool for VLT Sw packages

[RD 10]

VLT-MAN-ESO-17240-2153

2

30/03/2002

INS Startup Tool User Manual

[RD 11]

VLT-MAN-ESO-17220-0737

3

28/03/2002

HOS – Sequencer User Manual

[RD 12]

VLT-MAN-ESO-17240-2240

2

28/03/2002

INS Common Software for Templates

[RD 13]

VLT-MAN-ESO-17240-1973

3

28/03/2002

Template Instrument Software User Manual

1.5              Abbreviations and Acronyms

This document employs several abbreviations and acronyms to refer concisely to an item, after it has been introduced. The following list is aimed to help the reader in recalling the extended meaning of each short expression:

CCS

Central Control Software

CPU

Central Processing Unit

ESO

European Southern Observatory

FITS

Flexible Image Transport Format

GUI

Graphical User Interface

HW

Hardware

ICS

Instrument Control Software

INS

Instrumentation Software Package

I/O

Input/output

IWS

Instrument Workstation

LAN

Local Area Network

LCU

Local Control Unit

MS

Maintenance Software

N/A       

Not Applicable

RAM

Random Access Memory

SW

Software

TBC

To Be Clarified

TBD

To Be Defined

UIF

(Portable) User Interface (Toolkit)

VLT

Very Large Telescope

WS

Workstation

1.6              Glossary

No special definition is introduced in this manual

1.7              Stylistic Conventions

The following styles are used:

bold

in the text, for commands, filenames, pre/suffixes as they have to be typed.

Italic

in the text, for parts that have to be substituted with the real content before typing.

Teletype

for examples.

<name>

in the examples, for parts that have to be substituted with the real content before typing.

 

Bold and italic are also used to highlight words.

1.8              Naming Conventions

This implementation follows the naming conventions as outlined in [AD 01].

1.9              Problem Reporting/Change Request

The form described in [RD 02] shall be used.

2         OVERVIEW

This chapter gives a short overview of the ICS control panel philosophy and underlying architecture.

The rest of the manual is organized as follows:

·  Chapter 3 is the operator’s guide, which describes how to operate an ICS GUI based on icbpan.

·  Chapter 4 is the programmer’s guide, which describes in detail how to create from scratch an ICS GUI for a new instrument.

·  Chapter 5 is the configuration guide, which describes in detail how to properly configure the appearance of a specific instrument GUI.

·  Chapter 6 contains the manual pages extracted from the source code.

2.1              ICS control panel architecture

ICS is responsible for controlling the different devices of an instrument, such as motors, lamps and sensors. Most of these devices are driven by standard ESO hardware and software (see [RD 08]) and share therefore the same functionality.

 

The Base ICS package (also called ICB, see [RD 08]) aims to implement all common aspects of the various instruments ICS in one central place, such that different instrumentation applications, using it, become more homogeneous and therefore easier to operate and maintain. The same principle applied to the control code has been extended to the ICS stand-alone control panel: base ICS provides, within the module icbpan, means to speed up the ICS GUI development and reduce the amount of code to be maintained.

 

The basic components of icbpan are a set of “uifClasses-widgets” (hereafter called simply uifClasses), created with the VLT Panel Editor and therefore compatible with its usage (see [RD 06]).

 

The concept of uifClasses alone, though very useful, poses some problems when building the ICS control panel: sets of global variables are indeed needed to localize single widgets inside a class, which is difficult to maintain and still more difficult to extend. To overcome this drawback, for every uifClass an itcl wrapper class was created; it inherits the corresponding uifClass and adds new methods dealing with single (internal) widgets. In this way, not only the need of global variables disappears but also every single uifClass can be treated as a self-consistent unit which can be extended for special needs by using well-known object-oriented features (inheritance, overriding etc.). Moreover, variable name collision is automatically solved.

Based on this philosophy, for every ICB software devices (see [RD 08]), a corresponding uifClass and itcl wrapper class is available in the icbpan module.

 

Table 1 lists all uifClasses with the corresponding wrapper and device identification.

Description

ICB class

uifClass

itcl wrapper class

Lamp

icbLAMP

icbpanLamp_uifClass

icbpanLamp

Shutter

icbSHUTTER

icbpanShutter_uifClass

icbpanShutter

Filter wheel

icbMOT_FILTER

icbpanNamedPos_uifClass

icbpanNamedPos

Mirror wheel

icbMOT_MIRROR

icbpanNamedPos_uifClass

icbpanNamedPos

Slit wheel

icbMOT_SLITS

icbpanNamedPos_uifClass

icbpanNamedPos

Generic wheel

icbMOT_OPTI

icbpanNamedPos_uifClass

icbpanNamedPos

Generic slide

icbMOT_POS

icbpanContPos_uifClass

icbpanContPos

Slit length

icbMOT_SLIT2_LEN

icbpanSlit2_uifClass

icbpanSlit2

Slit Width

icbMOT_SLIT2_WID

icbpanSlit2_uifClass

icbpanSlit2

Tilt

icbMOT_TILT

icbpanContPos_uifClass

icbpanContPos

Grating

icbMOT_GRATING2

icbpanGrat_uifClass

icbpanGratNoOrd_uifClass

icbpanGrat

icbpanGratNoOrd[1]

Depolarizer

icbMOT_DPOR

icbpanDpol_uifClass

icbpanDpol

ADC

icbMOT_ADC

icbpanAdc_uifClass

icbpanAdc

Derotator

icbMOT_DROT

icbpanDrot_uifClass

icbpanDrot

Cryostat sensor

icbSEN_ADAM

icbpanSensor_uifClass

icbpanSensor [2]

Pressure sensor

icbSEN_BAROMETER

icbpanSensor_uifClass

icbpanSensor 2

Cryogen. Temp. sensor

icbSEN_CN77000

icbpanSensor_uifClass

icbpanSensor 2

Cabinet cool. Sensor

icbSEN_COOLING

icbpanSensor_uifClass

icbpanSensor 2

Digital sensor

icbSEN_DIGITAL

icbpanSensor_uifClass

icbpanSensor 2

Temp. sensor

icbSEN_ESTERS

icbpanSensor_uifClass

icbpanSensor 2

Humidity sensor

icbSEN_HUMIDITY

icbpanSensor_uifClass

icbpanSensor 2

Exposure meter

icbSEN_EXPM

icbpanPmt_uifClass

icbpanPmt

Assembly

N/A

icbpanAssembly_uifClass

icbpanAssembly

Table 1: implemented uifClasses.

The specific instrument configuration file (see [RD 08]) provides the input necessary to establish the number and type of instrument devices and, with a set of dedicated keywords, also to define the appearance of the ICS control panel (see section 5).

Finally, the communication with the ICS front-end control process is hidden in specific itcl classes built using the philosophy explained before.

Table 2 contains a list of such classes.

 

Description

uifClass

itcl wrapper class

Display the global ICS state

icbpanICSState_uifClass

icbpanICSState[3]

Table 2: classes dealing with the ICS communication

 

2.1.1                       Software Modules

All uifClasses and relative wrappers are contained in one sw module: icbpan. The ICS GUI application provided by the Template Instrument in the module xxipan could be used as a starting point to build a new instrument ICS GUI.

3         OPERATOR’S GUIDE

This chapter is intended to provide all information needed to operate an instrument ICS from a GUI based on icbpan.

The example provided by the Template Instrument (see [RD 13]) is used to better illustrate the concept.

3.1              Panel Start-up

The ICS GUI should be started using the common startup tool stoo (see [RD 10]):

                %xxinsStart –panel ICS

 

During the startup the panel reads the instrument configuration and, in case of no errors, the ICS GUI pops-up (it can take a while, depending on host type and instrument complexity).

Figure 1 shows the example provided by the Template Instrument (configuration file $INS_ROOT/SYS-TEM/COMMON/CONFIGFILES/xxmcfgINS.cfg).

Figure 1: ICS GUI

 

The following sections describe in detail the various parts of the panel.

 

3.1.1                       Menu bar

The menu bar in general contains commands less frequently used. Figure 2 shows the expanded menu bar.

See manual page of the Template Instrument panel xxipanControl, section 6.2.1, for more information on the individual menu options.

Figure 2: ICS GUI menu section

 

3.1.2                       Global State

This area of the control panel shows the ICS global state (see Figure 3).

See manual page of the Template Instrument panel xxipanControl, section 6.2.1, for more information on its contents.

Figure 3: ICS GUI global state area

3.1.3                       Single Devices

For every device defined and configured in the instrument configuration file, a corresponding uifClass is placed in a notebook itk widget. The use of notebook itk widget allows packing various sets of logically linked devices (as could be motorized functions, lamp/shutters and sensors) optimizing the overall dimension of the panel. The operator could easily, simultaneously, check the current state of various devices by simply selecting the required notebook’s tab.

Figure 4 shows the example provided by the Template Instrument.

The overall configuration of various devices is done at the panel start-up by extracting all the relevant information from the specific instrument configuration file (e.g. filter names, modes etc.). Every uifClass is moreover connected to the corresponding device branch in the OLDB. Typically the following output is shown:

·         device name;

·         device state (OFF/STANDBY/ONLINE);

·         operational mode  (simulation and handset);

·         current position (named);

·         current position (encoder unit).

 

Sensor devices are treated in a slightly different way. They neither accept the SETUP command nor have a position defined. The only commands affecting the behavior of sensors are those used to change the state or the simulation level. For every sensor devices a list of sensor values is reported. Values are read directly from the OLDB. The label for each single sensor is again extracted from the instrument configuration file.

 

Figure 4: ICS GUI single devices area

 

3.1.4                       Command Feedback, Short Help and Action Buttons

At the bottom of the main panel a Command Feedback Widget gives a log of all sent commands.

A short help widget provides additional information related to the widget in the mouse focus.

Finally, action buttons are provided (see Figure 5):

q       SETUP: Send SETUP to all selected devices

q       STOP: Send STOP to all selected devices

4         Figure 5: Command feedback, short help and action buttons area TUTORIAL: IMPLEMENTING ICS CONTROL PANEL FROM SCRATCH

This chapter is intended to software developers, who are starting from scratch with the implementation of the ICS control panel for a new instrument. It will describe how to adapt the template instrument code and extend its functionality to fit the specific instrument requirements.

Please follow step by step the instructions described in this chapter, executing them in the same order as presented.

 

In the examples provided in this chapter, it is assumed that the new instrument prefix is nn (keyword INS.CON.PREFIX in the configuration file) and its ID is NNNN (keyword INS.CON.ID). These strings should be adapted to the specific instrument case.

 

It is assumed that:

1.        you have already defined a basic ICS configuration

2.        the environment in which ICS processes should run is active

3.        ICS processes are running and database is accessible

Please refer to [RD 08] if one of these points is not fulfilled.

 

It is also assumed that the icbpan software module, as part of VLT common sw (from OCT2001 release), is already installed, and that the user is familiar with the VLT sw panel editor, its functionality and its operations (see [RD 06]).

4.1              Create the ICS control panel module

Skip this section if you have created the new instrument code with the utility xxinsCreateNewInstrument (see [RD 13]).

 

The simplest and fastest approach to build a new ICS control panel from scratch is to start from the code provided with the template instrument in the module xxipan.

The following steps must be done:

1.       retrieve xxipan module

Ø       cmmCopy xxipan

2.       rename the module directory

Ø       mv xxipan nnipan

3.       rename all module files

Ø       find nnipan –type f –print | xargs tooMvReplace xx nn

4.       modify the contents of all module files

Ø       chmod –R +w nnipan

Ø       find nnipan –type f –print | xargs tooReplace xx nn

Ø       find nnipan –type f –print | xargs tooReplace XXXX NNNN

4.2              Design the ICS control panel layout

Edit the panel source file (nnipanControl.pan) with the VLT panel editor. After all steps described in section 4.1, this panel contains the following frames:

1.        nnipanICSState

2.        nnipanNotebook1

3.        nnipanNotebook2

The first frame, as well as the buttons in the action buttons area and the menu options, should be left unchanged.

The nnipanNotebooki frames instead are the only ones, whose size and number depend on the instrument characteristics.

Decide in how many notebooks you want to distribute the instrument devices and make sure that the panel contains as many nnipanNotebooki frames as you want (remember to rename the widgets name to nnipanNotebooki i=1,..,N). Make also sure that their position and size correspond to the expected one (they can be refined in a second iteration) and that the “Automatic Re-size” option is selected.

Save the panel and build the module:

% make clean all man install

 

4.3              Configure the ICS control panel layout

To configure the ICS GUI layout, edit the instrument configuration file nnmcfgINS.cfg (see [RD 08] and chapter 5 of this manual for the details).

Make sure that the total number of notebooks defined by the keyword INS.UIF.NBOOKS (default 1) in the instrument configuration file corresponds to the number of frame widgets nnipanNotebooki created during step 4.2.

 

When building an ICS GUI from scratch, it is recommended to skip the uifClasses for special devices. This is accomplished by setting the <prefix>.UIFCLASS keyword to “” (see chapter 5). To create a special device class and add it to the GUI see section 4.5

4.4              Starting the ICS control panel

At this point the panel is ready to be started. Type:

 

% nnipanControl &

 

The ICS control panel should pop-up; see section 3 for a complete description on how to operate with it. Depending on the instrument complexity (i.e. on the number of the defined devices) the various frames could overlap or could not show the whole content (or more simply you don’t like the current positioning). In this case a manual resizing is necessary. See section 4.2

4.5              Creating a special device

Every ICB standard device (see [RD 08]) has a corresponding wrapper class (see 2.1), which implements all the basic (standard) features for this device.

4.5.1                       Overriding default behavior

It could happen that a specific instrument owns a device with a slightly different behavior respect to the standard. By using the inheritance mechanism it is possible to adapt and/or override the default.

 

An example is provided in icbpan/test for the GRAT device. The ICB standard grating device accepts, among others, also a keyword specifying the current grating order. The corresponding uifClass (icbpanGrat.tcl) has therefore an “order” entry widget to insert the required number. In our test case such an order is not needed[4]. A new class (icbpanTestGrat) is therefore implemented which simply:

1.        inherits the icbpanGrat class;

2.        overrides the icbpanGrat:: updateWdg method (by forcing a default and disabling the “order” entry widget).

When the class is packed in the notebook, the field of the entry widget is disabled and the user cannot send anymore any order number, as shown in Figure 6.

Figure 6: Example of wrapper class inheritance

 

The inheritance mechanism allows also adding functionality to the standard uifClasses. Of course, what you cannot do, is to block or selectively inherit some properties; to this purpose a new class should be created from scratch as described hereafter.

 

4.5.2                       Building an uifClass from scratch

For really specific instrument devices, which are not (and could not be) supported by the standard ICB, new uifClasses and corresponding itcl wrapper classes should be created. Once created, by means of the configuration keywords, they can be placed everywhere on the control panel (see chapter 5). The procedure to build such a “special uifClass” is quite simple (an example of such special device is provided in icbpan/test). The following steps are required:

1.        Create with the panel editor a class with the widgets that suit your needs.

For entry widgets, it is recommended to use the mega-widget icbpanEntry instead of the standard widget UifEntry, provided by the panel editor. The widget icbpanEntry provides additional functionality, such as validity check against range and data type.

For the device YYYY the class shown in Figure 7 has been created (see icbpanTestSpecial_uifClass.tcl).

2.        Create a wrapper class which inherits the just created “*_uifClass.tcl” (see icbapnTestSpecial.tcl);

3.        Add/implement in the wrapper class at least the following public methods:

·         isSelected – which returns 0/1 depending on the current status of the checkbutton;

·         setSelected <val> - which sets the checkbutton to 1/0;

·         getKeyw – which prepares and returns a string of keyword(s) to be sent to the front-end ICS process with the SETUP cmd;

·         setKeyw <val> - which analyses the passed string (i.e. val) and extract from it values to be inserted in the corresponding class widgets (it is used when loading a setup files).

4.        Add in the wrapper class at least the following public variables:

·         public variable devType “”

·         public variable cfgObj    “”

5.        If the class contains widgets of type icbpanEntry, add the following public method:

·         entryWdg – which returns the list of icbpanEntry widgets. See also NOTE 2 below.

 

Once a special uifClass is created you can pack it everywhere on the control panel by means of the configuration keywords (as described in section 5).

 

NOTE 1: The internal procedures of the ICB control panel rely on these methods and public variables to recognize and to distinguish the selected devices, to send a correct SETUP string and to correctly load/save a setup file. Therefore they must exist with names as reported above. If, during the panel construction, the methods or the public variables are not found an undefined behavior is to be expected.

 

NOTE 2: For all icbpanEntry widgets, registered with the method entryWdg, a validity check is done whenever the SETUP action button is clicked and before the SETUP command is actually sent to ICS, in order to verify if any entry field is empty or contains an illegal value (wrong type or outside valid range). The check applies only to the enabled icbpanEntry widgets belonging to selected devices. If an icbpanEntry widget should be excluded from this check, e.g. because the SETUP command ignores its value, although the associated device is selected, the device class code should take care of disabling it.

 

Figure 7: Example of special class construction

5         CONFIGURATION GUIDE

A set of keywords (defined in the dictionary ESO-VLT-DIC.ICB_CFG) is dedicated to the configuration of the ICS control GUI layout. They are described in the Table 3.

 

Keyword

Description

INS.UIF.NBOOKS

Specify how many notebooks should be present.
If missing, one  notebook will be created

INS.UIFi.TABS

Specify how many tabs should be present in notebook i
If missing, one tab will be created

INS.UIFj.LABELi

Specify label to be assigned to the tab “i” in the notebook “j”
If missing, default “” is assumed

INS.UIF. NAME

Name of the panel executable, i.e. without the extension .pan.

If missing, <INS.CON.PREFIX>ipanControl is assumed.

This keyword should normally be used only when more than one panel is used for the same ICS.

INS.FILTi.UIFCLASS

uifClass to be used for this device.
If missing, icbpan default class is used.
If empty (i.e. ""), no class will be used.

Same as INS.FILTi for all other type of devices.[5]

INS.FILTi.UIFNB

Index of notebook where widget for this device should appear
If missing, 1 is assumed.
Same as INS.FILTi for all other type of devices.1

INS.FILTi.UIFTB

Index of tab where widget for this device should appear.
If missing, 1 is assumed.
[6]
Same as INS.FILTi for all other type of devices.
1

INS.FILTi.UIFSPECIAL

If T, the coding of the states for the associated output field are those of an icb special device[7]. Needed when a default icbpan uifClass is used for an icb special device.
If missing or set to F, the coding of the states are those of an icb standard device.
Same as INS.FILTi for all other type of devices.

INS.SENSORi.UIFCOL

Specify the number of columns over which the widgets associated to a sensor device must be distributed.

If missing, and also UIFROW (see below) is missing, the default is 1, i.e. all widgets are aligned vertically.

INS.SENSORi.UIFROW

Specify the number of rows over which the widgets associated to a sensor device must be distributed.

INS.SENSORi.UIFWID

Specify the size, in characters, of the status widget associated to a sensor device.

If missing, 5 is assumed.

Table 3: configuration keywords for ICS control panel

The following example produces the layout shown in Figure 1 (see file xxmcfgINS.cfg).

 

# create two notebooks

INS.UIF.NBOOKS   2

 

#add in the first notebook two tabs

INS.UIF1.TABS    2

# add in the second notebook seven tabs

INS.UIF2.TABS    7

 

# configure the first notebook’s tabs with the following labels

INS.UIF1.LABEL1  "Motors"

INS.UIF1.LABEL2  "Lamps/shutters"

# configure the second notebook’s tabs with the following labels

INS.UIF2.LABEL1  "FCS"

INS.UIF2.LABEL2  "BARO"

INS.UIF2.LABEL3  "FCTC"

INS.UIF2.LABEL4  "CCC1"

INS.UIF2.LABEL5  "DIS1"

INS.UIF2.LABEL6  "ENCH"

INS.UIF2.LABEL7  "TEMP"

 

# place INS.LAMP1 device on the first notebook, second tab

INS.LAMP1.UIFNB    1

INS.LAMP1.UIFTB    2

# place INS.SHUT1 device on the first notebook, second tab

INS.SHUT1.UIFNB    1

INS.SHUT1.UIFTB    2

 

# do not include INS.MIRR2 device (special device)

INS.MIRR2.UIFCLASS ""

 

# place all sensors device on the second notebook; every device is placed in its own tabs

INS.SENSOR1.UIFNB  2

INS.SENSOR1.UIFTB  1

INS.SENSOR2.UIFNB  2

INS.SENSOR2.UIFTB  2

# INS.SENSOR2 is implemented on LCU as an icb special device. State coding must be set accordingly

INS.SENSOR2.UIFSPECIAL T

INS.SENSOR3.UIFNB  2

INS.SENSOR3.UIFTB  3

INS.SENSOR4.UIFNB  2

INS.SENSOR4.UIFTB  4

INS.SENSOR5.UIFNB  2

INS.SENSOR5.UIFTB  5

INS.SENSOR6.UIFNB  2

INS.SENSOR6.UIFTB  6

INS.SENSOR7.UIFNB  2

INS.SENSOR7.UIFTB  7

 

# assemblies

INS.ASSEMBLY3.UIFTB 4

 

Note 1: Every sensor device usually controls many sensors. It is a good idea therefore to place every single sensor device in a separate tab.

Note 2: If for any reason you don’t want that a class will be drawn, simply define the {device name}.UIFCLASS with an empty string.

 

See also other examples under icbpan/test/INS_ROOT/SYSTEM/COMMON/CONFIGFILES/icbpanTest*.cfg

5.1              Abnormal conditions reported by sensors

Normally the values read by sensors are displayed with black color. The color changes to red, thus signaling an abnormal condition, if all the following conditions are met:

  1. A scalar attribute of type dbLOGICAL must exist in the sensor device WS OLDB branch. Its name must be

alarm<i>

where <i> is the index corresponding to that sensor within the device, starting from 0 for the first sensor.

An example is available in icbpan/test/dbl/ icbpanTestIcs1.db

  1. Whenever the value of alarm<i> is TRUE, the value of the corresponding sensor is displayed in red. It is responsibility of the ICS developer to make sure that this attribute is set to TRUE when the conditions are met (e.g. through a OLDB Calculation Engine formula)

 

Example: we want that the value of the third sensor of device TEMP turns red if it is outside the range [5.2,40.4]. To achieve this, we add the alarm2 attribute to the TEMP OLDB point and associate to it a CE formula

//************************************************************************

// Device TEMP

//

POINT icbSEN_ESTERS :Appl_data:XXXX:ICS:DEVICES:TEMP

BEGIN

    ALIAS TEMP

    …..

#ifndef MAKE_VXWORKS

    ATTRIBUTE logical alarm2

    BEGIN

              // Do no raise alarms if value is illegal or monitoring not active (state not standby or online)

Definition IF([.state] < 2, 0, IF([.last(2)] = 9999, 0, IF([.last(2)] < 5.2, 1, IF([.last(2)]>40.4,1,0))))

    END

#endif

END

 

6         REFERENCE

6.1              icbpan

6.1.1                       icbpanLib.tcl

 

                                         

NAME

 icbpanCmd, icbpanCmdQueryCommands, icbpanCmdQueryParameters,

 icbpanExecCmd, icbpanWaitPid, icbpanDbRead, icbpanSelectAll,

 icbpanDeselectAll, icbpanEditCfgFile, icbpanSetLCUCfg,

 icbpanSaveAsSetup, icbpanSaveSetup, icbpanLoadSetup,

 icbpanLcuBoot, icbpanGetDevice, icbpanGetDevicePrefix,

 icbpanGetDeviceName, icbpanGetDeviceLcuId, icbpanGetDeviceLcuName,

 icbpanCfgCat, icbpanInsCat, icbpanIcsPrefix, icbpanIcsId,

 icbpanLcus - tcl procedures used within ICB control panel.

 

SYNOPSIS

 icbpanCmd       <envName><procName> <cmd> [parms] [timeout] [disp]

 icbpanCmdQueryCommands   <Process>

 icbpanCmdQueryParameters <Process> <Command>

 icbpanExecCmd            <args> [bg] [wait] [xterm]

 icbpanWaitPid            <pid>

 icbpanDbRead             <attr>

 icbpanSelectAll          <listAllDevices>

 icbpanDeselectAll        <listAllDevices>

 icbpanEditCfgFile        <file>

 icbpanSetLCUCfg          <INS>

 icbpanSaveAsSetup        <listAllDevices> <dic>

 icbpanSaveSetup          <allDevices> <file> <dic>

 icbpanLoadSetup          <allDevices> <file> <dic>

 icbpanLcuBoot            <lcuenv>

 icbpanGetDevice          <listAllDevices> <devName>

 icbpanGetDevicePrefix    <cfg object> <devType>

 icbpanGetDeviceName      <cfg object> <dev Type>

 icbpanGetDeviceLcuId     <cfg object> <dev Type>

 icbpanGetDeviceLcuName   <cfg object> <dev Type>

 icbpanCfgCat             <cfg object>

 icbpanInsCat             <cfg object>

 icbpanIcsPrefix          <cfg object>

 icbpanIcsId              <cfg object>

 icbpanLcus               <cfg object>

 

DESCRIPTION

 icbpanCmd

    sends a command to ICS front-end process and waits for last reply

 icbpanCmdQueryCommands

    query cmdManager for cmds accepted by Process

 icbpanCmdQueryParameters

    query cmdManager for parameters accepted by Command of Process

 icbpanExecCmd

    execute args; wait=0 return immediately; wait=1 waits completion

    of invoked process; xterm=1 start application in a new xterm;

    bg = "" doesn't start in background

 icbpanWaitPid

    wait until process terminate

 icbpanDbRead

    is the specific implementation of seq_dbReadSymbolic

 icbpanSelectAll, icbpanDeselectAll

    set/unset checkbutton for all devices in "listAllDevices"

 icbpanEditCfgFile

    invoke emacs on the cfg file

 icbpanSetLCUCfg

    invoke icbConfigSet on instrument INS

 icbpanSaveAsSetup, icbpanSaveSetup

    saves parameters of the selected devices to a file

 icbpanLoadSetup

    loads the content of a setup file and sets panel widgets

    accordingly

 icbpanLcuBoot

    reboot LCU lcuenv

 icbpanGetDevice

    return the object corresponding to the device <devName>.

 icbpanGetDevicePrefix

    return the prefix associated to the device type <devType>.

 icbpanGetDeviceName

    return the name associated to the device <devType>

 icbpanGetDeviceLcuId

    return the LCU index associated to the device <devType>

 icbpanGetDeviceLcuName

    return the LCU name associated to the device <devType>

 icbpanCfgCat

    return the configuration category associated to <cfg object>

 icbpanInsCat

    return the instrument category associated to <cfg object>

 icbpanIcsPrefix

    return the ICS prefix associated to <cfg object>

 icbpanIcsId

    return the ICS id used by stoo and associated to <cfg object>

 icbpanLcus

    return the ICS LCUs associated to <cfg object>

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

 

 

 

### generated by docDeroff ###

 

 


6.1.2                       icbpanGUIcfg.tcl

 

                                        

NAME

 icbpanGUIcfg - itcl class used to construct ICB control panel.

 

SYNOPSIS

 icbpanGUIcfg xxinsGUI xxinsCfg

 

DESCRIPTION

 This itcl class is an utility class which contains a set

 of methods to pack notebooks and control classes on the

 ICB control panel.

 

PUBLIC METHODS

 icbpanGUIcfg xxinsGUI xxinsCfg

    constructor. An object of type ctooCONFIG must be passed to

    properly read all the requested information.

 lcuBootMenu <menuPath>

    add on the specified panel menu (individuated by the passed menuPath

    string) commands to reboot LCU(s)

    (the number of added cmds correspond to the number of defined LCUs).

 wdgICScontrol <frameICS1>

    pack class icbpanICSControl on frame frameICS1.

 wdgICScmd <frameICS2>

    pack class icbpanICSCmd on frame frameICS2.

 funcICScontrol <frameFunc> <devicesList>

    pack class icbpanICSDevControl on frame frameFunc. DevicesList

    contains the number of configured devices. This method must be

    called after notebooks are created.

 createNotebooks <framesList>

    pack notebooks on frames extracted from framesList.

    The number of tabs in each notebook and the relative labels

    are extracted from INSi.UIFi.TABS and INSi.UIFi.LABELj.

    After notebooks construction the method reads the configuration

    file and places all configured devices in the specific

    notebook. The look and feel is controlled by a set of dedicated

    configuration keywords.

    At the end it returns the number of drawn devices as a list.

    The just created list could be used then as a parameter for

    the "funcICScontrol" method.

 getNotebooks <cv>

    return a list consisting of { <framesList> <framesGeometry> } where

    <framesList> is the list of notebook frames to be passed to createNotebooks

    <framesGeometry> is a list of items { <xCoord> <yCoord> <width> <height> }

    <cv> is the panel variable associated to the canvas where

    notebook frames are.

 setNotebookDim [<nbIdx 1>] [<width 300>] [<height 300>]

    set new dimension for the notebook identified by a number.

 setNotebookDimAll <framesGeometry>

    set new dimension for all notebooks in <framesGeometry>

    Every element of <framesGeometry> consists of <xCoord> <yCoord> <width> <height>

 setPanelDim [<framesGeometry/width >] [<height>]

    set new dimension for the panel.

    If two parameters are passed, they are interpreted as <width> <height>

    If only one parameter is passed, it is interpreted as <framesGeometry>

    as from getNotebooks

 initClass <cv> <dimList>

    initialize uifClasses and frames in the panel

    At the end it returns the number of drawn devices as a list.

    <cv> is the panel variable associated to the canvas where

    notebook frames are.

    <dimList> is the list of notebooks dimension

    Every element of <dimList> consists of <width> <height>

 

PRIVATE METHOD

 putUifClasses

    For every device defined in the cfg file, pack the relative

    class. The position (notebook+tab) is extracted from

    $devType.UIFNB and $devType.UIFTB (devType==INSi.CON.DEVICE); the

    class to be placed is read either from devType.UIFCLASS or

    extracted with the method getUifClass of icbpanUIF class.

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.3                       icbpanUIF.tcl

 

                                        

NAME

 icbpanUIF - itcl class used for managing icbpan devices classes

 

SYNOPSIS

 icbpanUIF handleUif -cfgObj $cfgObj

 

  where cfgObj is a ctooCONFIG object;

 

DESCRIPTION

 This class is used internally by the icbpan control panel to

 associate an uifClass to the corresponding devices. It constructs

 an internal keyed list containing pairs device/uifClass

 (the key is actually the device name).

 

PUBLIC METHODS

 icbpanUIF  xxx

    constructor. Calls two private methods. "defaultUifclasses"

    method simply fill a keyed list (defuif) with default

    associations; "initUifclasses" instead, by comparing

    current instrument settings with the default keyed list,

    extract and construct instrument specific keyed list (keylist).

    From this list, during panel construction, the uifClass to be drawn

    is extracted.

 getUifClass devType

    according to the passed "devType" the corresponding uifClass

    is returned.

 addUifClass devType className

    add in the keyed list a new pair device/uifClass.

 delUifClass devType

    delete an entry in the keyed list having devType as a key.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

CAUTIONS

 This class is used internally and should not be modified.

 

 

 

 

### generated by docDeroff ###

 

 


6.1.4                       icbpanICSControl.tcl

 

                                        

NAME

 icbpanState, icbpanStartup,

 icbpanShutdown - Tcl GUI procedures operating on the whole ICS

 

 

SYNOPSIS

 icbpanState <command>

 icbpanStartup

 icbpanShutdown

 

DESCRIPTION

 Tcl procedures, used within ICS panels to handle ICS global operations.

 

 icbpanState executes the state transition <command> for ICS

             <command> can be OFF STANDBY or ONLINE

 icbpanStartup executes a start-up of the ICS WS processes

 icbpanShutdown executes a shut-down of the ICS WS processes

 

 

 

 

### generated by docDeroff ###

 

 


6.1.5                       icbpanEntry.tcl

 

                                        

NAME

  icbpanEntry - UifEntry derived class

 

SYNOPSIS

  icbpanEntry  <widget-name>

 

DESCRIPTION

  icbpanEntry is a mega-widget which can be imported and configured

  with the panel editor.

  It inherits the standard UifEntry class and adds specific features

  required by icbpan:

 

  - validate entry value:   highlight background when a wrong value is

                            entered or undo "bad" typing

  - handle key events:      see SPECIFIC BINDINGS

  - return entry value

 

PUBLIC METHODS

  public method getSelected { updateBackground }

    - return entry value after checking for validity.

      Return empty string if entry value is not valid.

      If updateBackground=1, update background according to validity

      default=0 (do not update background)

  public method configHelp { txt }

    - configure short help text

  public method setValue { val }

    - set entry value

 

WIDGET OPTIONS

  valType     <string>      Value type (integer, float, any), default=float

  command     <string>      Command callback: evaluated when a non-empty value

                            was entered; optional, default={}. Adds entry value.

  justify     <string>      Where entered characters start, default=left

  undo        <logical>     Automatically undo "bad" typing (0=no, 1=yes),

                            default=no

  colBadVal   <string>      Background color when a "bad" char was entered,

                            default=red

  id          <string>      Entry id. Used to distinguish among different entry

                            types (e.g. user units versus encoder units)

 

SPECIFIC BINDINGS

  <KeyRelease>              Checks the value

  <KeyPress-Escape>         Clears the entry

  <ButtonRelease-3>         Clears the entry

  <Key-Up>                  Displays last entered value (or the value returned by

                            method getSelected)

  <Return>                  Returns the value

 

EXAMPLES

  $cv.icbpanMOTEnc config \

      -valType     integer \

      -command     [code $this encoderEnterCb] \

      -justify     right \

      -undo        0 \

      -colBadVal   red

 

SEE ALSO

  UifEntry

 

 

 

 

### generated by docDeroff ###

 

 


6.1.6                       icbpanLamp.tcl

 

                                        

NAME

 icbpanLamp - wrapper class for icbpanLamp_uifClass

 

SYNOPSIS

 icbpanLamp .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB LAMP device. The corresponding

 ibcpanLamp_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanLamp  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.7                       icbpanShutter.tcl

 

                                        

NAME

 icbpanShutter - wrapper class for icbpanShutter_uifClass

 

SYNOPSIS

 icbpanShutter .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB SHUT device. The corresponding

 ibcpanShutter_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanShutter  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.8                       icbpanNamedPos.tcl

 

                                        

NAME

 icbpanNamedPos - wrapper class for icbpanNamedPos_uifClass

 

SYNOPSIS

 icbpanNamedPos .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB motorized devices with discrete (named)

 positions, such as FILT, MIRR, OPTI etc. The corresponding

 ibcpanNamedPos_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanNamedPos  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.9                       icbpanContPos.tcl

 

                                        

NAME

 icbpanContPos - wrapper class for icbpanContPos_uifClass

 

SYNOPSIS

 icbpanContPos .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB POS device. The corresponding

 ibcpanContPos_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanContPos  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.10                   icbpanSlit2.tcl

 

                                         

NAME

 icbpanSlit2, icbpanSlit2Len, icbpanSlit2Wid - wrapper class for icbpanSlit2_uifClass

 

SYNOPSIS

 icbpanSlit2 .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB SLIT2 device. The corresponding

 ibcpanSlit2_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit -left/right). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanSlit2  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 

 

 


6.1.11                   icbpanGrat.tcl

 

                                        

NAME

 icbpanGrat - wrapper class for icbpanGrat_uifClass

 

SYNOPSIS

 icbpanGrat .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB GRAT device. The corresponding

 ibcpanGrat_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and two entry widget

 for setting position values (wlen/encoder + order). Finally a

 checkbutton is used to indicate if the corresponding device is

 selected for some actions.

 

PUBLIC METHODS

 icbpanGrat  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.12                   icbpanGratNoOrd.tcl

 

                                        

NAME

 icbpanGratNoOrd - wrapper class for icbpanGratNoOrd_uifClass

 

SYNOPSIS

 icbpanGratNoOrd .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB GRAT device. The corresponding

 ibcpanGratNoOrd_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and two entry widget

 for setting position values (wlen/encoder, without order). Finally a

 checkbutton is used to indicate if the corresponding device is

 selected for some actions.

 

PUBLIC METHODS

 icbpanGratNoOrd  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 

 


6.1.13                   icbpanDpol.tcl

 

                                         

NAME

 icbpanDpol - wrapper class for icbpanDpol_uifClass

 

SYNOPSIS

 icbpanDpol .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB DPOR device. The corresponding

 ibcpanDpol_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanDpol  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.14                   icbpanAdc.tcl

 

                                        

NAME

 icbpanAdc - wrapper class for icbpanAdc_uifClass

 

SYNOPSIS

 icbpanAdc .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB ADC device. The corresponding

 ibcpanAdc_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanAdc  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.15                   icbpanDrot.tcl

 

                                        

NAME

 icbpanDrot - wrapper class for icbpanDrot_uifClass

 

SYNOPSIS

 icbpanDrot .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB DROT device. The corresponding

 ibcpanDrot_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active) and the current position

 (named and in encoder unit). The class contains also an option

 button to select among various setup parameters and an entry widget

 for setting position values. Finally a checkbutton is used to

 indicate if the corresponding device is selected for some actions.

 

PUBLIC METHODS

 icbpanDrot  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. This method reads

    from the option button and entry widget the current user

    settings and prepare a string to be sent to ICS control process.

    This method is normally called when the SETUP cmd is invoked.

 setKeyw val

    extract from "val" the keyword parameter + value and fill the

    corresponding option button + entry. This method is called usually

    during a reading of a previously saved setup file.

 

PROTECTED METHODS

 updateWdg item

    this method is called to modify on-the-fly the appearance of

    the widgets. E.g. if a particular param. selection requires also some

    input values, the corresponding entry widget is enabled,

    otherwise it is disabled. User can override this method to

    implement some specific behavior.

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 


6.1.16                   icbpanSensor.tcl

 

 

                                        

NAME

 icbpanSensor - wrapper class for icbpanSensor_uifClass

 

SYNOPSIS

 icbpanSensor .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle sensor devices. The corresponding

 ibcpanSensor_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, the current simulation level

 (N=normal,S=simulate)  and the current device state. A checkbutton

 is used to indicate if the corresponding device is selected.

 

PUBLIC METHODS

 icbpanSensor  xxx

    constructor. Read from ICS configuration file the number of

    sensors, the corresponding names and descriptions. Dynamically

    construct a set of output widgets linked to OLDB; every widget displays

    the current value reported by the corresponding sensor. The

    description is used as a short help text.

    Calls "initFunction" which initialize every output widget with

    data read from OLDB. It also attach an OLDB event to display every

    change in the sensor's reported value. This is done by means of

    the public method "dbUpdate".

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 dbUpdate

    update output widgets associated to OLDB vector "last"

 evtDbRestart

    detach and attach event on OLDB vector "last"

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 isSensor

    used (internally) during the construction

    of the control panel to distinguish between a "normal" device

    and a "sensor" device (see icbpanGUIcfg).

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8), icbpanGUIcfg(8)

 

 

 

 

### generated by docDeroff ###

 

 

 

 

 


6.1.17                   icbpanPmt.tcl

 

                                        

NAME

 icbpanPmt - wrapper class for icbpanPmt_uifClass

 

SYNOPSIS

 icbpanPmt .w \

           -background Grey90 \

           -relief flat       \

           -cfgObj $cfgObj    \

           -cwp "<alias>${devName}" \

           -devType $devType]

 

  where cfgObj is a ctooCONFIG object;

        devType is extracted from INS.CON.DEVICE${i}

        devName is extracted from ${devType}.DEVNAME

 

DESCRIPTION

 Itcl wrapper class to handle ICB PMT (photomultiplier) device. The corresponding

 ibcpanPmt_uifClass contains a set of output widget (linked to OLDB)

 which in turn display the device name, keyword used to identify the

 device, the current simulation level (N=normal,S=simulate), the current

 device state, handset mode (H, if active), the current and the cumulated counts.

 Finally a checkbutton is used to indicate if the corresponding device is

 selected for some actions.

 

PUBLIC METHODS

 icbpanPmt  xxx

    constructor. Calls "initFunction" which initialize the option

    button with appropriate parameters.

 isSelected

    get the current status of the checkbutton (0/1).

 setSelected 0/1

    set the checkbutton state to 0 or 1 (unselected or selected).

 getKeyw

    returns the associated setup keyw. + value. Dummy

 setKeyw val

    This method is called usually during a reading of a previously

    saved setup file. Dummy

 

PUBLIC VARIABLES

 cfgObj

    ctooCONFIG object (configuration file interface)

 devType

    device type extracted from INS.CON.DEVICE${i}

 

FILES

    $INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg

 

ENVIRONMENT

    INS_ROOT        Instrument root area

    INTROOT         Integration area

    VLTROOT         VLT area

 

SEE ALSO

 ctooCONFIG(8)

 

 

 

 

### generated by docDeroff ###

 

 

6.2              xxipan

6.2.1                       xxipanControl.pan

 

                                        

NAME

xxipanControl - XXXX ICS stand-alone GUI

 

MENU BAR

"File" menu

    "Save"

        Save the current panel settings in setup file <panel name>.ins.

        Only settings for selected functions are saved.

    "Save as" Save the current panel settings in a setup file.

        Only settings for selected functions are saved.

    "Load"

        Load the contents of a setup file into the panel

    "Restart panel"

        Quit this panel and restart it (e.g. if Instrument configuration changed).

    "Quit"

        Quit this panel

 

"ICS" menu

    "Startup"

        Startup all ICS WS processes

    "Shutdown"

        Terminate all ICS WS processes

    "OFF"

        Send OFF command to all devices

    "STANDBY"

        Send STANDBY to all devices

    "ONLINE"

        Send ONLINE to all devices

 

"Devices" menu

    "Select all devices"

        Activate check button for all devices shown (see 3.1.2)

    "Deselect all devices"

        Deactivate check button for all devices shown (see 3.1.2)

    "OFF"

        Send OFF command to the selected devices

    "STANDBY"

        Send STANDBY to the selected devices

    "ONLINE"

        Send ONLINE to the selected devices

    "Simulate HW"

        Send SIMULAT to the selected devices

    "Use HW"

        Send STOPSIM to the selected devices

 

"LCU" menu

    "Set LCU cfg"

        Run icbConfigSet

    "Refresh scan"

        Execute scanDevOff + scanDevOn for all LCUs

    "Reboot LCUi"

        Reboot one LCU

 

"Maintenance" menu

    "Edit cfg file"

        Edit the Instrument Configuration file

 

"Tools" menu

    "logMonitor"

        Start the CCS utility logMonitor

    "Motors"

        "motei"

            Start the motor engineering interface

    "Lamps"

        "acroxInducer"

            Start the acromag digital I/O board engineering interface

    "Sensors"

        "acroxInducer"

            Start the acromag digital I/O board engineering interface

 

"Std. Options" menu

    "Refresh Database values"

        Refresh all OLDB values in the panel.

    "Re-Start Database events"

        Configure again all events attached to OLDB values.

        Useful e.g. after one LCU has rebooted.

 

"Help" menu

    Extended Help. Not implemented.

 

APPLICATION AREA

"Global State"

    It contains the following output widgets (from left to right):

        global ICS state

        global ICS sub-state (idle/busy)

        operational mode (simulation level)

        LCU state

 

"Single devices"

    Each device uifClass has the following widgets

        Check button to select the device for the next operation (e.g. SETUP)

        Device name

        Short-FITS device prefix

        Simulation flag

        State

        Handset flag (not for sensors)

        Status value(s)

        Encoder position (only for motors)

        Setup option button

        Setup input field(s) for numerical values

 

COMMAND FEEDBACK

    It shows the last commands and replies to/from xxiControl as

    well as the main ongoing actions (e.g. LCU rebooting).

 

SHORT HELP

    It shows information about the widget having the mouse focus.

 

ACTION BUTTONS

    "SETUP"

        Send a SETUP command to xxiControl for all selected devices

    "STOP"

        Emergency stop. All devices are stopped.

 

 

 

 

### generated by docDeroff ###

 

 

Appendix A. Multiple panels for the same ICS

 

Normally one stand-alone panel should be enough to test and integrate ICS. In some cases however it may be necessary, e.g. because the amount of ICS devices is too large, or simply more convenient, e.g.  because of several development sites or very different/special functionality of some devices, to have more than one ICS panel.

In such case the following rules must be followed:

 

  1. There must be one separate configuration file for each ICS panel. Such a file must contain only keywords related to the configuration of the ICS panel. The devices which should not appear in the panel, if any, should also be defined in the configuration file (see keyword *.*.UIFCLASS in Table 3 at page 15).

Except for the main ICS panel (provided that it follows the default naming scheme), the configuration file associated to an ICS panel must also register its name through the keyword INS.UIF.NAME (see Table 3 at page 15)

See the example in icbpan/test/INS_ROOT/SYSTEM/COMMON/CONFIGFILES/ icbpanTestINS1_UIF*.cfg

 

  1. The master configuration file, e.g. xxmcfgCONFIG.cfg, must define one separate configuration set for each ICS panel. Each of these configuration sets must contain the configuration file for the associated ICS panel and must not contain the configuration files for the other ICS panels.

See the example in icbpan/test/INS_ROOT/SYSTEM/COMMON/CONFIGFILES/ icbpanTestCONFIG.cfg

 

  1. The preparation of the main ICS panel must follow the procedure described in Chapter 4.

 

  1. For each of the other ICS panels, proceed as follows:
    1. Open the main ICS panel with the panel editor and save it with the name of the new panel, e.g. xxipanControl2.pan. Quit the panel editor.
    2. In the new panel file, replace the name (see e.g. xxmcfgCONFIG.cfg, keyword CONFIG.SETi.NAME) of the configuration set associated to the main ICS panel with the name of the configuration set associated to the new panel. From the UNIX shell:

Ø       tooReplace <main panel conf. set name> <new panel conf. set name> <new panel name>

Example:

Ø       tooReplace XXXX XXXX_UIF2 xxipanControl2.pan

    1. Edit the new panel with the panel editor, following what described in Chapter 4 (e.g. add or remove notebooks). Save it and quit the panel editor.
    2. Register the new panel in the Makefile.

See the examples in icbpan/test/ icbpan1ipanControl2.pan and icbpan/test/ icbpan1ipanControl3.pan

 

Appendix B. Porting older existing ICS panels to APR2004 layout

 

With the implementation of SPR VLTSW20030305 (icbpan 1.38 and higher) the standard layout of the ICS panel has changed, as well as the layout of the standard icbpan widgets.

Although existing panels should still continue to work, it is recommended to update them. This appendix aims to provide the necessary information for the upgrading.

  1. Due to the large amount of changes to the standard panel layout (several new menu options, a few standard frames removed, action buttons area added etc.) it is certainly faster to create the new GUI layout from scratch:
    1. Save the current contents of your nnipan module
    2. Follow the instructions in sections 4.1 and 4.2.
  2. If you have special device widgets, do as follows:
    1. Edit the special uifClass with the panel editor (see e.g. icbpanTestSpecial_uifClass.tcl):

                                                               i.      Delete the UifOutput widget devPrefix

                                                              ii.      Delete the UifOutputString widgets devSim and devHand

                                                           iii.      Move the UifOutputString widget devState to the right of UifOutput widget device

Modify its configuration as follows:

o        Font: Bold

o        List of elements:

§         1 OFF Red

§         2 LOADED Red

§         3 STANDBY Blue

§         4 ONLINE OliveDrab

                                                            iv.      Create a new UifOutputString widget devSimHset  and place it o the right of devState

Configure it as follows:

o        Length 4

o        Widget Name: devSimHset

o        Variable: devSimHset (DB not set)

o        List of elements:

§         0 “” Black

§         1 HSET Red

§         2 SIM Red

o        Short help: operational mode (blank = no simulation, no handset)

                                                              v.      If the class contains UifEntry widgets, replace them with icbpanEntry mega-widgets. Configure the new widgets as the old ones, in particular keep the old name (e.g. devSetupEnc) and width (e.g. 8).

    1. Edit the wrapper class (see e.g. icbpanTestSpecial.tcl) following the instructions at section 4.5.2, in particular for what concerns the icbpanEntry widgets. Note that the way how the value of the variable associated to such widgets is set differs from UifEntry. You should replace constructs like:

upvar #0 [$cv.devSetupData1 cget -variable] data

set data $value

with:

 $cv.devSetupData1 setValue $value

 

___oOo___



[1] icbpan automatically determines from the grating configuration which class between icbpanGrat and icbpanGratNoOrd should be used: if the configuration keywords INS.GRATi.ORDERMAXi are not defined or have zero value, then icbpanGratNoOrd  is used, otherwise icbpanGrat.

[2] The classes icbpanSensorVer, icbpanSensorHor and icbpaneSensorSqr should be considered obsolete; they are kept only for backward compatibility reasons. Use instead the keywords INS.SENSORi.UIFCOL or INS.SENSORi..UIFROW (see Table 3) to determine the geometrical distribution of the sensor widgets in the panel.

[3] This class replaces icbpanICSControl, which should be considered obsolete and is kept only for backward compatibility reasons. The related commands have been moved to new menu options (VLTSW20030305 item 3)

[4] After implementation of the class icbpanGratNoOrd (see also SPR VLTSW20050206), this example is still valid as general example of class overloading. It should instead be considered obsolete for the specific case of gratings without order selection (see also Table 1at page 8).

[5] This keyword applies also to assemblies (INS.ASSEMBLYi).

[6] For backward compatibility reasons, the default for assemblies is 0, i.e. no class will be used.

[7] For historical reasons, the coding of states for icb standard devices (e.g. lamp in the Template Instrument) and special devices (e.g. yyyy in the Template Instrument) are different. If an instrument has a special device (e.g. a sensor) with the same functionality as one of the icb standard devices, but different hardware, one of the standard uifClass widgets provided by icbpan could be used. In this case, in order to get the right display of the state, the keyword UIFSPECIAL must be T.