#include "SharedData.h"
#include "time.h"

/*
CLASS 
BluefinBattOutput

DESCRIPTION
SharedData interface for BluefinBatt data

AUTHOR
Rich Henthorn
*/

#define BluefinBattOutputName "BluefinBattOutput"

class BluefinBattOutput : public SharedData {

public:
  //battery states
  enum BattState {Unknown, Off, Discharging, Charging, Balancing};
  enum FaultCode {Clear, OverVolt, UnderVolt, OverCurrent,
	MaxCellOverVolt, MinCell, OverTemp, WaterLeak, HardwareProt,
	HardwareTransient, Watchdog);

  struct Data {
    timespec sampleTime;
    enum BattState state;
    enum FaultCode fault;
    int   battSN;
    float voltage;
    float current;
    float temp;
    float minvoltage;
    float maxvoltage;
    int   waterleak;
    float capacity;
  };

  BluefinBattOutput(int num_batts,
		    Access access = NoAccess,
		    Boolean init = False);

  ~BluefinBattOutput();

  ////////////////////////////////////////////////////////////////////
  // Read output command from shared memory
  void read();


  ////////////////////////////////////////////////////////////////////
  // Write output command to shared memory
  void write();

  Data *data;

 private:
  int _num_batts;
};


