#include "CtdIF.h" 

#include "../Updater.hh"

struct CtdData {
  float _conductivity;
  float _temperature;
  float _salinity;
};
  

class CtdUpdater 
  :public AbstractUpdater<CtdIF, CtdData> {
public:
  CtdUpdater() {}
  ~CtdUpdater() {}
  
private:
  bool isDataReady(data_type const &d) const {
    return true;
  }

  bool update(device_type &dev, data_type &data);
  void initDB(ValDB &db, data_type const &data);
}; // CtdUpdater

DevDeclare<CtdUpdater> ctd_decl("CTD");

bool CtdUpdater::update(CtdUpdater::device_type &dev,
			CtdUpdater::data_type &data) {
  float freq;
  TimeIF::TimeSpec date;

  return (DeviceIF::Ok==dev.conductivity(&(data._conductivity), &freq, &date))
    && (DeviceIF::Ok==dev.temperature(&(data._temperature), &freq, &date))
    && (DeviceIF::Ok==dev.salinity(&(data._salinity)));
}

void CtdUpdater::initDB(ValDB &db, CtdUpdater::data_type const &data) {
  addEntry(db, "conductivity", &(data._conductivity));
  addEntry(db, "temperature", &(data._temperature));
  addEntry(db, "salinity", &(data._salinity));
}
