//=========================================================================
// Summary  :
// Filename : MMMissionName.h
// Author   : Gil Jones
// Project  :
// Revision : 1
// Created  : 2001/11/30
// Modified : 2001/11/30
//=========================================================================
// Description :  Name of a mission
//=========================================================================

#ifndef _MISSIONNAME_H
#define _MISSIONNAME_H

#define MissionNameTimeout 30 //seconds

#include "ModemMessage.h"
#include "MMUtils.h"

class MMMissionName : public MMConvertible
{
 public:
    
    enum MissionType {
	Abort = 0,
	Normal
    };
    
    ~MMMissionName();

    MMMissionName(const ModemMessage *pMM);
    MMMissionName(short nameSize, char* name, short m, short jumpNum = -1);
    MMMissionName(short success, short m);

    virtual const char* pcRead(const char* sourceBuffer);
    virtual char* pcWrite(char * destBuffer) const;
    virtual ModemMessage::Type tGetMessageType() const
	{ return ModemMessage::tMMMissionName; };
    virtual int iGetDefaultTimeout() const { return MissionNameTimeout; };

    short getMissionNameSize()
	{
	    return _nameSize;
	}

    void getMissionName(char* n) 
	{
	    strncpy(n,_missionName, _nameSize);
	}
    
    short getMissionType()
	{ return _missionType; };

    short getJumpNum()
	{ return _jumpNum; };

    short getSuccess()
	{ return _success; };
	

 protected:

    short _nameSize;
    char _missionName[128];
    short _missionType;
    short _jumpNum;
    short _success;
};

class MMJumpBehavior : public MMConvertible
{ 
 public:
   
    MMJumpBehavior(const ModemMessage *pMM);
    MMJumpBehavior(short jumpNum);
    
    virtual const char* pcRead(const char* sourceBuffer);
    virtual char* pcWrite(char * destBuffer) const;
    virtual ModemMessage::Type tGetMessageType() const
	{ return ModemMessage::tMMJumpBehavior; };
    virtual int iGetDefaultTimeout() const { return MissionNameTimeout; };
    
    short getJumpNum()
	{ return _jumpNum; };
    
    void setJumpNum(short n)
	{ _jumpNum = n; };
    
 protected:

    short _jumpNum;

};

#endif
    
