/*--------------------------------------------------------------------------

	The Status object. Holds the current status of the SICS server.
	
	Mark Koennecke, November 1996
        copyright: see implementation file
----------------------------------------------------------------------------*/
#ifndef SICSSTATUS
#define SICSSTATUS

  typedef enum {
                eEager,
                eUserWait,
                eCounting,
                eOutOfBeam,
                ePaused,
                eDriving,
                eRunning,
                eScanning,
		eWriting,
                eBatch,
                eHalted,
                eDead,
                eInput              
                } Status;
   
   /* for status display */
   void SetStatus(Status eNew);
   int SetStatusFromText(char *text);
   void KillStatus(void *pData);
/**
  * set a status and disallow any further changes to the status. This serves 
  * in order to prevent massive message flows to the client from status 
  * changes while processing synchronisation files
  */
   void SetStatusFixed(Status eNew);
/**
  * clear a fixed status again, status will be updated again.
  */
   void ClearFixedStatus(Status eNew);   

   Status GetStatus(void);
   void   GetStatusText(char *buf, int iBufLen);

   int UserStatus(SConnection *pCon, SicsInterp *pSics, void *pData,
                  int argc, char *argv[]);
   int ResetStatus(SConnection *pCon, SicsInterp *pSics, void *pData,
                  int argc, char *argv[]);

   int BackupStatus(SConnection *pCon, SicsInterp *pSics, void *pData,
                  int argc, char *argv[]);
   int RestoreStatus(SConnection *pCon, SicsInterp *pSics, void *pData,
                  int argc, char *argv[]);
                 
   
                                 
#endif
