Commit 94988f7f authored by Andrea Orlati's avatar Andrea Orlati
Browse files

fix issue #885: first commit, component configuration defined, implemented and tested

parent f98438c6
Loading
Loading
Loading
Loading
+65 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
	- Author: Andrea Orlati
	
	- History:
	    + 07-08-2024  Created 
-->

<xs:schema
  targetNamespace="urn:schemas-cosylab-com:KQWBandNoiseMarkLookUpTable:1.0"
  xmlns="urn:schemas-cosylab-com:KQWBandNoiseMarkLookUpTable:1.0"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
  xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified">
	<xs:import namespace="urn:schemas-cosylab-com:CDB:1.0" schemaLocation="CDB.xsd"/>
	<xs:import namespace="urn:schemas-cosylab-com:BACI:1.0" schemaLocation="BACI.xsd"/>
	
	<xs:simpleType name="TPolSpecType">
		<xs:annotation><xs:documentation>
			restricts the keyword used to specify the polarization
		</xs:documentation></xs:annotation>
		<xs:restriction base="xs:string">
	    	<xs:enumeration value="LEFT">
				<xs:annotation><xs:documentation>
					left polarization
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	    	<xs:enumeration value="RIGHT">
	    		<xs:annotation><xs:documentation>
	    			right polarization
	    		</xs:documentation></xs:annotation>
	    	</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
		
	<xs:complexType name="TTableHeader">
 		<xs:sequence>
 		  <xs:element name="Feed" type="xs:unsignedInt"/>
 		  <xs:element name="Polarization" type="TPolSpecType"/>
 		  <xs:element name="SkyFrequency" type="xs:double">
 		  	<xs:annotation><xs:documentation>
 		  		the sky frequency (MHz) used as reference frequency in order to compute the mark value. If a value is missing
 		  		the respective mark value should be computed by evaluating a linear interpolation 
 		  	</xs:documentation></xs:annotation>
 		  </xs:element>
 		  <xs:element name="NoiseMark" type="xs:double">
 		  	<xs:annotation><xs:documentation>
 		  		the value in Kelvin of the calibration noise diode corresponding to the given sky frequency
 		  	</xs:documentation></xs:annotation>
 		  </xs:element>
 		</xs:sequence>
 	</xs:complexType>
 
 	<xs:complexType name="TTable">
		<xs:sequence>
			<xs:element name="MarkEntry" type="TTableHeader" 
			  minOccurs="1" maxOccurs="unbounded" />
		</xs:sequence>
 	</xs:complexType>
  
	<xs:element name="KQWBandNoiseMarkLookUpTable" type="TTable"/>
  	
</xs:schema>
+83 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
    - Author: Andrea Orlati
    -
    - History:
    -   08-08-2024  Created
-->

<xs:schema
    targetNamespace="urn:schemas-cosylab-com:KQWBandReceiverModeSetup:1.0"
    xmlns="urn:schemas-cosylab-com:KQWBandReceiverModeSetup:1.0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
    xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"   
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

<xs:complexType name="KQWBandReceiverModeType">
    <!-- Mode name or mode mnemonic code -->
    <xs:attribute name="Mode" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the sky radio frequency band of the K band receiver (0..IFs) -->
    <xs:attribute name="KBandRFMin" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the sky radio frequency band of the Q band receiver (0..IFs) -->
    <xs:attribute name="QBandRFMin" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the sky radio frequency band of the first W band receiver (0..IFs) -->
    <xs:attribute name="W1BandRFMin" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the sky radio frequency band of the second W band receiver (0..IFs) -->
    <xs:attribute name="W2BandRFMin" type="xs:string" use="required"/>  
    
    <!-- represent the upper value (MHZ) of the sky radio frequency band of the K band receiver (0..IFs) -->
    <xs:attribute name="KBandRFMax" type="xs:string" use="required"/>
    <!-- represent the upper value (MHZ) of the sky radio frequency band of the Q band receiver (0..IFs) -->
    <xs:attribute name="QBandRFMax" type="xs:string" use="required"/>
    <!-- represent the upper value (MHZ) of the sky radio frequency band of the first W band receiver (0..IFs) -->
    <xs:attribute name="W1BandRFMax" type="xs:string" use="required"/>
    <!-- represent the upper value (MHZ) of the sky radio frequency band of the second W band receiver (0..IFs) -->
    <xs:attribute name="W2BandRFMax" type="xs:string" use="required"/>  
    
    
    <!-- represent the lower value (MHZ) of the Intermediate Frequency band of the K band receiver (0..IFs)-->
    <xs:attribute name="KBandIFMin" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the Intermediate Frequency band of the Q band receiver (0..IFs)-->
    <xs:attribute name="QBandIFMin" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the Intermediate Frequency band of the W1 band receiver (0..IFs)-->
    <xs:attribute name="W1BandIFMin" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the Intermediate Frequency band of the W2 band receiver (0..IFs)-->
    <xs:attribute name="W2BandIFMin" type="xs:string" use="required"/>
    
    <!-- represent the upper value (MHZ) of the Intermediate Frequency band of the K band receiver (0..IFs)-->
    <xs:attribute name="KBandIFMax" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the Intermediate Frequency band of the Q band receiver (0..IFs)-->
    <xs:attribute name="QBandIFMax" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the Intermediate Frequency band of the W1 band receiver (0..IFs)-->
    <xs:attribute name="W1BandIFMax" type="xs:string" use="required"/>
    <!-- represent the lower value (MHZ) of the Intermediate Frequency band of the W2 band receiver (0..IFs)-->
    <xs:attribute name="W2BandIFMax" type="xs:string" use="required"/>
    
    
    <!-- number of virtual feeds -->
    <xs:attribute name="Feeds" type="xs:unsignedLong" use="required"/>
    <!-- number of IFs for each virtual feed-->
    <xs:attribute name="IFs" type="xs:unsignedLong" use="required"/>
 
 
    <!-- blank separated list of the polarization relative to each of the IF for the K, Q, W1, and W2 band receiver respectively -->
    <!-- the first entry is relative to IF 0. Accepted character are L or R  -->
    <xs:attribute name="IFBandPolarizations" type="xs:string" use="required"/>
    

    <!-- Default LO value (MHZ) -->
    <xs:attribute name="DefaultLO" type="xs:string" use="required"/>
    <!-- Fixed LO value (MHZ) -->
    <xs:attribute name="FixedLO2" type="xs:string" use="required"/>
    <!-- Minimum LO value (MHZ) -->
    <xs:attribute name="LOMin" type="xs:string" use="required"/>
    <!-- Maximum LO value (MHZ) -->
    <xs:attribute name="LOMax" type="xs:string" use="required"/>

</xs:complexType>

<xs:element name="KQWBandReceiverModeSetup" type="KQWBandReceiverModeType"/>

</xs:schema>
+37 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
	- Author: Andrea Orlati
	-
	- History:
	-   08-08-2024 Created
-->

<xs:schema
	targetNamespace="urn:schemas-cosylab-com:KQWBandTaperLookUpTable:1.0"
	xmlns="urn:schemas-cosylab-com:KQWBandTaperLookUpTable:1.0"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
	xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">
	<xs:import namespace="urn:schemas-cosylab-com:CDB:1.0" schemaLocation="CDB.xsd"/>
	<xs:import namespace="urn:schemas-cosylab-com:BACI:1.0" schemaLocation="BACI.xsd"/>
	
	<xs:complexType name="TTableHeader">
 		<xs:sequence>
 		    <xs:element name="Feed" type="xs:unsignedInt"/>
 			<xs:element name="Frequency" type="xs:double" />
 			<xs:element name="Taper" type="xs:double" />
 		</xs:sequence>
 	</xs:complexType>
 	
 	<xs:complexType name="TTable">
		<xs:sequence>
			<xs:element name="TaperEntry" type="TTableHeader"  minOccurs="1" maxOccurs="unbounded" />
		</xs:sequence>
 	</xs:complexType>
 	
 	<xs:element name="KQWBandTaperLookUpTable" type="TTable" />	
	
</xs:schema>
+171 −0
Original line number Diff line number Diff line
#ifndef ___KQWBAND_IDL__
#define ___KQWBAND_IDL__


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

#pragma prefix "alma"

module Receivers {

    /**
    * This module defines the interface of the KQW band simultaneous receiver installed in all three italian telescopes.
    * @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 KQWBand : ACS::CharacteristicComponent, Receiver {

        /***************************************************\
         *           COMMON_RECEIVER_INTERFACE             *
        \***************************************************/
        // void setMode(in string mode) raises (ReceiversErrors::ConfigurationEx);
        // readonly attribute ACS::ROdoubleSeq LO;
        // readonly attribute ACS::ROlong feeds;
        // readonly attribute ACS::ROlong IFs;
        // readonly attribute ACS::ROlongSeq polarization;
        // readonly attribute ACS::ROdoubleSeq initialFrequency;
        // readonly attribute ACS::ROdoubleSeq bandWidth;
        // readonly attribute ACS::ROstring mode;     
        // void calOn();
        // void calOff();
        // void setLO(in ACS::doubleSeq lo1);
        // ACS::doubleSeq getCalibrationMark(...)
        // long getFeeds(out ACS::doubleSeq X,out ACS::doubleSeq Y,out ACS::doubleSeq power);
        // double getTaper(in double freq,in double bandWidth,in long feed,in long ifNumber,out double waveLen) 

        /***************************************************\
         *           GENERIC_RECEIVER_INTERFACE            *
        \***************************************************/
        // readonly attribute ACS::ROdouble vacuum;
        // readonly attribute ACS::ROpattern status;
        // readonly attribute Management::ROTSystemStatus receiverStatus;
        // void turnLNAsOn();
        // void turnLNAsOff();
        // void activate();

        /**************************\ 
         *      DRAIN VOLTAGE     *
        \**************************/ 

        /// LNA Drain voltage: K band, LCP channel
        readonly attribute ACS::ROdouble vdKL;
        
        /// LNA Drain voltage: K band, RCP channel
        readonly attribute ACS::ROdouble vdKR;

        /// LNA Drain voltage: Q band, LCP channel
        readonly attribute ACS::ROdouble vdQL;
        
        /// LNA Drain voltage: Q band, RCP channel
        readonly attribute ACS::ROdouble vdQR;

        /// LNA Drain voltage: W band, LCP channel
        readonly attribute ACS::ROdouble vdWL;
        
        /// LNA Drain voltage: W band, RCP channel
        readonly attribute ACS::ROdouble vdWR;


        /**************************\ 
         *      DRAIN CURRENT     *
        \**************************/ 

        /// LNA Drain current: K band, LCP channel
        readonly attribute ACS::ROdouble idKL;
        
        /// LNA Drain current: K band, RCP channel
        readonly attribute ACS::ROdouble idKR;

        /// LNA Drain current: Q band, LCP channel
        readonly attribute ACS::ROdouble idQL;
        
        /// LNA Drain current: Q band, RCP channel
        readonly attribute ACS::ROdouble idQR;

        /// LNA Drain current: W band, LCP channel
        readonly attribute ACS::ROdouble idWL;
        
        /// LNA Drain current: W band, RCP channel
        readonly attribute ACS::ROdouble idWR;

        /**************************\ 
         *       GATE VOLTAGE     *
        \**************************/ 

          /// LNA gate voltage: K band, LCP channel
        readonly attribute ACS::ROdouble vgKL;
        
        /// LNA gate voltage: K band, RCP channel
        readonly attribute ACS::ROdouble vgKR;

        /// LNA gate voltage: Q band, LCP channel
        readonly attribute ACS::ROdouble vgQL;
        
        /// LNA gate voltage: Q band, RCP channel
        readonly attribute ACS::ROdouble vgQR;

        /// LNA gate voltage: W band, LCP channel
        readonly attribute ACS::ROdouble vgWL;
        
        /// LNA gate voltage: W band, RCP channel
        readonly attribute ACS::ROdouble vgWR;
        
        /**************************\ 
         *   CRYO TEMPERATURE     *
        \**************************/ 

        /** 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;

        /** Receiver Name */
        readonly attribute ACS::ROstring receiverName;

        /** 
         * 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
+5 −2
Original line number Diff line number Diff line
@@ -15,13 +15,15 @@ CDB_SCHEMAS = Feeds ReceiversModeSetup LocalOscillatorLookUpTable \
			  NoiseMarkLookUpTable TaperLookUpTable \
			  DewarPositionerUpdatingTable DewarPositionerMapping \
			  DewarPositionerActions \
			  LocalOscillator LocalOscillatorEthernet
			  LocalOscillator LocalOscillatorEthernet \
			  KQWBandNoiseMarkLookUpTable KQWBandReceiverModeSetup KQWBandTaperLookUpTable


# IDL Files and flags
IDL_FILES = CommonReceiverInterface ReceiversBoss \
			GenericReceiver LocalOscillatorInterface \
			DewarPositionerDefinitions GenericDerotator \
			DewarPositioner GenericIFDistributor
			DewarPositioner GenericIFDistributor KQWBand


CommonReceiverInterfaceStubs_LIBS = baciStubs ComponentErrorsStubs ManagementErrorsStubs \
@@ -38,6 +40,7 @@ GenericDerotatorStubs_LIBS = baciStubs DerotatorErrorsStubs ComponentErrorsStubs
DewarPositionerStubs_LIBS =  baciStubs maciErrTypeStubs ComponentErrorsStubs \
    ManagmentDefinitionsStubs AntennaDefinitionsStubs DewarPositionerDefinitionsStubs
GenericIFDistributorStubs_LIBS = baciStubs maciErrTypeStubs ComponentErrorsStubs
KQWBandStubs_LIBS = baciStubs ComponentErrorsStubs GenericReceiverStubs ManagmentDefinitionsStubs CommonReceiverInterfaceStubs


# list of all possible C-sources (used to create automatic dependencies)
Loading