123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #ifndef DSI_SILABS_LIBRARY_HPP
- #define DSI_SILABS_LIBRARY_HPP
- #include "types.h"
- #include "DSI_SiUSBXp_3_1.h"
- #include <memory>
- #include <windows.h>
- struct SiLabsError
- {
- enum Enum
- {
- NONE,
- NO_LIBRARY,
- NO_FUNCTION
- };
- private: SiLabsError();
- };
- class SiLabsLibrary
- {
- public:
-
-
- static BOOL Load(std::auto_ptr<const SiLabsLibrary>& clAutoLibrary_);
-
- SiLabsLibrary();
- virtual ~SiLabsLibrary() throw();
-
- typedef SI_STATUS (WINAPI *GetNumDevices_t)(LPDWORD lpdwNumDevices);
- typedef SI_STATUS (WINAPI *GetProductString_t)(DWORD dwDeviceNum, LPVOID lpvDeviceString, DWORD dwFlags);
- typedef SI_STATUS (WINAPI *Open_t)(DWORD dwDevice, HANDLE *cyHandle);
- typedef SI_STATUS (WINAPI *Close_t)(HANDLE cyHandle);
- typedef SI_STATUS (WINAPI *Read_t)(HANDLE cyHandle, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpdwBytesReturned, OVERLAPPED *o);
- typedef SI_STATUS (WINAPI *Write_t)(HANDLE cyHandle, LPVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpdwBytesWritten, OVERLAPPED *o);
- typedef SI_STATUS (WINAPI *SetTimeouts_t)(DWORD dwReadTimeout, DWORD dwWriteTimeout);
- typedef SI_STATUS (WINAPI *GetTimeouts_t)(LPDWORD lpdwReadTimeout, LPDWORD lpdwWriteTimeout);
- typedef SI_STATUS (WINAPI *FlushBuffers_t)(HANDLE cyHandle, BYTE FlushTransmit, BYTE FlushReceive);
- typedef SI_STATUS (WINAPI *CheckRxQueue_t)(HANDLE cyHandle, LPDWORD lpdwNumBytesInQueue, LPDWORD lpdwQueueStatus);
- typedef SI_STATUS (WINAPI *SetBaudRate_t)(HANDLE cyHandle, DWORD dwBaudRate);
- typedef SI_STATUS (WINAPI *SetLineControl_t)(HANDLE cyHandle, WORD wLineControl);
- typedef SI_STATUS (WINAPI *SetFlowControl_t)(HANDLE cyHandle, BYTE bCTS_MaskCode, BYTE bRTS_MaskCode, BYTE bDTR_MaskCode, BYTE bDSR_MaskCode, BYTE bDCD_MaskCode, BOOL bFlowXonXoff);
- Open_t Open;
- GetNumDevices_t GetNumDevices;
- Close_t Close;
- Read_t Read;
- Write_t Write;
- SetTimeouts_t SetTimeouts;
- GetTimeouts_t GetTimeouts;
- FlushBuffers_t FlushBuffers;
- CheckRxQueue_t CheckRxQueue;
- SetBaudRate_t SetBaudRate;
- SetLineControl_t SetLineControl;
- SetFlowControl_t SetFlowControl;
- GetProductString_t GetProductString;
- private:
- SiLabsError::Enum LoadFunctions();
- void FreeFunctions();
- static std::auto_ptr<SiLabsLibrary> clAutoInstance;
-
-
-
- HMODULE hLibHandle;
- static BOOL bStaticSet;
-
- };
- #endif
|