#ifndef ___5GHZ_IDL__
#define ___5GHZ_IDL__


#include <baci.idl>
#include <ComponentErrors.idl>
#include "GenericReceiver.idl"

#pragma prefix "alma"

module Receivers {

	/**
	* This module defines the interface of the 5GHz receiver installed in the SRT.
	* @author <a href=mailto:andrea.orlati@inaf.it>Andrea Orlati</a>
   * <br>
	* @copybrief Receivers::Receiver::status
	* the single bits of the status word assumed the following meaning:
	* @arg \c 0 LOCAL, set if the receiver is in remote and can be controlled remotely, error
	* @arg \c 1 VACUUMSENSOR, set if the vacuum sensor is turned on, status
	* @arg \c 2 VACUUMPUMPSTATUS, set if the vacuum pump is on, status
	* @arg \c 3 VACUUMPUMPFAULT, set if the vacuum pump is in fault state, warning
	* @arg \c 4 VACUUMVALVEOPEN, set if the vacuum valve i sopen, status
	* @arg \c 5 COOLHEADON, set if the cool head is turned on, status
	* @arg \c 6 COMPRESSORFAULT, set if the compressor is in fault state is turned on, error
	* @arg \c 7 NOISEMARK, set is the calibration diode is on, status
	* @arg \c 8 NOISEMARKERROR, set if the calibration mark should be and it is not, or viceversa, error
	* @arg \c 9 EXTNOISEMARK, set if the control of the calibration diode from external source is enabled, status
	* @arg \c 10 CONNECTIONERROR, set if an error was found during the comunication from/to the receiver, error
	* @arg \c 11 UNLOCKED, set if at least one of the local oscillator is not locked, error
	* @copybrief Receivers::CommonReceiverInterface::setLO 
	*/
    interface SRT5GHz : ACS::CharacteristicComponent, Receiver {


        /**
         * Drain voltage of LNA, IF 1
         */
        readonly attribute ACS::ROdouble Vd_1;

        /**
         * Drain voltage of LNA, IF 2
         */
        readonly attribute ACS::ROdouble Vd_2;

        /**
         * Drain current of LNA, IF 1
         */
        readonly attribute ACS::ROdouble Id_1;

        /**
         * Drain current of LNA, IF 2
         */
        readonly attribute ACS::ROdouble Id_2;

        /**
         * Gate voltage of LNA, IF 1
         */
        readonly attribute ACS::ROdouble Vg_1;

        /**
         * Gate voltage of LNA, IF 2
         */
        readonly attribute ACS::ROdouble Vg_2;

        /**
         * Cryogenic temperature of the cool head. Approximately 65K
         */
        readonly attribute ACS::ROdouble cryoTemperatureCoolHead;

        /**
         * Cryogenic temperature of the cool head measured at the window. Approximately 100K
         */
        readonly attribute ACS::ROdouble cryoTemperatureCoolHeadWindow;

        /**
         * Cryogenic temperature of the Low Noise Amplifier. Approximately 20K
         */
        readonly attribute ACS::ROdouble cryoTemperatureLNA;

        /**
         * Cryogenic temperature of the cool head measured at the window. Approximately 35K
         */
        readonly attribute ACS::ROdouble cryoTemperatureLNAWindow;
        
        /**
         * Value of the environment temperature in °C.
         */
        readonly attribute ACS::ROdouble environmentTemperature;

        /** 
         * It allows to turn the vacuum sensor on. The vacuum sensor is necessary to have a correct measurment of the vacuum characteristic. 
         * If the vacuum sensor is not working the dafult_value for the  vacuum characteristic is always reported.  
         */
         void turnVacuumSensorOn() raises (ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx);

         /** 
          * It allows to turn the vacuum sensor off. The vacuum sensor is necessary to have a correct measurment of the vacuum characteristic. 
          * If the vacuum sensor is not working the dafult_value for the  vacuum characteristic is always reported.  
          */
          void turnVacuumSensorOff() raises (ComponentErrors::ComponentErrorsEx,ReceiversErrors::ReceiversErrorsEx);
         
	};


};

#endif