
/*-------------------------------------------------------------------------
                        R e g M o t

  This is  a helper module for the Anti Collider. It handles all the
  stuff necessary for dealing with a single motor. For more
  information see the file anticollider.tex.

  copyright: see file copyright
 
  Mark Koennecke, August 2002
-----------------------------------------------------------------------*/
#ifndef REGMOT
#define REGMOT
#include "sics.h"



typedef struct __MOTREG {
                void *motorData;
                char *motorName;
                float targetPosition;
                long (*originalSetValue)(void *motorData,
                                         SConnection *pCon,
                                         float fTarget);
                int (*originalCheckStatus)(void *motorData,
                                         SConnection *pCon);
                int iActive;
        } MotReg, *pMotReg;


/*----------------------------------------------------------------------*/

   pMotReg RegisterMotor(char *name, SicsInterp *pSics,
        long (*SetValue)(void *pData, SConnection *pCon, float
                                                     fTarget),
        int (*CheckStatus)(void *pData, SConnection *pCon));
   void KillRegMot(void *self);

   void SetRegMotTarget(pMotReg self, float target);
   void CreateTargetString(pMotReg self, char pBueffel[80]); 

   int RegMotMatch(pMotReg self, char *name); 

   int StartRegMot(pMotReg self, SConnection *pCon, float fValue);

   int CheckRegMot(pMotReg self, SConnection *pCon);
 


#endif

