Skip to content
Snippets Groups Projects
Select Git revision
  • 4c36c403b4cf3d0b1a6f3ea3070322c658bf5c78
  • master default protected
  • ia2
  • adql2.1-ia2
  • private_rows
5 results

ClauseADQL.java

Blame
  • MinorServoBoss.idl 10.84 KiB
    /***************************************************************\
     *  Authors: 
     *      Marco Buttu <mbuttu@oa-cagliari.inaf.it>
     *
     *  Created: Mon Oct 12 09:45:07 CEST 2009
     *  Last Modified: Tue Sep 17 15:18:13 UTC 2013
    \***************************************************************/
    #ifndef __MINORSERVOBOSS_IDL__
    #define __MINORSERVOBOSS_IDL__
    
    #include <baci.idl>
    #include <ComponentErrors.idl>
    #include <ManagmentDefinitions.idl>
    #include <MinorServoErrors.idl>
    #include <AntennaDefinitions.idl>
    #include "MinorServoDefinitions.idl"
    
    #pragma prefix "alma"
    
    module MinorServo {
    
        struct MinorServoDataBlock {
            ACS::Time timeMark;
            boolean tracking;
            boolean starting;
            boolean parking;
            boolean parked;
            Management::TSystemStatus status;
        };
    
        const string MINORSERVO_DATA_CHANNEL = "MinorServoData";
    
        /// Interface of MinorServoBoss
    	interface MinorServoBoss: ACS::CharacteristicComponent, Management::CommandInterpreter, Management::Subsystem {
    
            readonly attribute ACS::ROstring actualSetup;
            // motionInfo: Starting, Parking, Not Elevation Tracking, 
            //             Elevation Tracking, Not Ready to Move, ...
            readonly attribute ACS::ROstring motionInfo; 
            readonly attribute Management::ROTBoolean ready;
            readonly attribute Management::ROTBoolean starting;
            readonly attribute Management::ROTBoolean asConfiguration;
            readonly attribute Management::ROTBoolean elevationTrack;
            readonly attribute Management::ROTBoolean tracking;
            readonly attribute Management::ROTBoolean scanActive;
            readonly attribute Management::ROTBoolean scanning;
    	
            readonly attribute ACS::ROdouble axisZ1;
            readonly attribute ACS::ROdouble axisZ2;
            readonly attribute ACS::ROdouble axisZ3;
            readonly attribute ACS::ROdouble axisX;
            readonly attribute ACS::ROdouble axisY;
            readonly attribute ACS::ROdouble axisYP;
            readonly attribute ACS::ROdouble axisZP;
    
    
            /**
             * Set the elevation tracking flag to "ON" or "OFF"
             * @param value "ON" or "OFF"
             * @throw MinorServoErrors::MinorServoErrorsEx::MinorServoErrorsEx if
             * the input is different from "ON" or "OFF"
    		 * @throw MinorServoErrors::StatusErrorEx if the servo is differrently
             * configured
             */
    		void setElevationTracking(in string value) 
            raises (MinorServoErrors::MinorServoErrorsEx,
                    ComponentErrors::ComponentErrorsEx);
    	
            /**
             * Set the active surface flag to "ON" or "OFF"
             * If the system is ready, then it change the actual configuration
             * @param value "ON" or "OFF"
    		 * @throw MinorServoErrors::MinorServoErrorsEx if the input is different from "ON" or "OFF"
             */
    		void setASConfiguration(in string value) 
            raises (MinorServoErrors::MinorServoErrorsEx,
                    ComponentErrors::ComponentErrorsEx);
    
            /**
             * Should the minor servo position change with the antenna elevation?
             * @return true if the elevation tracking is enabled
             */
    		boolean isElevationTrackingEn();
    	
            /**
             * Is the minor servo position following the antenna elevation?
             * @return true if the minor servo position is following the antenna elevation
             */
    		boolean isElevationTracking();
    	
            /**
             * Is the system on focus?
             * @return true if the minor servos are following the commanded positions
             */
    		boolean isTracking();
    		
            /**
             * Is the system starting?
             * @return true if the system is starting
             */
    		boolean isStarting();
    
            /*
             * Is the system using the active surface configuration (polynomial to use when te AS is active)?
             * @return true if we are using the configuration with the AS active.
             */
            boolean isASConfiguration();
    
            /**
             * Is the system parking?
             * @return true if the system is parking
             */
    		boolean isParking();
    		
            /**
             * Is the system ready?
             * System ready means the system is configured (a setup is done). The system could be
             * ready but out of focus, for instance, when we are performing a scan. If the system
             * is ready but out of fucus, isTracking() returns false.
             * @return true if the system is ready (ready to move)
             */
    		boolean isReady();	
    		
            /**
             * Is the system performing a scan?
             * @return true if the system is performing a scan
             */
    		boolean isScanning();	
    		
            /**
             * Is the system performing a scan or waiting for another scan?
             * @return true if the system is performing a scan or waiting for another scan
             */
    		boolean isScanActive();	
    
    		/** Return the actual configuration */
    		string getActualSetup();
    
    		/** Return the commanded configuration */
    		string getCommandedSetup();
    
    		/** Return the central position of the axis involved in the scan */
    		double getCentralScanPosition() 
            raises (MinorServoErrors::MinorServoErrorsEx,
                    ComponentErrors::ComponentErrorsEx);
    
    
            /** 
             * Start the scan of one axis of the MinorServo target.
             *
             * @param starting_time the time the scan will start or 0 if the scan is required to start immediately
             * @param scan structure containing the description of the scan to be executed
             * @param antennaInfo auxiliary information from the antenna
             *
             */
            void startScan(
                    inout ACS::Time starting_time, 
                    in MinorServoScan scan,
                    in Antenna::TRunTimeParameters antennaInfo
            ) raises (MinorServoErrors::MinorServoErrorsEx,
                      ComponentErrors::ComponentErrorsEx);
    
    
    	/**
    	 * Closes the current scan and force the minor servo system to its normal behaviour
    	 * @param timeToStop stores the expected epoch in which the scan will be stopped (closed). It could be zero meaning the
    	 *         scan will be closed immediately
    	 * @throw ComponentErrors::ComponentErrorsEx
    	 * @throw ReceiversErrors::ReceiversErrorsEx
    	*/
            void closeScan(out ACS::Time timeToStop) 
            raises (MinorServoErrors::MinorServoErrorsEx, 
                    ComponentErrors::ComponentErrorsEx);
        
            /** 
             * Check if it is possible to execute a scan along a given axis
             *
             * @param starting_time the time the scan will start or 0 if the scan is required to start immediately
             * @param scan structure containing the description of the scan to be executed
             * @param antennaInfo auxiliary information from the antenna
             * @param runTime auxiliary information computed at run time by the subsystem
             */
            boolean checkScan(
                    in ACS::Time starting_time,
                    in MinorServoScan scan,
    		in Antenna::TRunTimeParameters antennaInfo,
    		out TRunTimeParameters runtime
            ) raises (MinorServoErrors::MinorServoErrorsEx,
                      ComponentErrors::ComponentErrorsEx);
    
            /** 
             * Clear the user offset of a servo (or all servos)
             *
             * @param servo a string:
             *     * the servo name 
             *     * "ALL" to clear the user offset of all servos
             */
            void clearUserOffset(
                    in string servo
            ) raises (MinorServoErrors::MinorServoErrorsEx,
                      ComponentErrors::ComponentErrorsEx);
     
            /** 
             * Set the user offset of the servo
             *
             * @param axis_code the axis code (SRP_TZ, GFR_RZ, ecc.)
             * @param double offset 
             * @throw ManagementError::ConfigurationErrorEx
             * @throw MinorServoErrors::OperationNotPermittedEx
             */
            void setUserOffset(
                    in string axis_code,
                    in double offset
            ) raises (MinorServoErrors::MinorServoErrorsEx,
                      ComponentErrors::ComponentErrorsEx);
    
            /** Return the user offset of the system, by following the order axes of getAxesInfo()
             *
             * @return offset the user offset of the system
             */
             ACS::doubleSeq getUserOffset() 
             raises (MinorServoErrors::MinorServoErrorsEx,
                     ComponentErrors::ComponentErrorsEx);
     
            /** 
             * Clear the system offset of a servo (or all servos)
             *
             * @param servo a string:
             *     * the servo name 
             *     * "ALL" to clear the system offset of all servos
             * @throw MinorServoErrors::OperationNotPermittedEx
             */
            void clearSystemOffset(in string servo) 
            raises (MinorServoErrors::MinorServoErrorsEx,
                    ComponentErrors::ComponentErrorsEx);
     
            /** 
             * Set the system offset of the servo
             *
             * @param axis_code the axis code (SRP_TZ, GFR_RZ, ecc.)
             * @param double offset 
             */
            void setSystemOffset(
                    in string axis_code,
                    in double offset
            ) raises (MinorServoErrors::MinorServoErrorsEx,
                      ComponentErrors::ComponentErrorsEx);
    
            /** Return the system offset, by following the order axes of getAxesInfo()
             *
             * @return offset the system offset
             */
             ACS::doubleSeq getSystemOffset() 
             raises (MinorServoErrors::MinorServoErrorsEx,
                     ComponentErrors::ComponentErrorsEx);
     
            /** Return the active axes names and related units
             *
             * @param axes a sequence of active axes. For instance, for the KKG configuration: 
             * ("SRP_XT", "SRP_YT", "SRP_ZT", "SRP_XR", "SRP_YR", "SRP_ZR", "GFR_ZR")
             * For the CCB configuration: 
             * ("SRP_XT", "SRP_YT", "SRP_ZT", "SRP_XR", "SRP_YR", "SRP_ZR", "M3R_ZR")
             * For Medicina Secondary Focus:
             * ("X", "Y", "Z", "THETA_X", "THETA_Y")
             * For Medicina Primary Focus
             * ("YP", "ZP")
             * @param units a sequence of strings, each one is the unit of the corresponding axis.
             * For instance: ("mm", "mm", "mm", "degree", "degree", "degree", "mm")
             * @throw MinorServoErrors::ConfigurationErrorEx
             */
            void getAxesInfo(
                out ACS::stringSeq axes, 
                out ACS::stringSeq units
            ) raises (MinorServoErrors::MinorServoErrorsEx, 
                      ComponentErrors::ComponentErrorsEx);
    
    		/** Return the code of the axis involved in the scan */
    	    string getScanAxis();
     
            /** Return the positions of the active axes
             *  
             * @param t the time related to the position we want to retrieve
             * @return a sequence of positions, in the same order of the axes parameter of getAxesInfo()
             * @throw MinorServoErrors::ConfigurationErrorEx if the system is not configured
             */
            ACS::doubleSeq getAxesPosition(in ACS::Time t) 
            raises (MinorServoErrors::MinorServoErrorsEx, 
                    ComponentErrors::ComponentErrorsEx);
                
        };
    };
    
    #endif