#ifndef __ORDEVICE_TEMPLATE_HARDWARE_H__
#define __ORDEVICE_TEMPLATE_HARDWARE_H__
#define MAX_BUFFER_SIZE 2048
#define MAX_DATA_SIZE 12
#define MAX_INFO_SIZE 4
#define MAX_REQUEST_SIZE 4
#define BYTE_HEADER 0x3c
#define BYTE_INFO_PACKET 0x49
#define BYTE_DATA_PACKET 0x44
#define BYTE_STREAM_START 0x41
#define BYTE_STREAM_STOP 0x42
#define BYTE_TRAILER 0x3e
enum ORReadState
{
eORReadStateHeader,
eORReadStateType,
eORReadStateData,
eORReadStateCRC,
eORReadStateTrailer
};
class ORDevice_Template;
class ORDevice_Template_Hardware
{
public:
ORDevice_Template_Hardware();
~ORDevice_Template_Hardware();
void SetParent(FBDevice* pParent);
bool Open();
bool Close();
int FetchData ();
bool PollData ();
void SetStreaming (bool pStreaming) { mStreaming = pStreaming; }
bool GetStreaming () { return mStreaming; }
int GetCommunicationType();
void SetNetworkAddress (const char* pIPAddress){ mNetworkAddress = pIPAddress; }
const char* GetNetworkAddress () { return mNetworkAddress; }
void SetNetworkPort (int pPort) { mNetworkPort = pPort; }
int GetNetworkPort () { return mNetworkPort; }
void SetSerialPort (int pPort) { mSerialPort = pPort; }
int GetSerialPort () { return mSerialPort; }
void SetSerialBaudRate (int pRate) { mSerialBaudRate = pRate; }
int GetSerialBaudRate () { return mSerialBaudRate; }
bool GetSetupInfo ();
bool StartStream ();
bool StopStream ();
void GetPosition ( double* pPos );
void GetRotation ( double* pRot );
bool WriteData (
unsigned char* pBuffer,
int pSize,
int* pNumberOfBytesWritten=
NULL );
bool ReadData (
unsigned char* pBuffer,
int pSize,
int* pNumberOfBytesRead=
NULL );
void EmptyBuffer ();
void SetFrequency ( double pFrequency ) { mFrequency = pFrequency; }
double GetFrequency () { return mFrequency; }
void SetAmplitude ( double pAmplitude ) { mAmplitude = pAmplitude; }
double GetAmplitude () { return mAmplitude; }
private:
FBSystem mSystem;
FBDevice* mParent;
ORReadState mReadState;
unsigned char mBuffer [ MAX_BUFFER_SIZE ];
unsigned char mData [ MAX_DATA_SIZE ];
unsigned char mRequest[ MAX_REQUEST_SIZE ];
int mDataCount;
FBCommPort mCommPort;
FBTCPIP mTCPIP;
int mNetworkSocket;
FBString mNetworkAddress;
int mNetworkPort;
int mSerialPort;
int mSerialBaudRate;
bool mStreaming;
double mPosition[3];
double mRotation[3];
double mFrequency;
double mAmplitude;
};
#endif