[-]
[+]
|
Changed |
_service:tar_git:geoclue-provider-hybris.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:geoclue-providers-hybris.spec
^
|
|
[-]
[+]
|
Deleted |
_service:tar_git:geoclue-provider-hybris-0.2.17.tar.gz/geoclue-providers-hybris.pro
^
|
@@ -1,54 +0,0 @@
-TARGET = geoclue-hybris
-CONFIG += console
-CONFIG -= app_bundle
-TEMPLATE = app
-
-target.path = /usr/libexec
-
-QT = core dbus network
-
-CONFIG += link_pkgconfig
-PKGCONFIG += libhardware android-headers connman-qt5 qofono-qt5 qofonoext systemsettings
-
-LIBS += -lrt
-
-dbus_geoclue.files = \
- org.freedesktop.Geoclue.xml \
- org.freedesktop.Geoclue.Position.xml \
- org.freedesktop.Geoclue.Velocity.xml \
- org.freedesktop.Geoclue.Satellite.xml
-dbus_geoclue.header_flags = "-l HybrisProvider -i hybrisprovider.h"
-dbus_geoclue.source_flags = "-l HybrisProvider"
-
-DBUS_ADAPTORS = \
- dbus_geoclue
-
-DBUS_INTERFACES = \
- com.jollamobile.Connectiond.xml \
- com.jolla.lipstick.ConnectionSelector.xml
-
-session_dbus_service.files = org.freedesktop.Geoclue.Providers.Hybris.service
-session_dbus_service.path = /usr/share/dbus-1/services
-
-system_dbus_conf.files = com.jollamobile.gps.conf
-system_dbus_conf.path = /etc/dbus-1/system.d
-
-geoclue_provider.files = geoclue-hybris.provider
-geoclue_provider.path = /usr/share/geoclue-providers
-
-HEADERS += \
- hybrisprovider.h \
- locationtypes.h
-
-SOURCES += \
- main.cpp \
- hybrisprovider.cpp
-
-OTHER_FILES = \
- $${session_dbus_service.files} \
- $${system_dbus_service.files} \
- $${system_dbus_conf.files} \
- $${geoclue_provider.files} \
- rpm/geoclue-providers-hybris.spec
-
-INSTALLS += target session_dbus_service system_dbus_conf geoclue_provider
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/binder/binderlocationbackend.cpp
^
|
@@ -0,0 +1,1158 @@
+/*
+ Copyright (C) 2015 Jolla Ltd.
+ Copyright (C) 2018 Matti Lehtimäki <matti.lehtimaki@gmail.com>
+ Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
+
+ This file is part of geoclue-hybris.
+
+ Geoclue-hybris is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License.
+*/
+
+#include "binderlocationbackend.h"
+
+#include "hybrisprovider.h"
+
+#include <QtNetwork/QHostAddress>
+
+#include <strings.h>
+#include <sys/time.h>
+
+#define GNSS_BINDER_DEFAULT_DEV "/dev/hwbinder"
+
+HybrisLocationBackend *getLocationBackend()
+{
+ return qobject_cast<HybrisLocationBackend *>(new BinderLocationBackend());
+}
+
+enum GnssFunctions {
+ GNSS_SET_CALLBACK = 1,
+ GNSS_START = 2,
+ GNSS_STOP = 3,
+ GNSS_CLEANUP = 4,
+ GNSS_INJECT_TIME = 5,
+ GNSS_INJECT_LOCATION = 6,
+ GNSS_DELETE_AIDING_DATA = 7,
+ GNSS_SET_POSITION_MODE = 8,
+ GNSS_GET_EXTENSION_AGNSS_RIL = 9,
+ GNSS_GET_EXTENSION_GNSS_GEOFENCING = 10,
+ GNSS_GET_EXTENSION_AGNSS = 11,
+ GNSS_GET_EXTENSION_GNSS_NI = 12,
+ GNSS_GET_EXTENSION_GNSS_MEASUREMENT = 13,
+ GNSS_GET_EXTENSION_GNSS_NAVIGATION_MESSAGE = 14,
+ GNSS_GET_EXTENSION_XTRA = 15,
+ GNSS_GET_EXTENSION_GNSS_CONFIGURATION = 16,
+ GNSS_GET_EXTENSION_GNSS_DEBUG = 17,
+ GNSS_GET_EXTENSION_GNSS_BATCHING = 18
+};
+
+enum GnssCallbacks {
+ GNSS_LOCATION_CB = 1,
+ GNSS_STATUS_CB = 2,
+ GNSS_SV_STATUS_CB = 3,
+ GNSS_NMEA_CB = 4,
+ GNSS_SET_CAPABILITIES_CB = 5,
+ GNSS_ACQUIRE_WAKELOCK_CB = 6,
+ GNSS_RELEASE_WAKELOCK_CB = 7,
+ GNSS_REQUEST_TIME_CB = 8,
+ GNSS_SET_SYSTEM_INFO_CB = 9
+};
+
+enum GnssDebudFunctions {
+ GNSS_DEBUG_GET_DEBUG_DATA = 1
+};
+
+enum GnssNiFunctions {
+ GNSS_NI_SET_CALLBACK = 1,
+ GNSS_NI_RESPOND = 2
+};
+
+enum GnssNiCallbacks {
+ GNSS_NI_NOTIFY_CB = 1
+};
+
+enum GnssXtraFunctions {
+ GNSS_XTRA_SET_CALLBACK = 1,
+ GNSS_XTRA_INJECT_XTRA_DATA = 2
+};
+
+enum GnssXtraCallbacks {
+ GNSS_XTRA_DOWNLOAD_REQUEST_CB = 1
+};
+
+enum AGnssFunctions {
+ AGNSS_SET_CALLBACK = 1,
+ AGNSS_DATA_CONN_CLOSED = 2,
+ AGNSS_DATA_CONN_FAILED = 3,
+ AGNSS_SET_SERVER = 4,
+ AGNSS_DATA_CONN_OPEN = 5
+};
+
+enum AGnssCallbacks {
+ AGNSS_STATUS_IP_V4_CB = 1,
+ AGNSS_STATUS_IP_V6_CB = 2
+};
+
+enum AGnssRilFunctions {
+ AGNSS_RIL_SET_CALLBACK = 1,
+ AGNSS_RIL_SET_REF_LOCATION = 2,
+ AGNSS_RIL_SET_ID = 3,
+ AGNSS_RIL_UPDATE_NETWORK_STATE = 4,
+ AGNSS_RIL_UPDATE_NETWORK_AVAILABILITY = 5
+};
+
+enum AGnssRilCallbacks {
+ AGNSS_RIL_REQUEST_REF_ID_CB = 1,
+ AGNSS_RIL_REQUEST_REF_LOC_CB = 2
+};
+
+enum HybrisApnIpTypeEnum {
+ HYBRIS_APN_IP_INVALID = 0,
+ HYBRIS_APN_IP_IPV4 = 1,
+ HYBRIS_APN_IP_IPV6 = 2,
+ HYBRIS_APN_IP_IPV4V6 = 3
+};
+
+#define GNSS_IFACE(x) "android.hardware.gnss@1.0::" x
+#define GNSS_REMOTE GNSS_IFACE("IGnss")
+#define GNSS_CALLBACK GNSS_IFACE("IGnssCallback")
+#define GNSS_DEBUG_REMOTE GNSS_IFACE("IGnssDebug")
+#define GNSS_NI_REMOTE GNSS_IFACE("IGnssNi")
+#define GNSS_NI_CALLBACK GNSS_IFACE("IGnssNiCallback")
+#define GNSS_XTRA_REMOTE GNSS_IFACE("IGnssXtra")
+#define GNSS_XTRA_CALLBACK GNSS_IFACE("IGnssXtraCallback")
+#define AGNSS_REMOTE GNSS_IFACE("IAGnss")
+#define AGNSS_CALLBACK GNSS_IFACE("IAGnssCallback")
+#define AGNSS_RIL_REMOTE GNSS_IFACE("IAGnssRil")
+#define AGNSS_RIL_CALLBACK GNSS_IFACE("IAGnssRilCallback")
+
+
+/*==========================================================================*
+ * Implementation
+ *==========================================================================*/
+
+HybrisApnIpType fromContextProtocol(const QString &protocol)
+{
+ if (protocol == QLatin1String("ip"))
+ return HYBRIS_APN_IP_IPV4;
+ else if (protocol == QLatin1String("ipv6"))
+ return HYBRIS_APN_IP_IPV6;
+ else if (protocol == QLatin1String("dual"))
+ return HYBRIS_APN_IP_IPV4V6;
+ else
+ return HYBRIS_APN_IP_INVALID;
+}
+
+static const void *geoclue_binder_gnss_decode_struct1(
+ GBinderReader *in,
+ guint size)
+{
+ const void *result = Q_NULLPTR;
+ GBinderBuffer *buf = gbinder_reader_read_buffer(in);
+
+ if (buf && buf->size == size) {
+ result = buf->data;
+ }
+ gbinder_buffer_free(buf);
+ return result;
+}
+
+#define geoclue_binder_gnss_decode_struct(type,in) \
+ ((const type*)geoclue_binder_gnss_decode_struct1(in, sizeof(type)))
+
+bool nmeaChecksumValid(const QByteArray &nmea)
+{
+ unsigned char checksum = 0;
+ for (int i = 1; i < nmea.length(); ++i) {
+ if (nmea.at(i) == '*') {
+ if (nmea.length() < i+3)
+ return false;
+
+ checksum ^= nmea.mid(i+1, 2).toInt(0, 16);
+
+ break;
+ }
+
+ checksum ^= nmea.at(i);
+ }
+
+ return checksum == 0;
+}
+
+void parseRmc(const QByteArray &nmea)
+{
+ QList<QByteArray> fields = nmea.split(',');
+ if (fields.count() < 12)
+ return;
+
+ bool ok;
+ double variation = fields.at(10).toDouble(&ok);
+ if (ok) {
+ if (fields.at(11) == "W")
+ variation = -variation;
+
+ QMetaObject::invokeMethod(staticProvider, "setMagneticVariation", Qt::QueuedConnection,
+ Q_ARG(double, variation));
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/binder/binderlocationbackend.h
^
|
@@ -0,0 +1,105 @@
+/*
+ Copyright (C) 2015 Jolla Ltd.
+ Copyright (C) 2018 Matti Lehtimäki <matti.lehtimaki@gmail.com>
+ Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
+
+ This file is part of geoclue-hybris.
+
+ Geoclue-hybris is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License.
+*/
+
+#ifndef BINDERLOCATIONBACKEND_H
+#define BINDERLOCATIONBACKEND_H
+
+#include "hybrislocationbackend.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QStringList>
+#include <QtCore/QBasicTimer>
+#include <QtCore/QQueue>
+#include <QtDBus/QDBusContext>
+#include <QtNetwork/QNetworkReply>
+
+#include <gbinder.h>
+#include <locationsettings.h>
+
+#include "gnss-binder-types.h"
+#include "locationtypes.h"
+
+class BinderLocationBackend : public HybrisLocationBackend
+{
+ Q_OBJECT
+public:
+ BinderLocationBackend(QObject *parent = 0);
+ ~BinderLocationBackend();
+
+ void dropGnss();
+
+ // Gnss
+ bool gnssInit();
+ bool gnssStart();
+ bool gnssStop();
+ void gnssCleanup();
+ bool gnssInjectTime(HybrisGnssUtcTime timeMs, int64_t timeReferenceMs, int32_t uncertaintyMs);
+ bool gnssInjectLocation(double latitudeDegrees, double longitudeDegrees, float accuracyMeters);
+ void gnssDeleteAidingData(HybrisGnssAidingData aidingDataFlags);
+ bool gnssSetPositionMode(HybrisGnssPositionMode mode, HybrisGnssPositionRecurrence recurrence,
+ uint32_t minIntervalMs, uint32_t preferredAccuracyMeters,
+ uint32_t preferredTimeMs);
+
+ // GnssDebug
+ void gnssDebugInit();
+
+ // GnnNi
+ void gnssNiInit();
+ void gnssNiRespond(int32_t notifId, HybrisGnssUserResponseType userResponse);
+
+ // GnssXtra
+ void gnssXtraInit();
+ bool gnssXtraInjectXtraData(QByteArray &xtraData);
+
+ // AGnss
+ void aGnssInit();
+ bool aGnssDataConnClosed();
+ bool aGnssDataConnFailed();
+ bool aGnssDataConnOpen(const QByteArray &apn, const QString &protocol);
+
+ // AGnssRil
+ void aGnssRilInit();
+
+private:
+ bool isReplySuccess(GBinderRemoteReply *reply);
+ GBinderRemoteObject *getExtensionObject(GBinderRemoteReply *reply);
+
+ gulong m_death_id;
+ char *m_fqname;
+ GBinderServiceManager *m_sm;
+
+ GBinderClient *m_clientGnss;
+ GBinderRemoteObject *m_remoteGnss;
+ GBinderLocalObject *m_callbackGnss;
+
+ GBinderClient *m_clientGnssDebug;
+ GBinderRemoteObject *m_remoteGnssDebug;
+
+ GBinderClient *m_clientGnssNi;
+ GBinderRemoteObject *m_remoteGnssNi;
+ GBinderLocalObject *m_callbackGnssNi;
+
+ GBinderClient *m_clientGnssXtra;
+ GBinderRemoteObject *m_remoteGnssXtra;
+ GBinderLocalObject *m_callbackGnssXtra;
+
+ GBinderClient *m_clientAGnss;
+ GBinderRemoteObject *m_remoteAGnss;
+ GBinderLocalObject *m_callbackAGnss;
+
+ GBinderClient *m_clientAGnssRil;
+ GBinderRemoteObject *m_remoteAGnssRil;
+ GBinderLocalObject *m_callbackAGnssRil;
+};
+
+#endif // BINDERLOCATIONBACKEND_H
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/binder/binderlocationbackend.pro
^
|
@@ -0,0 +1,9 @@
+include($$PWD/../geoclue-providers-hybris.pri)
+
+HEADERS += \
+ binderlocationbackend.h
+
+SOURCES += \
+ binderlocationbackend.cpp
+
+PKGCONFIG += libgbinder libglibutil gobject-2.0 glib-2.0
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/binder/gnss-binder-types.h
^
|
@@ -0,0 +1,154 @@
+/*
+ Copyright (C) 2015 Jolla Ltd.
+ Copyright (C) 2018 Matti Lehtimäki <matti.lehtimaki@gmail.com>
+ Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
+
+ This file is part of geoclue-hybris.
+
+ Geoclue-hybris is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License.
+*/
+
+#ifndef GNSS_BINDER_TYPES_H
+#define GNSS_BINDER_TYPES_H
+
+#include <gutil_types.h>
+
+#define ALIGNED(x) __attribute__ ((aligned(x)))
+
+typedef struct hidl_string {
+ union {
+ guint64 value;
+ const char *str;
+ } data;
+ guint32 len;
+ guint8 owns_buffer;
+} ALIGNED(4) HidlString;
+
+typedef struct hidl_vector {
+ union {
+ guint64 value;
+ const void *ptr;
+ } data;
+ guint32 count;
+ guint8 owns_buffer;
+} ALIGNED(4) HidlVector;
+
+template<typename T, size_t SIZE1>
+struct HidlArray {
+ T data[SIZE1];
+};
+
+typedef struct geoclue_binder_gnss GeoclueBinderGnss;
+
+typedef enum gnss_max {
+ SVS_COUNT = 64u,
+} GnssMax;
+
+typedef int64_t GnssUtcTime;
+
+enum class GnssConstellationType : guint8 {
+ UNKNOWN = 0,
+ GPS = 1,
+ SBAS = 2,
+ GLONASS = 3,
+ QZSS = 4,
+ BEIDOU = 5,
+ GALILEO = 6,
+};
+
+enum class GnssLocationFlags : guint16 {
+ HAS_LAT_LONG = 1, // 0x0001
+ HAS_ALTITUDE = 2, // 0x0002
+ HAS_SPEED = 4, // 0x0004
+ HAS_BEARING = 8, // 0x0008
+ HAS_HORIZONTAL_ACCURACY = 16, // 0x0010
+ HAS_VERTICAL_ACCURACY = 32, // 0x0020
+ HAS_SPEED_ACCURACY = 64, // 0x0040
+ HAS_BEARING_ACCURACY = 128, // 0x0080
+};
+
+enum {
+ HYBRIS_GNSS_SV_FLAGS_NONE = 0,
+ HYBRIS_GNSS_SV_FLAGS_HAS_EPHEMERIS_DATA = 1, //(1 << 0)
+ HYBRIS_GNSS_SV_FLAGS_HAS_ALMANAC_DATA = 2, //(1 << 1)
+ HYBRIS_GNSS_SV_FLAGS_USED_IN_FIX = 4, //(1 << 2)
+ HYBRIS_GNSS_SV_FLAGS_HAS_CARRIER_FREQUENCY = 8, //(1 << 3)
+};
+
+typedef struct gnss_location {
+ guint16 gnssLocationFlags ALIGNED(2);
+ gdouble latitudeDegrees ALIGNED(8);
+ gdouble longitudeDegrees ALIGNED(8);
+ gdouble altitudeMeters ALIGNED(8);
+ gfloat speedMetersPerSec ALIGNED(4);
+ gfloat bearingDegrees ALIGNED(4);
+ gfloat horizontalAccuracyMeters ALIGNED(4);
+ gfloat verticalAccuracyMeters ALIGNED(4);
+ gfloat speedAccuracyMetersPerSecond ALIGNED(4);
+ gfloat bearingAccuracyDegrees ALIGNED(4);
+ gint64 timestamp ALIGNED(8);
+} ALIGNED(8) GnssLocation;
+
+G_STATIC_ASSERT(sizeof(GnssLocation) == 64);
+
+typedef struct gnss_sv_info {
+ gint16 svid ALIGNED(2);
+ GnssConstellationType constellation ALIGNED(1);
+ gfloat cN0Dbhz ALIGNED(4);
+ gfloat elevationDegrees ALIGNED(4);
+ gfloat azimuthDegrees ALIGNED(4);
+ gfloat carrierFrequencyHz ALIGNED(4);
+ guint8 svFlag ALIGNED(1);
+} ALIGNED(4) GnssSvInfo;
+
+G_STATIC_ASSERT(sizeof(GnssSvInfo) == 24);
+
+typedef struct gnss_sv_status {
+ gint32 numSvs ALIGNED(4);
+ HidlArray<GnssSvInfo, 64> gnssSvList ALIGNED(4);
+} ALIGNED(4) GnssSvStatus;
+
+G_STATIC_ASSERT(sizeof(GnssSvStatus) == 1540);
+
+typedef uint8_t AGnssType;
+typedef uint8_t AGnssStatusValue;
+
+enum {
+ HYBRIS_GNSS_STATUS_NONE = 0,
+ HYBRIS_GNSS_STATUS_SESSION_BEGIN = 1,
+ HYBRIS_GNSS_STATUS_SESSION_END = 2,
+ HYBRIS_GNSS_STATUS_ENGINE_ON = 3,
+ HYBRIS_GNSS_STATUS_ENGINE_OFF = 4,
+};
+
+enum {
+ HYBRIS_GNSS_LOCATION_HAS_LAT_LONG = 1, // 0x0001
+ HYBRIS_GNSS_LOCATION_HAS_ALTITUDE = 2, // 0x0002
+ HYBRIS_GNSS_LOCATION_HAS_SPEED = 4, // 0x0004
+ HYBRIS_GNSS_LOCATION_HAS_BEARING = 8, // 0x0008
+ HYBRIS_GNSS_LOCATION_HAS_HORIZONTAL_ACCURACY = 16, // 0x0010
+ HYBRIS_GNSS_LOCATION_HAS_VERTICAL_ACCURACY = 32, // 0x0020
+ HYBRIS_GNSS_LOCATION_HAS_SPEED_ACCURACY = 64, // 0x0040
+ HYBRIS_GNSS_LOCATION_HAS_BEARING_ACCURACY = 128, // 0x0080
+};
+
+typedef struct agnss_status_ip_v4 {
+ AGnssType type ALIGNED(1);
+ AGnssStatusValue status ALIGNED(1);
+ gint32 ipV4Addr ALIGNED(4);
+} ALIGNED(4) AGnssStatusIpV4;
+
+G_STATIC_ASSERT(sizeof(AGnssStatusIpV4) == 8);
+
+typedef struct agnss_status_ip_v6 {
+ AGnssType type ALIGNED(1);
+ AGnssStatusValue status ALIGNED(1);
+ HidlArray<uint8_t, 16> ipV6Addr ALIGNED(1);
+} ALIGNED(1) AGnssStatusIpV6;
+
+G_STATIC_ASSERT(sizeof(AGnssStatusIpV6) == 18);
+
+#endif // GNSS_BINDER_TYPES_H
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/geoclue-providers-hybris.pri
^
|
@@ -0,0 +1,55 @@
+TARGET = geoclue-hybris
+CONFIG += console
+CONFIG -= app_bundle
+TEMPLATE = app
+
+target.path = /usr/libexec
+
+QT = core dbus network
+
+CONFIG += link_pkgconfig
+PKGCONFIG += connman-qt5 qofono-qt5 qofonoext systemsettings
+
+LIBS += -lrt
+
+dbus_geoclue.files = \
+ org.freedesktop.Geoclue.xml \
+ org.freedesktop.Geoclue.Position.xml \
+ org.freedesktop.Geoclue.Velocity.xml \
+ org.freedesktop.Geoclue.Satellite.xml
+dbus_geoclue.header_flags = "-l HybrisProvider -i hybrisprovider.h"
+dbus_geoclue.source_flags = "-l HybrisProvider"
+
+DBUS_ADAPTORS = \
+ dbus_geoclue
+
+DBUS_INTERFACES = \
+ com.jollamobile.Connectiond.xml \
+ com.jolla.lipstick.ConnectionSelector.xml
+
+session_dbus_service.files = org.freedesktop.Geoclue.Providers.Hybris.service
+session_dbus_service.path = /usr/share/dbus-1/services
+
+system_dbus_conf.files = com.jollamobile.gps.conf
+system_dbus_conf.path = /etc/dbus-1/system.d
+
+geoclue_provider.files = geoclue-hybris.provider
+geoclue_provider.path = /usr/share/geoclue-providers
+
+HEADERS += \
+ hybrislocationbackend.h \
+ hybrisprovider.h \
+ locationtypes.h
+
+SOURCES += \
+ main.cpp \
+ hybrisprovider.cpp
+
+OTHER_FILES = \
+ $${session_dbus_service.files} \
+ $${system_dbus_service.files} \
+ $${system_dbus_conf.files} \
+ $${geoclue_provider.files} \
+ rpm/geoclue-providers-hybris.spec
+
+INSTALLS += target session_dbus_service system_dbus_conf geoclue_provider
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/hal/hallocationbackend.cpp
^
|
@@ -0,0 +1,625 @@
+/*
+ Copyright (C) 2015 Jolla Ltd.
+ Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
+
+ This file is part of geoclue-hybris.
+
+ Geoclue-hybris is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License.
+*/
+
+#include "hallocationbackend.h"
+
+#include "hybrisprovider.h"
+
+#include <QtNetwork/QHostAddress>
+
+#include <android-config.h>
+
+#include <strings.h>
+#include <sys/time.h>
+
+// Define versions of the Android GPS interface supported.
+#if ANDROID_VERSION_MAJOR >= 7
+ #define GEOCLUE_ANDROID_GPS_INTERFACE 3
+#elif ANDROID_VERSION_MAJOR >= 5
+ #define GEOCLUE_ANDROID_GPS_INTERFACE 2
+#elif ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR >= 2
+ #define GEOCLUE_ANDROID_GPS_INTERFACE 1
+#else
+ // By default expects Android 4.1
+#endif
+
+HybrisLocationBackend *getLocationBackend()
+{
+ return qobject_cast<HybrisLocationBackend *>(new HalLocationBackend());
+}
+
+namespace
+{
+
+const double KnotsToMps = 0.514444;
+
+void locationCallback(GpsLocation *location)
+{
+ Location loc;
+
+ loc.setTimestamp(location->timestamp);
+
+ if (location->flags & GPS_LOCATION_HAS_LAT_LONG) {
+ loc.setLatitude(location->latitude);
+ loc.setLongitude(location->longitude);
+ }
+
+ if (location->flags & GPS_LOCATION_HAS_ALTITUDE)
+ loc.setAltitude(location->altitude);
+
+ if (location->flags & GPS_LOCATION_HAS_SPEED)
+ loc.setSpeed(location->speed / KnotsToMps);
+
+ if (location->flags & GPS_LOCATION_HAS_BEARING)
+ loc.setDirection(location->bearing);
+
+ if (location->flags & GPS_LOCATION_HAS_ACCURACY) {
+ Accuracy accuracy;
+ accuracy.setHorizontal(location->accuracy);
+ accuracy.setVertical(location->accuracy);
+ loc.setAccuracy(accuracy);
+ }
+
+ QMetaObject::invokeMethod(staticProvider, "setLocation", Qt::QueuedConnection,
+ Q_ARG(Location, loc));
+}
+
+void statusCallback(GpsStatus *status)
+{
+ switch (status->status) {
+ case GPS_STATUS_ENGINE_ON:
+ QMetaObject::invokeMethod(staticProvider, "engineOn", Qt::QueuedConnection);
+ break;
+ case GPS_STATUS_ENGINE_OFF:
+ QMetaObject::invokeMethod(staticProvider, "engineOff", Qt::QueuedConnection);
+ break;
+ default:
+ ;
+ }
+}
+
+void svStatusCallback(GpsSvStatus *svStatus)
+{
+ QList<SatelliteInfo> satellites;
+ QList<int> usedPrns;
+
+ for (int i = 0; i < svStatus->num_svs; ++i) {
+ SatelliteInfo satInfo;
+ GpsSvInfo &svInfo = svStatus->sv_list[i];
+ satInfo.setPrn(svInfo.prn);
+ satInfo.setSnr(svInfo.snr);
+ satInfo.setElevation(svInfo.elevation);
+ satInfo.setAzimuth(svInfo.azimuth);
+ satellites.append(satInfo);
+
+ if (svStatus->used_in_fix_mask & (1 << i))
+ usedPrns.append(svInfo.prn);
+ }
+
+ QMetaObject::invokeMethod(staticProvider, "setSatellite", Qt::QueuedConnection,
+ Q_ARG(QList<SatelliteInfo>, satellites),
+ Q_ARG(QList<int>, usedPrns));
+}
+
+#if GEOCLUE_ANDROID_GPS_INTERFACE == 3
+void gnssSvStatusCallback(GnssSvStatus *svStatus)
+{
+ QList<SatelliteInfo> satellites;
+ QList<int> usedPrns;
+
+ for (int i = 0; i < svStatus->num_svs; ++i) {
+ SatelliteInfo satInfo;
+ GnssSvInfo &svInfo = svStatus->gnss_sv_list[i];
+ satInfo.setSnr(svInfo.c_n0_dbhz);
+ satInfo.setElevation(svInfo.elevation);
+ satInfo.setAzimuth(svInfo.azimuth);
+ int prn = svInfo.svid;
+ // From https://github.com/barbeau/gpstest
+ // and https://github.com/mvglasow/satstat/wiki/NMEA-IDs
+ if (svInfo.constellation == GNSS_CONSTELLATION_SBAS) {
+ prn -= 87;
+ } else if (svInfo.constellation == GNSS_CONSTELLATION_GLONASS) {
+ prn += 64;
+ } else if (svInfo.constellation == GNSS_CONSTELLATION_BEIDOU) {
+ prn += 200;
+ } else if (svInfo.constellation == GNSS_CONSTELLATION_GALILEO) {
+ prn += 300;
+ }
+ satInfo.setPrn(prn);
+ satellites.append(satInfo);
+
+ if (svInfo.flags & GNSS_SV_FLAGS_USED_IN_FIX)
+ usedPrns.append(svInfo.svid);
+ }
+
+ QMetaObject::invokeMethod(staticProvider, "setSatellite", Qt::QueuedConnection,
+ Q_ARG(QList<SatelliteInfo>, satellites),
+ Q_ARG(QList<int>, usedPrns));
+}
+#endif
+
+#ifdef USE_GPS_VENDOR_EXTENSION
+void gnssSvStatusCallback_custom(GnssSvStatus *svStatus)
+{
+ QList<SatelliteInfo> satellites;
+ QList<int> usedPrns;
+
+ for (int i = 0; i < svStatus->num_svs; ++i) {
+ SatelliteInfo satInfo;
+ GnssSvInfo &svInfo = svStatus->sv_list[i];
+ satInfo.setPrn(svInfo.prn);
+ satInfo.setSnr(svInfo.snr);
+ satInfo.setElevation(svInfo.elevation);
+ satInfo.setAzimuth(svInfo.azimuth);
+ satellites.append(satInfo);
+ }
+
+ QMetaObject::invokeMethod(staticProvider, "setSatellite", Qt::QueuedConnection,
+ Q_ARG(QList<SatelliteInfo>, satellites),
+ Q_ARG(QList<int>, usedPrns));
+}
+#endif
+
+bool nmeaChecksumValid(const QByteArray &nmea)
+{
+ unsigned char checksum = 0;
+ for (int i = 1; i < nmea.length(); ++i) {
+ if (nmea.at(i) == '*') {
+ if (nmea.length() < i+3)
+ return false;
+
+ checksum ^= nmea.mid(i+1, 2).toInt(0, 16);
+
+ break;
+ }
+
+ checksum ^= nmea.at(i);
+ }
+
+ return checksum == 0;
+}
+
+void parseRmc(const QByteArray &nmea)
+{
+ QList<QByteArray> fields = nmea.split(',');
+ if (fields.count() < 12)
+ return;
+
+ bool ok;
+ double variation = fields.at(10).toDouble(&ok);
+ if (ok) {
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/hal/hallocationbackend.h
^
|
@@ -0,0 +1,84 @@
+/*
+ Copyright (C) 2015 Jolla Ltd.
+ Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
+
+ This file is part of geoclue-hybris.
+
+ Geoclue-hybris is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License.
+*/
+
+#ifndef HALLOCATIONBACKEND_H
+#define HALLOCATIONBACKEND_H
+
+#include "hybrislocationbackend.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QStringList>
+#include <QtCore/QBasicTimer>
+#include <QtCore/QQueue>
+#include <QtDBus/QDBusContext>
+#include <QtNetwork/QNetworkReply>
+
+#include <android-version.h>
+#include <hardware/gps.h>
+
+#include <locationsettings.h>
+
+#include "locationtypes.h"
+
+class HalLocationBackend : public HybrisLocationBackend
+{
+ Q_OBJECT
+public:
+ HalLocationBackend(QObject *parent = 0);
+ ~HalLocationBackend();
+
+ // Gnss
+ bool gnssInit();
+ bool gnssStart();
+ bool gnssStop();
+ void gnssCleanup();
+ bool gnssInjectTime(HybrisGnssUtcTime timeMs, int64_t timeReferenceMs, int32_t uncertaintyMs);
+ bool gnssInjectLocation(double latitudeDegrees, double longitudeDegrees, float accuracyMeters);
+ void gnssDeleteAidingData(HybrisGnssAidingData aidingDataFlags);
+ bool gnssSetPositionMode(HybrisGnssPositionMode mode, HybrisGnssPositionRecurrence recurrence,
+ uint32_t minIntervalMs, uint32_t preferredAccuracyMeters,
+ uint32_t preferredTimeMs);
+
+ // GnssDebug
+ void gnssDebugInit();
+
+ // GnnNi
+ void gnssNiInit();
+ void gnssNiRespond(int32_t notifId, HybrisGnssUserResponseType userResponse);
+
+ // GnssXtra
+ void gnssXtraInit();
+ bool gnssXtraInjectXtraData(QByteArray &xtraData);
+
+ // AGnss
+ void aGnssInit();
+ bool aGnssDataConnClosed();
+ bool aGnssDataConnFailed();
+ bool aGnssDataConnOpen(const QByteArray &apn, const QString &protocol);
+
+ // AGnssRil
+ void aGnssRilInit();
+
+private:
+ gps_device_t *m_gpsDevice;
+
+ const GpsInterface *m_gps;
+
+ const AGpsInterface *m_agps;
+ const AGpsRilInterface *m_agpsril;
+ const GpsNiInterface *m_gpsni;
+ const GpsXtraInterface *m_xtra;
+
+ const GpsDebugInterface *m_debug;
+};
+
+#endif // HALLOCATIONBACKEND_H
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/hal/hallocationbackend.pro
^
|
@@ -0,0 +1,9 @@
+include($$PWD/../geoclue-providers-hybris.pri)
+
+HEADERS += \
+ hallocationbackend.h
+
+SOURCES += \
+ hallocationbackend.cpp
+
+PKGCONFIG += libhardware android-headers
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/hybrislocationbackend.h
^
|
@@ -0,0 +1,147 @@
+/*
+ Copyright (C) 2015 Jolla Ltd.
+ Copyright (C) 2018 Matti Lehtimäki <matti.lehtimaki@gmail.com>
+ Contact: Aaron McCarthy <aaron.mccarthy@jollamobile.com>
+
+ This file is part of geoclue-hybris.
+
+ Geoclue-hybris is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License.
+*/
+
+#ifndef HYBRIS_LOCATION_BACKEND_H
+#define HYBRIS_LOCATION_BACKEND_H
+
+#include <cstdint>
+
+#include <QtCore/QObject>
+#include <QtCore/QString>
+
+/** Milliseconds since January 1, 1970 */
+typedef int64_t HybrisGnssUtcTime;
+
+/** Requested operational mode for GPS operation. */
+typedef uint32_t HybrisGnssPositionMode;
+
+/** Requested recurrence mode for GPS operation. */
+typedef uint32_t HybrisGnssPositionRecurrence;
+
+/** GPS status event values. */
+typedef uint16_t HybrisGnssStatusValue;
+
+/** Flags to indicate which values are valid in a GpsLocation. */
+typedef uint16_t HybrisGnssLocationFlags;
+
+/**
+ * Flags used to specify which aiding data to delete when calling
+ * delete_aiding_data().
+ */
+typedef uint16_t HybrisGnssAidingData;
+
+/** AGPS type */
+typedef uint16_t HybrisAGnssType;
+
+typedef uint16_t HybrisAGnssSetIDType;
+
+typedef uint16_t HybrisApnIpType;
+
+typedef int16_t HybrisAGpsBearerType;
+
+/**
+ * HybrisGnssNiType constants
+ */
+typedef uint32_t HybrisGnssNiType;
+
+/**
+ * HybrisGnssNiNotifyFlags constants
+ */
+typedef uint32_t HybrisGnssNiNotifyFlags;
+
+/**
+ * GPS NI responses, used to define the response in
+ * NI structures
+ */
+typedef int HybrisGnssUserResponseType;
+
+/**
+ * NI data encoding scheme
+ */
+typedef int HybrisGnssNiEncodingType;
+
+/** AGPS status event values. */
+typedef uint16_t HybrisAGnssStatusValue;
+
+typedef uint16_t HybrisAGnssRefLocationType;
+
+typedef int HybrisNetworkType;
+
+enum {
+ HYBRIS_GNSS_POSITION_MODE_STANDALONE = 0,
+ HYBRIS_GNSS_POSITION_MODE_MS_BASED = 1,
+ HYBRIS_GNSS_POSITION_MODE_MS_ASSISTED = 2,
+};
+
+enum {
+ HYBRIS_GNSS_POSITION_RECURRENCE_PERIODIC = 0,
+ HYBRIS_GNSS_POSITION_RECURRENCE_SINGLE = 1,
+};
+
+enum {
+ HYBRIS_AGNSS_TYPE_SUPL = 1,
+ HYBRIS_AGNSS_TYPE_C2K = 2,
+};
+
+enum {
+ HYBRIS_GNSS_REQUEST_AGNSS_DATA_CONN = 1,
+ HYBRIS_GNSS_RELEASE_AGNSS_DATA_CONN = 2,
+ HYBRIS_GNSS_AGNSS_DATA_CONNECTED = 3,
+ HYBRIS_GNSS_AGNSS_DATA_CONN_DONE = 4,
+ HYBRIS_GNSS_AGNSS_DATA_CONN_FAILED = 5,
+};
+
+class HybrisLocationBackend : public QObject
+{
+ Q_OBJECT
+public:
+ explicit HybrisLocationBackend(QObject *parent = 0) : QObject(parent) {};
+ virtual ~HybrisLocationBackend() {}
+
+ // Gnss
+ virtual bool gnssInit() = 0;
+ virtual bool gnssStart() = 0;
+ virtual bool gnssStop() = 0;
+ virtual void gnssCleanup() = 0;
+ virtual bool gnssInjectTime(HybrisGnssUtcTime timeMs, int64_t timeReferenceMs, int32_t uncertaintyMs) = 0;
+ virtual bool gnssInjectLocation(double latitudeDegrees, double longitudeDegrees, float accuracyMeters) = 0;
+ virtual void gnssDeleteAidingData(HybrisGnssAidingData aidingDataFlags) = 0;
+ virtual bool gnssSetPositionMode(HybrisGnssPositionMode mode, HybrisGnssPositionRecurrence recurrence,
+ uint32_t minIntervalMs, uint32_t preferredAccuracyMeters,
+ uint32_t preferredTimeMs) = 0;
+
+ // GnssDebug
+ virtual void gnssDebugInit() = 0;
+
+ // GnnNi
+ virtual void gnssNiInit() = 0;
+ virtual void gnssNiRespond(int32_t notifId, HybrisGnssUserResponseType userResponse) = 0;
+
+ // GnssXtra
+ virtual void gnssXtraInit() = 0;
+ virtual bool gnssXtraInjectXtraData(QByteArray &xtraData) = 0;
+
+ // AGnss
+ virtual void aGnssInit() = 0;
+ virtual bool aGnssDataConnClosed() = 0;
+ virtual bool aGnssDataConnFailed() = 0;
+ virtual bool aGnssDataConnOpen(const QByteArray &apn, const QString &protocol) = 0;
+
+ // AGnssRil
+ virtual void aGnssRilInit() = 0;
+
+};
+
+HybrisLocationBackend *getLocationBackend();
+
+#endif // HYBRIS_LOCATION_BACKEND_H
|
[-]
[+]
|
Changed |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/hybrisprovider.cpp
^
|
@@ -20,7 +20,6 @@
#include "connectiond_interface.h"
#include "connectionselector_interface.h"
-#include <QtCore/QLoggingCategory>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QHostAddress>
@@ -38,8 +37,6 @@
#include <qofonoextmodemmanager.h>
-#include <android-config.h>
-
#include <strings.h>
#include <sys/time.h>
@@ -49,11 +46,11 @@
Q_LOGGING_CATEGORY(lcGeoclueHybrisNmea, "geoclue.provider.hybris.nmea")
Q_LOGGING_CATEGORY(lcGeoclueHybrisPosition, "geoclue.provider.hybris.position")
+HybrisProvider *staticProvider = Q_NULLPTR;
+
namespace
{
-HybrisProvider *staticProvider = 0;
-
const int QuitIdleTime = 30000;
const int FixTimeout = 30000;
const quint32 MinimumInterval = 1000;
@@ -76,347 +73,11 @@
const int MaxXtraServers = 3;
const QString XtraConfigFile = QStringLiteral("/etc/gps_xtra.ini");
-void locationCallback(GpsLocation *location)
-{
- Location loc;
-
- loc.setTimestamp(location->timestamp);
-
- if (location->flags & GPS_LOCATION_HAS_LAT_LONG) {
- loc.setLatitude(location->latitude);
- loc.setLongitude(location->longitude);
- }
-
- if (location->flags & GPS_LOCATION_HAS_ALTITUDE)
- loc.setAltitude(location->altitude);
-
- if (location->flags & GPS_LOCATION_HAS_SPEED)
- loc.setSpeed(location->speed / KnotsToMps);
-
- if (location->flags & GPS_LOCATION_HAS_BEARING)
- loc.setDirection(location->bearing);
-
- if (location->flags & GPS_LOCATION_HAS_ACCURACY) {
- Accuracy accuracy;
- accuracy.setHorizontal(location->accuracy);
- accuracy.setVertical(location->accuracy);
- loc.setAccuracy(accuracy);
- }
-
- QMetaObject::invokeMethod(staticProvider, "setLocation", Qt::QueuedConnection,
- Q_ARG(Location, loc));
-}
-
-void statusCallback(GpsStatus *status)
-{
- switch (status->status) {
- case GPS_STATUS_ENGINE_ON:
- QMetaObject::invokeMethod(staticProvider, "engineOn", Qt::QueuedConnection);
- break;
- case GPS_STATUS_ENGINE_OFF:
- QMetaObject::invokeMethod(staticProvider, "engineOff", Qt::QueuedConnection);
- break;
- default:
- ;
- }
-}
-
-void svStatusCallback(GpsSvStatus *svStatus)
-{
- QList<SatelliteInfo> satellites;
- QList<int> usedPrns;
-
- for (int i = 0; i < svStatus->num_svs; ++i) {
- SatelliteInfo satInfo;
- GpsSvInfo &svInfo = svStatus->sv_list[i];
- satInfo.setPrn(svInfo.prn);
- satInfo.setSnr(svInfo.snr);
- satInfo.setElevation(svInfo.elevation);
- satInfo.setAzimuth(svInfo.azimuth);
- satellites.append(satInfo);
-
- if (svStatus->used_in_fix_mask & (1 << i))
- usedPrns.append(svInfo.prn);
- }
-
- QMetaObject::invokeMethod(staticProvider, "setSatellite", Qt::QueuedConnection,
- Q_ARG(QList<SatelliteInfo>, satellites),
- Q_ARG(QList<int>, usedPrns));
-}
-
-#if GEOCLUE_ANDROID_GPS_INTERFACE == 3
-void gnssSvStatusCallback(GnssSvStatus *svStatus)
-{
- QList<SatelliteInfo> satellites;
- QList<int> usedPrns;
-
- for (int i = 0; i < svStatus->num_svs; ++i) {
- SatelliteInfo satInfo;
- GnssSvInfo &svInfo = svStatus->gnss_sv_list[i];
- satInfo.setPrn(svInfo.svid);
- satInfo.setSnr(svInfo.c_n0_dbhz);
- satInfo.setElevation(svInfo.elevation);
- satInfo.setAzimuth(svInfo.azimuth);
- satellites.append(satInfo);
-
- if (svInfo.flags & GNSS_SV_FLAGS_USED_IN_FIX)
- usedPrns.append(svInfo.svid);
- }
-
- QMetaObject::invokeMethod(staticProvider, "setSatellite", Qt::QueuedConnection,
- Q_ARG(QList<SatelliteInfo>, satellites),
- Q_ARG(QList<int>, usedPrns));
-}
-#endif
-
-#ifdef USE_GPS_VENDOR_EXTENSION
-void gnssSvStatusCallback_custom(GnssSvStatus *svStatus)
-{
- QList<SatelliteInfo> satellites;
- QList<int> usedPrns;
-
- for (int i = 0; i < svStatus->num_svs; ++i) {
- SatelliteInfo satInfo;
- GnssSvInfo &svInfo = svStatus->sv_list[i];
- satInfo.setPrn(svInfo.prn);
- satInfo.setSnr(svInfo.snr);
- satInfo.setElevation(svInfo.elevation);
- satInfo.setAzimuth(svInfo.azimuth);
- satellites.append(satInfo);
- }
-
- QMetaObject::invokeMethod(staticProvider, "setSatellite", Qt::QueuedConnection,
- Q_ARG(QList<SatelliteInfo>, satellites),
- Q_ARG(QList<int>, usedPrns));
-}
-#endif
-
-bool nmeaChecksumValid(const QByteArray &nmea)
-{
- unsigned char checksum = 0;
- for (int i = 1; i < nmea.length(); ++i) {
- if (nmea.at(i) == '*') {
- if (nmea.length() < i+3)
- return false;
-
- checksum ^= nmea.mid(i+1, 2).toInt(0, 16);
-
- break;
- }
-
- checksum ^= nmea.at(i);
- }
-
- return checksum == 0;
-}
-
-void parseRmc(const QByteArray &nmea)
-{
- QList<QByteArray> fields = nmea.split(',');
- if (fields.count() < 12)
- return;
-
- bool ok;
- double variation = fields.at(10).toDouble(&ok);
- if (ok) {
- if (fields.at(11) == "W")
- variation = -variation;
-
- QMetaObject::invokeMethod(staticProvider, "setMagneticVariation", Qt::QueuedConnection,
- Q_ARG(double, variation));
- }
-}
-
-void nmeaCallback(GpsUtcTime timestamp, const char *nmeaData, int length)
-{
- // Trim trailing whitepsace
- while (length > 0 && isspace(nmeaData[length-1]))
- --length;
-
- if (length == 0)
- return;
-
- QByteArray nmea = QByteArray::fromRawData(nmeaData, length);
-
- qCDebug(lcGeoclueHybrisNmea) << timestamp << nmea;
-
- if (!nmeaChecksumValid(nmea))
|
[-]
[+]
|
Changed |
_service:tar_git:geoclue-provider-hybris-0.2.19.tar.gz/hybrisprovider.h
^
|
@@ -13,6 +13,7 @@
#ifndef HYBRISPROVIDER_H
#define HYBRISPROVIDER_H
+#include <QtCore/QLoggingCategory>
#include <QtCore/QObject>
#include <QtCore/QStringList>
#include <QtCore/QBasicTimer>
@@ -20,23 +21,15 @@
#include <QtDBus/QDBusContext>
#include <QtNetwork/QNetworkReply>
-#include <android-version.h>
-#include <hardware/gps.h>
+#include "hybrislocationbackend.h"
#include <locationsettings.h>
#include "locationtypes.h"
-// Define versions of the Android GPS interface supported.
-#if ANDROID_VERSION_MAJOR >= 7
- #define GEOCLUE_ANDROID_GPS_INTERFACE 3
-#elif ANDROID_VERSION_MAJOR >= 5
- #define GEOCLUE_ANDROID_GPS_INTERFACE 2
-#elif ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR >= 2
- #define GEOCLUE_ANDROID_GPS_INTERFACE 1
-#else
- // By default expects Android 4.1
-#endif
+Q_DECLARE_LOGGING_CATEGORY(lcGeoclueHybris)
+Q_DECLARE_LOGGING_CATEGORY(lcGeoclueHybrisNmea)
+Q_DECLARE_LOGGING_CATEGORY(lcGeoclueHybrisPosition)
QT_FORWARD_DECLARE_CLASS(QFileSystemWatcher)
QT_FORWARD_DECLARE_CLASS(QDBusServiceWatcher)
@@ -57,6 +50,7 @@
class HybrisProvider : public QObject, public QDBusContext
{
+friend class HybrisBackend;
Q_OBJECT
public:
@@ -178,16 +172,7 @@
void processConnectionContexts();
void processNextConnectionContext();
- gps_device_t *m_gpsDevice;
-
- const GpsInterface *m_gps;
-
- const AGpsInterface *m_agps;
- const AGpsRilInterface *m_agpsril;
- const GpsNiInterface *m_gpsni;
- const GpsXtraInterface *m_xtra;
-
- const GpsDebugInterface *m_debug;
+ HybrisLocationBackend *m_backend;
Location m_currentLocation;
@@ -256,6 +241,8 @@
double m_magneticVariation;
};
+extern HybrisProvider *staticProvider;
+
Q_DECLARE_OPERATORS_FOR_FLAGS(HybrisProvider::PositionFields)
Q_DECLARE_OPERATORS_FOR_FLAGS(HybrisProvider::VelocityFields)
|
[-]
[+]
|
Added |
_service:tar_git:geoclue-providers-hybris.inc
^
|
@@ -0,0 +1,43 @@
+Name: geoclue-provider-hybris
+Version: 0.0.1
+Release: 1
+Summary: Geoinformation Service Hybris Provider
+Group: System/Libraries
+URL: https://bitbucket.org/jolla/base-geoclue-providers-hybris
+License: LGPLv2.1
+Source: %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(Qt5Core)
+BuildRequires: pkgconfig(Qt5DBus)
+BuildRequires: pkgconfig(Qt5Network)
+BuildRequires: pkgconfig(connman-qt5) >= 1.0.68
+BuildRequires: pkgconfig(qofono-qt5)
+BuildRequires: pkgconfig(qofonoext)
+BuildRequires: pkgconfig(systemsettings)
+Requires: connectionagent-qt5 >= 0.9.20
+
+Source100: geoclue-providers-hybris.inc
+
+%description
+%{summary}.
+
+
+%prep
+%setup -q -n %{name}-%{version}
+
+
+%build
+%{qmake_command}
+make %{?_smp_mflags}
+
+
+%install
+make INSTALL_ROOT=%{buildroot} install
+
+%files
+%defattr(04755,root,root,-)
+%{_libexecdir}/geoclue-hybris
+%defattr(-,root,root,-)
+%{_sysconfdir}/dbus-1
+%{_datadir}/dbus-1
+%{_datadir}/geoclue-providers/geoclue-hybris.provider
+
|