/*
 * SPDX-FileCopyrightText: 2014 Copyright contributors to the cppTango project
 *
 * SPDX-License-Identifier: LGPL-3.0-or-later
 */
/*----- PROTECTED REGION ID(DummyClass.cpp) ENABLED START -----*/
/* clang-format on */

#include "DummyClass.h"
#include "DummyClassClass.h"

/* clang-format off */
/*----- PROTECTED REGION END -----*/	//	DummyClass.cpp

/**
 *  DummyClass class description:
 *
 */

//================================================================
//  The following table gives the correspondence
//  between command and method names.
//
//  Command name  |  Method name
//================================================================
//  State         |  Inherited (no method)
//  Status        |  Inherited (no method)
//================================================================

//================================================================
//  Attributes managed is:
//================================================================
//================================================================

namespace DummyClass_ns
{
/*----- PROTECTED REGION ID(DummyClass::namespace_starting) ENABLED START -----*/
/* clang-format on */

//	static initializations
/* clang-format off */
/*----- PROTECTED REGION END -----*/	//	DummyClass::namespace_starting

//--------------------------------------------------------
/**
 *	Method     : DummyClass::DummyClass()
 *	Description: Constructors for a Tango device
 *                implementing the classDummyClass
 */
//--------------------------------------------------------
DummyClass::DummyClass(Tango::DeviceClass *cl, std::string &s)
 : TANGO_BASE_CLASS(cl, s.c_str())
{
	/*----- PROTECTED REGION ID(DummyClass::constructor_1) ENABLED START -----*/
    /* clang-format on */
    init_device();
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::constructor_1
}
//--------------------------------------------------------
DummyClass::DummyClass(Tango::DeviceClass *cl, const char *s)
 : TANGO_BASE_CLASS(cl, s)
{
	/*----- PROTECTED REGION ID(DummyClass::constructor_2) ENABLED START -----*/
    /* clang-format on */
    init_device();
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::constructor_2
}
//--------------------------------------------------------
DummyClass::DummyClass(Tango::DeviceClass *cl, const char *s, const char *d)
 : TANGO_BASE_CLASS(cl, s, d)
{
	/*----- PROTECTED REGION ID(DummyClass::constructor_3) ENABLED START -----*/
    /* clang-format on */
    init_device();
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::constructor_3
}
//--------------------------------------------------------
DummyClass::~DummyClass()
{
	delete_device();
}

//--------------------------------------------------------
/**
 *	Method     : DummyClass::delete_device()
 *	Description: will be called at device destruction or at init command
 */
//--------------------------------------------------------
void DummyClass::delete_device()
{
	DEBUG_STREAM << "DummyClass::delete_device() " << device_name << std::endl;
	/*----- PROTECTED REGION ID(DummyClass::delete_device) ENABLED START -----*/
    /* clang-format on */
    //	Delete device allocated objects
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::delete_device
}

//--------------------------------------------------------
/**
 *	Method     : DummyClass::init_device()
 *	Description: will be called at device initialization.
 */
//--------------------------------------------------------
void DummyClass::init_device()
{
	DEBUG_STREAM << "DummyClass::init_device() create device " << device_name << std::endl;
	/*----- PROTECTED REGION ID(DummyClass::init_device_before) ENABLED START -----*/
    /* clang-format on */
    //	Initialization before get_device_property() call
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::init_device_before

	//	No device property to be read from database

	/*----- PROTECTED REGION ID(DummyClass::init_device) ENABLED START -----*/
    /* clang-format on */
    //	Initialize device
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::init_device
}


//--------------------------------------------------------
/**
 *	Method     : DummyClass::always_executed_hook()
 *	Description: method always executed before any command is executed
 */
//--------------------------------------------------------
void DummyClass::always_executed_hook()
{
	DEBUG_STREAM << "DummyClass::always_executed_hook()  " << device_name << std::endl;
	/*----- PROTECTED REGION ID(DummyClass::always_executed_hook) ENABLED START -----*/
    /* clang-format on */
    //	code always executed before all requests
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::always_executed_hook
}

//--------------------------------------------------------
/**
 *	Method     : DummyClass::read_attr_hardware()
 *	Description: Hardware acquisition for attributes
 */
//--------------------------------------------------------
void DummyClass::read_attr_hardware(TANGO_UNUSED(std::vector<long> &attr_list))
{
	DEBUG_STREAM << "DummyClass::read_attr_hardware(std::vector<long> &attr_list) entering... " << std::endl;
	/*----- PROTECTED REGION ID(DummyClass::read_attr_hardware) ENABLED START -----*/
    /* clang-format on */
    //	Add your own code
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::read_attr_hardware
}


//--------------------------------------------------------
/**
 *	Method     : DummyClass::add_dynamic_attributes()
 *	Description: Create the dynamic attributes if any
 *                for specified device.
 */
//--------------------------------------------------------
void DummyClass::add_dynamic_attributes()
{
	/*----- PROTECTED REGION ID(DummyClass::add_dynamic_attributes) ENABLED START -----*/
    /* clang-format on */
    //	Add your own code to create and add dynamic attributes if any
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::add_dynamic_attributes
}

//--------------------------------------------------------
/**
 *	Method     : DummyClass::add_dynamic_commands()
 *	Description: Create the dynamic commands if any
 *                for specified device.
 */
//--------------------------------------------------------
void DummyClass::add_dynamic_commands()
{
	/*----- PROTECTED REGION ID(DummyClass::add_dynamic_commands) ENABLED START -----*/
    /* clang-format on */
    //	Add your own code to create and add dynamic commands if any
    /* clang-format off */
	/*----- PROTECTED REGION END -----*/	//	DummyClass::add_dynamic_commands
}

/*----- PROTECTED REGION ID(DummyClass::namespace_ending) ENABLED START -----*/
/* clang-format on */
//	Additional Methods
/* clang-format off */
/*----- PROTECTED REGION END -----*/	//	DummyClass::namespace_ending
} //	namespace
