//=========================================================================
// Summary  :
// Filename : MMSeacat.cc
// Author   : Gil Jones
// Project  :
// Revision : 1
// Created  : 2002/06/12
// Modified : 2002/06/12
//=========================================================================
// Description :  Seacat information
//=========================================================================

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

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

MMSeacat::MMSeacat(double conductivity, double temp, double pressure, double depth,
		   double obs, double flurometer, double salinity, double soundVelocity)
{
    setCond(conductivity);
    setTemp(temp);
    setPressure(pressure);
    setDepth(depth);
    setObs(obs);
    setFlu(flurometer);
    setSal(salinity);
    setSV(soundVelocity);
}

const char* MMSeacat::pcRead(const char* sourceBuffer)
{
    const char* pcEnd = ::pcRead(sourceBuffer, &m_cond);
    pcEnd = ::pcRead(pcEnd, &m_temp);
    pcEnd = ::pcRead(pcEnd, &m_pressure);
    pcEnd = ::pcRead(pcEnd, &m_depth);
    pcEnd = ::pcRead(pcEnd, &m_obs);
    pcEnd = ::pcRead(pcEnd, &m_flu);
    pcEnd = ::pcRead(pcEnd, &m_sal);
    pcEnd = ::pcRead(pcEnd, &m_sv);
    return pcEnd;
}

char* MMSeacat::pcWrite(char* destBuffer) const
{
    char* pcEnd = ::pcWrite(destBuffer, m_cond);
    pcEnd = ::pcWrite(pcEnd, m_temp);
    pcEnd = ::pcWrite(pcEnd, m_pressure);
    pcEnd = ::pcWrite(pcEnd, m_depth);
    pcEnd = ::pcWrite(pcEnd, m_obs);
    pcEnd = ::pcWrite(pcEnd, m_flu);
    pcEnd = ::pcWrite(pcEnd, m_sal);
    pcEnd = ::pcWrite(pcEnd, m_sv);
    return pcEnd;
}    
