Go to the documentation of this file.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