/* ***************************************************************************/
/* INAF - Istituto Nazionale di AstroFisica                                  */
/* OAC - Osservatorio Astronomico di Cagliari                                */
/*                                                                           */
/*                                                                           */
/* This code is under GNU General Public Licence (GPL).                      */
/*                                                                           */
/* Who					When		       What                                    */
/* Sergio Poppi		18/02/2010      Creation                                */
/* Andrea Orlati     28/11/2018      Extended the generic interface in order */
/*                                   to fit SRT and Medicina common devices  */ 
/*                                                                           */
/* ***************************************************************************/

#ifndef _GENERICWSTATION_IDL_

#define _GENERICWSTATION_IDL_

#include <baci.idl>
#include <ManagmentDefinitions.idl>
#pragma prefix "alma"




/**
* This IDL module describes the CORBA interface of the Meteo Station.
* @author <a href=mailto:sergio.poppi@inaf.it> Sergio Poppi</a>
* INAF - Istituto Nazionale di AstroFisica
* OAC - Osservatorio Astronomico di Cagliari
* <br> 
*/

module Weather {

	struct parameters {
		double temperature;
		double humidity;
		double pressure;
		double windspeed;
		double winddir;
		double windspeedpeak;
/*		short doy;
		short year;
		short hh;
		short mh;
		short ss;*/
	};

	interface GenericWeatherStation : Management::CommandInterpreter, ACS::CharacteristicComponent {
		
		/**
		 Get Parameters Weather STATION, for compatibility reasons
		 @return parameters
		*/
		parameters getData() raises (ACSErr::ACSbaseEx);
		
		/**
		 Get  the average wind speed
		*/		
		double getWindSpeedAverage() raises (ACSErr::ACSbaseEx);
		
		/**
		 Get the peak wind speed
		*/
		double getWindspeedPeak() raises (ACSErr::ACSbaseEx);
		
		/**
		 Gets  the   wind dir max
		*/
		double getWindDir() raises (ACSErr::ACSbaseEx);
	 
		/**
		 Gets  the relative humidity
		*/
		double getHumidity() raises (ACSErr::ACSbaseEx);
		
		/**
		 Gets the air temperature
		*/
		double getTemperature() raises (ACSErr::ACSbaseEx);
		
		/**
		 Gets the air pressure
		*/
		double getPressure() raises (ACSErr::ACSbaseEx);
						
		/**
		 Air Temperature
		*/
		readonly attribute ACS::RWdouble temperature;
			
		/**
		 Wind Direction
		*/
		readonly attribute ACS::RWdouble winddir;
		
		/**
		 Pressure
		*/
		readonly attribute ACS::RWdouble pressure;
		
		/**
		 Wind Speed
		*/
		readonly attribute ACS::RWdouble windspeed;
		
		/**
		 Relative Humidity
		*/
		readonly attribute ACS::RWdouble humidity;
				
		/*
		 Wind Peak	
		*/
		readonly attribute ACS::RWdouble windspeedpeak;

		/**
		 * This is the wind speed threshold used by the autopark system in order to force an antenna stow
		*/
		readonly attribute ACS::ROdouble autoparkThreshold;
						
	};
};
#endif
