diff options
Diffstat (limited to 'src/plugins/position/gypsy')
7 files changed, 0 insertions, 763 deletions
diff --git a/src/plugins/position/gypsy/CMakeLists.txt b/src/plugins/position/gypsy/CMakeLists.txt deleted file mode 100644 index 1791bdcc..00000000 --- a/src/plugins/position/gypsy/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -# Generated from gypsy.pro. - -##################################################################### -## QGeoPositionInfoSourceFactoryGypsy Plugin: -##################################################################### - -qt_internal_add_plugin(QGeoPositionInfoSourceFactoryGypsyPlugin - OUTPUT_NAME qtposition_gypsy - CLASS_NAME QGeoPositionInfoSourceFactoryGypsy - PLUGIN_TYPE position - SOURCES - qgeopositioninfosourcefactory_gypsy.cpp qgeopositioninfosourcefactory_gypsy.h - qgeosatelliteinfosource_gypsy.cpp qgeosatelliteinfosource_gypsy_p.h -# special case begin - LIBRARIES - Gypsy::Gypsy - Gconf::Gconf - Qt::Core - Qt::Positioning -# special case end -) - -#### Keys ignored in scope 1:.:.:gypsy.pro:<TRUE>: -# OTHER_FILES = "plugin.json" diff --git a/src/plugins/position/gypsy/gypsy.pro b/src/plugins/position/gypsy/gypsy.pro deleted file mode 100644 index c7b74325..00000000 --- a/src/plugins/position/gypsy/gypsy.pro +++ /dev/null @@ -1,20 +0,0 @@ -TARGET = qtposition_gypsy - -QT = core positioning-private - -HEADERS += \ - qgeosatelliteinfosource_gypsy_p.h \ - qgeopositioninfosourcefactory_gypsy.h - -SOURCES += \ - qgeosatelliteinfosource_gypsy.cpp \ - qgeopositioninfosourcefactory_gypsy.cpp - -QMAKE_USE_PRIVATE += gypsy - -OTHER_FILES += \ - plugin.json - -PLUGIN_TYPE = position -PLUGIN_CLASS_NAME = QGeoPositionInfoSourceFactoryGypsy -load(qt_plugin) diff --git a/src/plugins/position/gypsy/plugin.json b/src/plugins/position/gypsy/plugin.json deleted file mode 100644 index 9cef03f8..00000000 --- a/src/plugins/position/gypsy/plugin.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Keys": ["gypsy"], - "Provider": "gypsy", - "Position": false, - "Satellite": true, - "Monitor" : false, - "Priority": 1000, - "Testable": false -} diff --git a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.cpp b/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.cpp deleted file mode 100644 index be7634cd..00000000 --- a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtPositioning module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qgeopositioninfosourcefactory_gypsy.h" -#include "qgeosatelliteinfosource_gypsy_p.h" - -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGypsy::positionInfoSource(QObject *parent, const QVariantMap ¶meters) -{ - Q_UNUSED(parent) - Q_UNUSED(parameters) - return nullptr; -} - -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGypsy::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) -{ - Q_UNUSED(parameters) - QGeoSatelliteInfoSourceGypsy *src = new QGeoSatelliteInfoSourceGypsy(parent); - if (src->init(parameters) < 0) { - delete src; - src = nullptr; - } - return src; -} - -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryGypsy::areaMonitor(QObject *parent, const QVariantMap ¶meters) -{ - Q_UNUSED(parent) - Q_UNUSED(parameters) - return nullptr; -} diff --git a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.h b/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.h deleted file mode 100644 index 495301fd..00000000 --- a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtPositioning module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QGEOPOSITIONINFOSOURCEFACTORY_GYPSY_H -#define QGEOPOSITIONINFOSOURCEFACTORY_GYPSY_H - -#include <QObject> -#include <qgeopositioninfosourcefactory.h> - -class QGeoPositionInfoSourceFactoryGypsy : public QObject, public QGeoPositionInfoSourceFactory -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" - FILE "plugin.json") - Q_INTERFACES(QGeoPositionInfoSourceFactory) - -public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; -}; - -#endif diff --git a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp deleted file mode 100644 index b7f91131..00000000 --- a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp +++ /dev/null @@ -1,442 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtPositioning module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qgeosatelliteinfosource_gypsy_p.h" - -#ifdef Q_LOCATION_GYPSY_DEBUG -#include <QDebug> -#endif -#include <QFile> -#include <QVariantMap> - -QT_BEGIN_NAMESPACE - -#define UPDATE_TIMEOUT_COLD_START 120000 - -static const auto deviceNameParameter = "deviceName"; -static const auto gconfKeyParameter = "gconfKey"; -static const auto defaultGconfKey = "/apps/geoclue/master/org.freedesktop.Geoclue.GPSDevice"; - -// Callback function for 'satellites-changed' -signal -static void satellites_changed (GypsySatellite *satellite, - GPtrArray *satellites, - gpointer userdata) -{ -#ifdef Q_LOCATION_GYPSY_DEBUG - qDebug() << "QGeoSatelliteInfoSourceGypsy Gypsy satellites-changed -signal received."; -#endif - ((QGeoSatelliteInfoSourceGypsy *)userdata)->satellitesChanged(satellite, satellites); -} - -SatelliteGypsyEngine::SatelliteGypsyEngine(QGeoSatelliteInfoSource *parent) : - m_owner(parent) -{ -} -SatelliteGypsyEngine::~SatelliteGypsyEngine() -{ -} - -// Glib symbols -gulong SatelliteGypsyEngine::eng_g_signal_connect(gpointer instance, - const gchar *detailed_signal, - GCallback c_handler, - gpointer data) -{ - return ::g_signal_connect(instance, detailed_signal, c_handler, data); -} -guint SatelliteGypsyEngine::eng_g_signal_handlers_disconnect_by_func (gpointer instance, - gpointer func, - gpointer data) -{ - return ::g_signal_handlers_disconnect_by_func(instance, func, data); -} - -void SatelliteGypsyEngine::eng_g_free(gpointer mem) -{ - return ::g_free(mem); -} -// Gypsy symbols -GypsyControl *SatelliteGypsyEngine::eng_gypsy_control_get_default (void) -{ - return ::gypsy_control_get_default(); -} -char *SatelliteGypsyEngine::eng_gypsy_control_create (GypsyControl *control, const char *device_name, GError **error) -{ - return ::gypsy_control_create(control, device_name, error); -} -GypsyDevice *SatelliteGypsyEngine::eng_gypsy_device_new (const char *object_path) -{ - return ::gypsy_device_new(object_path); -} -GypsySatellite *SatelliteGypsyEngine::eng_gypsy_satellite_new (const char *object_path) -{ - return ::gypsy_satellite_new (object_path); -} -gboolean SatelliteGypsyEngine::eng_gypsy_device_start (GypsyDevice *device, GError **error) -{ - return ::gypsy_device_start(device, error); -} -gboolean SatelliteGypsyEngine::eng_gypsy_device_stop (GypsyDevice *device, GError **error) -{ - // Unfortunately this cannot be done; calling this will stop the GPS device - // (basically makes gypsy-daemon unusable for anyone), regardless of applications - // using it (see bug http://bugs.meego.com/show_bug.cgi?id=11707). - Q_UNUSED(device); - Q_UNUSED(error); - return true; - //return ::gypsy_device_stop (device, error); -} -GypsyDeviceFixStatus SatelliteGypsyEngine::eng_gypsy_device_get_fix_status (GypsyDevice *device, GError **error) -{ - return ::gypsy_device_get_fix_status (device, error); -} -GPtrArray *SatelliteGypsyEngine::eng_gypsy_satellite_get_satellites (GypsySatellite *satellite, GError **error) -{ - return ::gypsy_satellite_get_satellites (satellite, error); -} -void SatelliteGypsyEngine::eng_gypsy_satellite_free_satellite_array (GPtrArray *satellites) -{ - return ::gypsy_satellite_free_satellite_array(satellites); -} -// GConf symbols (mockability due to X11 requirement) -GConfClient *SatelliteGypsyEngine::eng_gconf_client_get_default(void) -{ - return ::gconf_client_get_default(); -} -gchar *SatelliteGypsyEngine::eng_gconf_client_get_string(GConfClient *client, const gchar *key, GError** err) -{ - return ::gconf_client_get_string(client, key, err); -} - -QGeoSatelliteInfoSourceGypsy::QGeoSatelliteInfoSourceGypsy(QObject *parent) - : QGeoSatelliteInfoSource(parent), m_engine(0), m_satellite(0), m_device(0), - m_requestTimer(this), m_updatesOngoing(false), m_requestOngoing(false) -{ - m_requestTimer.setSingleShot(true); - QObject::connect(&m_requestTimer, SIGNAL(timeout()), this, SLOT(requestUpdateTimeout())); -} - -void QGeoSatelliteInfoSourceGypsy::createEngine() -{ - delete m_engine; - m_engine = new SatelliteGypsyEngine(this); -} - -QGeoSatelliteInfoSourceGypsy::~QGeoSatelliteInfoSourceGypsy() -{ - GError *error = NULL; - if (m_device) { - m_engine->eng_gypsy_device_stop (m_device, &error); - g_object_unref(m_device); - } - if (m_satellite) - g_object_unref(m_satellite); - if (m_control) - g_object_unref(m_control); - if (error) - g_error_free(error); - delete m_engine; -} - -static QGeoSatelliteInfo::SatelliteSystem idToSystem(int prn) -{ - if (prn >= 1 && prn <= 32) - return QGeoSatelliteInfo::GPS; - else if (prn >= 65 && prn <= 96) - return QGeoSatelliteInfo::GLONASS; - else if (prn >= 193 && prn <= 200) - return QGeoSatelliteInfo::QZSS; - else if ((prn >= 201 && prn <= 235) || (prn >= 401 && prn <= 437)) - return QGeoSatelliteInfo::BEIDOU; - else if (prn >= 301 && prn <= 336) - return QGeoSatelliteInfo::GALILEO; - return QGeoSatelliteInfo::Undefined; -} - -void QGeoSatelliteInfoSourceGypsy::satellitesChanged(GypsySatellite *satellite, - GPtrArray *satellites) -{ - if (!satellite || !satellites) - return; - // We have satellite data and assume it is valid. - // If a single updateRequest was active, send signals right away. - // If a periodic timer was running (meaning that the client wishes - // to have updates at defined intervals), store the data for later sending. - QList<QGeoSatelliteInfo> lastSatellitesInView; - QList<QGeoSatelliteInfo> lastSatellitesInUse; - - unsigned int i; - for (i = 0; i < satellites->len; i++) { - GypsySatelliteDetails *details = (GypsySatelliteDetails *)satellites->pdata[i]; - QGeoSatelliteInfo info; - info.setSatelliteIdentifier(details->satellite_id); - info.setSatelliteSystem(idToSystem(details->satellite_id)); - info.setAttribute(QGeoSatelliteInfo::Elevation, details->elevation); - info.setAttribute(QGeoSatelliteInfo::Azimuth, details->azimuth); - info.setSignalStrength(details->snr); - if (details->in_use) - lastSatellitesInUse.append(info); - lastSatellitesInView.append(info); - } - bool sendUpdates(false); - // If a single updateRequest() has been issued: - if (m_requestOngoing) { - sendUpdates = true; - m_requestTimer.stop(); - m_requestOngoing = false; - // If there is no regular updates ongoing, disconnect now. - if (!m_updatesOngoing) { - m_engine->eng_g_signal_handlers_disconnect_by_func(G_OBJECT(m_satellite), (void *)satellites_changed, this); - } - } - // If regular updates are to be delivered as they come: - if (m_updatesOngoing) - sendUpdates = true; - - if (sendUpdates) { - emit satellitesInUseUpdated(lastSatellitesInUse); - emit satellitesInViewUpdated(lastSatellitesInView); - } -} - -QString QGeoSatelliteInfoSourceGypsy::extractDeviceNameFromParameters(const QVariantMap ¶meters) const -{ - // The logic is as follows: - // 1. If the deviceNameParameter is specified, its value is used to get the - // device name. - // 2. If the gconfKeyParameter is specified, its value is used as a key to - // extract the device name from GConf. - // 3. If nothing is specified, defaultGconfKey is used as a key to extract - // the device name from GConf. - if (parameters.contains(deviceNameParameter)) - return parameters.value(deviceNameParameter).toString(); - - QString gconfKey = parameters.value(gconfKeyParameter).toString(); - if (gconfKey.isEmpty()) - gconfKey = defaultGconfKey; - - if (!m_engine) - return QString(); - - GConfClient *client = m_engine->eng_gconf_client_get_default(); - if (!client) - return QString(); - - gchar *device_name = m_engine->eng_gconf_client_get_string(client, - gconfKey.toLatin1().constData(), - nullptr); - g_object_unref(client); - - const QString deviceName = QString::fromLatin1(device_name); - m_engine->eng_g_free(device_name); - - return deviceName; -} - -int QGeoSatelliteInfoSourceGypsy::init(const QVariantMap parameters) -{ - GError *error = NULL; - char *path; - -#if !GLIB_CHECK_VERSION(2, 36, 0) - g_type_init (); // this function was deprecated in glib 2.36 -#endif - createEngine(); - - const QString deviceName = extractDeviceNameFromParameters(parameters); - - if (deviceName.isEmpty() || - (deviceName.trimmed().at(0) == '/' && !QFile::exists(deviceName.trimmed()))) { - qWarning ("QGeoSatelliteInfoSourceGypsy Empty/nonexistent GPS device name detected."); - qWarning("Use '%s' plugin parameter to specify device name directly", deviceNameParameter); - qWarning("or use '%s' plugin parameter to specify a GConf key to extract the device name.", - gconfKeyParameter); - qWarning ("If the GConf key is used, the gconftool-2 tool can be used to set device name " - "for the selected key, e.g. on terminal:"); - qWarning ("gconftool-2 -t string -s %s /dev/ttyUSB0", gconfKeyParameter); - return -1; - } - m_control = m_engine->eng_gypsy_control_get_default(); - if (!m_control) { - qWarning("QGeoSatelliteInfoSourceGypsy unable to create Gypsy control."); - return -1; - } - // (path is the DBus path) - path = m_engine->eng_gypsy_control_create(m_control, deviceName.toLatin1().constData(), &error); - if (!path) { - qWarning ("QGeoSatelliteInfoSourceGypsy error creating client."); - if (error) { - qWarning ("error message: %s", error->message); - g_error_free (error); - } - return -1; - } - m_device = m_engine->eng_gypsy_device_new (path); - m_satellite = m_engine->eng_gypsy_satellite_new (path); - m_engine->eng_g_free(path); - if (!m_device || !m_satellite) { - qWarning ("QGeoSatelliteInfoSourceGypsy error creating satellite device."); - qWarning ("Please check that the GPS device is specified correctly."); - qWarning("Use '%s' plugin parameter to specify device name directly", deviceNameParameter); - qWarning("or use '%s' plugin parameter to specify a GConf key to extract the device name.", - gconfKeyParameter); - qWarning ("If the GConf key is used, the gconftool-2 tool can be used to set device name " - "for the selected key, e.g. on terminal:"); - qWarning ("gconftool-2 -t string -s %s /dev/ttyUSB0", gconfKeyParameter); - if (m_device) - g_object_unref(m_device); - if (m_satellite) - g_object_unref(m_satellite); - return -1; - } - m_engine->eng_gypsy_device_start (m_device, &error); - if (error) { - qWarning ("QGeoSatelliteInfoSourceGypsy error starting device: %s ", - error->message); - g_error_free(error); - g_object_unref(m_device); - g_object_unref(m_satellite); - return -1; - } - return 0; -} - -int QGeoSatelliteInfoSourceGypsy::minimumUpdateInterval() const -{ - return 1; -} - -QGeoSatelliteInfoSource::Error QGeoSatelliteInfoSourceGypsy::error() const -{ - return m_error; -} - -void QGeoSatelliteInfoSourceGypsy::startUpdates() -{ - if (m_updatesOngoing) - return; - - m_error = QGeoSatelliteInfoSource::NoError; - - // If there is a request timer ongoing, we've connected to the signal already - if (!m_requestTimer.isActive()) { - m_engine->eng_g_signal_connect (m_satellite, "satellites-changed", - G_CALLBACK (satellites_changed), this); - } - m_updatesOngoing = true; -} - -void QGeoSatelliteInfoSourceGypsy::stopUpdates() -{ - if (!m_updatesOngoing) - return; - m_updatesOngoing = false; - // Disconnect only if there is no single update request ongoing. Once single update request - // is completed and it notices that there is no active update ongoing, it will disconnect - // the signal. - if (!m_requestTimer.isActive()) - m_engine->eng_g_signal_handlers_disconnect_by_func(G_OBJECT(m_satellite), (void *)satellites_changed, this); -} - -void QGeoSatelliteInfoSourceGypsy::requestUpdate(int timeout) -{ - if (m_requestOngoing) - return; - - m_error = QGeoSatelliteInfoSource::NoError; - - if (timeout < 0) { - setError(QGeoSatelliteInfoSource::UpdateTimeoutError); - return; - } - m_requestOngoing = true; - GError *error = 0; - // If GPS has a fix a already, request current data. - GypsyDeviceFixStatus fixStatus = m_engine->eng_gypsy_device_get_fix_status(m_device, &error); - if (!error && (fixStatus != GYPSY_DEVICE_FIX_STATUS_INVALID && - fixStatus != GYPSY_DEVICE_FIX_STATUS_NONE)) { -#ifdef Q_LOCATION_GYPSY_DEBUG - qDebug() << "QGeoSatelliteInfoSourceGypsy fix available, requesting current satellite data"; -#endif - GPtrArray *satelliteData = m_engine->eng_gypsy_satellite_get_satellites(m_satellite, &error); - if (!error) { - // The fix was available and we have satellite data to deliver right away. - satellitesChanged(m_satellite, satelliteData); - m_engine->eng_gypsy_satellite_free_satellite_array(satelliteData); - return; - } - } - // No fix is available. If updates are not ongoing already, start them. - m_requestTimer.setInterval(timeout == 0? UPDATE_TIMEOUT_COLD_START: timeout); - if (!m_updatesOngoing) { - m_engine->eng_g_signal_connect (m_satellite, "satellites-changed", - G_CALLBACK (satellites_changed), this); - } - m_requestTimer.start(); - if (error) { -#ifdef Q_LOCATION_GYPSY_DEBUG - qDebug() << "QGeoSatelliteInfoSourceGypsy error asking fix status or satellite data: " << error->message; -#endif - g_error_free(error); - } -} - -void QGeoSatelliteInfoSourceGypsy::requestUpdateTimeout() -{ -#ifdef Q_LOCATION_GYPSY_DEBUG - qDebug("QGeoSatelliteInfoSourceGypsy request update timeout occurred."); -#endif - // If we end up here, there has not been valid satellite update. - // Emit timeout and disconnect from signal if regular updates are not - // ongoing (as we were listening just for one single requestUpdate). - if (!m_updatesOngoing) { - m_engine->eng_g_signal_handlers_disconnect_by_func(G_OBJECT(m_satellite), (void *)satellites_changed, this); - } - m_requestOngoing = false; - setError(QGeoSatelliteInfoSource::UpdateTimeoutError); -} - -void QGeoSatelliteInfoSourceGypsy::setError(QGeoSatelliteInfoSource::Error error) -{ - m_error = error; - if (m_error != QGeoSatelliteInfoSource::NoError) - emit QGeoSatelliteInfoSource::errorOccurred(m_error); -} - -QT_END_NAMESPACE diff --git a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h deleted file mode 100644 index c9d1de71..00000000 --- a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtPositioning module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QGEOSATELLITEINFOSOURCE_GYPSY_H -#define QGEOSATELLITEINFOSOURCE_GYPSY_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qgeosatelliteinfosource.h" -#include "qgeosatelliteinfo.h" -#include <gypsy/gypsy-satellite.h> -#include <gypsy/gypsy-control.h> -#include <gypsy/gypsy-device.h> -#include <gconf/gconf-client.h> -#include <QTimer> - -// #define Q_LOCATION_GYPSY_DEBUG - -QT_BEGIN_NAMESPACE - -// An engine that encapsulates all symbols we want -// to be able to mock (for unit/autotest purposes). -class SatelliteGypsyEngine -{ -public: - SatelliteGypsyEngine(QGeoSatelliteInfoSource *parent = 0); - virtual ~SatelliteGypsyEngine(); - // Glib symbols - virtual gulong eng_g_signal_connect(gpointer instance, - const gchar *detailed_signal, - GCallback c_handler, - gpointer data); - virtual guint eng_g_signal_handlers_disconnect_by_func(gpointer instance, - gpointer func, - gpointer data); - virtual void eng_g_free(gpointer mem); - // Gypsy symbols - virtual GypsyControl *eng_gypsy_control_get_default (void); - virtual char *eng_gypsy_control_create (GypsyControl *control, const char *device_name, GError **error); - virtual GypsyDevice *eng_gypsy_device_new (const char *object_path); - virtual GypsySatellite *eng_gypsy_satellite_new (const char *object_path); - virtual gboolean eng_gypsy_device_start (GypsyDevice *device, GError **error); - virtual gboolean eng_gypsy_device_stop (GypsyDevice *device, GError **error); - virtual GypsyDeviceFixStatus eng_gypsy_device_get_fix_status (GypsyDevice *device, GError **error); - virtual GPtrArray *eng_gypsy_satellite_get_satellites (GypsySatellite *satellite, GError **error); - virtual void eng_gypsy_satellite_free_satellite_array (GPtrArray *satellites); - // GConf symbols (mockability due to X11 requirement) - virtual GConfClient *eng_gconf_client_get_default(void); - virtual gchar *eng_gconf_client_get_string(GConfClient *client, const gchar *key, GError** err); -protected: - QGeoSatelliteInfoSource *m_owner; -}; - -class QGeoSatelliteInfoSourceGypsy : public QGeoSatelliteInfoSource - { - Q_OBJECT - -public: - explicit QGeoSatelliteInfoSourceGypsy(QObject *parent = 0); - ~QGeoSatelliteInfoSourceGypsy(); - int init(const QVariantMap parameters); - - int minimumUpdateInterval() const override; - Error error() const override; - -public slots: - virtual void startUpdates() override; - void stopUpdates() override; - void requestUpdate(int timeout = 5000) override; - void satellitesChanged(GypsySatellite *satellite, GPtrArray *satellites); - -private slots: - void requestUpdateTimeout(); - -private: - void setError(QGeoSatelliteInfoSource::Error error); - QString extractDeviceNameFromParameters(const QVariantMap ¶meters) const; - -protected: - // Creates an engine which encapsulates all used symbols - // that we want to be also able to mock. - virtual void createEngine(); - SatelliteGypsyEngine *m_engine; - -private: - Q_DISABLE_COPY(QGeoSatelliteInfoSourceGypsy) - GypsySatellite *m_satellite; - GypsyDevice *m_device; - QTimer m_requestTimer; - bool m_updatesOngoing; - bool m_requestOngoing; - QGeoSatelliteInfoSource::Error m_error = QGeoSatelliteInfoSource::NoError; - GypsyControl *m_control = nullptr; - }; - -QT_END_NAMESPACE - -#endif // QGEOSATELLITEINFOSOURCE_GYPSY_H |