#include <process.h>
#include <time.h>
#include "SimulatedBluefinBatt.h"
#include "Syslog.h"

SimulatedBluefinBatt::SimulatedBluefinBatt(const char *name, int numbatt,
					   int argc, char** argv) 
   : BluefinBatteryIF_SK()
{
  _numBatt = numbatt;
  _simulator = new SimulatorIF("simulator");
  _argv[0] = '\0';
  for (int i = 0; i < argc; i++)
  {
    strcat(_argv, argv[i]);
    strcat(_argv, " ");
  }
}

SimulatedBluefinBatt::~SimulatedBluefinBatt()
{
    if (_simulator) {
        delete _simulator;
    }

    // [klh] Original code
    // - should not delete _argv [we didn't create it]
    // - should check for NULL before delete _simulator

    // original code
//   if (_argv) delete _argv;
//	 delete _simulator;

}

short SimulatedBluefinBatt::getBatteryQuantity() { return _numBatt; }

void  SimulatedBluefinBatt::getBatteryData(short battnum,
                                        BluefinBatteryIF::BfBattData *data)
{
  if (battnum < 1 || battnum > _numBatt) return;
  
  int b = battnum - 1;

  _simulator->getSimBatteryData( &_simData );

  memcpy( data, &(_simData), sizeof( BluefinBatteryIF::BfBattData));

#if 0
  data->state = _output->data[b].state;
  data->fault = _output->data[b].fault;
  data->battSN = _output->data[b].battSN;
  data->voltage = _output->data[b].voltage;
  data->current = _output->data[b].current;
  data->temp = _output->data[b].temp;
  data->minvoltage = _output->data[b].minvoltage;
  data->maxvoltage = _output->data[b].maxvoltage;
  data->waterleak = _output->data[b].waterleak;
  data->capacity = _output->data[b].capacity;
#endif

  return;
}
 
int SimulatedBluefinBatt::spawnAuxTasks()
{
  return 0;
}

