/* Win-GRAF Runtime for XP-8xx8-CE6 - Multithreaded - Single application storing ICP DAS THIS FILE IS GENERATED BY T5DK WIZARD. DO NOT ENTER CHANGES DIRECLY - USE T5DK TO MAINTAIN IT! (c) COPALP 2002 */ #ifndef _T5VM_H_INCLUDED_ #define _T5VM_H_INCLUDED_ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* Compiler directives */ #pragma pack(8) /* Data types */ typedef char T5_CHAR; typedef short T5_SHORT; typedef long T5_LONG; typedef unsigned char T5_BOOL; typedef unsigned char T5_BYTE; typedef unsigned short T5_WORD; typedef unsigned long T5_DWORD; typedef float T5_REAL; typedef double T5_LREAL; typedef __int64 T5_LINT; typedef unsigned __int64 T5_LWORD; typedef unsigned short T5_RET; typedef void *T5_PTR; #define T5_PTNULL NULL typedef T5_CHAR *T5_PTCHAR; typedef T5_SHORT *T5_PTSHORT; typedef T5_LONG *T5_PTLONG; typedef T5_BOOL *T5_PTBOOL; typedef T5_BYTE *T5_PTBYTE; typedef T5_WORD *T5_PTWORD; typedef T5_DWORD *T5_PTDWORD; typedef T5_REAL *T5_PTREAL; typedef T5_LREAL *T5_PTLREAL; typedef T5_LINT *T5_PTLINT; typedef T5_LWORD *T5_PTLWORD; typedef double T5_DATA64; typedef T5_DATA64 *T5_PTDATA64; typedef char T5_STRING8[8]; typedef char T5_STRING16[16]; typedef char T5_STRING32[32]; typedef char T5_STRING64[64]; typedef T5_DWORD (*T5_HND)(); #define T5_HNDNULL NULL /* C library */ #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif #define T5_STRCPY(d,s) strcpy ((char *)(d), (char *)(s)) #define T5_STRCAT(d,s) strcat ((char *)(d), (char *)(s)) #define T5_STRCMP(s1,s2) strcmp ((char *)(s1), (char *)(s2)) #define T5_STRLEN(s) strlen ((char *)(s)) #define T5_MEMSET(p,b,n) memset ((p), (b), (n)) #define T5_MEMCPY(d,s,n) memcpy ((d), (s), (n)) #define T5_MEMMOVE(d,s,n) memmove ((d), (s), (n)) #define T5_MEMCMP(d,s,n) memcmp ((d), (s), (n)) #define T5_ATOI(s) atoi ((char *)(s)) #define T5_ATOF(s) atof ((char *)(s)) #define T5_MALLOC(n) malloc ((size_t)(n)) #define T5_FREE(p) free ((void *)(p)) #define T5_LTOA(s,l) sprintf ((char *)(s), "%ld", (l)) #define T5_RTOA(s,r) sprintf ((char *)(s), "%g", (r)) /****************************************************************************/ /* RT database */ #define T5TB_STATUS 0 /* main application status and control */ #define T5TB_LOG 1 /* stack of log messages */ #define T5TB_EXEC 2 /* tic code from comm */ #define T5TB_PRIVATE 3 /* global data private to the VM */ #define T5TB_PROG 4 /* programs */ #define T5TB_LOCK 5 /* 8 bit data: lock flags */ #define T5TB_DATA8 6 /* 8 bit data: bool, sint */ #define T5TB_DATA16 7 /* 8 bit data: bool, sint */ #define T5TB_DATA32 8 /* 32 bit data: dint, real */ #define T5TB_DATA64 9 /* 64 bit data: lint, lreal */ #define T5TB_TIME 10 /* timers */ #define T5TB_ACTIME 11 /* active timers */ #define T5TB_FBCLASS 12 /* C or std function block classes */ #define T5TB_FBINST 13 /* C or std function block instance */ #define T5TB_FBCDATA 14 /* data of FB classes */ #define T5TB_FBIDATA 15 /* data of FB instance */ #define T5TB_FCLASS 16 /* custom function classes */ #define T5TB_STRING 17 /* character strings */ #define T5TB_STRBUF 18 /* string buffers */ #define T5TB_SYSRSC 19 /* system resources */ #define T5TB_STEP 20 /* SFC steps */ #define T5TB_TRANS 21 /* SFC transitions */ #define T5TB_UNRES 22 /* unresolved resources */ #define T5TB_IODATA 23 /* private memory for IO devices */ #define T5TB_VARMAP 24 /* embedded variable map */ #define T5TB_HASH 25 /* embedded variable map - hash tables */ #define T5TB_XV 26 /* external variables */ #define T5TB_BSAMPLING 27 /* digital sampling trace */ #define T5TB_TASK 28 /* tasks lists */ #define T5TB_CALLSTACK 29 /* sub program call stack */ #define T5TB_MBC 30 /* MODBUS Client */ #define T5TB_ASI 31 /* ASi I/Os */ #define T5TB_EACHANGE 32 /* EA change events */ #define T5TB_EACNX 33 /* EA external connections */ #define T5TB_EAEXT 34 /* EA external events (extern vars) */ #define T5TB_CTSEG 35 /* CT variable segment */ #define T5TB_CANPORT 36 /* CAN bus driver - ports */ #define T5TB_CANMSG 37 /* CAN bus driver - messages */ #define T5TB_CANVAR 38 /* CAN bus driver - messages */ #define T5TB_DDKC 39 /* DDK C data */ #define T5MAX_TABLE 40 /* number of tables in the database */ typedef struct /* entry of a table in the data base */ { T5_PTR pData; /*PTR*/ /* pointer to the table */ T5_DWORD dwRawSize; /* size of the buffer for raw data */ T5_WORD wSizeOf; /* size of an item (1 for raw data) */ T5_WORD wNbItemFixed; /* number of items that cannot be moved */ T5_WORD wNbItemUsed; /* number of items used in the table */ T5_WORD wNbItemAlloc; /* total nb of items allocated in mem. */ } T5STR_DBTABLE; /* wNbItem.. members are 0 for raw data */ typedef T5STR_DBTABLE *T5PTR_DB; #define T5GET_DBLOCK(h) ((T5_PTBYTE)((h)[T5TB_LOCK].pData)) #define T5GET_DBDATA8(h) ((T5_PTBYTE)((h)[T5TB_DATA8].pData)) #define T5GET_DBDATA16(h) ((T5_PTWORD)((h)[T5TB_DATA16].pData)) #define T5GET_DBDATA32(h) ((T5_PTDWORD)((h)[T5TB_DATA32].pData)) #define T5GET_DBDATA64(h) ((T5_PTDATA64)((h)[T5TB_DATA64].pData)) #define T5GET_DBTIME(h) ((T5_PTDWORD)((h)[T5TB_TIME].pData)) #define T5GET_DBFBCDATA(h) ((T5_PTBYTE)((h)[T5TB_FBCDATA].pData)) #define T5GET_DBFBIDATA(h) ((T5_PTBYTE)((h)[T5TB_FBIDATA].pData)) #define T5GET_DBSTRING(h) ((T5_PTBYTE *)((h)[T5TB_STRING].pData)) #define T5GET_DBSTRBUF(h) ((T5_PTBYTE)((h)[T5TB_STRBUF].pData)) #define T5GET_DBIODATA(h) ((T5_PTBYTE)((h)[T5TB_IODATA].pData)) #define T5GET_DBXV(h) ((T5_PTBYTE *)((h)[T5TB_XV].pData)) #define T5GET_MBC(h) ((h)[T5TB_MBC].pData) #define T5GET_ASI(h) ((T5PTR_ASI)((h)[T5TB_ASI].pData)) #define T5GET_EACHANGE(h) ((T5PTR_EACHANGE)((h)[T5TB_EACHANGE].pData)) #define T5GET_EACNX(h) ((T5PTR_EACNX)((h)[T5TB_EACNX].pData)) #define T5GET_EAEXT(h) ((T5PTR_EAEXT)((h)[T5TB_EAEXT].pData)) /****************************************************************************/ /****************************************************************************/ /* T5TB_FBCLASS: FB classes */ #ifndef T5HDNSPEC #define T5HDNSPEC /* nothing */ #endif typedef T5_DWORD T5HDNSPEC (*T5HND_FB)(T5_WORD wCommand, T5PTR_DB pBase, T5_PTR pClass, T5_PTR pInst, T5_PTWORD pArgs); #define T5FBCMD_ACTIVATE 0 /* command: activates instance */ #define T5FBCMD_GETCLASSID 1 /* command: get class ID (std only) */ #define T5FBCMD_SIZEOFCLASS 2 /* command: get sizeof class data */ #define T5FBCMD_SIZEOFINSTANCE 3 /* command: get sizeof inst data */ #define T5FBCMD_INITCLASS 4 /* command: init class data */ #define T5FBCMD_EXITCLASS 5 /* command: close class */ #define T5FBCMD_INITINSTANCE 6 /* command: init inst data */ #define T5FBCMD_EXITINSTANCE 7 /* command: close instance */ #define T5FBCMD_HOTRESTART 8 /* command: reinitialize instance */ #define T5FBCMD_ACCEPTCT 9 /* command: accept CTSeg arguments */ #define T5FBCMD_KEEPALIVE 10 /* command: keep alive */ #define T5FBCMD_WANTKA 11 /* command: want keep alive calls */ #define T5FBCLASS_VALID 0x0001 /* the class is valid */ typedef struct /* one class */ { T5_STRING16 szName; /* class name */ T5_DWORD dwClassSizeof; /* sizeof class data */ T5_DWORD dwInstSizeof; /* sizeof instance data */ T5HND_FB pfHandler; /*PTR*/ /* FB class handler */ T5_PTR pData; /*PTR*/ /* pointer to class data */ T5_WORD wFlags; /* flags */ T5_WORD wID; /* class ID */ } T5STR_DBFBCLASS; typedef T5STR_DBFBCLASS *T5PTR_DBFBCLASS; #define T5GET_DBFBCLASS(h) ((T5PTR_DBFBCLASS)((h)[T5TB_FBCLASS].pData)) /****************************************************************************/ #ifdef __cplusplus } #endif #endif /*_T5VM_H_INCLUDED_*/ /* eof */