00001 #ifndef TP_H
00002 #define TP_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "posemath.h"
00026 #include "tc.h"
00027
00028
00029 #ifndef __GNUC__
00030 #ifndef __attribute__
00031 #define __attribute__(x)
00032 #endif
00033 #endif
00034
00035 static char __attribute__((unused)) tp_h[] = "$Id: tp.h,v 1.4 2001/08/17 22:05:41 proctor Exp $";
00036
00037 #define TP_DEFAULT_QUEUE_SIZE 32
00038
00039 typedef struct
00040 {
00041 TC_QUEUE_STRUCT queue;
00042 int queueSize;
00043 double cycleTime;
00044 double vMax;
00045 double vScale, vRestore;
00046 double aMax;
00047 double vLimit;
00048 double wMax;
00049 double wDotMax;
00050 int nextId;
00051 int execId;
00052 int termCond;
00053 EmcPose currentPos;
00054 EmcPose goalPos;
00055 int done;
00056 int depth;
00057 int activeDepth;
00058 int aborting;
00059 int pausing;
00060 unsigned char douts;
00061 unsigned char doutstart;
00062 unsigned char doutend;
00063 } TP_STRUCT;
00064
00065 extern int tpCreate(TP_STRUCT *tp, int _queueSize, TC_STRUCT *tcSpace);
00066 extern int tpDelete(TP_STRUCT *tp);
00067 extern int tpClear(TP_STRUCT *tp);
00068 extern int tpInit(TP_STRUCT *tp);
00069 extern int tpSetCycleTime(TP_STRUCT *tp, double secs);
00070 extern int tpSetVmax(TP_STRUCT *tp, double vmax);
00071 extern int tpSetWmax(TP_STRUCT *tp, double vmax);
00072 extern int tpSetVlimit(TP_STRUCT *tp, double limit);
00073 extern int tpSetVscale(TP_STRUCT *tp, double scale);
00074 extern int tpSetAmax(TP_STRUCT *tp, double amax);
00075 extern int tpSetWDotmax(TP_STRUCT *tp, double amax);
00076 extern int tpSetId(TP_STRUCT *tp, int id);
00077 extern int tpGetNextId(TP_STRUCT *tp);
00078 extern int tpGetExecId(TP_STRUCT *tp);
00079 extern int tpSetTermCond(TP_STRUCT *tp, int cond);
00080 extern int tpGetTermCond(TP_STRUCT *tp);
00081 extern int tpSetPos(TP_STRUCT *tp, EmcPose pos);
00082 extern int tpAddLine(TP_STRUCT *tp, EmcPose end);
00083 extern int tpAddCircle(TP_STRUCT *tp, EmcPose end,
00084 PmCartesian center, PmCartesian normal, int turn);
00085 extern int tpRunCycle(TP_STRUCT *tp);
00086 extern int tpPause(TP_STRUCT *tp);
00087 extern int tpResume(TP_STRUCT *tp);
00088 extern int tpAbort(TP_STRUCT *tp);
00089 extern EmcPose tpGetPos(TP_STRUCT *tp);
00090 extern int tpIsDone(TP_STRUCT *tp);
00091 extern int tpIsPaused(TP_STRUCT *tp);
00092 extern int tpQueueDepth(TP_STRUCT *tp);
00093 extern int tpActiveDepth(TP_STRUCT *tp);
00094 extern void tpPrint(TP_STRUCT *tp);
00095 extern int tpSetAout(TP_STRUCT *tp, unsigned char index, double start, double end);
00096 extern int tpSetDout(TP_STRUCT *tp, unsigned char index, unsigned char start, unsigned char end);
00097
00098 #endif