#ifndef __netvar_h__ #define __netvar_h__ #include #include /* A netvar is 4096 (1 page) in size less the sizeof a sem_t */ /* Currently this is 12 bytes in LynxOS, 48 in SunOS (32 & 64-bit) */ /* 32 bytes in 64-bit Linux64, 16 in 32-bit Linux(ppc & x86)... */ /* The largest scalar is a double - 8 bytes */ #define MAX_SCALAR_ARRAY_LEN 504 #define MAX_STRING_ARRAY_LEN 63 #define MAX_STR_LEN 63 #define MAX_BLOCK_LEN (MAX_STRING_ARRAY_LEN*(MAX_STR_LEN+1)) #ifdef SIXTYFOUR_BIT typedef union NETVAR_TYPES { union scalars { float floa; double doub; int intg; uint32_t untg; int32_t lng; uint32_t ulon; int16_t shor; uint16_t usho; char chr; uint8_t ucha; } scalar[MAX_SCALAR_ARRAY_LEN]; char stri[MAX_STRING_ARRAY_LEN][MAX_STR_LEN+1]; char block[MAX_BLOCK_LEN]; } netvar_types; #else typedef union NETVAR_TYPES { union scalars { float floa; double doub; int intg; uint32_t untg; int32_t lng; uint32_t ulon; int16_t shor; uint16_t usho; char chr; uint8_t ucha; } scalar[MAX_SCALAR_ARRAY_LEN]; char stri[MAX_STRING_ARRAY_LEN][MAX_STR_LEN+1]; char block[MAX_BLOCK_LEN]; } netvar_types; #endif char ID[80]; char * MERGE_ID; char ScratchNetString[80]; /* temporary value */ int ScratchNetInt; #define NETBLOCKLENGTH 4000 int * MERGE_PID; int * MERGE_Action; int * MERGE_Signal; char * MERGE_Parameter; char * MERGE_Response; int * MERGE_State; int * MERGE_Trace; int * MERGE_TestMode; int * MERGE_Paused; int * MERGE_TxEnable; int * MERGE_LinksAvailable; STATUS assignNetChar (char *name, int index, int len, char val); STATUS assignNetUChar (char *name, int index, int len, UCHAR val); STATUS assignNetInt (char *name, int index, int len, int val); STATUS assignNetUInt (char *name, int index, int len, UINT val); STATUS assignNetShort (char *name, int index, int len, INT16 val); STATUS assignNetUShort (char *name, int index, int len, UINT16 val); STATUS assignNetLong (char *name, int index, int len, INT32 val); STATUS assignNetULong (char *name, int index, int len, UINT32 val); STATUS assignNetFloat (char *name, int index, int len, float val); STATUS assignNetDouble (char *name, int index, int len, double val); STATUS assignNetString (char *name, int index, int len, char *val); STATUS assignNetBlock (char *name, int index, int len, char val); STATUS readNetChar (char *name, int index, int len, char *val); STATUS readNetUChar (char *name, int index, int len, UCHAR *val); STATUS readNetInt (char *name, int index, int len, int *val); STATUS readNetUInt (char *name, int index, int len, UINT *val); STATUS readNetShort (char *name, int index, int len, INT16 *val); STATUS readNetUShort (char *name, int index, int len, UINT16 *val); STATUS readNetLong (char *name, int index, int len, INT32 *val); STATUS readNetULong (char *name, int index, int len, UINT32 *val); STATUS readNetFloat (char *name, int index, int len, float *val); STATUS readNetDouble (char *name, int index, int len, double *val); STATUS readNetString (char *name, int index, int len, char *val); STATUS readNetBlock (char *name, int index, int len, char *val); STATUS releaseNetVar (char *name); STATUS freeNetVar (char *name); void *getNetVarMem (char *name); STATUS freeNetVarMem (char *name, void *memy); STATUS assignNetIntMem (void *memy, int index, int len, int val); STATUS assignNetStringMem (void *memy, int index, int len, char *val); STATUS assignNetBlockMem (void *memy, int index, int len, char *val); STATUS readNetIntMem (void *memy, int index, int len, int *val); STATUS readNetStringMem (void *memy, int index, int len, char *val); STATUS readNetBlockMem (void *memy, int index, int len, char *val); int *getNetIntIndexMem (void *memy, int index); INT16 *getNetShortIndexMem (void *memy, int index); char *getNetStringIndexMem (void *memy, int index); char *getNetBlockIndexMem (void *memy, int index); int *getNetIntMem (char *name); int *getNetIntArrayMem (char *name, int index); INT16 *getNetShortMem (char *name); INT16 *getNetShortArrayMem (char *name, int index); char *getNetStringMem (char *name); char *getNetStringArrayMem (char *name, int index); char *getNetBlockMem (char *name); char *getNetBlockArrayMem (char *name, int index); #define readNetIntMemDirect(m,i) (((netvar_types *)(m))->scalar[(i)].intg) #define readNetShortMemDirect(m,i) (((netvar_types *)(m))->scalar[(i)].shor) #define readNetStringMemDirect(m,i) (((netvar_types *)(m))->stri[(i)]) #define readNetBlockMemDirect(m,i) (((netvar_types *)(m))->block[(i)]) #define assignNetIntMemDirect(m,i,v) (((netvar_types *)(m))->scalar[(i)].intg=(v)) #define assignNetShortMemDirect(m,i,v) (((netvar_types *)(m))->scalar[(i)].shor=(v)) #define assignNetStringMemDirect(m,i,v) (strcpy(((netvar_types *)(m))->stri[(i)],(v))) #define assignNetBlockMemDirect(m,i,v) (((netvar_types *)(m))->block[(i)]=(v)) #endif