//=========================================================================
// Summary  :
// Filename : _startMission.cc
// Author   : dzucker
// Project  :
// Revision : 1
// Created  : 2002/03/12
// Modified :
//=========================================================================
// Description : Calls a supervisor interface function to start a mission.
//=========================================================================

#include "stdio.h"
#include "stdlib.h"

#include "Syslog.h"
#include "SupervisorIF.h"



main( int argc, char **argv )
{
	SupervisorIF::PlanName newMission, abortPlan;
	Boolean haveAbortPlan = False;
	SupervisorIF *supervisor;

	if ( ( argc < 2 ) || ( argc > 3 ) ) {
		fprintf(stderr, "usage: startMission <mission file name> [ <abort file name> ]\n");
		exit(-1);
	}

	strcpy( newMission, argv[1] );

	if ( argc == 3 ) {
		haveAbortPlan = True;
		strcpy( abortPlan, argv[2] );
	}

	try {
		supervisor = new SupervisorIF("startMission");

		if ( supervisor->isMissionRunning() )
		{
			fprintf(stderr, "SupervisorIF reports mission already running. Abort this mission before starting a new one.\n");
			delete supervisor;
			exit(0);
		}

		Syslog::write("Starting mission '%s' with%s abort plan %s",
			newMission, haveAbortPlan ? "" : " default",
			haveAbortPlan ? abortPlan : "");

		if ( haveAbortPlan )
			supervisor->setMission( newMission, abortPlan );
		else
			supervisor->setMission( newMission );

		supervisor->startMission();

		delete supervisor;
	}
	catch (...) {
		fprintf(stderr, "startMission - Caught unspecified error.\n");
	}

	exit(0);
}
