home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
500
/
471
/
rccl169
< prev
next >
Wrap
Text File
|
1987-03-02
|
5KB
|
158 lines
/*
* RCCL Version 1.0 Author : Vincent Hayward
* School of Electrical Engineering
* Purdue University
* Dir : h
* File : manip.h
* Remarks : All the structures and entry point declaration not
* known by the user
* Usage : Included in the concerned files
*/
#define HARDCLOCK 7 /* basic sample time */
#define MINSAMPLE 7 /* minimum sample time */
#define MAXSAMPLE 112 /* maximum ..... .... */
#define DEF_SAMPLE 28 /* default ...... .... */
#define DEF_TRSV 10 /* default trs vel mm/s */
#define DEF_ROTV 10 /* default rot vel dg/s */
/*
* bit definitions for set operations on directions and joints
*/
#define SELFX 01
#define SELFY 02
#define SELFZ 04
#define SELMX 010
#define SELMY 020
#define SELMZ 040
#define SELTX 01
#define SELTY 02
#define SELTZ 04
#define SELRX 010
#define SELRY 020
#define SELRZ 040
#define SELJ1 01
#define SELJ2 02
#define SELJ3 04
#define SELJ4 010
#define SELJ5 020
#define SELJ6 040
typedef int ALIGN; /* basic machine word boundary */
typedef union it { /* basic queue item aligned */
union it *next;
ALIGN z;
} ITEM, *ITEM_PTR;
typedef struct rt { /* empty record head of queue */
ITEM_PTR put;
ITEM_PTR get;
} ROOT, *ROOT_PTR;
typedef struct linkterm { /* position equation term */
TRSF_PTR trsf; /* user's transform */
TRSF_PTR altr; /* alternate system's transform */
TRSF_PTR oldt; /* old value */
bool rhs; /* right hand side pred */
ROOT hd; /* head of the hold trsf queue */
struct linkterm *next; /* pointer to the next */
struct linkterm *prev; /* pointer to the previous */
} TERM, *TERM_PTR;
/* internal position structure */
/* that maps exactly on user's */
typedef struct position { /* POS structure */
char *name; /* name pointer */
int code; /* termination code */
real scal; /* motion scalar 0 - 1 */
event end; /* signaled when done */
/* what follows is not known */
bool cfnsp, tfnsp; /* coord fns , tool fns pred. */
bool coorp, toolp; /* coord , tool pred. */
TERM_PTR t6ptr; /* pointer to t6 term */
TERM_PTR tlptr; /* pointer to tool term */
TERM_PTR pos; /* pointer to pos term */
} PST, *PST_PTR;
typedef struct drivepar { /* drive parameters */
real dx, dy, dz;
real dthe, dphi, dpsi;
} DRVP, *DRVP_PTR;
typedef struct mot { /* motion record */
int acct, sgt; /* acc. time, segment time */
int velt, velr; /* trans, rot velocities */
PST_PTR pst; /* position requested */
int mod; /* mode */
char *cfg; /* configuration */
TERM_PTR upd; /* term to be updated */
TRFN fnt; /* functions to be evaluated */
int smpl; /* sample */
real fmass; /* mass of object */
int fsp; /* force limit selection */
FORCE frc; /* ..... ..... values */
int csp; /* comply selection */
FORCE cpy; /* ...... values */
int dsp; /* diff motion selection */
DIFF dst; /* ........... values */
int exp; /* extra distance selection */
DIFF exd; /* ..... ........ values */
} MOT, *MOT_PTR;
typedef struct opsw { /* option switches */
bool graphics, /* graphic files (unformated) */
numerics, /* numeric output (formated) */
angles, /* angles in solution frame */
t6butnotj6, /* t6 but not j6 */
encoders; /* encoder values output */
} OPSW, *OPSW_PTR;
extern ROOT mqueue_n; /* motion queue head */
/*
* function's types
*/
extern ITEM_PTR dequeue_n();
extern int setpoint_n(),
checkstate_n();
extern char *strsave();
extern char *mess; /* in rtc */
/*
* fake system with signals use this Unix unallocated signal
*/
#ifdef FAKE
#define SIGCLCK 16
#endif
/*
* extra entry points that only exist in the PLAN and FAKE version
*/
#ifndef REAL
extern OPSW opsw_n;
extern FILE *fpo;
#define release release_l
#define control control_l
extern int release_l(),
control_l();
#endif