#include "IbcMicroSampler.h"

IbcMicroSampler::IbcMicroSampler(const char *name, IbcApp *app)
  : MicroSampler(name, app)
{
  MBool debug = TRUE;
  dprintf("IbcMicroSampler::IbcMicroSampler()\n");
  
  _app = app;

  // DEBUG DEBUG DEBUG - address error follows this
//  taskSuspend(0);
  
}


IbcMicroSampler::~IbcMicroSampler()
{
}


void IbcMicroSampler::startSampling()
{
  MBool debug = FALSE;
  
  dprintf("IbcMicroSampler::startSampling() - "
	  "MicroSampler::startSampling()\n");
  
  MicroSampler::startSampling();
    
  IbcCard *card;
  
  for (int i = 0; i < _app->ibc->cards.size(); i++)
  {
    _app->ibc->cards.get(i, (void **)&card);

    dprintf("IbcMicroSampler::startSampling() - startSampling() card %s\n",
	    card->name());
    
    card->startSampling();
    addCallback(card->sampleInterval(), 
		(MicroSampler::CallbackMethod )
		&IbcMicroSampler::ibcCardsCallback);
  }    
}
  

void IbcMicroSampler::ibcCardsCallback()
{
  for (int i = 0; i < _app->ibc->cards.size(); i++)
  {
    IbcCard *card;
    _app->ibc->cards.get(i, (void **)&card);
    if (card->sampleMicro() != OK)
    {
      logMsg("IbcMicroSampler::ibcCardsCallback() - error from card %s\n",
	     card->name());
    }
  }
}
