Commit c74c9cfb authored by Andrea Orlat's avatar Andrea Orlat
Browse files

support for frequency tracking from schedule completed (see issue #47)

parent 99d9c207
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -102,4 +102,6 @@

<ErrorCode name="CloseTelescopeScanError" shortDescription="Not able command the scan close to the telescope" description=""/>

<ErrorCode name="InvalidRestFrequency" shortDescription="The rest frequency is not provided or does not match the number of backend sections" description=""/>

</Type>
+113 −0
Original line number Diff line number Diff line
@@ -20,6 +20,119 @@
	<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="TScanAxisEnumerationType">
		<xs:annotation><xs:documentation>
			Lists all axis managed by the minor servo system, a subset of the TScanAxis enumeration
		</xs:documentation></xs:annotation>
		<xs:restriction base="xs:string">

	    	<xs:enumeration value="MNG_NO_AXIS">
				<xs:annotation><xs:documentation>
					The scan involves no axis
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

	    	<xs:enumeration value="MNG_HOR_LON">
				<xs:annotation><xs:documentation>
					The scan is along the horizontal longitude
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
		
			<xs:enumeration value="MNG_HOR_LAT">
				<xs:annotation><xs:documentation>
					The scan is along the horizontal latitude
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      	
			<xs:enumeration value="MNG_EQ_LON">
				<xs:annotation><xs:documentation>
					The scan is along the equatorial longitude
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      	
			<xs:enumeration value="MNG_EQ_LAT">
				<xs:annotation><xs:documentation>
					The scan is along the equatorial latitude
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

			<xs:enumeration value="MNG_GAL_LON">
				<xs:annotation><xs:documentation>
					The scan is along the galactic longitude
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      	
			<xs:enumeration value="MNG_GAL_LAT">
				<xs:annotation><xs:documentation>
					The scan is along the galactic latitude
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

			<xs:enumeration value="MNG_BEAMPARK">
				<xs:annotation><xs:documentation>
					The scan is beam park positioning
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

			<xs:enumeration value="MNG_TRACK">
				<xs:annotation><xs:documentation>
					The scan is normal sidereal tracking
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      	
			<xs:enumeration value="MNG_GCIRCLE">
				<xs:annotation><xs:documentation>
					The scan is along the great circle
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      		
	    	<xs:enumeration value="SUBR_Z">
				<xs:annotation><xs:documentation>
					Scan along the Z (focus) of the subreflector
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      	
	    	<xs:enumeration value="SUBR_X">
				<xs:annotation><xs:documentation>
					Scan along the X of the subreflector
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

	    	<xs:enumeration value="SUBR_Y">
				<xs:annotation><xs:documentation>
					Scan along the Y of the subreflector
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      	
	    	<xs:enumeration value="SUBR_ROTY">
				<xs:annotation><xs:documentation>
					rotate the subriflector along the Y axis
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

	      	<xs:enumeration value="SUBR_ROTX">
				<xs:annotation><xs:documentation>
					rotate the subriflector along the X axis
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>
	      	
	    	<xs:enumeration value="PFP_Z">
				<xs:annotation><xs:documentation>
					Scan along the Z (focus) of the primary focus
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

	    	<xs:enumeration value="PFP_Y">
				<xs:annotation><xs:documentation>
					Scan along the Y of the primary focus
				</xs:documentation></xs:annotation>	
	      	</xs:enumeration>

		</xs:restriction>
	</xs:simpleType>
	
	
	
	<xs:complexType name="SystemStatusType">
		<xs:complexContent>
			<xs:restriction base="baci:ROEnum">
+14 −1
Original line number Diff line number Diff line
@@ -183,10 +183,23 @@ module Management {
		void chooseDefaultDataRecorder(in string rcvInstance) raises (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx);
		
		/**
		 * This method allows to change the value af the attribute <i>restFrequency</i>.
		 * This method allows to change the value of the attribute <i>restFrequency</i>.
		 * @param rest frequencies in MHz. In principle a value of rest frequency has to be provided for each os sections of the current backend.
		 * In case a single value is gives it will be considered to be valid for all sections.
		 */
		void setRestFrequency(in ACS::doubleSeq rest);
		
		/**
		 * Moves the frequency configuration in order to have all the sections of the currently active backend ready for spectroscopy.
		 * The method tries to put the given rest frequency (@sa <i>setRestFrequency</i>) in the center of the corresponding sections.
		 * In order to obtain this results it acts on the local oscillator of the front end and on the settings of the sections.
		 * @param dev this string value is expected to be on of the three following code: LO, BCK, ALL.
		 *        LO the backend sections are centered on the line only moving the local oscillator of the frontend
		 *        BCK the backend sections are centered on the line only moving the synthetizer of the backend
		 *        ALL the backend frequency tuning is done with both the above methods
		 */
		void fTrack(in string dev) raises (ComponentErrors::ComponentErrorsEx,ManagementErrors::ManagementErrorsEx);

		/**
		 * This method sets the current project code. If the project does not exists an error is thrown.
		 * @param code code of the project, if blank the selected code will be default one 
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
#
# Configuration Database Files
# ----------------------------
CDB_SCHEMAS = ProcedureFile
CDB_SCHEMAS = ProcedureFile TelescopeEquipment

#
# IDL Files and flags
+57 −1
Original line number Diff line number Diff line
@@ -401,6 +401,24 @@ public:
	 */
	static bool timeToStr(const ACS::Time& time,IRA::CString& outString,char dateDelimiter='-',char timeDelimiter=':');

	/**
	 * Use this function to convert from a double sequence to a string
	 * @param val sequence of double values
	 * @param outString string that contains the string
	 * @param delimiter character that separates the values inside the string
	 * @return the result of the conversion, true if the conversion could be done
	*/
	static bool doubleSeqToStr(const ACS::doubleSeq& val,IRA::CString& outString,char delimiter=';');

	/**
	 * Use this function to convert from a long sequence to a string
	 * @param val sequence of long values
	 * @param outString string that contains the string
	 * @param delimiter character that separates the values inside the string
	 * @return the result of the conversion, true if the conversion could be done
	*/
	static bool longSeqToStr(const ACS::longSeq& val,IRA::CString& outString,char delimiter=';');

	/**
	 * Use this function to convert a string containing an angle in the format (+/-hh:mm:ss.ss) into a radians. If <i>complete</i> argument is not set, the expected fields have not to be all  
	 * included, the function will try to convert the string anyway. The missing fields are replaced with zeros, the first value is always interpreted as the hours value. 
@@ -633,6 +651,44 @@ public:
	  * @return true if the directory exists, false otherwise
	  */
	 static bool directoryExists(const IRA::CString& path);

	 /**
	  * Round a double value to the nearest number with decimals precision
	  * @param val number to be rounded
	  * @param decimals number of decimal positions to be considered (val=30.77779, decimals=2, res=30.78)
	  */
	 static double roundNearest(const double& val,const long& decimals);

	 /**
	  * Round a double value to the lower number with decimals precision
	  * @param val number to be rounded
	  * @param decimals number of decimal positions to be considered (val=30.77779, decimals=2, res=30.77)
	  */
	 static double roundDown(const double& val,const long& decimals);

	 /**
	  * Round a double value to the upper number with decimals precision
	  * @param val number to be rounded
	  * @param decimals number of decimal positions to be considered (val=30.77779, decimals=2, res=30.78)
	  */
	 static double roundUp(const double& val,const long& decimals);

	 /**
	  * Camputes the minimum value of a sequence of values.
	  * @param array sequence of values
	  * @param pos position of the maximum value
	  * @return the minimum
	  */
	 static double getMinimumValue(const ACS::doubleSeq& array,long& pos);

	 /**
	  * Camputes the maximum value of a sequence of values.
	  * @param array sequence of values
	  * @param pos position of the maximum value
	  * @return the maximum
	  */
	 static double getMaximumValue(const ACS::doubleSeq& array,long& pos);

};
	
}
Loading