nidas v1.2.3
RemoteSerialConnection.h
Go to the documentation of this file.
1// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 4; tab-width: 4; -*-
2// vim: set shiftwidth=4 softtabstop=4 expandtab:
3/*
4 ********************************************************************
5 ** NIDAS: NCAR In-situ Data Acquistion Software
6 **
7 ** 2004, Copyright University Corporation for Atmospheric Research
8 **
9 ** This program is free software; you can redistribute it and/or modify
10 ** it under the terms of the GNU General Public License as published by
11 ** the Free Software Foundation; either version 2 of the License, or
12 ** (at your option) any later version.
13 **
14 ** This program is distributed in the hope that it will be useful,
15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ** GNU General Public License for more details.
18 **
19 ** The LICENSE.txt file accompanying this software contains
20 ** a copy of the GNU General Public License. If it is not found,
21 ** write to the Free Software Foundation, Inc.,
22 ** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 **
24 ********************************************************************
25*/
26
27#ifndef NIDAS_CORE_REMOTESERIALCONNECTION_H
28#define NIDAS_CORE_REMOTESERIALCONNECTION_H
29
30#include <nidas/util/Socket.h>
31#include "SerialSensor.h"
32#include "SampleClient.h"
34
35#include "Polled.h"
36
37namespace nidas { namespace core {
38
39class SensorHandler;
40
42{
43public:
44
46
48
52 void flush() throw() {}
53
54 const std::string& getName() const { return _name; }
55
56 void setName(const std::string& val) { _name = val; }
57
61 void close();
62
66 void readSensorName();
67
68 int getFd() const { return _socket->getFd(); }
69
70 const std::string& getSensorName() const { return _devname; }
71
75 void setSensor(CharacterSensor* val);
76
77 DSMSensor* getDSMSensor() const { return _sensor; }
78
85 void sensorNotFound();
86
90 bool receive(const Sample* s) throw();
91
97 bool handlePollEvents(uint32_t events) throw();
98
104 void nlTocrnl(std::string& input);
105
119 std::string doEscCmds(const std::string& inputstr);
120
121private:
122
123 std::string _name;
124
126
127 std::string _devname;
128
130
132
136 std::string _input;
137
139
141
146
151
154
157
158};
159
160}} // namespace nidas namespace core
161
162#endif
Implementation of support for a sensor which generates character output.
Definition CharacterSensor.h:46
DSMSensor provides the basic support for reading, processing and distributing samples from a sensor a...
Definition DSMSensor.h:88
Interface for objects with a file descriptor, providing a virtual method to be called when system cal...
Definition Polled.h:110
Definition RemoteSerialConnection.h:42
SensorHandler * _handler
Definition RemoteSerialConnection.h:140
std::string _devname
Definition RemoteSerialConnection.h:127
const std::string & getName() const
Definition RemoteSerialConnection.h:54
void setName(const std::string &val)
Definition RemoteSerialConnection.h:56
bool handlePollEvents(uint32_t events)
An epoll event occurred, most likely it is time to read data from socket, write to DSMSensor.
Definition RemoteSerialConnection.cc:358
void close()
Definition RemoteSerialConnection.cc:62
RemoteSerialConnection(const RemoteSerialConnection &)
Copy not needed.
bool receive(const Sample *s)
Receive a sample from the DSMSensor, write data portion to socket.
Definition RemoteSerialConnection.cc:187
std::string _name
Definition RemoteSerialConnection.h:123
bool _nullTerminated
Definition RemoteSerialConnection.h:138
std::string doEscCmds(const std::string &inputstr)
Parse and execute ESC commands in user input.
Definition RemoteSerialConnection.cc:219
void sensorNotFound()
Notify this RemoteSerialConnection that a sensor matching getSensorName() was not found.
Definition RemoteSerialConnection.cc:100
int _timeoutMsecs
Sensor timeout when the RemoteSerialConnection was established.
Definition RemoteSerialConnection.h:150
int getFd() const
Definition RemoteSerialConnection.h:68
RemoteSerialConnection(nidas::util::Socket *sock, SensorHandler *handler)
Definition RemoteSerialConnection.cc:42
nidas::util::Socket * _socket
Definition RemoteSerialConnection.h:125
bool _closedWarning
Has the user been sent a "sensor is closed" warning.
Definition RemoteSerialConnection.h:145
void flush()
Implementation of SampleClient::flush().
Definition RemoteSerialConnection.h:52
void readSensorName()
Definition RemoteSerialConnection.cc:85
const std::string & getSensorName() const
Definition RemoteSerialConnection.h:70
DSMSensor * getDSMSensor() const
Definition RemoteSerialConnection.h:77
RemoteSerialConnection & operator=(const RemoteSerialConnection &)
Assignment not needed.
~RemoteSerialConnection()
Definition RemoteSerialConnection.cc:51
void nlTocrnl(std::string &input)
little utility for translating newlines to carriage-return + newlines in a string.
Definition RemoteSerialConnection.cc:207
SerialSensor * _serSensor
Definition RemoteSerialConnection.h:131
CharacterSensor * _sensor
Definition RemoteSerialConnection.h:129
std::string _input
Left over input characters after previous parse for escape sequences.
Definition RemoteSerialConnection.h:136
void setSensor(CharacterSensor *val)
Definition RemoteSerialConnection.cc:111
Pure virtual interface of a client of Samples.
Definition SampleClient.h:38
Interface to a data sample.
Definition Sample.h:190
SensorHandler implements a DSMSensor event loop.
Definition SensorHandler.h:88
Support for a sensor that is sending packets on a TCP socket, a UDP socket, a Bluetooth RF Comm socke...
Definition SerialSensor.h:65
A stream (TCP) socket.
Definition Socket.h:573
int getFd() const
Fetch the file descriptor associate with this socket.
Definition Socket.h:805
Sample * getSample(sampleType type, unsigned int len)
A convienence method for getting a sample of an enumerated type from a pool.
Definition Sample.cc:70
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31