00001 #ifndef fswsCON_SERVER_H
00002 #define fswsCON_SERVER_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 #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
00039
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
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
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
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
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
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
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
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
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
00243
00244 fswsSTARTAG_DATA startAgData;
00245
00246
00247
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
00261
00262 evhCOMMAND chopSetCmd;
00263 evhCOMMAND chopSetCmd2;
00264 eccsTIMEVAL chopSetTimeout;
00265
00266 fswsCHOP_CONFIG chopConfig;
00267 vltLOGICAL alreadyGuiding;
00268
00269
00270 evhCOMMAND ad2xyCmd;
00271 eccsTIMEVAL ad2xyTimeout;
00272
00273
00274
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