//=========================================================================
// Summary  :
// Filename : MMAlarm.cc
// Author   : paley
// Project  :
// Revision : 1
// Created  : 2001/05/17
// Modified : 2001/05/17
//=========================================================================
// Description :  Alarm messages
//=========================================================================

#include <stdio.h>
#include "MMAlarm.h"

////////////////////////////////////////////////////
MMWaterAlarm::MMWaterAlarm(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
	m_priority = pAVERAGE;
}

MMWaterAlarm::MMWaterAlarm(int number, Boolean value) :
	MMNumberedBoolean(number,value)
{
	m_priority = pAVERAGE;
}

void MMWaterAlarm::toString(char* str)
{
	sprintf(str,"tMMWaterAlarm: number=%d, value=%d",getNumber(), getValue());
}

////////////////////////////////////////////////////
MMWaterAlarmBatch::MMWaterAlarmBatch(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
	m_priority = pAVERAGE;
}

MMWaterAlarmBatch::MMWaterAlarmBatch(int number) :
	MMBooleanArray(number)
{
	m_priority = pAVERAGE;
}

void MMWaterAlarmBatch::toString(char* str, int number)
{
	sprintf(str,"tMMWaterAlarmBatch:  number=%d, value=%d", number,
		MMBooleanArray::getValue(number));
}

////////////////////////////////////////////////////
MMServerAlarm::MMServerAlarm(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
	m_priority = pAVERAGE;
}

MMServerAlarm::MMServerAlarm(int number, Boolean value) :
	MMNumberedBoolean(number,value)
{
	m_priority = pAVERAGE;
}

void MMServerAlarm::toString(char* str)
{
	sprintf(str,"tMMServerAlarm: number=%d, value=%d",getNumber(), getValue());
}

////////////////////////////////////////////////////
MMServerAlarmBatch::MMServerAlarmBatch(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
	m_priority = pAVERAGE;
}

MMServerAlarmBatch::MMServerAlarmBatch(int number) :
	MMBooleanArray(number)
{
	m_priority = pAVERAGE;
}

void MMServerAlarmBatch::toString(char* str, int number)
{
	sprintf(str,"tMMServerAlarmBatch:  number=%d, value=%d", number,
		MMBooleanArray::getValue(number));
}

void MMServerAlarm::getServerName(Server s, char *name)
{
	switch (s) {
	case (Navigation):
		sprintf(name,"%s","NavigationServer");
		break;
	case (LayeredControl):
		sprintf(name,"%s","LayeredControlServer");
		break;
	case (TailCone):
		sprintf(name,"%s","TailConeServer");
		break;
	case (PowerSystem):
		sprintf(name,"%s","PowerSystemServer");
		break;
	case (WaterAlarm):
		sprintf(name,"%s","WaterAlarmServer");
		break;
	case (DropWeight):
		sprintf(name,"%s","DropWeightServer");
		break;
	case (DynamicControl):
		sprintf(name,"%s","DynamicControlServer");
		break;
	case (VehicleConfiguration):
		sprintf(name,"%s","VehicleConfigurationServer");
		break;
	case (Ahrs):
		sprintf(name,"%s","AhrsServer");
		break;
	case (DepthSensor):
		sprintf(name,"%s","DepthSensorServer");
		break;
	case (Battery):
		sprintf(name,"%s","LiPolyBatteryServer");
		break;
	case (Dvl):
		sprintf(name,"%s","RdiadcpServer");
		break;
	case (Homing):
		sprintf(name,"%s","ApogeeHomingServer");
		break;
	case (Gps):
		sprintf(name,"%s","GpsServer");
		break;
	case (ExternalPosFix):
		sprintf(name,"%s","ExternalPosFixServer");
		break;
	case (RTCM):
		sprintf(name,"%s","RtcmServer");
		break;
	case (LUSBLFilter):
		sprintf(name,"%s","LUSBLFilterServer");
		break;
	default:
		sprintf(name,"%s","NONE");
		break;
	}
}
