00001 #ifndef LSF_SERVER_H
00002 #define LSF_SERVER_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "lsfDevice.h"
00018
00019
00020
00021
00022 #define lsfSERVER_PRIORITY 80
00023 #define lsfSERVER_OPTIONS VX_FP_TASK
00024 #define lsfSERVER_STACK 60
00025
00026 #define lsfMONITOR_PRIORITY 75
00027 #define lsfMONITOR_STACK 30
00028
00029 typedef struct
00030 {
00031 void *ctrlData;
00032 lsfSTATE state;
00033 lsfSUBSTATE subState;
00034 vltLOGICAL init;
00035 vltLOGICAL simulation;
00036 vltINT32 numDevices;
00037 SEM_ID cmdSem;
00038 vltINT32 cmdTimeout;
00039 SEM_ID initSem;
00040 vltLOGICAL lccDevice;
00041 int monTid;
00042 SEM_ID monSem;
00043 int monPeriod;
00044 ccsERROR error;
00045 char *attrTable;
00046 vltBYTES20 swdName;
00047 void *fctHook[10][3];
00048 vltLOGICAL serverInit;
00049 void *userData;
00050 } lsfSERVER_DATA;
00051
00052 typedef enum
00053 {
00054 lsfHOOK_INIT = 0,
00055 lsfHOOK_STANDBY,
00056 lsfHOOK_ONLINE,
00057 lsfHOOK_STOP,
00058 lsfHOOK_OFF,
00059 lsfHOOK_EXIT,
00060 lsfHOOK_SIMULAT,
00061 lsfHOOK_STOPSIM,
00062 lsfHOOK_SELFTST,
00063 lsfHOOK_TEST,
00064 lsfHOOK_LAST
00065 } lsfHOOKFUNC_IDX;
00066
00067 typedef enum
00068 {
00069 lsfHOOK_PRO = 0,
00070 lsfHOOK_MID,
00071 lsfHOOK_EPI
00072 } lsfHOOKTYPE_IDX;
00073
00074 typedef ccsCOMPL_STAT lsfSTD_FUNCTION_HOOK ( IN lsfSERVER_DATA *serverData,
00075 OUT ccsERROR *error);
00076
00077 #define lsfSTD_COMMAND_HOOK(m,c,h) \
00078 ccsCOMPL_STAT m ## Std ## c ## h ## Hook ( \
00079 IN lsfSERVER_DATA *srvData, OUT ccsERROR *error)
00080
00081 void lsfServerGetHooks ( IN lsfSERVER_DATA *serverData );
00082 ccsCOMPL_STAT lsfServerCallHook ( IN lsfSERVER_DATA *serverData,
00083 IN lsfHOOKFUNC_IDX cmd,
00084 IN lsfHOOKTYPE_IDX typ,
00085 OUT ccsERROR *error );
00086
00087 ccsCOMPL_STAT lsfServerInitDb ( IN const char *swdName,
00088 OUT ccsERROR *error );
00089
00090 ccsCOMPL_STAT lsfInitAll ( IN const char *swdName,
00091 OUT lsfSERVER_DATA **pServerData );
00092
00093 void lsfServerDestructor ( IN lsfSERVER_DATA *serverData );
00094
00095 ccsCOMPL_STAT lsfServerReadConfig ( IN lsfSERVER_DATA *serverData,
00096 OUT ccsERROR *error );
00097
00098 vltLOGICAL lsfServerGetInit ( IN lsfSERVER_DATA *serverData );
00099 ccsCOMPL_STAT lsfServerSetInit ( IN lsfSERVER_DATA *serverData,
00100 IN vltLOGICAL value,
00101 OUT ccsERROR *error );
00102
00103 vltLOGICAL lsfServerGetSim ( IN lsfSERVER_DATA *serverData );
00104 ccsCOMPL_STAT lsfServerSetSim ( IN lsfSERVER_DATA *serverData,
00105 IN vltLOGICAL value,
00106 OUT ccsERROR *error );
00107
00108 lsfSTATE lsfServerGetState ( IN lsfSERVER_DATA *serverData );
00109 const char *lsfServerGetStateName ( IN lsfSERVER_DATA *serverData );
00110
00111 lsfSUBSTATE lsfServerGetSubState ( IN lsfSERVER_DATA *serverData );
00112 const char *lsfServerGetSubStateName( IN lsfSERVER_DATA *serverData );
00113
00114 ccsCOMPL_STAT lsfServerTakeInitSem ( IN lsfSERVER_DATA *serverData );
00115 void lsfServerGiveInitSem ( IN lsfSERVER_DATA *serverData );
00116
00117 ccsCOMPL_STAT lsfServerTakeCmdSem ( IN lsfSERVER_DATA *serverData );
00118 void lsfServerGiveCmdSem ( IN lsfSERVER_DATA *serverData );
00119
00120 void lsfServerWakeupMonitor ( IN lsfSERVER_DATA *serverData );
00121
00122 vltINT32 lsfServerGetCmdTimeout ( IN lsfSERVER_DATA *serverData );
00123 void lsfServerSetCmdTimeout ( IN lsfSERVER_DATA *serverData,
00124 IN vltINT32 timeout );
00125
00126 ccsCOMPL_STAT lsfServerSwitchState ( IN lsfSERVER_DATA *serverData,
00127 IN lsfSTATE newDevState,
00128 OUT ccsERROR *error );
00129
00130 ccsCOMPL_STAT lsfServerCheckOnline ( IN lsfSERVER_DATA *serverData,
00131 OUT vltLOGICAL *online,
00132 OUT ccsERROR *error );
00133
00134 typedef void lsfTASK_FUNCTION ( IN void *parameter,
00135 IN SEM_ID *syncSem,
00136 IN ccsCOMPL_STAT *status,
00137 OUT ccsERROR *error );
00138
00139 int lsfStartupTask ( IN char *name,
00140 IN vltINT32 priority,
00141 IN vltINT32 stackSize,
00142 IN FUNCPTR entryPoint,
00143 IN void *param,
00144 OUT ccsERROR *error );
00145
00146 lsfSERVER_DATA *lsfServerGetGlobalData( IN const char *swdName,
00147 OUT ccsERROR *error );
00148 ccsCOMPL_STAT lsfServerGetSwDeviceName( OUT char *swdName,
00149 OUT ccsERROR *error );
00150 vltLOGICAL lsfServerIsALccDevice ( IN lsfSERVER_DATA *serverData );
00151
00152 void lsfVersion ( OUT vltBYTES80 version,
00153 IN const char *modName,
00154 IN const char *modTitle,
00155 IN const char *date,
00156 IN const char *time,
00157 IN const char *modRcs );
00158 #endif