//=========================================================================
// Summary  :
// Filename : MMDropWeight.h
// Author   : paley
// Project  :
// Revision : 1
// Created  : 2001/05/17
// Modified : 2001/05/17
//=========================================================================
// Description :  DropWeight messages
//=========================================================================
#ifndef _MMDROPWEIGHT_H
#define _MMDROPWEIGHT_H

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

#define DropWeightMessageTimeOut 60

////////////////////////////////////////////////////
class MMDropWeightRelease : public MMNumberedBoolean
{

public:
	enum Weight {
		Ascend = 0,
		Descend,
		Emergency,
		//insert here
		numWeights
	};

	MMDropWeightRelease(const ModemMessage *pMM);
	MMDropWeightRelease(int number, Boolean value);

	virtual ModemMessage::Type tGetMessageType() const
		{ return ModemMessage::tMMDropWeightRelease; };
	virtual int iGetDefaultTimeout() const
		{ return DropWeightMessageTimeOut; };
	virtual Priority pGetDefaultPriority() const
		{ return pHIGH; };

	void toString(char* str);
	static int size() { return MMNumberedBoolean::size(); };
};

////////////////////////////////////////////////////
class MMDropWeightReleaseBatch : public MMBooleanArray
{

public:

	MMDropWeightReleaseBatch(const ModemMessage *pMM);
	MMDropWeightReleaseBatch(int number);

	virtual ModemMessage::Type tGetMessageType() const
		{ return ModemMessage::tMMDropWeightReleaseBatch; };
	virtual int iGetDefaultTimeout() const
		{ return DropWeightMessageTimeOut; };
	virtual Priority pGetDefaultPriority() const
		{ return pHIGH; };

	void toString(char* str, int number);
	static int size(int n) { return MMBooleanArray::size(n); };
};

#endif
