#ifndef _ISABELLA_LAMP_IDL_
#define _ISABELLA_LAMP_IDL_

/*******************************************************************************
*    ALMA - Atacama Large Millimiter Array
*
*    (c) European Southern Observatory, 2002
*    Copyright by ESO (in the framework of the ALMA collaboration)
*    and Cosylab 2002, All rights reserved
*
*    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
*
*
* "@(#) $Id: acscourseMount.idl,v 1.3 2004/01/30 16:17:20 dfugate Exp $"
*
* who       when      what
* --------  --------  ----------------------------------------------
*/

#include <baci.idl>
#include <ACSErrTypeCommon.idl>
#include <ACSErrTypeISABELLA.idl>

/*
 * This comes AFTER all includes
 */
#pragma prefix "alma"


/** @file isabellaLamp.idl
 *  IDL specification of Lamp object for ACS Course
 *
 *  There are 4 different interfaces that show
 */

module ISABELLA_LAMP 
{
    /********************************************************************/
    /** @interface Lamp1
     *  This is a simple Hello World Mount, with a very basic interface
     *  Just one command to move the mount to a give (alt,az)
     */
    interface base_Lamp : ACS::ACSComponent
	{
	/**
	 * (Pre)sets a new non-moving position for the antenna.
	 * The position coordinates are given in azimuth and elevation.
	 *
	 * @param az        position azimuth (degree)
	 * @param elev      position elevation (degree)
	 * @htmlonly
	 * <br><hr>
	 * @endhtmlonly
	 */
	void init () raises (ACSErrTypeISABELLA::DeviceNotFoundEx);
	void on () raises (ACSErrTypeISABELLA::OnFailureEx);	
	void off () raises (ACSErrTypeISABELLA::OffFailureEx);	
	};    

    interface smart_Lamp : ACS::CharacteristicComponent
	{
	/**
	 * (Pre)sets a new non-moving position for the antenna.
	 * The position coordinates are given in azimuth and elevation.
	 *
	 * @param az        position azimuth (degree)
	 * @param elev      position elevation (degree)
	 * @htmlonly
	 * <br><hr>
	 * @endhtmlonly
	 */
	void init () raises (ACSErrTypeISABELLA::DeviceNotFoundEx);
	void on (in string colour, in double brightness) raises (ACSErrTypeISABELLA::OnFailureEx);	
	void off () raises (ACSErrTypeISABELLA::OffFailureEx);	
	void on_async (in string colour, 
                       in double brightness,
		       in ACS::CBdouble completion,
		       in ACS::CBDescIn desc);

	readonly attribute ACS::ROdouble state;
	readonly attribute ACS::ROstring colour;
	readonly attribute ACS::RWdouble brightness;
	};    

};

#endif