61 lines
1.7 KiB
C++
61 lines
1.7 KiB
C++
/**
|
|
@file ConnectionManager.h
|
|
@author Lime Microsystems (www.limemicro.com)
|
|
@brief Class for managing connection to devices
|
|
*/
|
|
|
|
#ifndef LMS_CONNECTION_MANAGER_H
|
|
#define LMS_CONNECTION_MANAGER_H
|
|
|
|
#include "IConnection.h"
|
|
#include <map>
|
|
|
|
class ConnectionManager
|
|
{
|
|
public:
|
|
struct DeviceInfo
|
|
{
|
|
std::string name;
|
|
IConnection::eConnectionType port;
|
|
int portIndex;
|
|
};
|
|
|
|
ConnectionManager(const IConnection::eConnectionType port_type);
|
|
~ConnectionManager();
|
|
bool IsOpen();
|
|
bool Open();
|
|
int Open(unsigned i);
|
|
void Close();
|
|
int RefreshDeviceList();
|
|
int GetOpenedIndex();
|
|
std::vector<std::string> GetDeviceList(){return mDeviceList;};
|
|
|
|
int Write(const unsigned char *buffer, int length, int timeout_ms = 0);
|
|
int Read(unsigned char *buffer, int length, int timeout_ms = 0);
|
|
|
|
int WriteStream(const char *buffer, int length);
|
|
int ReadStream(char *buffer, int length, unsigned int timeout_ms);
|
|
|
|
int BeginDataReading(char *buffer, long length);
|
|
int WaitForReading(int contextHandle, unsigned int timeout_ms);
|
|
int FinishDataReading(char *buffer, long &length, int contextHandle);
|
|
void AbortReading();
|
|
|
|
int BeginDataSending(const char *buffer, long length);
|
|
int WaitForSending(int contextHandle, unsigned int timeout_ms);
|
|
int FinishDataSending(const char *buffer, long &length, int contextHandle);
|
|
void AbortSending();
|
|
|
|
protected:
|
|
bool mLogData;
|
|
/// Port used for communication.
|
|
IConnection *activeControlPort;
|
|
std::vector<DeviceInfo> mDevices;
|
|
std::vector<std::string> mDeviceList;
|
|
int mOpenedDevice;
|
|
std::map<IConnection::eConnectionType, IConnection*> m_connections;
|
|
};
|
|
|
|
#endif // LMS_CONNECTION_MANAGER_H
|
|
|