MRPT  2.0.4
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes
mrpt::hwdrivers::CNTRIPClient Class Reference

Detailed Description

A client for NTRIP (HTTP) sources of differential GPS corrections from internet servers, or Global navigation satellite system (GNSS) internet radio.

Usage:

It is not neccesary to call "close", the connection is ended at destruction.

Note
For a good reference of the NTRIP protocol, see http://gnss.itacyl.es/opencms/opencms/system/modules/es.jcyl.ita.site.gnss/resources/documentos_gnss/NtripDocumentation.pdf

Definition at line 36 of file CNTRIPClient.h.

#include <mrpt/hwdrivers/CNTRIPClient.h>

Classes

struct  NTRIPArgs
 The arguments for connecting to a NTRIP stream, used in CNTRIPClient::open. More...
 
struct  TMountPoint
 A descriptor of one stream in an NTRIP Caster - See CNTRIPClient::retrieveListOfMountpoints. More...
 

Public Types

using TListMountPoints = std::list< TMountPoint >
 Used in CNTRIPClient::retrieveListOfMountpoints. More...
 

Public Member Functions

 CNTRIPClient ()
 Default constructor. More...
 
virtual ~CNTRIPClient ()
 Default destructor. More...
 
bool open (const NTRIPArgs &params, std::string &out_errmsg)
 Tries to open a given NTRIP stream and, if successful, launches a thread for continuously reading from it. More...
 
void close ()
 Closes the connection. More...
 
void sendBackToServer (const std::string &data)
 Enqueues a string to be sent back to the NTRIP server (e.g. More...
 

Static Public Member Functions

static bool retrieveListOfMountpoints (TListMountPoints &out_list, std::string &out_errmsg, const std::string &server, int port=2101, const std::string &auth_user=std::string(), const std::string &auth_pass=std::string())
 Connect to a given NTRIP caster and get the list of all available mountpoints and their parameters. More...
 

Public Attributes

mrpt::containers::MT_buffer stream_data
 The buffer with all the bytes so-far read from the NTRIP server stream. More...
 

Protected Types

enum  TConnResult { connOk = 0, connError, connUnauthorized }
 

Protected Member Functions

void private_ntrip_thread ()
 The working thread. More...
 

Protected Attributes

std::thread m_thread
 
std::promise< void > m_sem_sock_closed
 
std::promise< void > m_sem_first_connect_done
 
bool m_thread_exit {false}
 
bool m_thread_do_process {false}
 Will be "true" between "open" and "close". More...
 
bool m_waiting_answer_connection {false}
 
TConnResult m_answer_connection {connError}
 
NTRIPArgs m_args
 All the parameters for the NTRIP connection. More...
 
mrpt::containers::MT_buffer m_upload_data
 Buffer for data to be sent back to the server. More...
 

Member Typedef Documentation

◆ TListMountPoints

Used in CNTRIPClient::retrieveListOfMountpoints.

Definition at line 74 of file CNTRIPClient.h.

Member Enumeration Documentation

◆ TConnResult

Enumerator
connOk 
connError 
connUnauthorized 

Definition at line 104 of file CNTRIPClient.h.

Constructor & Destructor Documentation

◆ CNTRIPClient()

CNTRIPClient::CNTRIPClient ( )

Default constructor.

Definition at line 32 of file CNTRIPClient.cpp.

References m_thread, and private_ntrip_thread().

Here is the call graph for this function:

◆ ~CNTRIPClient()

CNTRIPClient::~CNTRIPClient ( )
virtual

Default destructor.

Definition at line 40 of file CNTRIPClient.cpp.

References close(), m_thread, and m_thread_exit.

Here is the call graph for this function:

Member Function Documentation

◆ close()

void CNTRIPClient::close ( )

Closes the connection.

See also
open

Definition at line 53 of file CNTRIPClient.cpp.

References mrpt::containers::MT_buffer::clear(), m_sem_sock_closed, m_thread_do_process, and m_upload_data.

Referenced by open(), ~CNTRIPClient(), and mrpt::hwdrivers::CNTRIPEmitter::~CNTRIPEmitter().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ open()

bool CNTRIPClient::open ( const NTRIPArgs params,
std::string &  out_errmsg 
)

Tries to open a given NTRIP stream and, if successful, launches a thread for continuously reading from it.

See also
close, stream_data
Returns
false On any kind of error, with a description of the error in errmsg, if provided.

Definition at line 64 of file CNTRIPClient.cpp.

References close(), connError, connOk, connUnauthorized, mrpt::format(), m_answer_connection, m_args, m_sem_first_connect_done, m_thread_do_process, m_waiting_answer_connection, mrpt::hwdrivers::CNTRIPClient::NTRIPArgs::mountpoint, and params.

Referenced by mrpt::hwdrivers::CNTRIPEmitter::initialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ private_ntrip_thread()

void CNTRIPClient::private_ntrip_thread ( )
protected

◆ retrieveListOfMountpoints()

bool CNTRIPClient::retrieveListOfMountpoints ( TListMountPoints out_list,
std::string &  out_errmsg,
const std::string &  server,
int  port = 2101,
const std::string &  auth_user = std::string(),
const std::string &  auth_pass = std::string() 
)
static

Connect to a given NTRIP caster and get the list of all available mountpoints and their parameters.

Note that the authentication parameters "auth_user" and "auth_pass" will be left empty in most situations, since LISTING the Caster normally doesn't require special rights.

Example:

std::string errMsg;
bool ret =
*CNTRIPClient::retrieveListOfMountpoints(lst,errMsg,"www.euref-ip.net",
2101);
Returns
False on any error, then "errmsg" holds the reason.

Definition at line 322 of file CNTRIPClient.cpp.

References mrpt::hwdrivers::CNTRIPClient::TMountPoint::carrier, mrpt::system::TParameters< T >::clear(), mrpt::hwdrivers::CNTRIPClient::TMountPoint::country_code, mrpt::DEG2RAD(), mrpt::comms::net::erOk, mrpt::hwdrivers::CNTRIPClient::TMountPoint::extra_info, mrpt::hwdrivers::CNTRIPClient::TMountPoint::format, mrpt::hwdrivers::CNTRIPClient::TMountPoint::format_details, mrpt::comms::net::http_get(), mrpt::hwdrivers::CNTRIPClient::TMountPoint::id, mrpt::hwdrivers::CNTRIPClient::TMountPoint::latitude, mrpt::hwdrivers::CNTRIPClient::TMountPoint::longitude, mrpt::hwdrivers::CNTRIPClient::TMountPoint::mountpoint_name, mrpt::hwdrivers::CNTRIPClient::TMountPoint::nav_system, mrpt::hwdrivers::CNTRIPClient::TMountPoint::needs_nmea, mrpt::hwdrivers::CNTRIPClient::TMountPoint::net_ref_stations, mrpt::hwdrivers::CNTRIPClient::TMountPoint::network, mrpt::RAD2DEG(), mrpt::system::tokenize(), and mrpt::math::wrapToPi().

Here is the call graph for this function:

◆ sendBackToServer()

void CNTRIPClient::sendBackToServer ( const std::string &  data)

Enqueues a string to be sent back to the NTRIP server (e.g.

GGA frames)

Definition at line 380 of file CNTRIPClient.cpp.

References mrpt::containers::MT_buffer::appendData(), mrpt::opengl::internal::data, m_upload_data, and mrpt::system::os::memcpy().

Here is the call graph for this function:

Member Data Documentation

◆ m_answer_connection

TConnResult mrpt::hwdrivers::CNTRIPClient::m_answer_connection {connError}
mutableprotected

Definition at line 111 of file CNTRIPClient.h.

Referenced by open(), and private_ntrip_thread().

◆ m_args

NTRIPArgs mrpt::hwdrivers::CNTRIPClient::m_args
mutableprotected

All the parameters for the NTRIP connection.

Definition at line 113 of file CNTRIPClient.h.

Referenced by open(), and private_ntrip_thread().

◆ m_sem_first_connect_done

std::promise<void> mrpt::hwdrivers::CNTRIPClient::m_sem_first_connect_done
protected

Definition at line 97 of file CNTRIPClient.h.

Referenced by open(), and private_ntrip_thread().

◆ m_sem_sock_closed

std::promise<void> mrpt::hwdrivers::CNTRIPClient::m_sem_sock_closed
protected

Definition at line 96 of file CNTRIPClient.h.

Referenced by close(), and private_ntrip_thread().

◆ m_thread

std::thread mrpt::hwdrivers::CNTRIPClient::m_thread
protected

Definition at line 95 of file CNTRIPClient.h.

Referenced by CNTRIPClient(), and ~CNTRIPClient().

◆ m_thread_do_process

bool mrpt::hwdrivers::CNTRIPClient::m_thread_do_process {false}
mutableprotected

Will be "true" between "open" and "close".

Definition at line 101 of file CNTRIPClient.h.

Referenced by close(), open(), and private_ntrip_thread().

◆ m_thread_exit

bool mrpt::hwdrivers::CNTRIPClient::m_thread_exit {false}
mutableprotected

Definition at line 99 of file CNTRIPClient.h.

Referenced by private_ntrip_thread(), and ~CNTRIPClient().

◆ m_upload_data

mrpt::containers::MT_buffer mrpt::hwdrivers::CNTRIPClient::m_upload_data
protected

Buffer for data to be sent back to the server.

Definition at line 116 of file CNTRIPClient.h.

Referenced by close(), private_ntrip_thread(), and sendBackToServer().

◆ m_waiting_answer_connection

bool mrpt::hwdrivers::CNTRIPClient::m_waiting_answer_connection {false}
mutableprotected

Definition at line 102 of file CNTRIPClient.h.

Referenced by open(), and private_ntrip_thread().

◆ stream_data

mrpt::containers::MT_buffer mrpt::hwdrivers::CNTRIPClient::stream_data

The buffer with all the bytes so-far read from the NTRIP server stream.

Call its "readAndClear" method in a timely fashion to get the stream contents.

See also
open, close

Definition at line 143 of file CNTRIPClient.h.

Referenced by mrpt::hwdrivers::CNTRIPEmitter::doProcess(), and private_ntrip_thread().




Page generated by Doxygen 1.8.14 for MRPT 2.0.4 Git: 33de1d0ad Sat Jun 20 11:02:42 2020 +0200 at sáb jun 20 17:35:17 CEST 2020