Files
sics/modriv.h
2012-11-29 10:38:50 +11:00

77 lines
2.6 KiB
C

/*------------------------------------------------------------------------
Header file for an EL734 motor driver
Mark Koennecke, November 1996
copyright: see implementation file
----------------------------------------------------------------------------*/
#ifndef SICSEL734
#define SICSEL734
#include "SCinter.h"
#define MOTREDO -1
#define MOTFAIL 0
#define MOTOK 1
#define TEXTPARLEN 1024
typedef struct __AbstractMoDriv {
/* general motor driver interface
fields. REQUIRED!
*/
float fUpper; /* upper limit */
float fLower; /* lower limit */
char *name;
int (*GetPosition) (void *self, float *fPos);
int (*RunTo) (void *self, float fNewVal);
int (*GetStatus) (void *self);
void (*GetError) (void *self, int *iCode, char *buffer, int iBufLen);
int (*TryAndFixIt) (void *self, int iError, float fNew);
int (*Halt) (void *self);
int (*GetDriverPar) (void *self, char *name, float *value);
int (*SetDriverPar) (void *self, SConnection * pCon,
char *name, float newValue);
void (*ListDriverPar) (void *self, char *motorName, SConnection * pCon);
void (*KillPrivate) (void *self);
int (*GetDriverTextPar) (void *self, char *name, char *textPar);
} MotorDriver;
/* the first fields above HAVE to be IDENTICAL to those below */
typedef struct ___MoSDriv {
/* general motor driver interface
fields. REQUIRED!
*/
float fUpper; /* upper limit */
float fLower; /* lower limit */
char *name;
int (*GetPosition) (void *self, float *fPos);
int (*RunTo) (void *self, float fNewVal);
int (*GetStatus) (void *self);
void (*GetError) (void *self, int *iCode, char *buffer, int iBufLen);
int (*TryAndFixIt) (void *self, int iError, float fNew);
int (*Halt) (void *self);
int (*GetDriverPar) (void *self, char *name, float *value);
int (*SetDriverPar) (void *self, SConnection * pCon,
char *name, float newValue);
void (*ListDriverPar) (void *self, char *motorName, SConnection * pCon);
void (*KillPrivate) (void *self);
int (*GetDriverTextPar) (void *self, char *name, char *textPar);
/* Simulation specific fields */
float fFailure; /* percent random failures */
float fSpeed;
time_t iTime;
float fPos; /* position */
float fTarget; /* target position */
} SIMDriv;
/* ----------------------- Simulation -----------------------------------*/
MotorDriver *CreateSIM(SConnection * pCon, int argc, char *argv[]);
void KillSIM(void *pData);
MotorDriver *RGMakeMotorDriver(void);
#endif