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

acm.h

Go to the documentation of this file.
00001 #ifndef ACM_H
00002 #define ACM_H
00003 /*******************************************************************************
00004 * E.S.O. - VLT project
00005 *
00006 * "@(#) $Id: acm.h,v 2.3 2002/03/27 17:24:05 vltsccm Exp $"
00007 *
00008 * who       when      what
00009 * --------  --------  ----------------------------------------------
00010 * ssandroc 2001-09-20 SPR 20010245 + 20010393 + 20010550.
00011 * ssandroc 1999-05-05 added acmHW_WRITE_TORQUE acmHW_READ_SPEEDREF.
00012 * ssandroc 1999-02-13 added acmHW_WRITE_TACHO for tacho signal output support.
00013 * bgilli    05/04/98  added pathOptimisation flag in acmAXIS_SEND_POS_REFS proto.
00014 * rkarban  11/08/97  add acmACTION_STAR_OFFS
00015 * bgilli    16/04/97  added handling of UPDATE_POS_LIMS
00016 * bgustafs  01/04/97  added acmHW_REF_MOVE
00017 * mchiesa  22/12/96  added axisServoStateSpeedPos to acmAXIS_SERVO_STATE
00018 * mchiesa  22/12/96  added calibration status to acmENC_INIT type
00019 * mchiesa   24/10/96  added delay as IN parameter to acmHW_SET_TIMER_P
00020 * awalland  17/10/96  include semLib.h (definition of SEM_ID)
00021 * mchiesa   08/10/96  added tracking flag in acmENC_READ
00022 * mchiesa   08/10/96  added acmHW_SET_TIMER_P to functions provided by HW
00023 * mchiesa   08/10/96  added acmENC_CALC_OFFSETS_P function type from ikenc
00024 * tphan     22/08/96  Compilation error !!!
00025 *         acmHW_CYCLIC_VELERROR changed to acmHW_CYCLIC_VELERR
00026 * bgustafs  20/05/96  modified signal name type
00027 * nfiebig   05/05/95  created
00028 * mchiesa   07/03/96  changed due to desing change of altaz
00029 */
00030 
00031 /************************************************************************
00032  *
00033  *----------------------------------------------------------------------
00034  */
00035 
00036 /************************************************************************
00037  * Contains the public global data and data type definitions of the
00038  * acm module.
00039  *----------------------------------------------------------------------
00040  */
00041 
00042 
00043 /*
00044  *******************************************************************************
00045  * Header Files
00046  *******************************************************************************
00047  */
00048  
00049 /* System Includes */
00050 
00051 #include "semLib.h"
00052 
00053 /* LCC Includes */
00054 
00055 #include "ccs.h"
00056 #include "err.h"
00057 #include "io.h"
00058 
00059 /* Local Includes */
00060 
00061 
00062 /*
00063  ******************************************************************************
00064  * Constants and Literals
00065  ******************************************************************************
00066  */
00067  
00068 #define acmMAX_FILE_NAME_LENGTH 256
00069 #define acmMAX_NUM_SIGNALS 256
00070 
00071  /* acmSTATE */
00072 #define   acmSTATE_UNDEFINED  0
00073 #define   acmSTATE_IDLE       1
00074 #define   acmSTATE_PRESETTING 2
00075 #define   acmSTATE_TRACKING   3
00076 
00077     
00078  /* acmAXIS */
00079 #define    acmAXIS_ALT_STR "altitude"
00080 #define    acmAXIS_AZ_STR  "azimuth"
00081 #define    acmAXIS_ROT_STR "rotator"
00082 #define    acmAXIS_AD_STR  "adapter"
00083 
00084 #define    acmAXIS_ALT  1
00085 #define    acmAXIS_AZ   2
00086 #define    acmAXIS_ROT  3
00087 #define    acmAXIS_AD   4
00088 
00089  /* acmACTION */    
00090 #define     acmACTION_NONE      1
00091 #define     acmACTION_STAR      2 
00092 #define     acmACTION_FIXED     3
00093 #define     acmACTION_UPDATE    4
00094 #define     acmACTION_STAR_OFFS 5
00095 #define     acmACTION_AGC       6
00096 
00097 #define     acmACTION_NONE_STR      "acmACTION_NONE"
00098 #define     acmACTION_STAR_STR      "acmACTION_STAR"
00099 #define     acmACTION_FIXED_STR     "acmACTION_FIXED"
00100 #define     acmACTION_UPDATE_STR    "acmACTION_UPDATE"
00101 #define     acmACTION_STAR_OFFS_STR "acmACTION_STAR_OFFS"
00102 #define     acmACTION_AGC_STR       "acmACTION_AGC"
00103 
00104  
00105 
00106 /*
00107  ******************************************************************************
00108  * Data Types
00109  ******************************************************************************
00110  */
00111 
00112 
00113 /*
00114  ******************************************************************************
00115  * Interface for trk module (callable interface of ACM: ACM consists of all
00116  * three modules: AXIS + one HW + one ENC module
00117  ******************************************************************************
00118  */
00119 
00120 /*
00121  * acmSEND_REFS
00122  */
00123 typedef struct
00124     {
00125     vltDOUBLE  posAlt;  /* position altitude */
00126     vltDOUBLE  posAz; /* position azimuth */
00127     vltDOUBLE  posRot;  /* position rotator */
00128     vltDOUBLE  posAdap; /* position adapter */
00129     vltDOUBLE  parallacticAngle;
00130     vltDOUBLE  vffAlt;  /* velocity feed-forward altitude */
00131     vltDOUBLE  vffAz; /* velocity feed-forward azimuth */
00132     vltDOUBLE  vffRot;  /* velocity feed-forward rotator */
00133     vltDOUBLE  agcAlt;  /* auto-guiding correction altitude */
00134     vltDOUBLE  agcAz; /* auto-guiding correction azimuth */
00135     vltDOUBLE  agcRot;  /* auto-guiding correction rotator */
00136     } acmSEND_REFS_SET_POINTS;
00137  
00138 
00139 typedef ccsCOMPL_STAT  (acmSEND_REFS) (vltINT32   action,    /* acmACTION */
00140                ccsTIMEVAL timeStamp,
00141                acmSEND_REFS_SET_POINTS
00142                           setPoints,
00143                vltINT32  *state,     /* acmSTATE  */
00144                ccsERROR  *error);
00145 
00146 
00147 typedef acmSEND_REFS *acmSEND_REFS_P;
00148 
00149 acmSEND_REFS acmSendRefs;
00150 
00151 
00152 /*
00153  * acmREAD_POS
00154  */
00155 typedef struct
00156 {
00157     vltDOUBLE  posAlt;  /* encoder position altitude */
00158     vltDOUBLE  posAz; /* encoder position azimuth */
00159     vltDOUBLE  posRot;  /* encoder position rotator */
00160 } acmREAD_POS_DATA;
00161 
00162 typedef ccsCOMPL_STAT (acmREAD_POS) (acmREAD_POS_DATA *acmReadPosData,
00163              ccsERROR  *error);
00164 
00165 typedef acmREAD_POS *acmREAD_POS_P;
00166 
00167 
00168 /*
00169  * acmREM_TRACK_F
00170  */
00171 
00172 typedef vltDOUBLE (acmREM_TRACK_F) (
00173                 vltDOUBLE  ra,
00174                 vltDOUBLE  decl,
00175                 vltDOUBLE  limLow,
00176                 vltDOUBLE  limHigh,
00177                 vltDOUBLE  siderealTime,
00178                 vltDOUBLE  lat,
00179                 vltDOUBLE *remTime,
00180                 ccsERROR  *error);
00181 
00182 typedef acmREM_TRACK_F *acmREM_TRACK_F_P;
00183     
00184 
00185 
00186 
00187 /*
00188  ******************************************************************************
00189  * Interface for AXIS module
00190  ******************************************************************************
00191  */
00192 
00193 typedef struct
00194     {
00195     vltINT32   action;    /* acmACTION */
00196     ccsTIMEVAL timeStamp; /* absolute time */
00197     vltDOUBLE  pos;   /* position */
00198     vltDOUBLE  vff;   /* velocity feed-forward */
00199     vltDOUBLE  agc;   /* auto-guiding correction */
00200     } acmAXIS_REF;
00201 
00202 typedef ccsCOMPL_STAT (acmAXIS_SEND_POS_REFS) 
00203       (acmAXIS_REF ref,
00204        vltLOGICAL pathOptimisation,
00205        char   *axisName,  /* only required if multiple instances of
00206          * axis, must match with axisName passed
00207          * axisInitAll(). If not required NULL.
00208          */
00209        vltINT32   *state, /*acmSTATE*/
00210        ccsERROR   *error);
00211 
00212 typedef acmAXIS_SEND_POS_REFS *acmAXIS_SEND_POS_REFS_P;
00213 
00214 
00215 typedef enum 
00216     {
00217     axisServoStateUndef,
00218     axisServoStateStartup,
00219     axisServoStateHwOff,
00220     axisServoStateHwSwitchingOn,
00221     axisServoStateSpeedNoMoveWithEnc,
00222     axisServoStateSpeedNoMoveNoEnc,
00223     axisServoStateDeceleratingWithEnc,
00224     axisServoStateDeceleratingNoEnc,
00225     axisServoStateSpeedWithEnc,
00226     axisServoStateSpeedNoEnc,
00227     axisServoStatePos,
00228     axisServoStatePosPreset,
00229     axisServoStatePosFixed,
00230     axisServoStatePosExtrapol,
00231     axisServoStateSpeedPos
00232     } acmAXIS_SERVO_STATE;
00233 
00234 typedef ccsCOMPL_STAT (acmAXIS_CHECK_STOP_COND)
00235     (
00236     void       *encData,
00237     vltLOGICAL *stop,
00238     vltINT32   delayTimeInMicroSec,
00239     ccsERROR   *error
00240     );
00241 typedef acmAXIS_CHECK_STOP_COND *acmAXIS_CHECK_STOP_COND_P;
00242 
00243 
00244 typedef void (acmTIMER_IR)
00245     (
00246     SEM_ID   *timerSem,
00247     vltINT32  dummy
00248     );
00249 typedef acmTIMER_IR *acmTIMER_IR_P;
00250 
00251 
00252 typedef ccsCOMPL_STAT (acmAXIS_UPDATE_VEL_REF)
00253     (
00254     void       *encData,
00255     vltDOUBLE  *velocity,    
00256     vltINT32   delayTimeInMicroSec,
00257     ccsERROR   *error
00258     );
00259 typedef acmAXIS_UPDATE_VEL_REF *acmAXIS_UPDATE_VEL_REF_P;
00260 
00261 typedef ccsCOMPL_STAT (acmAXIS_PRESET_POS) 
00262     (vltDOUBLE       pos,
00263      vltUINT32       timeoutInMilliSec, /* max time till 
00264                  * stopFunction returns
00265                  * with stop == TRUE */
00266      acmAXIS_CHECK_STOP_COND_P   stopFunction,
00267      acmAXIS_SERVO_STATE  *axisState,
00268      ccsERROR     *error);
00269 
00270 typedef acmAXIS_PRESET_POS *acmAXIS_PRESET_POS_P;
00271 
00272 typedef ccsCOMPL_STAT (acmAXIS_SEND_VEL_REF) 
00273     (vltDOUBLE       velocity,
00274      vltUINT32       timeoutInMilliSec, /* max time till 
00275                  * stopFunction returns
00276                  * with stop == TRUE */
00277      acmAXIS_CHECK_STOP_COND_P   stopFunction,
00278      acmAXIS_UPDATE_VEL_REF_P    updateVelRefFunction,
00279      acmAXIS_SERVO_STATE  *axisState,
00280      ccsERROR     *error);
00281 
00282 typedef acmAXIS_SEND_VEL_REF *acmAXIS_SEND_VEL_REF_P;
00283 
00284 typedef ccsCOMPL_STAT (acmAXIS_GET_STATE) 
00285     (acmAXIS_SERVO_STATE  *axisState,
00286      ccsERROR     *error);
00287 
00288 typedef acmAXIS_GET_STATE *acmAXIS_GET_STATE_P;
00289 
00290 typedef ccsCOMPL_STAT (acmAXIS_UPDATE_POS_LIMS) 
00291      (vltDOUBLE                 posLimits[],
00292      ccsERROR     *error);
00293 
00294 typedef acmAXIS_UPDATE_POS_LIMS *acmAXIS_UPDATE_POS_LIMS_P;
00295 
00296 typedef struct
00297     {
00298     char         acmAxisDigitalFileName[acmMAX_FILE_NAME_LENGTH];
00299     char         acmAxisAnalogFileName[acmMAX_FILE_NAME_LENGTH];
00300     ioDIRADDRESS *acmAxisSignal; /* signal direct address array*/
00301     vltINT32     acmAxisSignalNumber;    /* number of signals */
00302     vltBYTES32   acmAxisSignalNames[acmMAX_NUM_SIGNALS]; /* name of signals */
00303     }acmAXIS_SIGNAL_CONF;
00304 
00305 typedef acmAXIS_SIGNAL_CONF *acmAXIS_SIGNAL_CONF_P;
00306 
00307 
00308 /*
00309  ******************************************************************************
00310  * Interface for HW dependant module
00311  * (vlt)altaz, nttaltaz, nttrot, (vlt)rot [(vlt)ad]
00312  ******************************************************************************
00313  */
00314 
00315 
00316 
00317 typedef ccsCOMPL_STAT (acmHW_HW_ON) 
00318     (
00319     void       *hwData,
00320     ccsERROR   *error
00321     );
00322 
00323 typedef acmHW_HW_ON *acmHW_HW_ON_P; 
00324 
00325 typedef ccsCOMPL_STAT (acmHW_HW_OFF)
00326     (
00327     void      *hwData,
00328     ccsERROR  *error
00329     );
00330 typedef acmHW_HW_OFF *acmHW_HW_OFF_P;
00331 
00332 typedef ccsCOMPL_STAT (acmHW_READ_SPEEDREF)
00333     (
00334     void       *hwData,
00335     vltLOGICAL *enable,
00336     vltDOUBLE  *speed,
00337     ccsERROR   *error
00338     );
00339 typedef acmHW_READ_SPEEDREF *acmHW_READ_SPEEDREF_P;
00340 
00341 typedef ccsCOMPL_STAT (acmHW_WRITE_SPEED)
00342     (
00343     void      *hwData,
00344     vltDOUBLE speed,
00345     vltDOUBLE *voltageWritten,
00346     ccsERROR  *error
00347     );
00348 
00349 typedef acmHW_WRITE_SPEED *acmHW_WRITE_SPEED_P;
00350 
00351 typedef ccsCOMPL_STAT (acmHW_READ_TACHO)
00352     (
00353     void       *hwData,
00354     vltDOUBLE  *voltage,
00355     ccsERROR   *error
00356     );
00357 
00358 typedef acmHW_READ_TACHO *acmHW_READ_TACHO_P;
00359 
00360 typedef ccsCOMPL_STAT (acmHW_WRITE_TACHO)
00361     (
00362     void      *hwData,
00363     vltLOGICAL valid,
00364     vltDOUBLE speed,
00365     vltDOUBLE *voltageWritten,
00366     ccsERROR  *error
00367     );
00368 
00369 typedef acmHW_WRITE_TACHO *acmHW_WRITE_TACHO_P;
00370 
00371 typedef ccsCOMPL_STAT (acmHW_WRITE_TORQUE)
00372     (
00373     void      *hwData,
00374     vltDOUBLE position,
00375     vltDOUBLE velocity,
00376     vltDOUBLE torque,
00377     vltDOUBLE *voltageWritten,
00378     ccsERROR  *error
00379     );
00380 
00381 typedef acmHW_WRITE_TORQUE *acmHW_WRITE_TORQUE_P;
00382 
00383 typedef ccsCOMPL_STAT (acmHW_CHECK_INTERLOCK)
00384     (
00385     void       *hwData,
00386     vltLOGICAL *active,    
00387     ccsERROR   *error
00388     );
00389 typedef acmHW_CHECK_INTERLOCK *acmHW_CHECK_INTERLOCK_P;
00390 
00391 typedef ccsCOMPL_STAT (acmHW_CHECK_VICINITY_LIMIT)
00392     (
00393     void       *hwData,
00394     vltLOGICAL *upActive,    
00395     vltLOGICAL *lowActive,    
00396     ccsERROR   *error
00397     );
00398 
00399 typedef acmHW_CHECK_VICINITY_LIMIT *acmHW_CHECK_VICINITY_LIMIT_P;
00400 
00401 typedef struct
00402     {
00403     vltLOGICAL  valid;
00404     vltDOUBLE   velError;
00405     } acmHW_CYCLIC_VELERR;
00406 
00407 typedef ccsCOMPL_STAT (acmHW_CYCLIC)
00408     (
00409     void      *hwData,
00410     vltINT32   delayInMicroSecs,  /* delay time in microseconds */
00411     vltLOGICAL posAvailable,    /* position is valid */
00412     vltDOUBLE  pos,     /* position in rad */
00413     acmHW_CYCLIC_VELERR *velErr,        /* velocity error */
00414     ccsERROR  *error
00415     );
00416 
00417 typedef acmHW_CYCLIC *acmHW_CYCLIC_P;
00418 
00419 
00420 
00421 typedef ccsCOMPL_STAT (acmHW_SET_TIMER)
00422     (
00423     void    *hwData,
00424     acmTIMER_IR_P IrRoutine,
00425     SEM_ID    *timerSem,
00426     vltUINT32   delay,  /* delay in microsec */
00427     ccsERROR    *error
00428     );
00429 
00430 typedef acmHW_SET_TIMER *acmHW_SET_TIMER_P;
00431 
00432 
00433 typedef ccsCOMPL_STAT (acmHW_INIT)
00434     (
00435     void       *hwData,
00436     ccsERROR   *error
00437     );
00438 
00439 typedef acmHW_INIT *acmHW_INIT_P;
00440 
00441 typedef ccsCOMPL_STAT (acmHW_EXIT)
00442     (
00443     void       *hwData,
00444     ccsERROR   *error
00445     );
00446 
00447 typedef acmHW_EXIT *acmHW_EXIT_P;
00448 
00449 typedef ccsCOMPL_STAT (acmHW_OFF)
00450     (
00451     void       *hwData,
00452     ccsERROR   *error
00453     );
00454 
00455 typedef acmHW_OFF *acmHW_OFF_P;
00456 
00457 typedef ccsCOMPL_STAT (acmHW_REF_MOVE)
00458     (
00459     void       *hwData,
00460     acmAXIS_SEND_VEL_REF_P cbAxisSendVelRefP,
00461     acmAXIS_GET_STATE_P    cbAxisGetStateP,
00462     ccsERROR   *error
00463     );
00464 
00465 typedef acmHW_REF_MOVE *acmHW_REF_MOVE_P;
00466 
00467 typedef ccsCOMPL_STAT (acmHW_VERSION)
00468     (
00469     char      *buffer,
00470     ccsERROR  *error
00471     );
00472 
00473 typedef acmHW_VERSION *acmHW_VERSION_P;
00474 
00475 typedef ccsCOMPL_STAT (acmHW_UPDATE)
00476     (
00477     void      *hwData,
00478     ccsERROR  *error
00479     );
00480 
00481 typedef acmHW_UPDATE *acmHW_UPDATE_P;
00482 
00483 typedef struct
00484     {
00485     void      *hwData;
00486     /* 
00487      * called by servo task, these functions are not allowed to have
00488      * calls to taskDelays
00489      */
00490     acmHW_HW_OFF_P     hwHwOffP;       
00491     acmHW_READ_SPEEDREF_P  hwReadSpeedrefP;
00492     acmHW_READ_TACHO_P     hwReadTachoP;
00493     acmHW_WRITE_SPEED_P    hwWriteSpeedP;
00494     acmHW_WRITE_TACHO_P    hwWriteTachoP;
00495     acmHW_WRITE_TORQUE_P   hwWriteTorqueP;
00496     acmHW_CHECK_INTERLOCK_P      hwCheckInterlockP;
00497     acmHW_CHECK_VICINITY_LIMIT_P hwCheckVicinityLimitP; 
00498     acmHW_CYCLIC_P     hwCyclicP;   /* optional (NULL) */
00499     acmHW_SET_TIMER_P            hwSetTimerP; /* optional (NULL) */
00500   /* if not NULL axisServoTask 
00501    * uses this function to hook
00502    * to a time. In this case either
00503    * the IR routine or the sem must
00504    * be given every 2 ms
00505    */
00506     /* 
00507      * called by std commands: these funtions may include taskDelays
00508      */
00509     acmHW_VERSION_P    hwVersionP;
00510     acmHW_HW_ON_P    hwHwOnP;
00511     acmHW_INIT_P     hwInitP;
00512     acmHW_EXIT_P     hwExitP;
00513     acmHW_OFF_P      hwOffP;
00514     acmHW_REF_MOVE_P             hwRefMoveP;
00515     acmHW_UPDATE_P     hwUpdateP;
00516     }acmHW;
00517 
00518 typedef acmHW *acmHW_P;
00519 
00520 
00521 /* Entry point */
00522 typedef ccsCOMPL_STAT (acmHW_INIT_ALL)
00523     (
00524     char         *dbRoot,
00525     acmAXIS_SEND_POS_REFS_P   cbAxisSendRefsP,
00526     acmHW_P                  acmHw,
00527     acmAXIS_SIGNAL_CONF_P    acmHwSignalConf,
00528     ccsERROR                 *error
00529     );
00530 
00531 typedef acmHW_INIT_ALL *acmHW_INIT_ALL_P;
00532 
00533 /*
00534  ******************************************************************************
00535  * Interface for ENC dependant module
00536  * IKEnc, ODEnc
00537  ******************************************************************************
00538  */
00539 typedef ccsCOMPL_STAT (acmENC_VERSION)
00540     (
00541     char      *buffer,
00542     ccsERROR  *error
00543     );
00544 
00545 typedef acmENC_VERSION *acmENC_VERSION_P; 
00546 
00547 typedef ccsCOMPL_STAT (acmENC_READ)
00548     (
00549     void      *encData,
00550     vltDOUBLE *positionInRad,
00551     vltLOGICAL tracking,  /* writes ccsTRUE if servo is in tracking
00552          * else ccsFALSE
00553          */
00554     ccsERROR  *error
00555     );
00556 
00557 typedef acmENC_READ *acmENC_READ_P; 
00558 
00559 
00560 /* NTT modes */
00561 #define acmENC_CALIB_STD "STANDARD"
00562 #define acmENC_CALIB_MECH_ALIGN "MECHALIGN"
00563 #define acmENC_CALIB_VER_EXT "VERIFYEXT"
00564 #define acmENC_CALIB_MIRRORS "MIRRORS"
00565 #define acmENC_CALIB_ABSREF "ABSREF"
00566 #define acmENC_CALIB_HEAD_1 "HEAD_1"
00567 #define acmENC_CALIB_HEAD_2 "HEAD_2"
00568 #define acmENC_CALIB_HEAD_3 "HEAD_3"
00569 #define acmENC_CALIB_HEAD_4 "HEAD_4"
00570 
00571 /* VLT modes */
00572 #define acmENC_CALIB_MODE_2a "2a"
00573 #define acmENC_CALIB_MODE_2b "2b"
00574 #define acmENC_CALIB_MODE_2c "2c"
00575 #define acmENC_CALIB_MODE_2d "2d"
00576 #define acmENC_CALIB_MODE_4a "4a"
00577 #define acmENC_CALIB_MODE_4b "4b"
00578 
00579 typedef enum
00580     {
00581     /* NTT modes */
00582     acmEncCalibModeStandard,
00583     acmEncCalibModeMechAlign,
00584     acmEncCalibModeVerifyExt,
00585     acmEncCalibModeMirrors,
00586     acmEncCalibModeAbsRef,
00587     acmEncCalibModeHead1,
00588     acmEncCalibModeHead2,
00589     acmEncCalibModeHead3,
00590     acmEncCalibModeHead4,
00591 
00592     /* VLT modes */
00593     acmEncCalibMode2a,
00594     acmEncCalibMode2b,
00595     acmEncCalibMode2c,
00596     acmEncCalibMode2d,
00597     acmEncCalibMode4a,
00598     acmEncCalibMode4b
00599 
00600     }acmENC_CALIB_MODE;
00601 
00602 typedef ccsCOMPL_STAT (acmENC_CALIB)
00603     (
00604     void              *encData,
00605     acmENC_CALIB_MODE  calibMode,
00606     ccsERROR          *error
00607     );
00608 
00609 typedef acmENC_CALIB *acmENC_CALIB_P; 
00610 
00611 
00612 typedef ccsCOMPL_STAT (acmENC_STATUS)
00613     (
00614     void      *encData,
00615     char      *buffer,
00616     vltINT32  reportLevel,
00617     ccsERROR  *error
00618     );
00619 
00620 typedef acmENC_STATUS *acmENC_STATUS_P; 
00621 
00622 
00623 typedef ccsCOMPL_STAT (acmENC_INIT)
00624     (
00625     void       *encData,
00626     vltLOGICAL *calibrated,
00627     ccsERROR   *error
00628     );
00629 
00630 typedef acmENC_INIT *acmENC_INIT_P;
00631 
00632 typedef ccsCOMPL_STAT (acmENC_EXIT)
00633     (
00634     void       *encData,
00635     ccsERROR   *error
00636     );
00637 
00638 typedef acmENC_EXIT *acmENC_EXIT_P;
00639 
00640 typedef ccsCOMPL_STAT (acmENC_OFF)
00641     (
00642     void       *encData,
00643     ccsERROR   *error
00644     );
00645 
00646 typedef acmENC_OFF *acmENC_OFF_P;
00647 
00648 typedef ccsCOMPL_STAT (acmENC_UPDATE)
00649     (
00650     void       *encData,
00651     ccsERROR   *error
00652     );
00653 
00654 typedef acmENC_UPDATE *acmENC_UPDATE_P;
00655 
00656 typedef struct
00657     {
00658     void      *encData;
00659     /* 
00660      * called by servo task, these functions are not allowed to have
00661      * calls to taskDelays
00662      */
00663     acmENC_READ_P                encReadP;
00664     /* 
00665      * called by std commands: these funtions may include taskDelays
00666      */
00667     acmENC_VERSION_P             encVersionP;
00668     acmENC_CALIB_P     encCalibP;
00669     acmENC_STATUS_P    encStatusP;
00670     acmENC_INIT_P    encInitP; 
00671     acmENC_EXIT_P    encExitP; 
00672     acmENC_OFF_P     encOffP;
00673     acmENC_UPDATE_P    encUpdateP;
00674     }acmENC;
00675 
00676 typedef acmENC *acmENC_P;
00677 
00678 /* Entry point */
00679 typedef ccsCOMPL_STAT (acmENC_INIT_ALL)
00680     (
00681     char         *dbRoot,
00682     acmAXIS_PRESET_POS_P      cbAxisPresetPosP,
00683     acmAXIS_SEND_VEL_REF_P    cbAxisSendVelRefP,
00684     acmAXIS_GET_STATE_P       cbAxisGetStateP,
00685     acmAXIS_UPDATE_POS_LIMS_P cbAxisUpdatePosLims,
00686     acmAXIS_SIGNAL_CONF_P     acmEncSignalConf,
00687     acmENC_P                  acmEnc,
00688     ccsERROR                 *error
00689     );
00690 
00691 typedef acmENC_INIT_ALL *acmENC_INIT_ALL_P;
00692 /*
00693  ******************************************************************************
00694  * Optional Interface between ENC and HW dependant module
00695  * lookup in symbol table with INIT command to ENC in database
00696  * the function can be provided by HW module 
00697  ******************************************************************************
00698  */
00699 
00700 typedef ccsCOMPL_STAT (acmENC_CALC_OFFSETS)
00701     (void /* ikencDATA */ *ikencData,
00702      vltINT32 refMark,
00703      vltDOUBLE  b1h1Pos,
00704      vltDOUBLE  b1h2Pos,
00705      vltDOUBLE  b2h1Pos,
00706      vltDOUBLE  b2h2Pos,
00707      vltINT32 *b1h1Offset,
00708      vltINT32 *b1h2Offset,
00709      vltINT32 *b2h1Offset,
00710      vltINT32 *b2h2Offset,
00711      ccsERROR *error);
00712 typedef acmENC_CALC_OFFSETS *acmENC_CALC_OFFSETS_P;
00713 
00714 /*
00715  ******************************************************************************
00716  * callable interface for BOOT file of ACM module 
00717  * (ACM consists of all three modules: AXIS + one HW + one ENC module)
00718  ******************************************************************************
00719  */
00720 
00721 /*
00722 defined in AXIS module !
00723 
00724 typedef ccsCOMPL_STAT  (axisINIT_ALL) (
00725   char      *dbRoot,
00726   char      *axisName,
00727   acmHW_INIT_ALL_P      acmHwInitModuleP,
00728   acmENC_INIT_ALL_P     acmEncInitModuleP);
00729 
00730 axisINIT_ALL axisInitAll;
00731 */
00732 
00733 #endif 

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