#include <process.h>
#include "RemoteAgentServer.h"
#include "Syslog.h"
//#include "VehicleConfigurator.h"


RemoteAgentServer::RemoteAgentServer()
  : RemoteAgentIF_SK()
{
    _output = new RemoteAgentOutput( SharedData::Read, True );
    _command = new RemoteAgentCommand( MessageQueue::ReadWrite );

}

RemoteAgentServer::~RemoteAgentServer()
{
  //    VehicleConfigurator::clearPID();
  //  VehicleConfigurator::clearIFName();
    delete _output;
    delete _command;
}

////////////////////////////////////////////////////////////
// Sets the debug level
// Writes higher then this will actually be sent
void RemoteAgentServer::setDebugLevel(short lev) {
    short l = lev;
}

///////////////////////////////////////////////////////////
// Gets the current debug level
short RemoteAgentServer::getDebugLevel() {
    return -1;
}

void RemoteAgentServer::requestCommand(short mmtype, short timeType, short period)
{
    RemoteAgentCommand::Command cmd(mmtype, timeType, period);   
    _command->write( &cmd );
}

void RemoteAgentServer::reregisterServer() {
  //    VehicleConfigurator::setPID();
  //VehicleConfigurator::setIFName( name() );
}

void RemoteAgentServer::poinkerCommand(char * j) {
    RemoteAgentCommand::Command cmd(j);
    _command->write( &cmd );
}

int RemoteAgentServer::spawnAuxTasks()
{
  char *program = "remoteAgentDriver";
  char errorBuf[256];
 
  pid_t pid;
 
  switch ((pid = fork())) {
     
  case 0:
    // In child
    // Execute server program

    //execlp(program, program, "-serial", _serialParams->string(), 0);
    execlp(program, program, 0);

    sprintf(errorBuf, 
	    "RemoteAgentServer::spawnAuxTasks() - execlp() of \"%s\" failed",
	    program);

    perror(errorBuf);
 
    break;

  case -1:
    perror("RemoteAgentServer::spawnAuxTasks() - fork() failed");
    return -1;
  }
    
    return 0;
}
