00001
00002
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
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #ifndef CCD_LCU_INTERNAL_H
00054 #define CCD_LCU_INTERNAL_H
00055
00056 #ifdef __cplusplus
00057 extern "C" {
00058 #endif
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 #include "vxWorks.h"
00070 #include "envLib.h"
00071 #include "ioLib.h"
00072 #include "math.h"
00073 #include "semLib.h"
00074 #include "stdio.h"
00075 #include "stdlib.h"
00076 #include "string.h"
00077 #include "sysLib.h"
00078 #include "taskLib.h"
00079 #include "tickLib.h"
00080 #include "vxLib.h"
00081 #include "ctype.h"
00082 #include "usrLib.h"
00083 #include "errnoLib.h"
00084
00085
00086
00087
00088 #include "ccdInternal.h"
00089 #include "too.h"
00090
00091 #ifdef MEM_TRACE
00092 #include "lccMemoryTrace.h"
00093 #endif
00094 #include "lccTaskLib.h"
00095
00096
00097
00098
00099
00100
00101 #define ccdACE_B016_DRV "/bxvi00"
00102 #define ccdACE_ARC0_DRV "/arcdrv0"
00103 #define ccdACE_ARC1_DRV "/arcdrv1"
00104
00105 #define ccdTASK_FLAGS (VX_FP_TASK)
00106
00107
00108 #define ccdTASK_STACK_30K 30000
00109 #define ccdTASK_STACK_40K 40000
00110 #define ccdTASK_STACK_50K 50000
00111 #define ccdTASK_STACK_80K 80000
00112
00113 #define ccdTASK_STACK_SRV ccdTASK_STACK_50K
00114
00115 #define ccdTASK_STACK_SML ccdTASK_STACK_30K
00116 #define ccdTASK_STACK_ACT ccdTASK_STACK_40K
00117 #define ccdTASK_STACK_BIG ccdTASK_STACK_50K
00118 #define ccdTASK_STACK_XXL ccdTASK_STACK_80K
00119
00120 #define ccdTASK_STACK_TIME ccdTASK_STACK_SML
00121 #define ccdTASK_STACK_CTRL ccdTASK_STACK_BIG
00122 #define ccdTASK_STACK_READ ccdTASK_STACK_ACT
00123 #define ccdTASK_STACK_WIPE ccdTASK_STACK_SML
00124 #define ccdTASK_STACK_SHUT ccdTASK_STACK_ACT
00125 #define ccdTASK_STACK_TRAN ccdTASK_STACK_XXL
00126 #define ccdTASK_STACK_PROC ccdTASK_STACK_ACT
00127 #define ccdTASK_STACK_TELE ccdTASK_STACK_SML
00128 #define ccdTASK_STACK_TEMP ccdTASK_STACK_SML
00129
00130 #define ccdMOD_NAME_CON "ccdcon"
00131 #define ccdMOD_NAME_IT "ccdit"
00132 #define ccdMOD_NAME_IP "ccdip"
00133 #define ccdMOD_NAME_RDT "ccdrdt"
00134 #define ccdMOD_NAME_SHT "ccdsht"
00135 #define ccdMOD_NAME_TEL "ccdtel"
00136 #define ccdMOD_NAME_TMP "ccdtmp"
00137 #define ccdMOD_NAME_AUX "ccdaux"
00138
00139 typedef enum
00140 {
00141 ccdMOD_INDEX_CON = 0,
00142 ccdMOD_INDEX_IT,
00143 ccdMOD_INDEX_IP,
00144 ccdMOD_INDEX_RDT,
00145 ccdMOD_INDEX_SHT,
00146 ccdMOD_INDEX_TEL,
00147 ccdMOD_INDEX_TMP,
00148 ccdMOD_INDEX_AUX,
00149 ccdMAXSUBSYS
00150 }
00151 ccdMOD_INDEX;
00152
00153 extern vltBYTES32 ccdDoFitsConfLog;
00154 extern vltINT32 ccdDebugLevel;
00155 extern int ccdCmdInitTimeout;
00156
00157 #define ccdFUNC_MAIN_FMT "_%sMainTask"
00158 #define ccdFUNC_NAME_SRV_FMT "_%sStartServer"
00159
00160 #define ccdTASK_NAME_SRV_FMT "%s_%s"
00161
00162
00163
00164 #define ccdTASK_NAME_TIM_FMT "ccdTim_%s"
00165 #define ccdTASK_NAME_WIP_FMT "%sWip_%s"
00166 #define ccdTASK_NAME_MON_FMT "%sMon_%s"
00167
00168 #define ccdCITASK_REGISTER(brkHdlr,kilHdlr,priority) \
00169 { \
00170 char vxProcName[7]; \
00171 ccsPROCNAME ccsProcName; \
00172 \
00173 taskPrioritySet(taskIdSelf(),priority); \
00174
00175
00176
00177
00178 \
00179 strncpy(vxProcName,taskName(taskIdSelf()),7); \
00180 vxProcName[7] = 0; \
00181 sprintf(ccsProcName,"%s%x",vxProcName,taskIdSelf()); \
00182 if (ccsInit(ccsProcName,0,brkHdlr,kilHdlr,error) != SUCCESS) \
00183 { errAdd(error,ccdMODULE,ccdERR_LCC_CALL,__FILE__,"%s","ccsInit"); \
00184 return FAILURE; } \
00185 }
00186
00187
00188 #define ccdSTARTUP_TIMEOUT 6000
00189 #define ccdSYNC_TIMEOUT 500
00190
00191
00192 #define ccdUS_TO_TICKS(m) ((m) / 10000)
00193 #define ccdMS_TO_TICKS(m) ((m) / 10)
00194 #define ccdTICKS_TO_MS(t) ((t) * 10)
00195
00196
00197 #define ccdENV_CPU "CPU"
00198 #define ccdENV_CCDNAME "CCDNAME"
00199 #define ccdENV_LOCALENV "LOCALENV"
00200 #define ccdENV_INSROOT "INS_ROOT"
00201 #define ccdENV_INSHOST "INS_HOST"
00202 #define ccdENV_INSUSER "INS_USER"
00203
00204
00205 #define ccdDIR_CONFIG_FMT "%s/%s/COMMON/CONFIGFILES"
00206 #define ccdDIR_BINARY_FMT "vw/bin/%s/%s"
00207
00208
00209 #define ccdSTATUS_FMT "opMode %d,opState %d,status %d"
00210
00211
00212 #define ccdDBCFG_FMT "%s.dbcfg"
00213 #define ccdDBCFG_CWP_FMT "%s=@%s<alias>%s"
00214 #define ccdDBCFG_DCS_FIXED "ccdDcsFixed"
00215 #define ccdDBCFG_CWP "<CWP>: "
00216
00217
00218 #define ccdTIMER_SLEEP_OVERHEAD 200
00219
00220
00221 #define ccdONE_SECOND_EXPTIME 1000000
00222
00223
00224
00225
00226
00227
00228 #define ccdFRAME_BASEBIAS "bias"
00229 #define ccdFRAME_BASEDARK "dark"
00230 #define ccdFRAME_BASEFLAT "flat"
00231
00232 #define ccdFRAME_FITSFMT "%s/%s_%s.fits"
00233
00234
00235 #define ccdJDToSec(jd) ((vltDOUBLE)(jd) * 86400.0)
00236 #define ccdSecToJD(s) ((vltDOUBLE)(s) / 86400.0)
00237
00238 #define ccdUTCtoSec(utc) \
00239 (vltDOUBLE)((double)((utc)->tv_sec) + (double)((utc)->tv_usec) / 1e6)
00240 #define ccdUTCtoUSec(utc) \
00241 (vltINT32)(1000000 * (utc)->tv_sec + (utc)->tv_usec)
00242 #define ccdSecToUTC(sec,utc) \
00243 (utc)->tv_sec = (int)(sec); \
00244 (utc)->tv_usec = (int)(((sec) - (utc)->tv_sec) * 1e6)
00245 #define ccdAddSecToUTC(sec,utc) \
00246 { int s,us; s = (int)(sec); us = ((sec) - s) * 1000000; \
00247 (utc)->tv_sec += s; (utc)->tv_usec += us; \
00248 while ((utc)->tv_usec >= 1000000) \
00249 { (utc)->tv_usec -= 1000000; (utc)->tv_sec++; }}
00250 #define ccdSubSecFromUTC(sec,utc) \
00251 { int s,us; s = (int)(sec); us = ((sec) - s) * 1000000; \
00252 (utc)->tv_sec -= s; (utc)->tv_usec -= us; \
00253 while ((utc)->tv_usec < 0) \
00254 { (utc)->tv_usec += 1000000; (utc)->tv_sec--; }}
00255
00256
00257
00258 #define ccdTEL_CLOCK_FMT "CLOCK_%d_%c"
00259 #define ccdTEL_CLOCK_LOW 'L'
00260 #define ccdTEL_CLOCK_HIGH 'H'
00261
00262 #define ccdTEL_BIAS_FMT "BIAS_%d"
00263
00264
00265 #define ccdTMP_CHIP_FMT "CHIP_%d"
00266 #define ccdTMP_HOUSE_FMT "HOUSE_%d"
00267
00268
00269 #define ccdEVT_EXPIRED 1
00270 #define ccdEVT_ENDED 2
00271 #define ccdEVT_ABORTED 4
00272 #define ccdEVT_PAUSED 8
00273 #define ccdEVT_CONTINUED 16
00274 #define ccdEVT_ERROR 32
00275 #define ccdEVT_STOP 256
00276
00277
00278 #define ccdDB_RETRY_COUNT 1
00279 #define ccdDB_RETRY_DELAY 0
00280
00281
00282 #define ccdDB_OPSTATE 0
00283 #define ccdDB_FAILURE 1
00284 #define ccdDB_INITDONE 2
00285 #define ccdDB_IMG_LST 3
00286 #define ccdDB_IMG_DIR 4
00287
00288
00289 #define ccdCMD_WAIT_NONE 1
00290 #define ccdCMD_WAIT_ONCE 2
00291 #define ccdCMD_WAIT_LAST 3
00292
00293
00294 typedef enum
00295 {
00296 ccdCCD_SCI = 0,
00297 ccdCCD_TEC
00298 } ccdCCD_TYPE;
00299
00300
00301 typedef struct
00302 {
00303 vltINT32 id;
00304 vltINT32 timeout;
00305 vltINT32 cmd;
00306 SEM_ID cmdSem;
00307 vltINT32 reply;
00308 SEM_ID replySem;
00309 } ccdFIS;
00310
00311
00312 typedef struct
00313 {
00314 ccdCCD_TYPE type;
00315 vltBYTES32 link;
00316 vltINT32 tout;
00317 vltBYTES32 prog;
00318 } ccdHWDESC;
00319
00320
00321 typedef struct
00322 {
00323 vltINT32 avail;
00324 ccsPROCNAME server;
00325 char *desc;
00326 } ccdSUBSYS;
00327
00328
00329 typedef struct
00330 {
00331 vltINT32 numSrc;
00332 vltINT32 period;
00333 vltDOUBLE start[ccdMAXTELSRC];
00334 vltDOUBLE stop[ccdMAXTELSRC];
00335 vltINT32 numVal;
00336 vltDOUBLE valSum[ccdMAXTELSRC];
00337 vltDOUBLE valSum2[ccdMAXTELSRC];
00338 } ccdTELESTAT;
00339
00340
00341 typedef struct
00342 {
00343 vltINT32 numSns;
00344 vltINT32 period;
00345 vltDOUBLE start[ccdMAXTMPSRC];
00346 vltDOUBLE stop[ccdMAXTMPSRC];
00347 vltINT32 numVal;
00348 vltDOUBLE valSum[ccdMAXTMPSRC];
00349 vltDOUBLE valSum2[ccdMAXTMPSRC];
00350 } ccdTEMPSTAT;
00351
00352
00353
00354 #define ccdProtectTimes(desc) semTake(desc->times.updateSem,2)
00355 #define ccdUnProtectTimes(desc) semGive(desc->times.updateSem)
00356 typedef struct
00357 {
00358 SEM_ID updateSem;
00359 ccdEXPTYPE expType;
00360 ccsTIMEVAL wipeStart;
00361 vltDOUBLE wipeTime;
00362 ccsTIMEVAL wipeEnd;
00363 ccsTIMEVAL shiftStart[ccdMAXINTEGR];
00364 vltDOUBLE shiftTime;
00365 ccsTIMEVAL darkStart;
00366 vltDOUBLE darkTime;
00367 ccsTIMEVAL cycleStart;
00368 vltDOUBLE cycleEla;
00369 ccsTIMEVAL cycleEnd;
00370 vltINT32 stepNum;
00371 vltDOUBLE stepDef;
00372 vltDOUBLE stepDefMulti[ccdMAXINTEGR];
00373 vltDOUBLE stepEla;
00374 vltDOUBLE stepElaMulti[ccdMAXINTEGR];
00375 vltDOUBLE stepRem;
00376 ccsTIMEVAL readStart;
00377 vltDOUBLE readDuration;
00378 ccsTIMEVAL procStart;
00379 vltDOUBLE procDuration;
00380 ccsTIMEVAL tranStart;
00381 vltDOUBLE tranDuration;
00382 ccsTIMEVAL shutOpenStart;
00383 vltDOUBLE shutOpenDuration;
00384 ccsTIMEVAL shutCloseStart;
00385 vltDOUBLE shutCloseDuration;
00386 } ccdTIMES;
00387
00388 typedef struct
00389 {
00390 vltINT32 id;
00391 vltLOGICAL upd;
00392 vltLOGICAL del;
00393 ccsTIMEVAL utc;
00394 ccsTIMEVAL per;
00395 vltINT32 cnt;
00396 vltUINT8 num;
00397 timerTIMER_MODE tmm;
00398 SEM_ID sem;
00399 vltINT32 rid;
00400 } ccdTIMRQST;
00401
00402
00403 typedef struct
00404 {
00405 timsMODE timsMode;
00406 timerSTATE tmrState[5];
00407 ccdTIMRQST tmrQLst[32];
00408 SEM_ID semTask;
00409 SEM_ID semSync;
00410 SEM_ID semProt;
00411 int tmrTid;
00412 int tmrTcb;
00413 int tmrStart;
00414 int tmrExpose;
00415 int tmrPause;
00416 int tmrCont;
00417 int tmrOpen;
00418 int tmrClose;
00419 ccsTIMEVAL timExpose;
00420 ccsTIMEVAL utcStart;
00421 ccsTIMEVAL utcPause;
00422 ccsTIMEVAL utcCont;
00423 } ccdTIMDESC;
00424
00425
00426 typedef struct
00427 {
00428 vltBYTES20 camera;
00429 vltBYTES8 logMask;
00430 dbSYMADDRESS dbRoot;
00431 ccdOPMODE opMode;
00432 ccdSTATE opState;
00433 vltLOGICAL initDone;
00434 ccdCONFIG *config;
00435 vltINT32 timeout;
00436 vltLOGICAL wipeOn;
00437 vltLOGICAL teleOn;
00438 vltLOGICAL tempOn;
00439 ccdHWDESC hwDesc;
00440 char *ccdAttr;
00441 ccdSUBSYS subSys[ccdMAXSUBSYS];
00442 ccdTIMES times;
00443 ccdTIMDESC timDesc;
00444 ccdTELESTAT teleStat;
00445 ccdTEMPSTAT tempStat;
00446 ccdSETUP setup[ccdMAXEXP+1];
00447 ccdSETUPRES setupResult;
00448 vltBYTES32 fileNameSimu;
00449 vltINT32 imageIdSimu;
00450 } ccdDESCRIPTION;
00451
00452
00453 typedef enum
00454 {
00455 ccdFRM_ACQ_NORM = 0,
00456 ccdFRM_ACQ_FILE,
00457 ccdFRM_ACQ_SIMU
00458 } ccdFRM_ACQ_TYPE;
00459
00460
00461 typedef enum
00462 {
00463 ccdFRM_STO_NORM = ccdFRM_NORMAL,
00464 ccdFRM_STO_BIAS = ccdFRM_BIAS,
00465 ccdFRM_STO_DARK = ccdFRM_DARK,
00466 ccdFRM_STO_FLAT = ccdFRM_FLAT,
00467 ccdFRM_STO_TEMP,
00468 ccdFRM_STO_SIMU,
00469 ccdMAXFRMSTOTYPE
00470 } ccdFRM_STO_TYPE;
00471
00472
00473 typedef struct
00474 {
00475 vltINT32 imageId;
00476 vltINT32 startAddr;
00477 vltINT32 allocSize;
00478 vltINT32 xSize,ySize;
00479 vltINT32 expId;
00480 vltINT32 acqType;
00481 vltINT32 stoType;
00482 vltINT32 dtaType;
00483 } ccdIMAGELIST;
00484
00485
00486 #define ccdEVT_IMAGE_OK 0x01
00487 #define ccdEVT_IMAGE_ERR 0x02
00488 #define ccdEVT_IMAGE_LAST 0x04
00489
00490
00491 typedef struct ccdImageBuffer
00492 {
00493
00494 vltINT32 id;
00495 vltINT32 winNum;
00496 vltINT32 listIndex;
00497 vltINT32 imageSize;
00498 vltINT32 lineSize;
00499 vltINT32 bytesAvail;
00500 ccdFIS ipcProc;
00501 ccdFIS ipcTran;
00502 char *fillUp;
00503 char *fillDown;
00504
00505
00506 ccdFITSBASIC fbHeader;
00507 ccdFITSHIERARCH feHeader;
00508
00509
00510
00511 vltUINT8 *data;
00512
00513 struct ccdImageBuffer *next;
00514 } ccdIMAGEBUFFER;
00515
00516
00517 typedef struct
00518 {
00519 vltBYTES256 file;
00520 int df;
00521 ccdIMAGEBUFFER *image;
00522 ccdIMAGELIST *entry;
00523 } ccdNFSFITSIMAGE;
00524
00525
00526
00527
00528
00529
00530
00531 void ccdVersion ( void );
00532 void ccdCompiledDate ( const char *date, const char *time,
00533 char *comp );
00534 void ccdModuleVersion ( const char *rev, const char *mod,
00535 const char *txt, const char *cmp,
00536 char *version );
00537 void ccdModuleVersionDCL ( const char *prefix );
00538
00539
00540 ccsCOMPL_STAT ccdconStartupCamera ( char *parStr );
00541
00542
00543 STATUS ccdKill ( char *taskNamePart );
00544 void ccdShowSetup ( ccdSETUP *setup );
00545 void ccdPrintConfig ( const char *camera , const ccdCONFIG *config );
00546
00547
00548 ccsCOMPL_STAT ccdSwitchAce ( char mode );
00549 ccsCOMPL_STAT ccdTestAce ( void );
00550 ccsCOMPL_STAT ccdCheckAceDriver ( char *channel, ccsERROR *error );
00551 ccsCOMPL_STAT ccdCheckLcuAceCom ( char *channel, ccsERROR *error );
00552
00553
00554 ccsCOMPL_STAT ccdCheckId ( vltINT32 id );
00555 ccsCOMPL_STAT ccdSetOpState ( ccdDESCRIPTION *ccdDesc, vltINT32 opState,
00556 ccsERROR *error );
00557
00558
00559 ccsCOMPL_STAT ccdInstall ( char *parStr, ccdDESCRIPTION **pccdDesc,
00560 ccsERROR *error);
00561 ccsCOMPL_STAT ccdDeinstall ( ccdDESCRIPTION *ccdDesc, ccsERROR *error);
00562
00563 ccsCOMPL_STAT ccdStartSystem ( ccdDESCRIPTION *ccdDesc, char *module,
00564 ccsERROR *error );
00565 ccsCOMPL_STAT ccdStartServer ( ccdDESCRIPTION *ccdDesc, int module,
00566 vltINT32 priority, ccsERROR *error );
00567 void ccdParseRunString ( char *runStr, char *ccdName,
00568 char *insHost, char *insRoot, char *insUser );
00569 ccsCOMPL_STAT ccdShutdown ( ccdDESCRIPTION *ccdDesc, char *module,
00570 ccsERROR *error );
00571
00572
00573 ccsCOMPL_STAT ccdReadAttr ( char *ccdName, const dbSYMADDRESS attrName,
00574 void *buffer, ccsERROR *error );
00575 ccsCOMPL_STAT ccdWriteAttr ( char *ccdName, const dbSYMADDRESS attrName,
00576 void *buffer, ccsERROR *error );
00577 ccsCOMPL_STAT ccdInitDb ( vltBYTES20 camera, vltBYTES20 lcu,
00578 ccsERROR *error );
00579
00580
00581 ccsCOMPL_STAT ccdCreaImBuf ( ccdDESCRIPTION *ccdDesc, ccdSETUP *setup,
00582 vltINT32 expId, vltINT32 dataType,
00583 vltINT32 storageType, vltINT32 *imageId,
00584 ccsERROR *error);
00585 ccsCOMPL_STAT ccdDumpImBuf ( ccdDESCRIPTION *ccdDesc, vltINT32 imageId,
00586 char *fileName, ccsERROR *error );
00587 ccsCOMPL_STAT ccdFindImBuf ( ccdDESCRIPTION *ccdDesc, vltINT32 expId,
00588 vltINT32 dataType, vltINT32 storageType,
00589 vltINT32 *imageId, ccsERROR *error );
00590 ccsCOMPL_STAT ccdFreeImBuf ( ccdDESCRIPTION *ccdDesc, vltINT32 imageId,
00591 vltLOGICAL force, ccsERROR *error );
00592 ccsCOMPL_STAT ccdListImBuf ( ccdDESCRIPTION *ccdDesc, vltINT32 dataType,
00593 vltINT32 storageType, ccdIMAGELIST **imgList,
00594 ccsERROR *error );
00595 ccsCOMPL_STAT ccdLoadImBuf ( ccdDESCRIPTION *ccdDesc, char *fileName,
00596 vltINT32 storageType, vltINT32 *imageId,
00597 ccsERROR *error );
00598
00599
00600 ccsCOMPL_STAT ccdOpenFits ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00601 ccsCOMPL_STAT ccdCreaFits ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00602
00603 ccsCOMPL_STAT ccdReadFitsHeader ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00604 ccsCOMPL_STAT ccdReadFitsData ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00605 ccsCOMPL_STAT ccdReadFitsTrailer ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00606
00607 ccsCOMPL_STAT ccdWriteFitsHeader ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00608 ccsCOMPL_STAT ccdWriteFitsData ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00609 ccsCOMPL_STAT ccdWriteFitsTrailer( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00610
00611 ccsCOMPL_STAT ccdWriteFitsDataBlock ( ccdNFSFITSIMAGE *desc, void *pData,
00612 int len, ccsERROR *error );
00613
00614 ccsCOMPL_STAT ccdCloseFits ( ccdNFSFITSIMAGE *desc, ccsERROR *error );
00615
00616
00617 ccsCOMPL_STAT ccdSetFailure ( ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00618 ccsCOMPL_STAT ccdResetFailure ( ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00619
00620
00621 ccsCOMPL_STAT ccdEnvVarChk ( char *camera, ccsERROR *error );
00622 ccsCOMPL_STAT ccdEnvVarDel ( ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00623 ccsCOMPL_STAT ccdEnvVarGet ( ccdDESCRIPTION **pccdDesc, ccsERROR *error );
00624 ccsCOMPL_STAT ccdEnvVarSet ( ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00625 ccsCOMPL_STAT ccdGetDescriptor ( const char *camera,
00626 ccdDESCRIPTION **pCcdDesc, ccsERROR *error );
00627 ccsCOMPL_STAT ccdCheckDescriptor( ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00628
00629
00630 ccsCOMPL_STAT ccdCreaFis ( ccdFIS *fis, vltINT32 timeout,
00631 ccsERROR *error );
00632 ccsCOMPL_STAT ccdCheckFisCmd ( ccdFIS *fis, vltINT32 cmd,
00633 vltLOGICAL wait, vltLOGICAL *got,
00634 ccsERROR *error );
00635 ccsCOMPL_STAT ccdFreeFis ( ccdFIS *fis, ccsERROR *error);
00636 ccsCOMPL_STAT ccdResetFis ( ccdFIS *fis, ccsERROR *error );
00637 ccsCOMPL_STAT ccdSendFisCmd ( ccdFIS *fis, vltINT32 cmd,
00638 vltLOGICAL wait, ccsERROR *error );
00639 ccsCOMPL_STAT ccdSendFisReply ( ccdFIS *fis, vltINT32 reply,
00640 ccsERROR *error );
00641 ccsCOMPL_STAT ccdSetFisTimeout ( ccdFIS *fis, vltINT32 timeout,
00642 ccsERROR *error );
00643 ccsCOMPL_STAT ccdWaitFisReply ( ccdFIS *fis, ccsERROR *error );
00644
00645
00646 ccsCOMPL_STAT ccdStoreTime ( char *attrTable, int attrIndex,
00647 ccsTIMEVAL *startTime, vltDOUBLE *duration,
00648 ccsERROR *error );
00649
00650
00651 ccsCOMPL_STAT ccdSendCmdAck ( msgMSG *msg, ccsERROR *error );
00652 ccsCOMPL_STAT ccdSendCmdAll ( const msgCMD command, const char *params,
00653 ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00654 ccsCOMPL_STAT ccdSendCmd ( ccsPROCNAME dest, const msgCMD command,
00655 const char *params, char *reply,
00656 ccdDESCRIPTION *ccdDesc, vltINT32 waitMode,
00657 ccsERROR *error );
00658 ccsCOMPL_STAT ccdWaitReply ( ccsPROCNAME dest, vltINT32 timeout,
00659 char *reply, vltLOGICAL *lastReply,
00660 vltLOGICAL *errReply, ccsERROR *error );
00661
00662
00663 vltINT32 ccdGetNextExpId ( vltINT32 expId , vltINT32 expIndex );
00664 vltINT32 ccdGetPrevExpId ( vltINT32 expId , vltINT32 expIndex );
00665
00666
00667 ccsCOMPL_STAT ccdTimerSleep ( vltINT32 us, ccsERROR *error );
00668 ccsCOMPL_STAT ccdStartTimerTask ( ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00669 ccsCOMPL_STAT ccdStopTimerTask ( ccdDESCRIPTION *ccdDesc, ccsERROR *error );
00670 ccsCOMPL_STAT ccdTimerReqActive ( ccdDESCRIPTION *ccdDesc,
00671 vltINT32 rid, ccsERROR *error );
00672 ccsCOMPL_STAT ccdTimerReqCreate ( ccdDESCRIPTION *ccdDesc, ccsTIMEVAL *utc,
00673 ccsTIMEVAL *per, vltINT32 cnt,
00674 vltINT32 *rid, ccsERROR *error );
00675 ccsCOMPL_STAT ccdTimerReqDelete ( ccdDESCRIPTION *ccdDesc,
00676 vltINT32 rid, ccsERROR *error );
00677 ccsCOMPL_STAT ccdTimerReqUpdate ( ccdDESCRIPTION *ccdDesc, vltINT32 rid,
00678 ccsTIMEVAL *utc, ccsTIMEVAL *per,
00679 vltINT32 cnt, ccsERROR *error );
00680 ccsCOMPL_STAT ccdWaitTimerDue ( ccdDESCRIPTION *ccdDesc, vltINT32 rid,
00681 ccsERROR *error );
00682 ccsCOMPL_STAT ccdTimerReqRelease( ccdDESCRIPTION *ccdDesc,
00683 vltINT32 rid, ccsERROR *error );
00684 void ccdPrintTimer ( ccdDESCRIPTION *ccdDesc );
00685
00686
00687 ccsCOMPL_STAT ccdDecodeIsoTime ( char *str, ccsTIMEVAL *utc, ccsERROR *err );
00688
00689 void ccdDbAlign ( const char *type, vltLOGICAL pack, void *s, char *b );
00690
00691 #define ccdDBPACK(t,s,b) ccdDbAlign(t,ccsTRUE, s,b)
00692 #define ccdUNPACK(t,b,s) ccdDbAlign(t,ccsFALSE,s,b)
00693
00694
00695
00696
00697 #ifndef __FILE_LINE__
00698 #define _ccd_tostr(a) #a
00699 #define _ccd_tostr_pass2(a) _ccd_tostr(a)
00700
00701 #define __FILE_LINE__ __FILE__ ":" _ccd_tostr_pass2(__LINE__)
00702 #endif
00703
00704 #define ccdERR_ADD(errNum,params...) \
00705 errAdd(error,ccdMODULE,errNum,__FILE_LINE__,"",##params)
00706 #define ccdERR_RETURN(errNum,params...) \
00707 { \
00708 errAdd(error,ccdMODULE,errNum,__FILE_LINE__,"",##params); \
00709 return FAILURE; \
00710 }
00711
00712 #ifdef __cplusplus
00713 }
00714 #endif
00715
00716 #endif
00717
00718
00719
00720