00001
#ifndef acscourseMount4Impl_h
00002
#define acscourseMount4Impl_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#ifndef __cplusplus
00029
#error This is a C++ include file and cannot be used from plain C
00030
#endif
00031
00032
#include <baciCharacteristicComponentImpl.h>
00033
#include <baciROdouble.h>
00034
#include <baciRWdouble.h>
00035
00037
#include <baciSmartPropertyPointer.h>
00038
00044
#include <acscourseMountS.h>
00045
#include "acsThreadManager.h"
00046
00047
00079
class Mount4Impl;
00080
00081
class PositionControlThread :
public ACS::Thread
00082 {
00083
public:
00084
PositionControlThread(
const ACE_CString& name,
00085
Mount4Impl *mount_p,
00086
const ACS::TimeInterval& responseTime=ThreadBase::defaultResponseTime,
00087
const ACS::TimeInterval& sleepTime=ThreadBase::defaultSleepTime);
00088
~PositionControlThread();
00089
00090
virtual void runLoop();
00091
00092
protected:
00093 Mount4Impl *
mount_p;
00094 };
00095
00102 class Mount4Impl:
public virtual baci::CharacteristicComponentImpl,
00103
public virtual POA_ACSCOURSE_MOUNT::
Mount4,
00104
public baci::ActionImplementator
00105 {
00106
public:
00113
Mount4Impl(
const ACE_CString &name,
maci::ContainerServices *containerServices);
00114
00118
virtual ~Mount4Impl();
00119
00143
virtual baci::ActionRequest
00144
invokeAction (
int function,
00145
baci::BACIComponent *cob_p,
00146
const int &callbackID,
00147
const CBDescIn &descIn,
00148
baci::BACIValue *value_p,
00149
Completion &completion,
00150
CBDescOut &descOut);
00151
00174
virtual baci::ActionRequest
00175
objfixAction (
baci::BACIComponent *cob_p,
00176
const int &callbackID,
00177
const CBDescIn &descIn,
00178
baci::BACIValue *value_p,
00179
Completion &completion,
00180
CBDescOut &descOut);
00181
00195
virtual void
00196
objfix (CORBA::Double az,
00197 CORBA::Double elev);
00198
00199
virtual void
00200
objfix_async (
00201 CORBA::Double az,
00202 CORBA::Double elev,
00203 ACS::CBvoid_ptr cb,
00204
const ACS::CBDescIn &desc);
00205
00214
virtual ACS::ROdouble_ptr
00215
cmdAz ();
00216
00225
virtual ACS::ROdouble_ptr
00226
cmdEl ();
00227
00236
virtual ACS::ROdouble_ptr
00237
actAz ();
00238
00247
virtual ACS::ROdouble_ptr
00248
actEl ();
00249
00250
00251
protected:
00252
00253 struct __objfix_action {
00254 double az;
00255 double elev;
00256 };
00257
00261 baci::SmartPropertyPointer<baci::ROdouble> m_cmdAz_sp;
00262
00266 baci::SmartPropertyPointer<baci::ROdouble> m_cmdEl_sp;
00267
00271 baci::SmartPropertyPointer<baci::ROdouble> m_actAz_sp;
00272
00276 baci::SmartPropertyPointer<baci::ROdouble> m_actEl_sp;
00277
00281
void operator=(
const Mount4Impl&);
00282
00288
friend class PositionControlThread;
00289 };
00290
00291
#endif