Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagecpp
titleSystemErr.xml
linenumberstrue
collapsetrue
<?xml version="1.0" encoding="ISO-8859-1"?>
<Type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="Alma/ACSError" xsi:schemaLocation="Alma/ACSError ACSError.xsd" name="SYSTEMErrSystemErr" type="900907" _prefix="acsws">
        <ErrorCode name="AlreadyInAutomatic" 
                   shortDescription="Already in automatic mode" 
                   description="Trying to set automatic mode, failed. It has already been set"/>
        <ErrorCode name="PositionOutOfLimits" 
                   shortDescription="Position out of limits" 
                   description="Command tries to move the telescope out of limits"/>
        <ErrorCode name="ProposalNotYetReady" 
                   shortDescription="Proposal is not ready" 
                   description="Proposal is not ready"/>
        <ErrorCode name="InvalidProposalStatusTransition" 
                   shortDescription="Database: Invalid proposal status" 
                   description="Trying to set an invalid status for the proposa."/>
        <ErrorCode name="ImageAlreadyStored" 
                   shortDescription="Image already stored" 
                   description="Image has already been stored in the database."/>
        <ErrorCode name="CameraIsOff" 
                   shortDescription="camera is off" 
                   description="Trying to take exposure with camera off."/>
        <ErrorCode name="SchedulerAlreadyRunning" 
                   shortDescription="Scheduler is already running" 
                   description="Trying to start scheduler, but is already has been started."/>
        <ErrorCode name="SchedulerAlreadyStopped" 
                   shortDescription="Scheduler is already stopped" 
                   description="Trying to stop scheduler, but is already has been stopped."/>
        <ErrorCode name="NoProposalExecuting" 
                   shortDescription="No proposal is executing" 
                   description="Trying to retrieve an executing proposal, but no proposal is executing."/>
        <ErrorCode name="SystemInAutoMode" 
                   shortDescription="System is in automatic mode" 
                   description="Trying to execute a command in console while the system is in automatic mode."/>
        <ErrorCode name="CannotOpenDevice" 
                   shortDescription="Can't open device" 
                   description="Can't open THE device."/>
</Type>

...

Code Block
languagecpp
titleConsole.idl
linenumberstrue
collapsetrue
#ifndef _CONSOLE_IDL_
#define _CONSOLE_IDL_

/*******************************************************************************
*    ACS Community - https://github.com/ACS-Community/ACS-Workshop
*    
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation; either
*    version 2.1 of the License, or (at your option) any later version.
*    
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*    
*    You should have received a copy of the GNU Lesser General Public
*    License along with this library; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
*/

#include <acscomponent.idl>
#include <Types.idl>
#include "SYSTEMErrSystemErr.idl"

#pragma prefix "acsws"


/** 
 * @file Console.idl
 * SYSTEMErrSystemErr Console IDL file
 */

module CONSOLE_MODULE 
{
	
	/** @interface Console
	 * Operator's interface to set automatic and manual modes.
	 * Grants manual access to low level components.
	 */
	interface Console :  ACS::ACSComponent
	{
	/**
	 * Set the automatic / manual mode for the operator. Raises an exception 
	 * if the automatic mode is asked twice.
	 *
	 *  @param mode if true then automatic mode otherwise manual mode.
	 *  @return void
	 */
	void setMode(in boolean mode)
		raises(SYSTEMErrSystemErr::AlreadyInAutomaticEx);
	
	/**
	 * Get the current operator's mode. 
	 *
	 *  @return current operator's mode
	 */
	boolean getMode();
	
	/**
	 * Set the camera on.
	 *
	 *  @return void
	 */
	void cameraOn()
		raises (SYSTEMErrSystemErr::SystemInAutoModeEx);
	
	/**
	 * Set the camera off.
	 *
	 *  @return void
	 */
	void cameraOff()
		raises (SYSTEMErrSystemErr::SystemInAutoModeEx);
	
	/**
	 * Move telescope in synchronous mode. Raises an exception if the
	 * requested position is out of limits.
	 *
	 *  @coordinates az, el coordinates
	 *  @return void
	 */    
	void moveTelescope(in TYPES::Position coordinates) 
		raises(SYSTEMErrSystemErr::PositionOutOfLimitsEx, SYSTEMErrSystemErr::SystemInAutoModeEx);

	/**
	 * Current telescope position. 
	 *
	 *  @return Telescope position
	 */    
	TYPES::Position getTelescopePosition();
	
	/**
	 * Get an image from the camera (from actual position of telescope).
	 *
	 *  @return Image from the camera
	 */    
	TYPES::ImageType getCameraImage()
		raises(SYSTEMErrSystemErr::SystemInAutoModeEx, SYSTEMErrSystemErr::CameraIsOffEx);

	 /* Camera settings */

	/**
	 * Set the RGB configuration of the camera 
	 * @param rgbConfig the TYPES::RGB configuration
	 */
	void setRGB(in TYPES::RGB rgbConfig)
		raises(SYSTEMErrSystemErr::CameraIsOffEx);

	/**
	 * Set the pixel bias configuration of the camera 
	 * @param bias the pixel bias configuration
	 */
	void setPixelBias(in long bias)
		raises(SYSTEMErrSystemErr::CameraIsOffEx);

	/**
	 * Set the reset level configuration of the camera 
	 * @param resetLevel the reset level configuration
	 */
	void setResetLevel(in long resetLevel)
		raises(SYSTEMErrSystemErr::CameraIsOffEx);
	};
};

#endif

...

Code Block
languagecpp
titleDataBase.idl
linenumberstrue
collapsetrue
#ifndef _DATABASE_IDL_
#define _DATABASE_IDL_

/*******************************************************************************
*    ACS Community - https://github.com/ACS-Community/ACS-Workshop
*    
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation; either
*    version 2.1 of the License, or (at your option) any later version.
*    
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*    
*    You should have received a copy of the GNU Lesser General Public
*    License along with this library; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
*/

#include <acscomponent.idl>
#include <Types.idl>
#include "SYSTEMErrSystemErr.idl"

#pragma prefix "acsws"


/** 
 * @file Database.idl
 * SYSTEMErrSystemErr Database IDL File
 */

module DATABASE_MODULE
{
	/** @interface Database
	 *  Interface to get access to the UOS database
	 */
	interface DataBase : ACS::ACSComponent
	{
		/**
		 * Stores a new Proposal.
		 * 
		 * @param targets Target list composing this proposal.
		 * @return Assigned proposal ID (pid).
		 */
		long storeProposal (in TYPES::TargetList targets);
		
		
		const long STATUS_INITIAL_PROPOSAL = 0;
		const long STATUS_NO_SUCH_PROPOSAL = -999; // it is not recomended to use this constant. this constant may be removed in future.
		
		/** 
		 * Get the current proposal status for the given
		 * proposal.
		 *
		 * @param pid Proposal ID
		 * @return status
		 */
		long getProposalStatus(in long pid);
		
		/** 
		 * Remove proposal.
		 *
		 * @param pid Proposal ID
		 */
		void removeProposal(in long pid);

		/**
		 * Retuns all images for a given proposal. 
		 * Raises an exception if proposal has not been 
		 * executed yet.
		 *
		 * @param pid Proposal ID
		 * @return Image list that belongs to this proposal
		 */
		TYPES::ImageList getProposalObservations(in long pid)
			raises(SYSTEMErrSystemErr::ProposalNotYetReadyEx);

		/**
		 * Returns stored proposals which have not been executed yet.
		 *
		 * @return Proposals with queued status. If there are no 
		 * pending proposals returns an empty list
		 */
		TYPES::ProposalList getProposals();
		
		/**
		 * Set the proposal status. Raises an exception if the change is not from
		 * queued(0) to running(1) or from running(1) to ready(2).
		 *
		 * @param pid Proposal ID
		 * @param tid target ID
		 * @return None
		 */
		void setProposalStatus(in long pid, in long status)
			raises(SYSTEMErrSystemErr::InvalidProposalStatusTransitionEx);

		/**
		 * Stores an image for a given proposal and target. Raises an exception
		 * if an image has already been stored for the given 
		 * tid and pid.
		 *
		 * @param pid Proposal ID
		 * @param tid target ID
		 * @return None
		 */
		void storeImage(in long pid, 
				in long tid,
				in TYPES::ImageType image)
			raises(SYSTEMErrSystemErr::ImageAlreadyStoredEx); // TODO raise also new exception "ProposalDoesNotExist"
		/**
		 * Clean all the proposals
		 */
		void clean();
	};
};

#endif

...

Code Block
languagecpp
titleInstrument.idl
linenumberstrue
collapsetrue
#ifndef _INSTRUMENT_IDL_
#define _INSTRUMENT_IDL_

/*******************************************************************************
*    ACS Community - https://github.com/ACS-Community/ACS-Workshop
*    
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation; either
*    version 2.1 of the License, or (at your option) any later version.
*    
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*    
*    You should have received a copy of the GNU Lesser General Public
*    License along with this library; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
*/

#include <acscomponent.idl>
#include <Types.idl>
#include "SYSTEMErrSystemErr.idl"

#pragma prefix "acsws"


/** 
 * @file Instrument.idl
 * SYSTEMErrSystemErr Instrument IDL file
 */

module INSTRUMENT_MODULE 
{
	/********************************************************************/
	/** @interface Instrument
	 *  This is the Webcam interface for the 50mm telescope.
	 */
	interface Instrument : ACS::ACSComponent
	{
	/**
	 * Turns the Instrument camera on.
	 *
	 * @return None
	 */
	void cameraOn ();

	/**
	 * Turns the Instrument off.
	 * A NULL string as the target identifier indicates that no image file
	 * should be saved.
	 *
	 * @todo Function should be refactored so that only one operation is performed.
	 *
	 * @return None
	 */
	void cameraOff ();

	/**
	 * Retrieve image from the Instrument. Raises an exception if the 
	 * camera is not on.
	 *
	 * @return array of longs containing the image pixels
	 */
	TYPES::ImageType takeImage(in long exposureTime)
		raises(SYSTEMErrSystemErr::CameraIsOffEx);
	
	/* Camera settings */

	/** 
	 * Set the RGB configuration of the camera 
	 * @param rgbConfig the TYPES::RGB configuration
	 */
	void setRGB(in TYPES::RGB rgbConfig)
		raises(SYSTEMErrSystemErr::CameraIsOffEx);
	
	/** 
	 * Set the pixel bias configuration of the camera 
	 * @param bias the pixel bias configuration
	 */
	void setPixelBias(in long bias)
		raises(SYSTEMErrSystemErr::CameraIsOffEx);
	
	/** 
	 * Set the reset level configuration of the camera 
	 * @param resetLevel the reset level configuration
	 */
	void setResetLevel(in long resetLevel)
		raises(SYSTEMErrSystemErr::CameraIsOffEx);
	};
};

#endif

...

Code Block
languagecpp
titleScheduler.idl
linenumberstrue
collapsetrue
#ifndef _SCHEDULER_IDL_
#define _SCHEDULER_IDL_

/*******************************************************************************
*    ACS Community - https://github.com/ACS-Community/ACS-Workshop
*    
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation; either
*    version 2.1 of the License, or (at your option) any later version.
*    
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*    
*    You should have received a copy of the GNU Lesser General Public
*    License along with this library; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
*/

#include <acscomponent.idl>
#include "SYSTEMErrSystemErr.idl"

#pragma prefix "acsws"


/** 
 * @file Scheduler.idl
 * SYSTEMErrSystemErr Scheduler IDL file
 */

module SCHEDULER_MODULE
{
	/** @interface Scheduler
	 *  This is a simple scheduler for the SYSTEMErrSystemErr
	 */
	interface Scheduler : ACS::ACSComponent
	{
	/**
	 * Start the scheduler.
	 * The scheduler will loop through all available proposals,
	 * either until all proposals are done or until the stop method is called.
	 * Raises an exception if called twice.
	 * @return None
	 */
	void start ()
		raises(SYSTEMErrSystemErr::SchedulerAlreadyRunningEx);

	/**
	 * Stops the scheduler.
	 * This will stop the scheduler from scheduling more proposals. 
	 * 
	 * It will not(!) break the ongoing observation, and will return only
	 * when the running observation has finished.
	 *
	 * Raises an exception if called twice.
	 * @return None
	 */
	void stop ()
		raises(SYSTEMErrSystemErr::SchedulerAlreadyStoppedEx);

	/**
	 * Returns the pid of the proposal currently under execution
	 *
	 * Raises exception if no proposal is executing.
	 * @retun Proposal ID
	 */
	long proposalUnderExecution()
		raises(SYSTEMErrSystemErr::NoProposalExecutingEx);
	};

};

#endif

...

Code Block
languagecpp
titleTelescope.idl
linenumberstrue
collapsetrue
#ifndef _TELESCOPE_IDL_
#define _TELESCOPE_IDL_

/*******************************************************************************
*    ACS Community - https://github.com/ACS-Community/ACS-Workshop
*    
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation; either
*    version 2.1 of the License, or (at your option) any later version.
*    
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*    
*    You should have received a copy of the GNU Lesser General Public
*    License along with this library; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
*/

#include <acscomponent.idl>
#include <Types.idl>
#include "SYSTEMErrSystemErr.idl"

#pragma prefix "acsws"


/** 
 * @file Telescope.idl
 * SYSTEMErrSystemErr Telescope IDL file
 */
module TELESCOPE_MODULE
{
	/** @interface Telescope
	 * High level interface to communicate with the hardware
	 * related component.
	 */
	
	interface Telescope : ACS::ACSComponent
	{
	/** 
	 * Moves to the given position and takes an exposure
	 * of length exposureTime (seconds). Raises and exception 
	 * if the requested position is out of limits.
	 *
	 * @param coordinates target coordinates
	 * @param exposureTime exposure time of the current observation
	 * @return Image 
	 * 
	 */
	TYPES::ImageType observe(in TYPES::Position coordinates, in long exposureTime)
		raises(SYSTEMErrSystemErr::PositionOutOfLimitsEx);

	/** 
	 * Commands the telescope to move to the given position. Raises
	 * an exception if the requested position is out of limits.
	 *
	 * @param coordinates Requested telescope position
	 * @return None
	 */
	void moveTo(in TYPES::Position coordinates)
		raises(SYSTEMErrSystemErr::PositionOutOfLimitsEx);

	/**
	 * Get the current telescope position.
	 *
	 * @return current telescope position
	 */
	TYPES::Position getCurrentPosition();
	};
};

#endif

...