#if !defined(__GTDLL_H__)
#define __GTDLL_H__

#define GTDLL_API extern "C" __declspec(dllimport) short __stdcall
#define GTDLL_VARIABLE	   __declspec(dllimport)

/*************Base GE Command Start**************/
GTDLL_API  GT_AddList(void);
GTDLL_API  GT_AlarmOff(USHORT axis);
GTDLL_API  GT_AlarmOn(USHORT axis);
GTDLL_API  GT_ArcXY(double x_center,double y_center,double angle);
GTDLL_API  GT_ArcXYP(double x_end,double y_end,double r,short dir);
GTDLL_API  GT_ArcYZ(double y_center,double z_center,double angle);
GTDLL_API  GT_ArcYZP(double y_end,double z_end,double r,short dir);
GTDLL_API  GT_ArcZX(double z_center,double x_center,double angle);
GTDLL_API  GT_ArcZXP(double z_end,double x_end,double r,short dir);
GTDLL_API  GT_AxisOff(USHORT axis);
GTDLL_API  GT_AxisOn(USHORT axis);
GTDLL_API  GT_CaptHome(USHORT axis);
GTDLL_API  GT_Close(void);
GTDLL_API  GT_ClrSts(USHORT axis);
GTDLL_API  GT_DrvRst(USHORT axis);
GTDLL_API  GT_EndList(void);
GTDLL_API  GT_EStpMtn(void);
GTDLL_API  GT_ExInpt(USHORT *value);
GTDLL_API  GT_ExOpt(USHORT value);
GTDLL_API  GT_GetAtlPos(short axis,long *pos);
GTDLL_API  GT_GetBrkPnt(double *pnt);
GTDLL_API  GT_GetCapt(USHORT axis,double *value);
GTDLL_API  GT_GetCmdSts(USHORT *value);
GTDLL_API  GT_GetCrdSts(PUSHORT coord_status);
GTDLL_API  GT_GetLmtSwt(USHORT *value);
GTDLL_API  GT_GetMtnNm(PUSHORT motion_linenum);
GTDLL_API  GT_GetPrfPnt(double* pnt);
GTDLL_API  GT_GetPrfVel(double *vel);
GTDLL_API  GT_GetSegPnt(double* pnt);
GTDLL_API  GT_GetSts(USHORT axis, USHORT *value);
GTDLL_API  GT_HardRst(void);
GTDLL_API  GT_LmtSns(USHORT value);
GTDLL_API  GT_LmtsOff(short axis);
GTDLL_API  GT_LmtsOn(short axis);
GTDLL_API  GT_LnXY(double x, double y);
GTDLL_API  GT_LnXYZ(double x,double y,double z);
GTDLL_API  GT_LnXYZA(double x,double y,double z,double A);
GTDLL_API  GT_LnXYG0(double x, double y);
GTDLL_API  GT_LnXYZG0(double x,double y,double z);
GTDLL_API  GT_LnXYZAG0(double x,double y,double z,double A);
GTDLL_API  GT_MvXY(double x,double y,double vel,double accel);
GTDLL_API  GT_MvXYZ(double x,double y,double z,double vel,double accel);
GTDLL_API  GT_MvXYZA(double x,double y,double z,double A,double vel,double accel);
GTDLL_API  GT_Open(ULONG PortBase=65535,ULONG irq=0);
GTDLL_API  GT_Override(double value);
GTDLL_API  GT_OverrideG0(double value);
GTDLL_API  GT_Reset(void);
GTDLL_API  GT_RestoreMtn(void);
GTDLL_API  GT_RstSts(short Axis,USHORT value);
GTDLL_API  GT_SetAtlPos(USHORT AxisNum, double pos);
GTDLL_API  GT_SetDccFlag(void);
GTDLL_API  GT_SetDccVel(double vel);
GTDLL_API  GT_SetMaxVel(double value);
GTDLL_API  GT_SetStpAcc(double value);
GTDLL_API  GT_SetStrtVel(double value);
GTDLL_API  GT_SetSynAcc(double accel);
GTDLL_API  GT_SetSynVel(double vel);
GTDLL_API  GT_StepDir(USHORT axis);
GTDLL_API  GT_StepPulse(USHORT axis);
GTDLL_API  GT_StpMtn(void);
GTDLL_API  GT_StrtList(void);
GTDLL_API  GT_StrtMtn();
GTDLL_API  GT_Update(short axis);
GTDLL_API  GT_ZeroPos(USHORT AxisNum);
GTDLL_API  GT_SwitchtoCardNo(short card_no);
GTDLL_API  GT_GetCurrentCardNo();
/*************Base GE Command End**************/

/************* Optional GE Command Start**************/
GTDLL_API  GT_CaptIndex(USHORT axis);
GTDLL_API  GT_GetEncPos(USHORT axis,long* Actl_pos);
GTDLL_API  GT_MapCnt(short axis,double Count);
/************* Optional GE Command End**************/

////////////////////////////////////////////////////////////////////////
#endif //__GTDLL_H__