Visioscan Set SDK Libraries 1.0.14
Visioscan Set SDK Help documentation file for C++ and C++/CLI
 
Loading...
Searching...
No Matches
UsbCommunication.h
1#pragma once
2
3#pragma comment(lib, "Ws2_32.lib")
4#include "BaseCommunication.h"
5#include "UsbSettings.h"
6
7#include <thread>
8#include "UsbInformation.h"
9
10#ifdef STARFLEETTOOLBOX_EXPORTS
11#define USBCOMM __declspec(dllexport)
12#else
13#define USBCOMM __declspec(dllimport)
14#endif
15
19typedef struct UsbDevice {
20 struct libusb_transfer* transfer;
21 struct libusb_device_handle* device_handle;
22 unsigned char input_endpoint;
23 struct libusb_context* usbContext;
24
25 BaseDataExtractor* extractor; // a pointer to the communication extractor
26 HANDLE dataAvailableSemaphore; // semaphore to warn that Command ACK is available
27 HANDLE rawDataAvailableSemaphore; // semaphore to warn that RAW Data are available
28 HANDLE semReadyToConsume; // synchronisation for data consumed
29 string commandResult; // the command result
30 bool treat = false; // indicates if data treater is in treatment
31 vector<string> localVector; // temporary local vector
32 RawData extractedData; // the extracted raw data
33 bool interruptTransfer = true; // indicates a transfert interruption
34};
35
39class USBCOMM UsbCommunication :
40 public BaseCommunication
41{
42public:
43 const int COMMAND_ACK_TIMEOUT = 5000;
44 const int MAX_SIZE_TO_READ = 40000;
45
50
55
60
64 void Connect();
65
69 void Disconnect();
70
71
77 string SendCommand(string commandToSend);
78
79
86 RawData WaitForRawData(int waitTimeout, unsigned long* semStatus);
87
93 static vector<UsbInformation> GetDeviceList();
94protected:
99 int GetCommunicationStatus();
100
104 void Connect(bool forceMonitoring);
105private:
106 bool _stopHandle = false;
107 UsbDevice usbDevice;
108 thread _usbReceiveData;
109
110 HANDLE _mutexSendAvailable; // prevent the socket to be used from another process to send data
111
116 void UsbEventDataReceiverBusiness(void* param);
117
123 static void __stdcall callbackUSBReadTransferComplete(struct libusb_transfer* xfr);
124};
125
The base class encapsulating sensor's RAW data.
Definition RawData.h:14
A structure definition to handle USB callback event.
Definition UsbCommunication.h:19
BaseDataExtractor * extractor
Definition UsbCommunication.h:25
string commandResult
Definition UsbCommunication.h:29
struct libusb_transfer * transfer
Definition UsbCommunication.h:20
RawData extractedData
Definition UsbCommunication.h:32
HANDLE dataAvailableSemaphore
Definition UsbCommunication.h:26
struct libusb_device_handle * device_handle
Definition UsbCommunication.h:21
bool treat
Definition UsbCommunication.h:30
bool interruptTransfer
Definition UsbCommunication.h:33
vector< string > localVector
Definition UsbCommunication.h:31
HANDLE semReadyToConsume
Definition UsbCommunication.h:28
unsigned char input_endpoint
Definition UsbCommunication.h:22
struct libusb_context * usbContext
Definition UsbCommunication.h:23
HANDLE rawDataAvailableSemaphore
Definition UsbCommunication.h:27
This class handles the USB communication.
Definition UsbCommunication.h:41
The USB settings encapsulation for USB communication.
Definition UsbSettings.h:18