Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

fswsCON_SERVER.h

Go to the documentation of this file.
00001 #ifndef fswsCON_SERVER_H
00002 #define fswsCON_SERVER_H
00003 /******************************************************************************
00004 * E.S.O. - VLT project
00005 *
00006 * "@(#) $Id: fswsCON_SERVER.h,v 1.67 2003/11/12 08:38:03 vltsccm Exp $"
00007 *
00008 * who       when      what
00009 * --------  --------  --------------------------------------------------------
00010 * rkarban 2002-01-11 add SlutaRg
00011 * rkarban 2001-11-27 make StartAgData public
00012 * rkarban 2001-11-27 make FswsConIns public
00013 * gchiozzi 2000-07-27 Moved handling of pix size in agwsServer.
00014 * tcsmgr2 1999-11-24 Added ccdSendInError flag
00015 * tcsmgr  16/10/98  pixSize is now intialised at Init sending a PIXSIZE command to the proper ag LCU
00016 * gchiozzi  21/09/98  Added overloading of Setup() method for two windows guiding
00017 * gchiozzi  02/09/98  Removed FSCOMP command
00018 * rkarban  07/05/98  add support for sending periodically ccd angle on sky
00019 * gchiozzi   26/02/98  created
00020 */
00021 
00022 /******************************************************************************
00023  * Definition of the agwsCON_SERVER class.
00024  *-----------------------------------------------------------------------------
00025  */
00026 
00027 #ifndef __cplusplus
00028 #error This is a C++ include file and cannot be used from plain C
00029 #endif
00030 
00031 #include <evhTIMER.h>
00032 #include "agwsCON_SERVER.h"
00033 #include "fswsCON_CHOP.h"
00034 #include "fswsCON_INS.h"
00035 #include "fswsCON_SETUP.h"
00036 
00037 /*
00038  *  Support classes to help handling STARTAG/STOPAG
00039  *  command sequences
00040  */
00041 struct fswsCALLBACK_SET
00042 {
00043     fndOBJECT     *obj;
00044     evhCB_METHOD   reply;
00045     evhCB_METHOD   errReply;
00046     evhCB_METHOD   timeout;
00047     void          *udata;
00048 
00049     fswsCALLBACK_SET();
00050 
00051     virtual ccsCOMPL_STAT Clear();
00052     virtual ccsCOMPL_STAT SetCallbacks(fndOBJECT        *obj, 
00053                evhCB_METHOD      reply,
00054                evhCB_METHOD      errReply, 
00055                evhCB_METHOD      timeout,
00056                void             *udata);
00057 };
00058 
00059 struct fswsSTARTAG_DATA : public fswsCALLBACK_SET
00060 {
00061     vltDOUBLE  repFreq;
00062     char       at[32];
00063     char       modeStr[3];
00064     vltINT32   mode;
00065     vltLOGICAL rgRequest;
00066     char       bid[20];
00067     msgMESSAGE startMsg;
00068 
00069     fswsSTARTAG_DATA();
00070     virtual ~fswsSTARTAG_DATA(){};
00071 
00072     virtual ccsCOMPL_STAT Clear();
00073 };
00074 
00075 class fswsCHOP_CONFIG
00076 {
00077   public:
00078 
00079     fswsCHOP_CONFIG();
00080     
00081     const char        *StartTime() const;
00082     const eccsTIMEVAL &StartTimeCcs() const;
00083 
00084     const char        *StopTime() const;
00085     const eccsTIMEVAL &StopTimeCcs() const;
00086 
00087     vltDOUBLE  Throw() const;
00088     vltDOUBLE  OffsetChop() const;
00089     vltDOUBLE  PosAng() const;
00090     vltDOUBLE  Freq() const;
00091     vltDOUBLE  PeakValleyRatio() const;
00092 
00093     vltLOGICAL    CCDConfigChanged() const;
00094 
00095     ccsCOMPL_STAT Update(chopwsSTATUS_MONITOR &chopData);
00096     ccsCOMPL_STAT Reset();
00097 
00098   private:
00099     char        startTime[80];
00100     eccsTIMEVAL startTimeCcs;
00101 
00102     char        stopTime[80];
00103     eccsTIMEVAL stopTimeCcs;
00104 
00105     vltDOUBLE  chopThrow;
00106     vltDOUBLE  offsetChop;
00107     vltDOUBLE  posAng;
00108     vltDOUBLE  freq;
00109     vltDOUBLE  peakValleyRatio;
00110 
00111     vltLOGICAL ccdConfigChanged;
00112 };    
00113 
00114 /*
00115  * Main class definition
00116  */
00117 class fswsCON_SERVER : public agwsCON_SERVER
00118 {
00119   public:
00120     fswsCON_SERVER(const dbSYMADDRESS  dbPoint,
00121          fswsCON_CHOP         &fswsConCHOP,
00122          fswsCON_INS        &fswsConIns,
00123        fswsCON_SETUP      &conSetup);
00124 
00125     virtual ~fswsCON_SERVER();
00126     virtual ccsCOMPL_STAT Init();
00127     virtual ccsCOMPL_STAT Reset();
00128 
00129     /*
00130      * Overloaded implementations
00131      */
00132     virtual ccsCOMPL_STAT StartAg(msgMESSAGE   &msg,
00133           fndOBJECT    *obj,
00134           evhCB_METHOD  reply,
00135           evhCB_METHOD  errReply, 
00136           evhCB_METHOD  timeout = NULL,
00137           void         *udata   = NULL);
00138 
00139     virtual ccsCOMPL_STAT StopAg(msgMESSAGE   &msg,
00140          fndOBJECT    *obj,
00141          evhCB_METHOD  reply,
00142          evhCB_METHOD  errReply, 
00143          evhCB_METHOD  timeout = NULL,
00144          void         *udata   = NULL);
00145 
00146     virtual ccsCOMPL_STAT StopRg(msgMESSAGE   &msg,
00147          fndOBJECT    *obj,
00148          evhCB_METHOD  reply,
00149          evhCB_METHOD  errReply, 
00150          evhCB_METHOD  timeout = NULL,
00151          void         *udata   = NULL);
00152 
00153     virtual ccsCOMPL_STAT SlutaRg(msgMESSAGE   &msg,
00154          fndOBJECT    *obj,
00155          evhCB_METHOD  reply,
00156          evhCB_METHOD  errReply, 
00157          evhCB_METHOD  timeout = NULL,
00158          void         *udata   = NULL);
00159 
00160 
00161     virtual ccsCOMPL_STAT OffsAg(msgMESSAGE   &msg,
00162          fndOBJECT    *obj,
00163          evhCB_METHOD  reply,
00164          evhCB_METHOD  errReply, 
00165          evhCB_METHOD  timeout = NULL,
00166          void         *udata   = NULL);
00167 
00168     virtual ccsCOMPL_STAT Setup(fndOBJECT    *obj,
00169         evhCB_METHOD  reply,
00170         evhCB_METHOD  errReply, 
00171         evhCB_METHOD  timeout = NULL,
00172         void         *udata   = NULL);
00173 
00174     /*
00175      * New commands/methods
00176      */
00177     virtual evhCB_COMPL_STAT ChopSetCB(evtEVENT_MSG &msg, void *udata);
00178 
00179     virtual ccsCOMPL_STAT StartSendCcd(void);
00180     virtual ccsCOMPL_STAT StopSendCcd(void);
00181     fswsCON_INS      &FswsConIns();
00182     fswsSTARTAG_DATA &StartAgData();
00183     eccsDB_INT32     &FsMode();
00184     fswsCON_SETUP    &FswsConSetup();
00185 
00186   protected:
00187 
00188     /*
00189      * Internal steps for the StartAg sequence
00190      */
00191     virtual evhCB_COMPL_STAT StartAgGetBidCB(msgMESSAGE &msg, void *udata);
00192     virtual evhCB_COMPL_STAT StartAgEnaFsCB(msgMESSAGE &msg, void *udata);
00193     virtual evhCB_COMPL_STAT StartAgStartCB(msgMESSAGE &msg, void *udata);
00194     virtual evhCB_COMPL_STAT StartAgFinaliseCB(msgMESSAGE &msg, void *udata);
00195     virtual evhCB_COMPL_STAT StartAgErrorCB(msgMESSAGE &msg, void *udata);
00196     virtual evhCB_COMPL_STAT StartAgTimeoutCB(msgMESSAGE &msg, void *udata);
00197 
00198     /*
00199      * Internal steps for the StopAg sequence
00200      */
00201     virtual evhCB_COMPL_STAT StopAgDisFsCB(msgMESSAGE &msg, void *udata);
00202     virtual evhCB_COMPL_STAT StopAgErrorCB(msgMESSAGE &msg, void *udata);
00203     virtual evhCB_COMPL_STAT StopAgTimeoutCB(msgMESSAGE &msg, void *udata);
00204 
00205     virtual evhCB_COMPL_STAT CcdSendTimerCB(evtEVENT_MSG &, void*);
00206 
00207     /*
00208      * Internal steps for the ChopSet sequence
00209      */
00210     virtual evhCB_COMPL_STAT ChopSetSendCB(void *, void *);
00211     virtual evhCB_COMPL_STAT ChopSetSendOkCB(msgMESSAGE &msg, void *udata);
00212 
00213     virtual evhCB_COMPL_STAT ChopSetOkCB(msgMESSAGE &msg, void *udata);
00214     virtual evhCB_COMPL_STAT ChopSetErrorCB(msgMESSAGE &msg, void *udata);
00215 
00216     virtual ccsCOMPL_STAT    ChopPrepBuf (char *buffer);
00217 
00218     /*
00219      * Internal steps for the Setup sequencs
00220      */
00221     virtual evhCB_COMPL_STAT SetupAd2XyOkCB(msgMESSAGE &msg, void *udata);
00222     virtual evhCB_COMPL_STAT SetupAd2XyErrorCB(msgMESSAGE &msg, void *udata);
00223 
00224     evhCB_COMPL_STAT SlutaRgDisFsCB(msgMESSAGE &, void *);
00225     evhCB_COMPL_STAT SlutaRgStopRgCB(msgMESSAGE &, void *);
00226 
00227     enum {ON, OFF, BOTH} phaseToGuide;
00228 
00229     /*
00230      * Suppport objects for SETUP setting 2nd window
00231      */
00232     fswsCALLBACK_SET setupData;
00233 
00234   private:
00235     eccsDB_INT32    fsMode;
00236 
00237     fswsCON_CHOP    &fswsConCHOP;
00238     fswsCON_INS     &fswsConIns;
00239     fswsCON_SETUP   &fswsConSetup;
00240 
00241     /*
00242      * Support objects for the StartAg sequence
00243      */
00244     fswsSTARTAG_DATA startAgData;
00245 
00246     /*
00247      * Support objects for the StopAg sequence
00248      */
00249     fswsCALLBACK_SET stopAgData;
00250 
00251 
00252     ccsTIMEVAL      ccdSendInterval;
00253     vltLOGICAL      ccdSendActive;
00254     vltLOGICAL      ccdSendInError;
00255     evhTIMER       *ccdSendTimer;
00256     evhCOMMAND      writerotCommand;
00257 
00258 
00259     /*
00260      * Support objects for chopping configuration
00261      */
00262     evhCOMMAND      chopSetCmd;       // CHOPSET  command object
00263     evhCOMMAND      chopSetCmd2;       // CHOPSET  command object
00264     eccsTIMEVAL     chopSetTimeout;   // CHOPSET  command timeout
00265 
00266     fswsCHOP_CONFIG chopConfig;
00267     vltLOGICAL      alreadyGuiding;
00268 
00269 
00270     evhCOMMAND      ad2xyCmd;       // AD2XY  command object
00271     eccsTIMEVAL     ad2xyTimeout;   // AD2XY  command timeout
00272 
00273     /*
00274      * Sluta objects
00275      */
00276     fswsCALLBACK_SET slutaRgData;
00277     eccsERROR        slutaErrStack;
00278     eccsERROR_CLASS  slutaErrClass;
00279 
00280 };
00281 
00282 #include "fswsCON_SERVER.icc"
00283 
00284 #endif // !fswsCON_SERVER_H

Generated on Wed Dec 3 14:52:13 2003 for ATCS API by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001