QGIS API Documentation  2.8.2-Wien
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
23 QgsGpsdConnection::QgsGpsdConnection( QString host, qint16 port, QString device )
24  : QgsNMEAConnection( new QTcpSocket() )
25  , mDevice( device )
26 {
27  QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource );
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 
35 {
36  //connection will be closed by base class
37  QgsDebugMsg( "entered." );
38 }
39 
40 void QgsGpsdConnection::connected()
41 {
42  QgsDebugMsg( "connected!" );
43  QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource );
44  socket->write( QString( "?WATCH={\"enable\":true,\"nmea\":true,\"raw\":true%1};" ).arg( mDevice.isEmpty() ? mDevice : QString( ",\"device\":%1" ).arg( mDevice ) ).toUtf8() );
45 }
46 
47 void QgsGpsdConnection::error( QAbstractSocket::SocketError socketError )
48 {
49 #if QGISDEBUG
50  QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource );
51  QgsDebugMsg( QString( "error: %1 %2" ).arg( socketError ).arg( socket->errorString() ) );
52 #else
53  Q_UNUSED( socketError );
54 #endif
55 }