#ifndef TCSHardwareDevice_idl
#define TCSHardwareDevice_idl
//
// Adapted from Alma hardware device


#include <TCSControlDevice.idl>

#pragma prefix "astri"


module tcs
{
    interface TCSHardwareDevice: TCSControlDevice
    {
        enum tcshwState
        {
            /// At construction.
            UNDEF,
            /// After component is ready
            START,
            /// Identify the hardware and the relevant data out of the TCDB.
            CONFIGURE,
            /// Initializes the hardware. Enable monitoring.
            INIZIALIZE,
            /// Normal ready state
            OPERATIONAL,
            /// Disable all comunication with the hardware.
            STOP
        };
        void tcshwStart() ;
        void tcshwConfigure(); 
        void tcshwInitialize(); 
        void tcshwOperational(); 
        void tcshwStop();

        /// Enable collection of monitor data.
        void monitoringOn(); 
        /// Disable all collection of monitor data.
        void monitoringOff();
        string getSerialNumber();
        /// Allows for knowing whether the Assembly is been monitored or not.
        /// \return true if the hardware device monitoring is enabled.
        boolean isMonitoring();
        /// Get the current hardware state.
        /// \return one of tcshwState
        tcshwState getHwState();
    };
};
#endif
