#pragma once

/* $Header: https://oberon.oapd.inaf.it/shins/trunk/shins/src/iif/Interface/Ltcs/Iif/PropertyName.h 3896 2022-04-13 13:24:17Z depa $
*/

#include <string>

namespace Ltcs
{
    namespace Iif
    {
        namespace Svc
        {
            class PropertyName
            {
                public:
                    static std::string connectionAdapter()
                    {
                        return "CFG.CONNECTION";
                    }

                    static std::string connectionTimeout()
                    {
                        return "CFG.CONNECTION.TIMEOUT";
                    }

                    static std::string cfgCommandSide()
                    {
                        return "CFG.COMMAND_SIDE";
                    }

                    static std::string cfgProxyName()
                    {
                        return "CFG.PROXY_NAME";
                    }

                    static std::string cfgRotatorMode()
                    {
                        return "CFG.ROTATOR_MODE";
                    }

                    static std::string cfgInstrumentID()
                    {
                        return "CFG.INSTRUMENT_ID";
                    }

                    static std::string cfgFocalStation()
                    {
                        return "CFG.FOCAL_STATION";
                    }

                    static std::string cfgInterval()
                    {
                        return "CFG.INTERVAL";
                    }

                    /**
                    * @brief Number of rotator polynomials obtained in one shot.
                    * @return The property name of the number of polynomials
                    * @since 2016-12-05 merged from pang service
                    */
                    static std::string cfgNumberOfPolynomials()
                    {
                        return "CFG.NUMBER_OF_POLYNOMIALS";
                    }

                    /**
                    * @brief Sampling rate for the rotator polynomials.
                    * @return The property name of the sampling rate for polynomial slices.
                    * @since 2016-12-05 merged from pang service
                    */
                    static std::string cfgSamplingRate()
                    {
                        return "CFG.SAMPLING_RATE";
                    }

                    /**
                    * @brief The order of each rotator polynomial.
                    * @return The property name of the order of each rotator polynomial.
                    * @since 2016-12-05 merged from pang service
                    */
                    static std::string cfgPolynomialOrder()
                    {
                        return "CFG.POLYNOMIAL_ORDER";
                    }

                    static std::string varPA()
                    {
                        return "VAR.PA";
                    }

                    static std::string varDEC()
                    {
                        return "VAR.MOUNT_ACHIEVED_DEC";
                    }

                    static std::string varRA()
                    {
                        return "VAR.MOUNT_ACHIEVED_RA";
                    }

                    static std::string varHourAngleHms()
                    {
                        return "VAR.MOUNT_ACHIEVED_HAHMS";
                    }

                    static std::string varLST()
                    {
                        return "VAR.LST";
                    }

                    static std::string varUTC()
                    {
                        return "VAR.UTC";
                    }

                    static std::string varHA()
                    {
                        return "VAR.MOUNT_ACHIEVED_HA";
                    }

                    static std::string varALT()
                    {
                        return "VAR.MOUNT_ACHIEVED_ALT";
                    }

                    static std::string varAZ()
                    {
                        return "VAR.MOUNT_ACHIEVED_AZ";
                    }

                    static std::string varALTString()
                    {
                        return "VAR.MOUNT_ACHIEVED_ALT_STR";
                    }

                    static std::string varAZString()
                    {
                        return "VAR.MOUNT_ACHIEVED_AZ_STR";
                    }

                    static std::string varEpoch()
                    {
                        return "VAR.EPOCH";
                    }

                    /**
                    * @brief name of the rotator service.
                    * @return The property that contains the name of the rotator service.
                    * @since 2016-12-05 merged from pang service
                    */
                    static std::string serviceName()
                    {
                        return "VAR.SERVICE_NAME";
                    }

                    /**
                    * @brief The rotator polynomials
                    * @return the property that contains the rotator polynomials.
                    * @since 2016-12-05 merged from pang service
                    */
                    static std::string varPolynomials()
                    {
                        return "VAR.POLYNOMIALS";
                    }

            };

            // the attribute for the command interface
            class AttributeName
            {
                public:
                    static std::string isReachable()
                    {
                        return "IS_REACHABLE";
                    }

                    /**
                    * @brief command interface attribute
                    * @return The attribute for the physical unit of the rotator polynomials.
                    * @since 2016-12-05 merged from pang service
                    */
                    static std::string unit()
                    {
                        return "UNIT";
                    }

                    /**
                    * @brief command interface attribute
                    * @return The attribute for the rotator coordinate system.
                    * @since 2016-12-05 merged from pang service
                    */
                    static std::string coordinateSystem()
                    {
                        return "COORDINATE_SYSTEM";
                    }

            };
        }
    }
}
