QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgsgpsdconnection.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsgpsdconnection.cpp - description
3 ---------------------
4 begin : October 4th, 2010
5 copyright : (C) 2010 by Jürgen E. Fischer, norBIT GmbH
6 email : jef at norbit dot de
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "qgsgpsdconnection.h"
19#include "qgslogger.h"
20
21#include <QTcpSocket>
22
23QgsGpsdConnection::QgsGpsdConnection( const QString &host, qint16 port, const QString &device )
24 : QgsNmeaConnection( new QTcpSocket() )
25 , mDevice( device )
26{
27 QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource.get() );
28
29 QObject::connect( socket, SIGNAL( connected() ), this, SLOT( connected() ) );
30 QObject::connect( socket, SIGNAL( error( QAbstractSocket::SocketError ) ), this, SLOT( error( QAbstractSocket::SocketError ) ) );
31 socket->connectToHost( host, port );
32}
33
34void QgsGpsdConnection::connected()
35{
36 QgsDebugMsgLevel( QStringLiteral( "connected!" ), 2 );
37 QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource.get() );
38 socket->write( QStringLiteral( "?WATCH={\"enable\":true,\"nmea\":true,\"raw\":true%1};" ).arg( mDevice.isEmpty() ? mDevice : QStringLiteral( ",\"device\":%1" ).arg( mDevice ) ).toUtf8() );
39}
40
41void QgsGpsdConnection::error( QAbstractSocket::SocketError socketError )
42{
43#ifdef QGISDEBUG
44 QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource.get() );
45 QgsDebugMsg( QStringLiteral( "error: %1 %2" ).arg( socketError ).arg( socket->errorString() ) );
46#else
47 Q_UNUSED( socketError )
48#endif
49}
std::unique_ptr< QIODevice > mSource
Data source (e.g. serial device, socket, file,...)
QgsGpsdConnection(const QString &host, qint16 port, const QString &device)
Evaluates NMEA sentences coming from a GPS device.
#define QgsDebugMsgLevel(str, level)
Definition: qgslogger.h:39
#define QgsDebugMsg(str)
Definition: qgslogger.h:38