int main(int argc, char* argv[])
{
  SignalScalerComponent mod("test");
  mod.registerPorts();

  map<string, int> iTypes,oTypes;
  iTypes["input1"] = TypeInfo< complex<float> >::identifier;
  mod.calculateOutputTypes(iTypes,oTypes);

  DataBufferTrivial< complex<float> > in;
  DataBufferTrivial< complex<float> > out;

  DataSet< complex<float> >* iSet = NULL;
  int num = 1000000;
  in.getWriteData(iSet, num);
  for(int i=0;i<num;i++)
    iSet->data[i] = complex<float>(i,i);
  in.releaseWriteData(iSet);

  mod.setBuffers(&in,&out);
  mod.initialize();

  bp::ptime t1(bp::microsec_clock::local_time());
  mod.process();
  bp::ptime t2(bp::microsec_clock::local_time());

  bp::time_duration time = t2-t1;
  float megSampsPerSec = 1.0e9/time.total_nanoseconds();
  cout << "Rate = " << megSampsPerSec << " MS/sec" << endl;
}
int main(int argc, char* argv[])
{
  OfdmModulatorComponent mod("test");
  mod.registerPorts();

  map<string, int> iTypes,oTypes;
  iTypes["input1"] = TypeInfo< uint8_t >::identifier;
  mod.calculateOutputTypes(iTypes,oTypes);

  DataBufferTrivial<uint8_t> in;
  DataBufferTrivial< complex<float> > out;

  // Create enough data for "numFrames" full frames
  int numFrames = 100;
  int numBytes = numFrames*32*24; // #dataSymbols * #bytesPerSymbol
  DataSet<uint8_t>* iSet = NULL;
  in.getWriteData(iSet, numBytes);
  for(int i=0;i<numBytes;i++)
    iSet->data[i] = i%255;
  in.releaseWriteData(iSet);

  mod.setBuffers(&in,&out);
  mod.initialize();

  bp::ptime t1(bp::microsec_clock::local_time());
  mod.process();
  bp::ptime t2(bp::microsec_clock::local_time());

  bp::time_duration time = t2-t1;
  float megBytesPerSec = (numBytes/1.0e6)*(1.0e9/time.total_nanoseconds());
  cout << "Rate = " << megBytesPerSec << " MB/sec" << endl;
}
int main(int argc, char* argv[])
{
  typedef complex<float>    Cplx;
  typedef vector<Cplx>      CplxVec;
  typedef CplxVec::iterator CplxVecIt;

  OfdmDemodulatorComponent mod("test");
  mod.setValue("numdatacarriers", 40);
  mod.setValue("numpilotcarriers", 8);
  mod.setValue("numguardcarriers", 15);
  mod.setValue("cyclicprefixlength", 8);
  mod.registerPorts();

  map<string, int> iTypes,oTypes;
  iTypes["input1"] = TypeInfo< Cplx >::identifier;
  mod.calculateOutputTypes(iTypes,oTypes);

  DataBufferTrivial< Cplx > in;
  DataBufferTrivial< uint8_t > out;

  // Create enough data for "numFrames" full frames
  int numFrames = 10000;
  int frameSize = OfdmDemodulatorBenchmarkData::testFrame1.size();
  DataSet< Cplx >* iSet = NULL;
  in.getWriteData(iSet, frameSize*numFrames);
  CplxVecIt it = iSet->data.begin();
  for(int i=0;i<numFrames;i++,it+=frameSize)
  {
    copy(OfdmDemodulatorBenchmarkData::testFrame1.begin(),
         OfdmDemodulatorBenchmarkData::testFrame1.end(),
         it);
  }
  in.releaseWriteData(iSet);

  mod.setBuffers(&in,&out);
  mod.initialize();

  bp::ptime t1(bp::microsec_clock::local_time());
  mod.process();
  bp::ptime t2(bp::microsec_clock::local_time());

  bp::time_duration time = t2-t1;
  float megSampsPerSec = (numFrames*frameSize/1.0e6)*(1.0e9/time.total_nanoseconds());
  cout << "Rate = " << megSampsPerSec << " MS/sec" << endl;
}