//=========================================================================
// Summary  :
// Filename : MMUSBL.cc
// Author   : paley
// Project  :
// Revision : 1
// Created  : 2001/10/18
// Modified :
//=========================================================================
// Description :  USBL messages
//=========================================================================

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

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

MMUSBLFix::MMUSBLFix(long fixNum, float rxPitch, float rxRoll, float rxHeading,
	float dcl, float dcm, float eastings, float northings, Boolean reset)
{
	setFixNum(fixNum);
	setRxPitch(rxPitch);
	setRxRoll(rxRoll);
	setRxHeading(rxHeading);
	setDcl(dcl);
	setDcm(dcm);
	setEastings(eastings);
	setNorthings(northings);
	setReset(reset);
}

const char* MMUSBLFix::pcRead(const char* sourceBuffer)
{
	const char* pcEnd = ::pcRead(sourceBuffer, &m_fixNum);
	pcEnd = ::pcRead(pcEnd, &m_rxPitch);
	pcEnd = ::pcRead(pcEnd, &m_rxRoll);
	pcEnd = ::pcRead(pcEnd, &m_rxHeading);
	pcEnd = ::pcRead(pcEnd, &m_dcl);
	pcEnd = ::pcRead(pcEnd, &m_dcm);
	pcEnd = ::pcRead(pcEnd, &m_eastings);
	pcEnd = ::pcRead(pcEnd, &m_northings);
	pcEnd = ::pcRead(pcEnd, &m_reset);
	return pcEnd;
}

char* MMUSBLFix::pcWrite(char* destBuffer) const
{
	char* pcEnd = ::pcWrite(destBuffer,m_fixNum);
	pcEnd = ::pcWrite(pcEnd,m_rxPitch);
	pcEnd = ::pcWrite(pcEnd,m_rxRoll);
	pcEnd = ::pcWrite(pcEnd,m_rxHeading);
	pcEnd = ::pcWrite(pcEnd,m_dcl);
	pcEnd = ::pcWrite(pcEnd,m_dcm);
	pcEnd = ::pcWrite(pcEnd,m_eastings);
	pcEnd = ::pcWrite(pcEnd,m_northings);
	pcEnd = ::pcWrite(pcEnd,m_reset);
	return pcEnd;
}

void MMUSBLFix::toString(char* str)
{
	sprintf(str,"tMMUSBLFix: fix=%d, pitch=%f, roll=%f, heading=%f, dcl=%f, "
		"dcm=%f, eastings=%f, northings=%f, reset=%d",getFixNum(),getRxPitch(),
		getRxRoll(),getRxHeading(),getDcl(),getDcm(),getEastings(),getNorthings(),
		getReset());
}

