//=========================================================================
// Summary  :
// Filename : MMGps.cc
// Author   : paley
// Project  :
// Revision : 1
// Created  : 2001/06/29
// Modified : 2001/06/29
//=========================================================================
// Description :  Homing message
//=========================================================================

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

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

MMGps::MMGps(float latitude, float longitude, Boolean differential,
		int numSatellites, float hdop, int updateTime)
{
	setLatitude(latitude);
	setLongitude(longitude);
	setDifferential(differential);
	setNumSatellites(numSatellites);
	setHdop(hdop);
	setUpdateTime(updateTime);
}

const char* MMGps::pcRead(const char* sourceBuffer)
{
	const char* pcEnd = ::pcRead(sourceBuffer, &m_latitude);
	pcEnd = ::pcRead(pcEnd, &m_longitude);
	pcEnd = ::pcRead(pcEnd, &m_differential);
	pcEnd = ::pcRead(pcEnd, &m_numSatellites);
	pcEnd = ::pcRead(pcEnd, &m_hdop);
	pcEnd = ::pcRead(pcEnd, &m_updateTime);
	return pcEnd;
}

char* MMGps::pcWrite(char* destBuffer) const
{
	char* pcEnd = ::pcWrite(destBuffer,m_latitude);
	pcEnd = ::pcWrite(pcEnd,m_longitude);
	pcEnd = ::pcWrite(pcEnd,m_differential);
	pcEnd = ::pcWrite(pcEnd,m_numSatellites);
	pcEnd = ::pcWrite(pcEnd,m_hdop);
	pcEnd = ::pcWrite(pcEnd,m_updateTime);
	return pcEnd;
}

void MMGps::toString(char* str)
{
	sprintf(str,"tMMHoming: lat=%f, lon=%f, diff=%d, sats=%d, hdop=%f, time=%d",
		getLatitude(),getLongitude(),getDifferential(),getNumSatellites(),getHdop(),
		getUpdateTime());
}
