ngscopeclient v0.2.1
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
SCPIHIDTransport Class Reference

Transport for instruments attached via USB HID. More...

#include <SCPIHIDTransport.h>

Inheritance diagram for SCPIHIDTransport:
Inheritance graph
[legend]
Collaboration diagram for SCPIHIDTransport:
Collaboration graph
[legend]

Public Member Functions

 SCPIHIDTransport (const std::string &args)
 Initialize a new HID transport.
 
virtual std::string GetConnectionString () override
 
virtual bool SendCommand (const std::string &cmd) override
 
virtual std::string ReadReply (bool endOnSemicolon=true, std::function< void(float)> progress=nullptr) override
 
virtual size_t ReadRawData (size_t len, unsigned char *buf, std::function< void(float)> progress=nullptr) override
 
virtual void SendRawData (size_t len, const unsigned char *buf) override
 
virtual bool IsCommandBatchingSupported () override
 
virtual bool IsConnected () override
 
const std::string & GetManufacturerName ()
 
const std::string & GetProductName ()
 
const std::string & GetSerialNumber ()
 
- Public Member Functions inherited from SCPITransport
virtual std::string GetName ()=0
 
virtual bool SetTimeouts (unsigned int txUs, unsigned int rxUs)
 Base implementation does nothing.
 
void SendCommandQueued (const std::string &cmd)
 Pushes a command into the transmit FIFO then returns immediately.
 
std::string SendCommandQueuedWithReply (const std::string &cmd, bool endOnSemicolon=true)
 Sends a command (flushing any pending/queued commands first), then returns the response.
 
void SendCommandImmediate (const std::string &cmd)
 Sends a command (jumping ahead of the queue) which does not require a response.
 
std::string SendCommandImmediateWithReply (const std::string &cmd, bool endOnSemicolon=true)
 Sends a command (jumping ahead of the queue), then returns the response.
 
voidSendCommandImmediateWithRawBlockReply (const std::string &cmd, size_t &len)
 Sends a command (jumping ahead of the queue) which reads a binary block response.
 
bool FlushCommandQueue ()
 Pushes all pending commands from SendCommandQueued() calls and blocks until they are all sent.
 
std::recursive_mutex & GetMutex ()
 
virtual void FlushRXBuffer (void)
 
void EnableRateLimiting (std::chrono::milliseconds interval)
 Enables rate limiting. Rate limiting is only applied to the queued command API.
 
void DeduplicateCommand (const std::string &cmd)
 Adds a command to the set of commands which may be deduplicated in the queue.
 

Static Public Member Functions

static std::string GetTransportName ()
 Returns the constant name "hid".
 
static std::vector< TransportEndpointEnumTransportEndpoints ()
 
- Static Public Member Functions inherited from SCPITransport
static void DoAddTransportClass (const std::string &name, CreateProcType proc, EnumEndpointsProcType eproc)
 
static void EnumTransports (std::vector< std::string > &names)
 
static SCPITransportCreateTransport (const std::string &transport, const std::string &args)
 
static std::vector< TransportEndpointEnumEndpoints (const std::string &transport)
 
static std::vector< TransportEndpointEnumTransportEndpoints ()
 

Protected Attributes

HID m_hid
 
std::string m_serialNumber
 
unsigned int m_vendorId
 
unsigned int m_productId
 
std::string m_manufacturerName
 
std::string m_productName
 
std::recursive_mutex m_transportMutex
 
- Protected Attributes inherited from SCPITransport
std::mutex m_queueMutex
 
std::recursive_mutex m_netMutex
 
std::list< std::string > m_txQueue
 
std::set< std::string > m_dedupCommands
 
bool m_rateLimitingEnabled
 
std::chrono::system_clock::time_point m_nextCommandReady
 
std::chrono::milliseconds m_rateLimitingInterval
 

Additional Inherited Members

- Public Types inherited from SCPITransport
typedef SCPITransport *(* CreateProcType) (const std::string &args)
 
typedef std::vector< TransportEndpoint >(* EnumEndpointsProcType) ()
 
- Protected Types inherited from SCPITransport
typedef std::map< std::string, CreateProcType > CreateMapType
 
typedef std::map< std::string, EnumEndpointsProcType > EnumEndpointsMapType
 
- Protected Member Functions inherited from SCPITransport
void RateLimitingWait ()
 Block until it's time to send the next command when rate limiting.
 
- Static Protected Attributes inherited from SCPITransport
static CreateMapType m_createprocs
 
static EnumEndpointsMapType m_enumEndpointsProcs
 

Detailed Description

Transport for instruments attached via USB HID.

Constructor & Destructor Documentation

◆ SCPIHIDTransport()

SCPIHIDTransport::SCPIHIDTransport ( const std::string &  args)

Initialize a new HID transport.

Parameters
argsArgument string, either hex vid:pid or vid:pid:serial

Member Function Documentation

◆ GetConnectionString()

string SCPIHIDTransport::GetConnectionString ( )
overridevirtual

Implements SCPITransport.

◆ IsCommandBatchingSupported()

bool SCPIHIDTransport::IsCommandBatchingSupported ( )
overridevirtual

Implements SCPITransport.

◆ IsConnected()

bool SCPIHIDTransport::IsConnected ( )
overridevirtual

Implements SCPITransport.

◆ ReadRawData()

size_t SCPIHIDTransport::ReadRawData ( size_t  len,
unsigned char buf,
std::function< void(float)>  progress = nullptr 
)
overridevirtual

Implements SCPITransport.

◆ ReadReply()

string SCPIHIDTransport::ReadReply ( bool  endOnSemicolon = true,
std::function< void(float)>  progress = nullptr 
)
overridevirtual

Implements SCPITransport.

◆ SendCommand()

bool SCPIHIDTransport::SendCommand ( const std::string &  cmd)
overridevirtual

Implements SCPITransport.

◆ SendRawData()

void SCPIHIDTransport::SendRawData ( size_t  len,
const unsigned char buf 
)
overridevirtual

Implements SCPITransport.


The documentation for this class was generated from the following files: