Goby3 3.5.1
2026.06.04
Loading...
Searching...
No Matches
goby::middleware::io::PTYThreadCOBS< line_in_group, line_out_group, publish_layer, subscribe_layer, ThreadType, use_indexed_groups > Class Template Reference

Reads/Writes strings from/to serial port using a line-based (typically ASCII) protocol with a defined end-of-line regex. More...

#include <goby/middleware/io/cobs/pty.h>

Inheritance diagram for goby::middleware::io::PTYThreadCOBS< line_in_group, line_out_group, publish_layer, subscribe_layer, ThreadType, use_indexed_groups >:
goby::middleware::io::detail::PTYThread< line_in_group, line_out_group, PubSubLayer::INTERPROCESS, PubSubLayer::INTERTHREAD, goby::zeromq::SimpleThread, false > goby::middleware::io::detail::IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::PTYConfig, boost::asio::posix::stream_descriptor, goby::zeromq::SimpleThread, use_indexed_groups > goby::middleware::SimpleThread< Config, detail::InterProcessTag > goby::middleware::io::detail::IOPublishTransporter< IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::PTYConfig, boost::asio::posix::stream_descriptor, goby::zeromq::SimpleThread, use_indexed_groups >, line_in_group, publish_layer, goby::zeromq::SimpleThread< goby::middleware::protobuf::PTYConfig >::Transporter::implementation_tag, use_indexed_groups > goby::middleware::io::detail::IOSubscribeTransporter< IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::PTYConfig, boost::asio::posix::stream_descriptor, goby::zeromq::SimpleThread, use_indexed_groups >, line_out_group, subscribe_layer, goby::zeromq::SimpleThread< goby::middleware::protobuf::PTYConfig >::Transporter::implementation_tag, use_indexed_groups > goby::middleware::Thread< Config, TransporterType > goby::middleware::coroner::Thread< Derived >

Public Member Functions

 PTYThreadCOBS (const goby::middleware::protobuf::PTYConfig &config, int index=-1)
 Constructs the thread.
 ~PTYThreadCOBS ()
Public Member Functions inherited from goby::middleware::io::detail::PTYThread< line_in_group, line_out_group, PubSubLayer::INTERPROCESS, PubSubLayer::INTERTHREAD, goby::zeromq::SimpleThread, false >
 PTYThread (const goby::middleware::protobuf::PTYConfig &config, int index=-1)
 Constructs the thread.
 ~PTYThread () override
Public Member Functions inherited from goby::middleware::io::detail::IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::PTYConfig, boost::asio::posix::stream_descriptor, goby::zeromq::SimpleThread, use_indexed_groups >
 IOThread (const goby::middleware::protobuf::PTYConfig &config, int index, std::string glog_group="i/o")
 Constructs the thread.
void initialize () override
void finalize () override
virtual ~IOThread ()
Public Member Functions inherited from goby::middleware::SimpleThread< Config, detail::InterProcessTag >
 SimpleThread (const Config &cfg, double loop_freq_hertz=0, int index=-1)
 Construct a thread with a given configuration, optionally a loop frequency and/or index.
 SimpleThread (const Config &cfg, boost::units::quantity< boost::units::si::frequency > loop_freq, int index=-1)
 Construct a thread with a given configuration, a loop frequency (using boost::units) and optionally an index.
InterVehicleForwarder< InterProcessForwarder< InterThreadTransporter, detail::InterProcessTag > > & intervehicle ()
 Access the transporter on the intervehicle layer (which wraps interprocess and interthread).
InterProcessForwarder< InterThreadTransporter, detail::InterProcessTag > & interprocess ()
 Access the transporter on the interprocess layer (which wraps interthread).
InterThreadTransporterinterthread ()
 Access the transporter on the interthread layer (this is the innermost transporter).
Public Member Functions inherited from goby::middleware::Thread< Config, TransporterType >
 Thread (const Config &cfg, TransporterType *transporter, int index)
 Construct a thread with a given configuration, underlying transporter, and index (for multiple instantiations), but without any loop() frequency.
 Thread (const Config &cfg, TransporterType *transporter, double loop_freq_hertz=0, int index=-1)
 Construct a thread with all possible metadata (using double to specify frequency in Hertz).
 Thread (const Config &cfg, TransporterType *transporter, boost::units::quantity< boost::units::si::frequency > loop_freq, int index=-1)
 Construct a thread with all possible metadata (using boost::units to specify frequency).
virtual ~Thread ()
void run (std::atomic< bool > &alive)
 Run the thread until the boolean reference passed is set false. This call blocks, and should be run in a std::thread by the caller.
int index () const
std::type_index type_index ()
void set_type_index (std::type_index type_i)
std::string name ()
void set_name (const std::string &name)
int uid ()
void set_uid (int uid)
double loop_frequency_hertz () const
decltype(loop_frequency_) loop_frequency () const
void set_loop_frequency_hertz (double loop_freq_hertz)
void set_loop_frequency (boost::units::quantity< boost::units::si::frequency > loop_freq)

Friends

template<class Thread>
void cobs_async_write (Thread *this_thread, std::shared_ptr< const goby::middleware::protobuf::IOData > io_msg)
template<class Thread, class ThreadBase>
void cobs_async_read (Thread *this_thread, std::shared_ptr< ThreadBase > self=std::shared_ptr< ThreadBase >())

Additional Inherited Members

Public Types inherited from goby::middleware::Thread< Config, TransporterType >
using Transporter = TransporterType
Static Public Attributes inherited from goby::middleware::Thread< Config, TransporterType >
static constexpr goby::middleware::Group shutdown_group_ {"goby::middleware::Thread::shutdown"}
static constexpr goby::middleware::Group joinable_group_ {"goby::middleware::Thread::joinable"}
Protected Member Functions inherited from goby::middleware::io::detail::IOThread< line_in_group, line_out_group, publish_layer, subscribe_layer, goby::middleware::protobuf::PTYConfig, boost::asio::posix::stream_descriptor, goby::zeromq::SimpleThread, use_indexed_groups >
void write (std::shared_ptr< const goby::middleware::protobuf::IOData > io_msg)
void handle_read_success (std::size_t bytes_transferred, const std::string &bytes)
void handle_write_success (std::size_t bytes_transferred)
void handle_read_error (const boost::system::error_code &ec)
void handle_write_error (const boost::system::error_code &ec)
boost::asio::posix::stream_descriptor & mutable_socket ()
 Access the (mutable) socket (or serial_port) object.
boost::asio::io_contextmutable_io ()
bool socket_is_open ()
 Does the socket exist and is it open?
const std::string & glog_group ()
Protected Member Functions inherited from goby::middleware::Thread< Config, TransporterType >
 Thread (const Config &cfg, boost::units::quantity< boost::units::si::frequency > loop_freq, int index=-1)
void set_transporter (TransporterType *transporter)
double loop_max_frequency () const
void run_once ()
TransporterType & transporter () const
const Config & cfg () const
void thread_health (goby::middleware::protobuf::ThreadHealth &health)
virtual void health (goby::middleware::protobuf::ThreadHealth &health)
 Called when HealthRequest is made by goby_coroner.
void thread_quit ()
bool alive ()
Protected Member Functions inherited from goby::middleware::coroner::Thread< Derived >
void subscribe_coroner ()

Detailed Description

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
class goby::middleware::io::PTYThreadCOBS< line_in_group, line_out_group, publish_layer, subscribe_layer, ThreadType, use_indexed_groups >

Reads/Writes strings from/to serial port using a line-based (typically ASCII) protocol with a defined end-of-line regex.

Template Parameters
line_in_groupgoby::middleware::Group to publish to after receiving data from the serial port
line_out_groupgoby::middleware::Group to subcribe to for data to send to the serial port

Definition at line 72 of file pty.h.

Constructor & Destructor Documentation

◆ PTYThreadCOBS()

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
goby::middleware::io::PTYThreadCOBS< line_in_group, line_out_group, publish_layer, subscribe_layer, ThreadType, use_indexed_groups >::PTYThreadCOBS ( const goby::middleware::protobuf::PTYConfig & config,
int index = -1 )
inline

Constructs the thread.

Parameters
configA reference to the Protocol Buffers config read by the main application at launch
indexThread index for multiple instances in a given application (-1 indicates a single instance)

Definition at line 82 of file pty.h.

◆ ~PTYThreadCOBS()

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
goby::middleware::io::PTYThreadCOBS< line_in_group, line_out_group, publish_layer, subscribe_layer, ThreadType, use_indexed_groups >::~PTYThreadCOBS ( )
inline

Definition at line 87 of file pty.h.

◆ cobs_async_read

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
template<class Thread, class ThreadBase>
void cobs_async_read ( Thread * this_thread,
std::shared_ptr< ThreadBase > self = std::shared_ptr<ThreadBase>() )
friend

Definition at line 90 of file common.h.

◆ cobs_async_write

template<const goby::middleware::Group & line_in_group, const goby::middleware::Group & line_out_group, PubSubLayer publish_layer = PubSubLayer::INTERPROCESS, PubSubLayer subscribe_layer = PubSubLayer::INTERTHREAD, template< class > class ThreadType = goby::zeromq::SimpleThread, bool use_indexed_groups = false>
template<class Thread>
void cobs_async_write ( Thread * this_thread,
std::shared_ptr< const goby::middleware::protobuf::IOData > io_msg )
friend

Definition at line 44 of file common.h.


The documentation for this class was generated from the following file:
  • goby/middleware/io/cobs/pty.h