00001 #ifndef atactwsCON_CFD_H
00002 #define atactwsCON_CFD_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __cplusplus
00019 #error This is a C++ include file and cannot be used from plain C
00020 #endif
00021
00022 #include "atagws.h"
00023 #include "eccsErr.h"
00024 #include <fndOBJECT.h>
00025 #include <evhCALLBACK.h>
00026 #include <evhDB_TASK.h>
00027 #include <evhCOMMAND.h>
00028 #include "agwsCMD_HANDLER.h"
00029 #include "eccsDB_TABLE.h"
00030 #include "tcsCMD_PARALLEL.h"
00031
00032 class atagwsBEAMPOS_DATA : public eccsDB_TABLE_RECORD
00033 {
00034 public:
00035 vltBYTES32 pos;
00036 vltDOUBLE x, y;
00037
00038 ccsCOMPL_STAT Unpack( void *pBuffer )
00039 {
00040 char *buffer = reinterpret_cast<char *>(pBuffer);
00041 memcpy( &pos, buffer, sizeof(pos) );
00042 buffer = buffer+sizeof(pos);
00043 memcpy( &x, buffer, sizeof(x) );
00044 buffer = buffer+sizeof(x);
00045 memcpy( &y, buffer, sizeof(y) );
00046 return(SUCCESS);
00047 }
00048 ccsCOMPL_STAT Pack( void *buffer )
00049 {
00050 int size = 0;
00051 dbFillBuf( (char**)&buffer, (char*)&pos, &size, dbBYTES32);
00052 dbFillBuf( (char**)&buffer, (char*)&x, &size, dbDOUBLE);
00053 dbFillBuf( (char**)&buffer, (char*)&y, &size, dbDOUBLE);
00054 return(SUCCESS);
00055 }
00056 };
00057
00058 typedef enum {cfdPosSTOP, cfdPosHOLE, cfdPosMIRROR, cfdPosSPLIT, cfdPosVIEWER} atagwsCFD_POS;
00059
00060 class atagwsCON_CFD : public eccsERROR_CLASS, fndOBJECT
00061 {
00062 public:
00063 atagwsCON_CFD(const dbSYMADDRESS dbRoot);
00064 virtual ~atagwsCON_CFD();
00065
00066 ccsCOMPL_STAT Init();
00067 vltLOGICAL IsActive();
00068
00069 protected:
00070 ccsCOMPL_STAT SetDest (const char *modName, msgMESSAGE &msg);
00071 virtual evhCB_COMPL_STAT SetBeamCB(msgMESSAGE &msg, agwsCMD_HANDLER &);
00072 virtual evhCB_COMPL_STAT BeamCmdReplyCB(msgMESSAGE &, void*);
00073 virtual evhCB_COMPL_STAT BeamCmdErrorCB(msgMESSAGE &, void*);
00074
00075 private:
00076 dbSYMADDRESS dbPoint;
00077 evhCOMMAND setBeam;
00078 agwsCMD_HANDLER setBeamCmdHandler;
00079 tcsCMD_PARALLEL beamCmd;
00080 };
00081
00082 #endif // !atactwsCON_CFD_H