// $Header: https://oberon.oapd.inaf.it/shins/trunk/shins/src/track_ctrl/drot/Interface/Sharknir/Drot/PropertyName.h 1773 2019-04-18 10:48:50Z depa $

/*  https://svn.mpia.de/gulli/TwiceAsNice/branch/unstable/ln/laos-drot/src/Interface/Laos/Drot/PropertyName.h 14325 2017-03-29 17:45:12Z briegel $
*/

#pragma once

#include <string>

namespace Sharknir
{
    namespace Drot
    {
        namespace Svc
        {
            class PropertyName
            {
                public:
                    static std::string cfgInterval()
                    {
                        return "CFG.INTERVAL";
                    }

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

                    static std::string datasheetBacklash()
                    {
                        return "CFG.BACKLASH";
                    }

                    static std::string cfgFaultTolerance()
                    {
                        return "CFG.FAULT_TOLERANCE";
                    }

                    static std::string cfgFrequency()
                    {
                        return "CFG.FREQUENCY";
                    }

                    static std::string datasheetResolution()
                    {
                        return "CFG.RESOLUTION";
                    }

                    static std::string cfgSamplesPerSegment()
                    {
                        return "CFG.SAMPLES_PER_SEGMENT";
                    }

                    /** @brief sign of the motor step direction relative to angle direction
                    * @since 2016-11-22
                    */
                    static std::string cfgDirection()
                    {
                        return "CFG.DIRECTION";
                    }

                    static std::string varPosition()
                    {
                        return "VAR.POSITION";
                    }

                    static std::string varDeviceEncoderPosition()
                    {
                        return "VAR.POSITION.DEVICE_ENCODER";
                    }

                    static std::string varAbsoluteEncoderPosition()
                    {
                        return "VAR.POSITION.ABSOLUTE_ENCODER";
                    }

                    static std::string varIncrementalEncoderPosition()
                    {
                        return "VAR.POSITION.INCREMENTAL_ENCODER";
                    }

#if 0
                    /** @brief the rotation polynomial value at the start of the derotation.
                    * @since 2016-11-22
                    */
                    static std::string varStartAngle()
                    {
                        return "VAR.START_ANG";
                    }

//                    static std::string varServiceName()
//                    {
//                        return "VAR.SERVICE_NAME";
//                    }
#endif
            };


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

                    static std::string coordinateSystem()
                    {
                        return "COORDINATE_SYSTEM";
                    }

                   static std::string uiDefaultPosition()
                   {
                       return "DEFAULT";
                   }
            };
        }
    }
}
