#include "orimpexpdevice_device.h"
#define ORDEVICEEXPORT__CLASS ORDEVICEEXPORT__CLASSNAME
#define ORDEVICEEXPORT__NAME ORDEVICEEXPORT__CLASSSTR
#define ORDEVICEEXPORT__LABEL "OR - Export Device"
#define ORDEVICEEXPORT__DESC "OR - Export Device Description"
#define ORDEVICEEXPORT__PREFIX "ExportDevice"
ORDEVICEEXPORT__CLASS,
ORDEVICEEXPORT__LABEL,
ORDEVICEEXPORT__DESC,
bool ORDeviceExport::FBCreate()
{
FBTime lTime;
lTime = SamplingPeriod;
mExportRate = 1.0 / lTime.GetSecondDouble();
mExportFilename = "C:\\orimpexpdevice.txt";
mFileOpen = false;
return true;
}
void ORDeviceExport::FBDestroy()
{
}
bool ORDeviceExport::DeviceOperation( kDeviceOperations pOperation )
{
switch (pOperation)
{
case kOpInit: return true;
case kOpStart: return Start();
case kOpStop: return Stop();
case kOpReset: Stop(); return Start();
case kOpDone: return false;
}
return FBDevice::DeviceOperation( pOperation );
}
bool ORDeviceExport::Start()
{
FBTime lTime;
bool lSuccess = false;
lTime.SetSecondDouble( 1.0/mExportRate );
SamplingPeriod = lTime;
if( mFileOpen )
{
fclose( mFile );
mFileOpen = false;
}
mFile = fopen( mExportFilename, "wt" );
if( mFile )
{
mFileOpen = true;
lSuccess = true;
}
return lSuccess;
}
bool ORDeviceExport::Stop()
{
if( mFileOpen )
{
fclose( mFile );
mFileOpen = false;
}
return false;
}
bool ORDeviceExport::DeviceEvaluationNotify( kTransportMode pMode,FBEvaluateInfo* pEvaluateInfo )
{
FBTime lTime;
switch( pMode )
{
case kPlay:
{
if( mFileOpen )
{
lTime = pEvaluateInfo->GetLocalTime();
fprintf( mFile, "[%s]\n", (char*)lTime.GetTimeString() );
for( i=0; i<mModels.GetCount(); i++ )
{
ExportEvaluation( mModels[i] );
}
fprintf( mFile, "\n" );
AckOneSampleReceived();
}
}
break;
}
return true;
}
void ORDeviceExport::ExportEvaluation( FBModel* pModel )
{
if( pModel )
{
fprintf( mFile, "\t%s\t(%f, %f, %f):(%f, %f, %f):(%f, %f, %f)\n",
(const char*)pModel->Name,
lTVector[0], lTVector[1], lTVector[2],
lRVector[0], lRVector[1], lRVector[2],
lSVector[0], lSVector[1], lSVector[2] );
}
}