#ifndef __ORDEVICE_OPTICAL_HARDWARE_H__
#define __ORDEVICE_OPTICAL_HARDWARE_H__
#define MAX_MARKER 100
#include "opticaldevicetester/DeviceBuffer.h"
class ORDeviceOptical_Template_Hardware
{
public:
ORDeviceOptical_Template_Hardware();
~ORDeviceOptical_Template_Hardware();
bool Open();
bool Close();
bool GetSetupInfo();
bool StartDataStream();
bool StopDataStream();
void ResetPacketTimeOffset(FBTime &pTime);
bool FetchDataPacket(FBTime &pTime);
void SetNetworkUse(bool pUse) { mNetworkUse = pUse; }
bool GetNetworkUse() { return mNetworkUse; }
void SetNetworkAddress (const char *pIPAddress){ mNetworkAddress = pIPAddress; }
const char* GetNetworkAddress () { return mNetworkAddress; }
void SetNetworkPort (int pPort) { mNetworkPort = pPort; }
int GetNetworkPort () { return mNetworkPort; }
const char* GetMarkerName (int pMarkerIndex) { return mMarkerName[pMarkerIndex]; }
int GetMarkerCount () { return mMarkerCount; }
double GetDataX (int pMarker) { return mDataBuffer.mMarkerData[pMarker][0]; }
double GetDataY (int pMarker) { return mDataBuffer.mMarkerData[pMarker][1]; }
double GetDataZ (int pMarker) { return mDataBuffer.mMarkerData[pMarker][2]; }
double GetDataO (int pMarker) { return mDataBuffer.mMarkerData[pMarker][3]; }
private:
FBString mMarkerName[MAX_MARKER];
sDataBuffer mDataBuffer;
int mMarkerCount;
nsTime mPacketTimeOffset;
FBTime mStartRecordingTime;
FBTime mLastSimulationTime;
int mPassCount;
bool mNetworkUse;
FBString mNetworkAddress;
int mNetworkPort;
FBSystem mSystem;
int mSocket;
FBTCPIP mTCP;
};
#endif