//=========================================================================
// Summary  :
// Filename : SupervisorOutput.h
// Author   : marsh
// Project  :
// Revision : 1
// Created  : 2000/08/19
// Modified : 2000/08/19
//=========================================================================
// Description :
//=========================================================================

#ifndef _SUPERVISOROUTPUT_H
#define _SUPERVISOROUTPUT_H

#include "VehicleConfigurationIF.h"
#include "SupervisorIF.h"
#include "Sysinfo.h"

#define SupervisorOutputName "supervisorOutput"

#define PROC_TABLE_MAX 30

#include "SharedData.h"

class SupervisorOutput : public SharedData
{
public:

     struct Data {
	  struct {
	       SupervisorIF::Name procName;
	       SupervisorIF::Name interfaceName;
	       pid_t pid;
	       Sysinfo::ProcStatus status;
	  } procs[PROC_TABLE_MAX];

	  Sysinfo::ProcStatus systemStatus;

	 short cycleCount;
	  short numProcs;
	  short maxProcs;
	  Boolean isMissionRunning;
	  SupervisorIF::Name directoryName;
     };

     SupervisorOutput( Access access = NoAccess,
		    Boolean init = False );
     virtual ~SupervisorOutput();

     Data data;

     void addEntry( const VehicleConfigurationIF::Name procName,
		    const VehicleConfigurationIF::Name interfaceName,
		    pid_t pid );
     void setStatus( pid_t pid, Sysinfo::ProcStatus status );

     void read();
     void write();


};

#endif
