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

Transport that moves SCPI data over a single TCP socket with no framing. More...

#include <SCPISocketTransport.h>

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

Public Member Functions

 SCPISocketTransport (const std::string &args)
 
 SCPISocketTransport (const std::string &hostname, unsigned short port)
 
virtual std::string GetConnectionString () override
 
virtual void FlushRXBuffer (void) 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 & GetHostname ()
 Returns the hostname of the connected instrument.
 
unsigned short GetPort ()
 Returns the port number of the connected instrument.
 
bool SetTimeouts (unsigned int txUs, unsigned int rxUs) override
 Sets timeouts for the connection.
 
- Public Member Functions inherited from SCPITransport
virtual std::string GetName ()=0
 
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 ()
 
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 transport name "lan".
 
- 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 Member Functions

void SharedCtorInit ()
 Helper function that actually opens the socket connection.
 
- Protected Member Functions inherited from SCPITransport
void RateLimitingWait ()
 Block until it's time to send the next command when rate limiting.
 

Protected Attributes

Socket m_socket
 The socket for commands.
 
std::string m_hostname
 IP or hostname of the instrument.
 
unsigned short m_port
 TCP port number of the instrument.
 
- 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
 
- Static Protected Attributes inherited from SCPITransport
static CreateMapType m_createprocs
 
static EnumEndpointsMapType m_enumEndpointsProcs
 

Detailed Description

Transport that moves SCPI data over a single TCP socket with no framing.

Member Function Documentation

◆ FlushRXBuffer()

void SCPISocketTransport::FlushRXBuffer ( void  )
overridevirtual

Reimplemented from SCPITransport.

◆ GetConnectionString()

string SCPISocketTransport::GetConnectionString ( )
overridevirtual

Implements SCPITransport.

◆ IsCommandBatchingSupported()

bool SCPISocketTransport::IsCommandBatchingSupported ( )
overridevirtual

Implements SCPITransport.

◆ IsConnected()

bool SCPISocketTransport::IsConnected ( )
overridevirtual

Implements SCPITransport.

◆ ReadRawData()

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

Implements SCPITransport.

◆ ReadReply()

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

Implements SCPITransport.

◆ SendCommand()

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

Implements SCPITransport.

◆ SendRawData()

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

Implements SCPITransport.

◆ SetTimeouts()

bool SCPISocketTransport::SetTimeouts ( unsigned int  txUs,
unsigned int  rxUs 
)
inlineoverridevirtual

Sets timeouts for the connection.

Returns
true if RX and TX timeouts successfully set
Parameters
txUsSend timeout, in microseconds
rxUsReceive timeout, in microseconds

Reimplemented from SCPITransport.


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