//=========================================================================
// Summary  :
// Filename : MMMultiLeica.h
// Author   : Gil Jones
// Project  :
// Revision : 1
// Created  : 2002/06/04
// Modified : 2001/06/04
//=========================================================================
// Description :  MultiLeica message
//=========================================================================

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

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

MMMultiLeica::MMMultiLeica(int mode, float roll, float pitch, float yaw,
		float rollRate, float pitchRate, float yawRate, int updateTime) :
		MMNavigationAttitude(roll,pitch,yaw,updateTime)
{
    setMultiType(mode);
    setRollRate(rollRate);
    setPitchRate(pitchRate);
    setYawRate(yawRate);
}

const char* MMMultiLeica::pcRead(const char* sourceBuffer)
{
    const char* pcEnd = ::pcRead(sourceBuffer, &m_multi);
    pcEnd = ::pcRead(pcEnd, &m_roll);
    pcEnd = ::pcRead(pcEnd, &m_pitch);
    pcEnd = ::pcRead(pcEnd, &m_yaw);
    pcEnd = ::pcRead(pcEnd, &m_rollRate);
    pcEnd = ::pcRead(pcEnd, &m_pitchRate);
    pcEnd = ::pcRead(pcEnd, &m_yawRate);
    pcEnd = ::pcRead(pcEnd, &m_updateTime);
    return pcEnd;
}

char* MMMultiLeica::pcWrite(char* destBuffer) const
{
    char* pcEnd = ::pcWrite(destBuffer, m_multi);
    pcEnd = ::pcWrite(pcEnd,m_roll);
    pcEnd = ::pcWrite(pcEnd,m_pitch);
    pcEnd = ::pcWrite(pcEnd,m_yaw);
    pcEnd = ::pcWrite(pcEnd,m_rollRate);
    pcEnd = ::pcWrite(pcEnd,m_pitchRate);
    pcEnd = ::pcWrite(pcEnd,m_yawRate);
    pcEnd = ::pcWrite(pcEnd,m_updateTime);
    return pcEnd;
}

void MMMultiLeica::toString(char* str)
{
    sprintf(str,"tMMMultiLeica: roll=%f, pitch=%f, yaw=%f, rollRate=%f, pitchRate=%f,"
	    "yawRate=%f, time=%d",getRoll(),getPitch(),getYaw(),getRollRate(),getPitchRate(),
	    getYawRate(),getUpdateTime());
}
