nidas v1.2.3
Public Member Functions | Private Member Functions | Private Attributes | List of all members
nidas::core::RemoteSerialConnection Class Reference

#include <RemoteSerialConnection.h>

Inheritance diagram for nidas::core::RemoteSerialConnection:
Inheritance graph
[legend]

Public Member Functions

 RemoteSerialConnection (nidas::util::Socket *sock, SensorHandler *handler)
 
 ~RemoteSerialConnection ()
 
void flush () throw ()
 Implementation of SampleClient::flush().
 
const std::string & getName () const
 
void setName (const std::string &val)
 
void close ()
 
void readSensorName ()
 
int getFd () const
 
const std::string & getSensorName () const
 
void setSensor (CharacterSensor *val)
 
DSMSensorgetDSMSensor () const
 
void sensorNotFound ()
 Notify this RemoteSerialConnection that a sensor matching getSensorName() was not found.
 
bool receive (const Sample *s) throw ()
 Receive a sample from the DSMSensor, write data portion to socket.
 
bool handlePollEvents (uint32_t events) throw ()
 An epoll event occurred, most likely it is time to read data from socket, write to DSMSensor.
 
void nlTocrnl (std::string &input)
 little utility for translating newlines to carriage-return + newlines in a string.
 
std::string doEscCmds (const std::string &inputstr)
 Parse and execute ESC commands in user input.
 

Private Member Functions

 RemoteSerialConnection (const RemoteSerialConnection &)
 Copy not needed.
 
RemoteSerialConnectionoperator= (const RemoteSerialConnection &)
 Assignment not needed.
 

Private Attributes

std::string _name
 
nidas::util::Socket_socket
 
std::string _devname
 
CharacterSensor_sensor
 
SerialSensor_serSensor
 
std::string _input
 Left over input characters after previous parse for escape sequences.
 
bool _nullTerminated
 
SensorHandler_handler
 
bool _closedWarning
 Has the user been sent a "sensor is closed" warning.
 
int _timeoutMsecs
 Sensor timeout when the RemoteSerialConnection was established.
 

Constructor & Destructor Documentation

◆ RemoteSerialConnection() [1/2]

RemoteSerialConnection::RemoteSerialConnection ( nidas::util::Socket * sock,
SensorHandler * handler )

References setName().

◆ ~RemoteSerialConnection()

RemoteSerialConnection::~RemoteSerialConnection ( )

References _socket, close(), and NLOG.

◆ RemoteSerialConnection() [2/2]

nidas::core::RemoteSerialConnection::RemoteSerialConnection ( const RemoteSerialConnection & )
private

Copy not needed.

Member Function Documentation

◆ close()

void RemoteSerialConnection::close ( )

◆ doEscCmds()

string RemoteSerialConnection::doEscCmds ( const std::string & inputstr)

Parse and execute ESC commands in user input.

Return buffer with escape sequences removed. ESC-p toggle prompting ESC-bxxxx set baud rate to xxxx (non-digit after xxxx) ESC-peven set parity to even ESC-podd set parity to odd ESC-ESC send ESC to sensor

Parameters
inputstrinput string
Returns
output string, with recognized escape sequences removed.
Exceptions
nidas::util::IOException

References _handler, _input, _sensor, _serSensor, _socket, _timeoutMsecs, nidas::core::SerialSensor::applyTermios(), nidas::core::DSMSensor::getName(), nidas::core::getSample(), nidas::core::DSMSensor::getTimeoutMsecs(), nidas::core::CharacterSensor::isPrompting(), LOG_WARNING, MSECS_PER_SEC, nidas::util::Socket::send(), nidas::util::Termios::setBaudRate(), nidas::core::DSMSensor::setTimeoutMsecs(), nidas::core::SerialSensor::termios(), nidas::core::CharacterSensor::togglePrompting(), and nidas::core::SensorHandler::updateTimeouts().

◆ flush()

void nidas::core::RemoteSerialConnection::flush ( )
throw ( )
inlinevirtual

Implementation of SampleClient::flush().

Implements nidas::core::SampleClient.

◆ getDSMSensor()

DSMSensor * nidas::core::RemoteSerialConnection::getDSMSensor ( ) const
inline

References _sensor.

◆ getFd()

int nidas::core::RemoteSerialConnection::getFd ( ) const
inlinevirtual

◆ getName()

const std::string & nidas::core::RemoteSerialConnection::getName ( ) const
inline

References _name.

Referenced by close(), and setSensor().

◆ getSensorName()

const std::string & nidas::core::RemoteSerialConnection::getSensorName ( ) const
inline

References _devname.

Referenced by sensorNotFound().

◆ handlePollEvents()

bool RemoteSerialConnection::handlePollEvents ( uint32_t events)
throw ( )
virtual

An epoll event occurred, most likely it is time to read data from socket, write to DSMSensor.

Returns
: read consumed all available data from the socket.

Implements nidas::core::Polled.

References buffer, nidas::core::getSample(), ILOG, N_POLLERR, N_POLLHUP, N_POLLIN, N_POLLNVAL, N_POLLRDHUP, and PLOG.

◆ nlTocrnl()

void RemoteSerialConnection::nlTocrnl ( std::string & input)

little utility for translating newlines to carriage-return + newlines in a string.

Parameters
inputstring of characters, altered in place.

References nidas::core::getSample().

◆ operator=()

RemoteSerialConnection & nidas::core::RemoteSerialConnection::operator= ( const RemoteSerialConnection & )
private

Assignment not needed.

◆ readSensorName()

void RemoteSerialConnection::readSensorName ( )

◆ receive()

bool RemoteSerialConnection::receive ( const Sample * s)
throw ( )
virtual

Receive a sample from the DSMSensor, write data portion to socket.

Implements nidas::core::SampleClient.

◆ sensorNotFound()

void RemoteSerialConnection::sensorNotFound ( )

◆ setName()

void nidas::core::RemoteSerialConnection::setName ( const std::string & val)
inline

◆ setSensor()

void RemoteSerialConnection::setSensor ( CharacterSensor * val)

Member Data Documentation

◆ _closedWarning

bool nidas::core::RemoteSerialConnection::_closedWarning
private

Has the user been sent a "sensor is closed" warning.

◆ _devname

std::string nidas::core::RemoteSerialConnection::_devname
private

Referenced by getSensorName(), and readSensorName().

◆ _handler

SensorHandler* nidas::core::RemoteSerialConnection::_handler
private

Referenced by close(), doEscCmds(), and setSensor().

◆ _input

std::string nidas::core::RemoteSerialConnection::_input
private

Left over input characters after previous parse for escape sequences.

Referenced by doEscCmds().

◆ _name

std::string nidas::core::RemoteSerialConnection::_name
private

Referenced by getName(), and setName().

◆ _nullTerminated

bool nidas::core::RemoteSerialConnection::_nullTerminated
private

Referenced by setSensor().

◆ _sensor

CharacterSensor* nidas::core::RemoteSerialConnection::_sensor
private

◆ _serSensor

SerialSensor* nidas::core::RemoteSerialConnection::_serSensor
private

Referenced by doEscCmds(), and setSensor().

◆ _socket

nidas::util::Socket* nidas::core::RemoteSerialConnection::_socket
private

◆ _timeoutMsecs

int nidas::core::RemoteSerialConnection::_timeoutMsecs
private

Sensor timeout when the RemoteSerialConnection was established.

Referenced by close(), doEscCmds(), and setSensor().


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