public final class DomeMaster extends ShelterMaster implements DomeControlling, Reloadable
WeatherSurveying interface and to the roof via the
DomeOperating interface. Since version 1.1 also the command
handling abilities (RmiCommandListener,
RmiAcknowledgeCaster and RmiDoneCaster)
are embedded within the environment
master rather than within the roof receiver.
To allow remote control of the environment this class supports building
control via the BuildingControlling interface.
This interface allows the
remote registering and deregistering of command casters and can thus be
used to change the roof mode between automatic, when the command caster is
the SCS, and manual, when the registered command caster is a launch box.
The principal idea is that the roof may only have a single driver object
registered to itself, while the weather station can get an entire list of
driveres, all registered sequentially by calls to the weather station's
WeatherSurveying.registerSensorDriver(io.Driver) method.
For implementations where the weather station and the roof control uses
the same hardware for reading sensors and operating relays, a common
driver can be used if the #KEY_COMMONDRIVER is present. In this
case, this single
driver is constructed and initialized once and then registered
at both, the roof operator and the weather surveyer. If this key is not
set, the ShelterMaster.KEY_WEATHERDRIVER and the #KEY_ROOFDRIVER are used
to specify two different drivers for the roof operator (single driver only)
and the weather surveyer (can be a list of drivers), respectively.
If the host is booted and the environment master is started for the first
time, the GenericMaster.KEY_AUTOMATIC key determines whether automatic roof
control is immediately enabled: If this property is true the environment
master tries to register at the #KEY_ENVIRONMENTCASTER as a command
listener immediately after startup, otherwise no command caster is
registered at. If the environment master starts up in manual mode the
#KEY_STARTUPROOF is read and the actual position of the roof is
compared to the desired position. Possible values of #KEY_STARTUPROOF
are:
close to close the roof if found open at boot, open to open
the roof if found close, indifferent if the roof should be left
in whatever state encountered. See also #ROOF_OPEN,
#ROOF_CLOSE, and #ROOF_INDIFFERENT.
If the weather station is hosted on the same machine as the roof control
it may be advisable to directly link bad-weather events to a close-roof
command, in case of lost connection to the SCS. If this behaviour is
desired, the ShelterMaster.KEY_DIRECTCLOSE key should point to true. For
direct opening, the ShelterMaster.KEY_DIRECTOPEN may be used. Note that
direct linking is only enabled in automatic mode.
Note that the ReceiverTorso.KEY_BIND-key only determines if the environment
master should nail its building control ability to the rmi-registry. The
binding of the weather station and of the roof receiver is determined within
their own property files.
GenericMaster.StandaloneReceiverTorso.CommandHandlerPropertyResources.Load, PropertyResources.URLResource| Modifier and Type | Field and Description |
|---|---|
private static boolean |
DEFBIND
The default binding behavior of the building control.
|
private static String |
DEFBINDNAME
The default binding name of the environment master.
|
private static long |
DEFCLOSEHATCHTIME
The default timeout on total close, 5min.
|
private static long |
DEFCLOSESLITTIME
The default timeout on total close, 5min.
|
private static long |
DEFCLOSETIME
The default timeout on total close, 5min.
|
private static long |
DEFFOLLOWTIME
The default limit switch reset time, 5 sec.
|
private static long |
DEFHOMETIME
The default limit switch reset time, 5 sec.
|
private static long |
DEFNIGHTTIME
The default minimum remaining night time.
|
private static long |
DEFOPENHATCHTIME
The default timeout on total open, 5min.
|
private static long |
DEFOPENSLITTIME
The default timeout on total open, 5min.
|
private static long |
DEFOPENTIME
The default timeout on total open, 5min.
|
private static long |
DEFPOWERTIME
The default power switching time, 5 sec.
|
private static long |
DEFSTOPTIME
The default limit switch reset time, 5 sec.
|
static String |
KEY_CLOSEHATCHTIME
The time to close the hatch.
|
static String |
KEY_CLOSESLITTIME
The time to close the slit
|
static String |
KEY_FOLLOWTIME
The key for the time required for moving the dome to any position.
|
static String |
KEY_HOMETIME
The key for the time required for homing.
|
static String |
KEY_OPENHATCHTIME
The time to open tha hatch.
|
static String |
KEY_OPENSLITTIME
The time to open the slit.
|
static String |
KEY_POWERTIME
The key for the time required for power chances.
|
static String |
KEY_STOPTIME
The key for the time required for homing.
|
KEY_CHECK, KEY_CHECKINTERVALL, KEY_CLOSESHELTER, KEY_CLOSETIME, KEY_DIRECTCLOSE, KEY_DIRECTOPEN, KEY_LIGHTSWITCH, KEY_NIGHTREMAIN, KEY_NIGHTTIME, KEY_OPENSHELTER, KEY_OPENTIME, KEY_SHELTER, KEY_SHELTERDRIVER, KEY_STARTUPSHELTER, KEY_WEATHER, KEY_WEATHERDRIVER, shelter, SHELTER_CLOSE, SHELTER_INDIFFERENT, SHELTER_OPENDEFUNIQUE, KEY_ABORTTIME, KEY_AUTOMATIC, KEY_COMMTIME, KEY_COMMUNICATOR, KEY_DRIVERS, KEY_HISTORYDB, KEY_INITTIME, KEY_NODB, KEY_OBSERVEDB, KEY_OVERRULEAUTO, KEY_PARKTIME, KEY_PERMISSIONDB, KEY_PROPOSALDB, KEY_QUITTIME, KEY_REAUTO, KEY_RESETTIME, KEY_SET, KEY_SHUTDOWNDELAY, KEY_STATUSTIME, KEY_TARGETDB, KEY_TASKDB, KEY_UNIQUE, KEY_USERDB, lastabort, lastinit, lastpark, lastreset, telescopeKEY_BIND, KEY_BINDNAME, KEY_COMMANDCASTER, KEY_ERRORCOOLKEY_ALIVE, KEY_EXPORTPORT, KEY_INIT, KEY_LISTENERNAME, KEY_RETRY, KEY_RETRYSLEEPKEY_NOINITONCREATE, POSTFIX_ALPHABET, POSTFIX_BYTES, POSTFIX_DIR, POSTFIX_EXT, POSTFIX_FILE, POSTFIX_LIST, POSTFIX_MODTIME, POSTFIX_URLKEY_LISTSEPARATOR, KEY_MAPKEYVALUECHAR, KEY_MAPSEPARATORNAMING_EXTENSIONNAMING_EXTENSIONKEY_INITDEPTHKEY_URLRESOURCES, KEY_URLUSECONFIG, KEY_URLUSECURRENT, KEY_URLUSEHOMECONFIG, KEY_CLASS| Constructor and Description |
|---|
DomeMaster(Map<String,String> prop)
Constructs a new environment master.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
closeHatch()
Closes the hatch of the dome.
|
boolean |
closeSlit()
Closes the slit of the dome.
|
boolean |
followDome(double ra,
double de)
Follows the dome at the sky position indicated.
|
boolean |
followSun()
Follows the the anti-solar position.
|
protected int |
getAcknowledgeNumber(CommandEvent cmd)
Returns the number of acknowledge events produced for each command.
|
protected long |
getCompletionTime(CommandEvent cmd,
int acknr)
Returns the individual completion times.
|
boolean |
homeDome()
Moves the dome to its home position and stops there.
|
protected boolean |
initializeMaster(CommandEvent cmd)
Initializes the environment.
|
static void |
main(String[] arg)
Starts the environment master with the given properties.
|
boolean |
moveDome(double az)
Moves the dome to the azimuth indicated and stops there.
|
boolean |
openHatch()
Opens the hatch of the dome.
|
boolean |
openSlit()
Opens the slit of the dome.
|
protected boolean |
parkMaster(CommandEvent cmd)
Parks the environment, first part.
|
boolean |
powerOff()
Powers down the roof if in manual mode.
|
boolean |
powerOn()
Powers up the roof if in manual mode.
|
protected boolean |
processCommand(CommandEvent cmd,
int acknr)
Process the command.
|
protected void |
quitMaster(CommandEvent cmd)
Quits the environment, first part.
|
double |
rescanned(String key,
String old,
String newval)
On reload, we throw an exception if the driver changed, but not if the
configuration of the driver changed.
|
protected boolean |
resetMaster(CommandEvent cmd)
Resets the environment.
|
boolean |
stopDome()
Stops the dome.
|
accepts, automatic, close, direct, exit, initStep, manual, open, quit, reload, setDirectClose, setDirectOpen, statusMaster, weatherChangedabortMaster, addErrorListener, addRmiErrorListener, createCommunicator, createCommunicator, external, formatWithGlobals, getAllDrivers, getDriver, getHistorySql, getObserveSql, getOffsetCaster, getParameterByKey, getParameterByName, getParameterCluster, getParameterValueByKey, getParameterValueByName, getPermissionSql, getProposalSql, getStatus, getTargetSql, getTaskSql, getUnique, getUniqueId, getUserSql, initialize, isAlive, isAuto, isManual, isPassive, park, reset, resetAlarm, resetAllDrivers, restartAllDrivers, revert, rmiAddParameter, rmiCommand, rmiGet, rmiGetAllParameterNames, rmiRemoveParameter, rmiSet, setLastError, setOff, setParameterValueByKey, setParameterValueByName, setPassive, shutdown, zeroAllOmcaddRmiAcknowledgeListener, addRmiDoneListener, bindDefault, containsRemoteProperty, deregisterAtCaster, equals, getLastError, getRemoteProperties, getRemoteProperty, hashCode, notifyAcknowledgeListener, notifyDoneListener, registerAtCaster, removeRmiAcknowledgeListener, removeRmiDoneListener, sendAllPrematureDone, sendPrematureDone, setRemoteProperty, toString, unbindDefaultbindToRegistry, getBindName, isValid, notifyErrorListener, removeErrorListener, removeRmiErrorListener, sendError, sendError, sendError, sendStatus, sendStatus, sendStatus, unbindFromRegistryallBound, blockBinding, blockBinding, disconnect, getIP, getListenerName, isConnected, listenerName, releaseBinding, releaseBinding, startBinding, startBindingclone, createFrom, createFrom, createFrom, createInstance, getApplet, getAsResources, getLocate, getPropertiesToKey, getPropertiesToKey, getResource, getResourceAsStream, getResourceFromKey, getResources, hasLocalURLs, initProperties, keyCreate, keyCreate, reload, setAppletaugment, augment, augment, augment, augment, defaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsEnums, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, isNew, parseObject, parseObject, removeProperty, requires, setObject, setProperties, setProperty, stringPropertiesfinalize, getClass, notify, notifyAll, wait, wait, waitclose, open, quit, setDirectClose, setDirectOpenautomatic, external, getStatus, initialize, manual, park, reset, setPassivereloadbindToRegistry, isValid, unbindFromRegistryremoveErrorListenergetListenerNamedisconnect, isConnecteddefaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, parseObject, removeProperty, setObject, setProperty, stringPropertiespublic static final String KEY_POWERTIME
public static final String KEY_HOMETIME
public static final String KEY_STOPTIME
public static final String KEY_FOLLOWTIME
public static final String KEY_OPENHATCHTIME
public static final String KEY_OPENSLITTIME
public static final String KEY_CLOSEHATCHTIME
public static final String KEY_CLOSESLITTIME
private static final boolean DEFBIND
private static final String DEFBINDNAME
private static final long DEFOPENHATCHTIME
private static final long DEFOPENSLITTIME
private static final long DEFCLOSEHATCHTIME
private static final long DEFCLOSESLITTIME
private static final long DEFPOWERTIME
private static final long DEFHOMETIME
private static final long DEFSTOPTIME
private static final long DEFFOLLOWTIME
private static final long DEFNIGHTTIME
private static final long DEFOPENTIME
private static final long DEFCLOSETIME
public DomeMaster(Map<String,String> prop) throws RemoteException
#init method. As common in final, rmi-enabled classes,
the environment master calls exportObject on the
UnicastRemoteObject server class.RemoteExceptionpublic double rescanned(String key, String old, String newval)
rescanned in interface Reloadablerescanned in class GenericMasterpublic boolean powerOn()
throws RemoteException
DomeOperating.powerOn() method.powerOn in interface DomeControllingRemoteExceptionpublic boolean powerOff()
throws RemoteException
DomeOperating.powerOff() method.powerOff in interface DomeControllingRemoteExceptionpublic boolean followDome(double ra,
double de)
throws RemoteException
followDome in interface DomeControllingra - Right ascension of sky position in degrees, actual equ.de - Declination of sky position in degrees, actual equ.RemoteExceptionpublic boolean followSun()
throws RemoteException
followSun in interface DomeControllingRemoteExceptionpublic boolean moveDome(double az)
throws RemoteException
moveDome in interface DomeControllingaz - Astronomical azimuth (S=0, W=90) in degrees, actual equ.RemoteExceptionpublic boolean homeDome()
throws RemoteException
homeDome in interface DomeControllingRemoteExceptionpublic boolean stopDome()
throws RemoteException
stopDome in interface DomeControllingRemoteExceptionpublic boolean openSlit()
throws RemoteException
openSlit in interface DomeControllingRemoteExceptionpublic boolean openHatch()
throws RemoteException
openHatch in interface DomeControllingRemoteExceptionpublic boolean closeSlit()
throws RemoteException
closeSlit in interface DomeControllingRemoteExceptionpublic boolean closeHatch()
throws RemoteException
closeHatch in interface DomeControllingRemoteExceptionprotected int getAcknowledgeNumber(CommandEvent cmd)
getAcknowledgeNumber in class ShelterMasterprotected long getCompletionTime(CommandEvent cmd, int acknr)
getCompletionTime in class ShelterMastercmd - The command to process.acknr - The number of the acknowledge that will be sent back.protected boolean processCommand(CommandEvent cmd, int acknr)
DomeOperating
instance only.processCommand in class ShelterMasterprotected boolean resetMaster(CommandEvent cmd)
resetMaster in class GenericMastercmd - Non-null in automatic mode.protected boolean parkMaster(CommandEvent cmd)
parkMaster in class GenericMastercmd - Non-null in automatic mode.protected void quitMaster(CommandEvent cmd)
quitMaster in class GenericMastercmd - Non-null in automatic mode, ignored in this implementationprotected boolean initializeMaster(CommandEvent cmd)
initializeMaster in class GenericMastercmd - Non-null in automatic mode.public static void main(String[] arg) throws RemoteException
RemoteException