#include "CtdTelemetry.h"
#include "Math.h"

static const int CtdTelemetry::ConductivityFieldWidth = 7;
static const int CtdTelemetry::TemperatureFieldWidth = 4;
static const int CtdTelemetry::DepthFieldWidth = 4;

CtdTelemetry::CtdTelemetry(int maxPacketBytes)
  : AcousticTelemetry(maxPacketBytes),
    _integerData("int")
{
  addField(ConductivityFieldWidth);
  addField(TemperatureFieldWidth);
  addField(DepthFieldWidth);
}


CtdTelemetry::~CtdTelemetry()
{
}


void CtdTelemetry::encode()
{
  // Encode conductivity, in thousandths of a ???
  _integerData.setValue((int )(data.conductivity) * 1000);
  set(&_integerData);

  // Encode temperature, in hundredths of a degree
  _integerData.setValue((int )(data.temperature * 100));
  set(&_integerData);

  // Depth in meters
  _integerData.setValue((int )(data.depth + 0.5));
  set(&_integerData);
}


void CtdTelemetry::decode()
{
  get(&_integerData);
  data.conductivity = _integerData.value() / 1000.;

  get(&_integerData);
  data.temperature = _integerData.value() / 100.;

  get(&_integerData);
  data.depth = _integerData.value();
}
