00001 /* 00002 * ALMA - Atacama Large Millimiter Array 00003 * (c) European Southern Observatory, 2002 00004 * Copyright by ESO (in the framework of the ALMA collaboration), 00005 * All rights reserved 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00020 * MA 02111-1307 USA 00021 */ 00022 00023 #ifndef _MASTERCOMP_IDL_ 00024 #define _MASTERCOMP_IDL_ 00025 00026 #include <acscomponent.idl> 00027 #include <baci.idl> 00028 #include <ACSErrTypeCommon.idl> 00029 00030 #pragma prefix "alma" 00031 00032 00033 module ACS 00034 { 00035 typedef string StateName; 00036 typedef string ModeName; 00037 00038 // ALMA-subsystem superstates (not extensible) 00039 const StateName SUBSYSSTATE_AVAILABLE = "AVAILABLE"; 00040 const StateName SUBSYSSTATE_OFFLINE = "OFFLINE"; 00041 const StateName SUBSYSSTATE_ONLINE = "ONLINE"; 00042 const StateName SUBSYSSTATE_OPERATIONAL = "OPERATIONAL"; 00043 const StateName SUBSYSSTATE_ERROR = "ERROR"; 00044 00045 // system-defined substates (of superstate SUBSYSSTATE_OFFLINE) 00046 const StateName SUBSYSSTATE_SHUTDOWN = "SHUTDOWN"; 00047 const StateName SUBSYSSTATE_INITIALIZING_PASS1 = "INITIALIZING_PASS1"; 00048 const StateName SUBSYSSTATE_PREINITIALIZED = "PREINITIALIZED"; 00049 const StateName SUBSYSSTATE_INITIALIZING_PASS2 = "INITIALIZING_PASS2"; 00050 const StateName SUBSYSSTATE_REINITIALIZING = "REINITIALIZING"; 00051 const StateName SUBSYSSTATE_SHUTTINGDOWN_PASS1 = "SHUTTINGDOWN_PASS1"; 00052 const StateName SUBSYSSTATE_PRESHUTDOWN = "PRESHUTDOWN"; 00053 const StateName SUBSYSSTATE_SHUTTINGDOWN_PASS2 = "SHUTTINGDOWN_PASS2"; 00054 00055 // Note that user-defined substates of the superstates SUBSYSSTATE_ONLINE and 00056 // SUBSYSSTATE_OPERATIONAL must use names that are different from the above 00057 00058 // subsystem modes are not yet supported; we declare the 3 system modes here anyway 00059 const ModeName SUBSYSMODE_SIMULATION = "SIMULATION"; 00060 const ModeName SUBSYSMODE_STANDALONE = "STANDALONE"; 00061 const ModeName SUBSYSMODE_DEGRADED = "DEGRADED"; 00062 00063 00064 00070 interface MasterComponentReadOnly : ACS::CharacteristicComponent 00071 { 00077 readonly attribute ACS::ROstringSeq currentStateHierarchy; 00078 00079 00080 // todo: add method(s) that list describe(s) all states, including those 00081 // which are defined by the particular subsystem; 00082 // to be used for GUI display etc. 00083 }; 00084 00085 00092 interface MasterComponent : MasterComponentReadOnly 00093 { 00094 // Events that can be sent to the master component. 00095 // We assume that the optional subsystem-specific substates of 'ONLINE' and 'OPERATIONAL' 00096 // don't add any new events (i.e., they are read-only from an outside point of view) 00097 enum SubsystemStateEvent { 00098 SUBSYSEVENT_INITPASS1, 00099 SUBSYSEVENT_INITPASS2, 00100 SUBSYSEVENT_REINIT, 00101 SUBSYSEVENT_START, 00102 SUBSYSEVENT_STOP, 00103 SUBSYSEVENT_SHUTDOWNPASS1, 00104 SUBSYSEVENT_SHUTDOWNPASS2, 00105 SUBSYSEVENT_ERROR 00106 }; 00107 00112 void doTransition(in SubsystemStateEvent event) 00113 raises (ACSErrTypeCommon::IllegalStateEventEx); 00114 00115 }; 00116 00117 }; 00118 00119 #endif