summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--configure.json5
-rw-r--r--examples/sensors/grue/import/main.cpp2
-rw-r--r--examples/sensors/sensor_explorer/import/main.cpp2
-rw-r--r--src/imports/sensors/sensors.cpp2
-rw-r--r--src/plugins/sensors/ios/ios.pro56
-rw-r--r--src/plugins/sensors/ios/iosaccelerometer.h4
-rw-r--r--src/plugins/sensors/ios/iosaccelerometer.mm4
-rw-r--r--src/plugins/sensors/ios/iosgyroscope.h4
-rw-r--r--src/plugins/sensors/ios/iosgyroscope.mm2
-rw-r--r--src/plugins/sensors/ios/iosmagnetometer.h4
-rw-r--r--src/plugins/sensors/ios/iosmagnetometer.mm2
-rw-r--r--src/plugins/sensors/ios/iosmotionmanager.h5
-rw-r--r--src/plugins/sensors/ios/iosmotionmanager.mm2
-rw-r--r--src/plugins/sensors/ios/iosproximitysensor.h4
-rw-r--r--src/plugins/sensors/ios/main.mm18
-rw-r--r--src/plugins/sensors/sensorfw/sensorfw.pro6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp12
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwsensorbase.h1
-rw-r--r--src/plugins/sensors/sensors.pro7
-rw-r--r--src/sensors/configure.json32
-rw-r--r--src/sensors/doc/src/sensorfwbackend.qdoc4
22 files changed, 133 insertions, 47 deletions
diff --git a/.qmake.conf b/.qmake.conf
index a2a0d418..aefa1e70 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION = 5.7.1
+MODULE_VERSION = 5.8.0
diff --git a/configure.json b/configure.json
new file mode 100644
index 00000000..a08cf03d
--- /dev/null
+++ b/configure.json
@@ -0,0 +1,5 @@
+{
+ "subconfigs": [
+ "src/sensors"
+ ]
+}
diff --git a/examples/sensors/grue/import/main.cpp b/examples/sensors/grue/import/main.cpp
index dc2372e2..f321acff 100644
--- a/examples/sensors/grue/import/main.cpp
+++ b/examples/sensors/grue/import/main.cpp
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
class GrueSensorQmlImport : public QQmlExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface" FILE "import.json")
+ Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid FILE "import.json")
public:
virtual void registerTypes(const char *uri)
{
diff --git a/examples/sensors/sensor_explorer/import/main.cpp b/examples/sensors/sensor_explorer/import/main.cpp
index 03f83a33..ef50f5af 100644
--- a/examples/sensors/sensor_explorer/import/main.cpp
+++ b/examples/sensors/sensor_explorer/import/main.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
class SensorExplorerDeclarativeModule : public QQmlExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface" FILE "import.json")
+ Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid FILE "import.json")
public:
virtual void registerTypes(const char *uri)
{
diff --git a/src/imports/sensors/sensors.cpp b/src/imports/sensors/sensors.cpp
index c6f61c22..d1f5bb48 100644
--- a/src/imports/sensors/sensors.cpp
+++ b/src/imports/sensors/sensors.cpp
@@ -93,7 +93,7 @@ static QObject *global_object_50(QQmlEngine *, QJSEngine *)
class QtSensorsDeclarativeModule : public QQmlExtensionPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface" FILE "plugin.json")
+ Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid FILE "plugin.json")
public:
QtSensorsDeclarativeModule(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); }
virtual void registerTypes(const char *uri)
diff --git a/src/plugins/sensors/ios/ios.pro b/src/plugins/sensors/ios/ios.pro
index 17ff0095..91ec3ae0 100644
--- a/src/plugins/sensors/ios/ios.pro
+++ b/src/plugins/sensors/ios/ios.pro
@@ -3,22 +3,46 @@ QT = core sensors
OTHER_FILES = plugin.json
-HEADERS += iosaccelerometer.h \
- iosmotionmanager.h \
- iosgyroscope.h \
- iosmagnetometer.h \
- ioscompass.h \
- iosproximitysensor.h
-
-OBJECTIVE_SOURCES += main.mm \
- iosaccelerometer.mm \
- iosmotionmanager.mm \
- iosgyroscope.mm \
- iosmagnetometer.mm \
- ioscompass.mm \
- iosproximitysensor.mm
-
-LIBS += -framework UIKit -framework CoreMotion -framework CoreLocation
+OBJECTIVE_SOURCES += main.mm
+LIBS += -framework Foundation
+
+uikit {
+ ios {
+ HEADERS += \
+ ioscompass.h
+ OBJECTIVE_SOURCES += \
+ ioscompass.mm
+
+ DEFINES += HAVE_COMPASS
+ LIBS += -framework CoreLocation
+ }
+
+ !tvos {
+ HEADERS += \
+ iosaccelerometer.h \
+ iosgyroscope.h \
+ iosmagnetometer.h \
+ iosmotionmanager.h
+ OBJECTIVE_SOURCES += \
+ iosaccelerometer.mm \
+ iosgyroscope.mm \
+ iosmagnetometer.mm \
+ iosmotionmanager.mm
+
+ DEFINES += HAVE_COREMOTION
+ LIBS += -framework CoreMotion
+ }
+
+ !watchos {
+ HEADERS += \
+ iosproximitysensor.h
+ OBJECTIVE_SOURCES += \
+ iosproximitysensor.mm
+
+ DEFINES += HAVE_UIDEVICE
+ LIBS += -framework UIKit
+ }
+}
PLUGIN_TYPE = sensors
PLUGIN_CLASS_NAME = IOSSensorPlugin
diff --git a/src/plugins/sensors/ios/iosaccelerometer.h b/src/plugins/sensors/ios/iosaccelerometer.h
index 620015f2..14b6cc03 100644
--- a/src/plugins/sensors/ios/iosaccelerometer.h
+++ b/src/plugins/sensors/ios/iosaccelerometer.h
@@ -40,11 +40,11 @@
#ifndef IOSACCELEROMETER_H
#define IOSACCELEROMETER_H
-#include <CoreMotion/CMMotionManager.h>
-
#include <qsensorbackend.h>
#include <qaccelerometer.h>
+@class CMMotionManager;
+
QT_BEGIN_NAMESPACE
class IOSAccelerometer : public QSensorBackend
diff --git a/src/plugins/sensors/ios/iosaccelerometer.mm b/src/plugins/sensors/ios/iosaccelerometer.mm
index 2d2e27ae..d2d6e9fb 100644
--- a/src/plugins/sensors/ios/iosaccelerometer.mm
+++ b/src/plugins/sensors/ios/iosaccelerometer.mm
@@ -37,11 +37,11 @@
**
****************************************************************************/
-#include <UIKit/UIAccelerometer.h>
-
#include "iosaccelerometer.h"
#include "iosmotionmanager.h"
+#import <CoreMotion/CoreMotion.h>
+
char const * const IOSAccelerometer::id("ios.accelerometer");
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/sensors/ios/iosgyroscope.h b/src/plugins/sensors/ios/iosgyroscope.h
index d8ff04a1..3969bb1a 100644
--- a/src/plugins/sensors/ios/iosgyroscope.h
+++ b/src/plugins/sensors/ios/iosgyroscope.h
@@ -40,11 +40,11 @@
#ifndef IOSGYROSCOPE_H
#define IOSGYROSCOPE_H
-#include <CoreMotion/CMMotionManager.h>
-
#include <qsensorbackend.h>
#include <qgyroscope.h>
+@class CMMotionManager;
+
QT_BEGIN_NAMESPACE
class IOSGyroscope : public QSensorBackend
diff --git a/src/plugins/sensors/ios/iosgyroscope.mm b/src/plugins/sensors/ios/iosgyroscope.mm
index 19e65e57..0cd37aea 100644
--- a/src/plugins/sensors/ios/iosgyroscope.mm
+++ b/src/plugins/sensors/ios/iosgyroscope.mm
@@ -40,6 +40,8 @@
#include "iosmotionmanager.h"
#include "iosgyroscope.h"
+#import <CoreMotion/CoreMotion.h>
+
char const * const IOSGyroscope::id("ios.gyroscope");
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/sensors/ios/iosmagnetometer.h b/src/plugins/sensors/ios/iosmagnetometer.h
index 00d921e8..f4ab34a5 100644
--- a/src/plugins/sensors/ios/iosmagnetometer.h
+++ b/src/plugins/sensors/ios/iosmagnetometer.h
@@ -40,11 +40,11 @@
#ifndef IOSMAGNETOMETER_H
#define IOSMAGNETOMETER_H
-#include <CoreMotion/CMMotionManager.h>
-
#include <qsensorbackend.h>
#include <qmagnetometer.h>
+@class CMMotionManager;
+
QT_BEGIN_NAMESPACE
class IOSMagnetometer : public QSensorBackend
diff --git a/src/plugins/sensors/ios/iosmagnetometer.mm b/src/plugins/sensors/ios/iosmagnetometer.mm
index 98bef2dd..bfbe6e6d 100644
--- a/src/plugins/sensors/ios/iosmagnetometer.mm
+++ b/src/plugins/sensors/ios/iosmagnetometer.mm
@@ -40,6 +40,8 @@
#include "iosmotionmanager.h"
#include "iosmagnetometer.h"
+#import <CoreMotion/CoreMotion.h>
+
QT_BEGIN_NAMESPACE
char const * const IOSMagnetometer::id("ios.magnetometer");
diff --git a/src/plugins/sensors/ios/iosmotionmanager.h b/src/plugins/sensors/ios/iosmotionmanager.h
index 6e0cbd62..7c2a1b27 100644
--- a/src/plugins/sensors/ios/iosmotionmanager.h
+++ b/src/plugins/sensors/ios/iosmotionmanager.h
@@ -40,8 +40,9 @@
#ifndef IOSMOTIONMANAGER_H
#define IOSMOTIONMANAGER_H
-#import <UIKit/UIKit.h>
-#import <CoreMotion/CoreMotion.h>
+#import <Foundation/Foundation.h>
+
+@class CMMotionManager;
@interface QIOSMotionManager : NSObject {
}
diff --git a/src/plugins/sensors/ios/iosmotionmanager.mm b/src/plugins/sensors/ios/iosmotionmanager.mm
index 7db56a21..90741089 100644
--- a/src/plugins/sensors/ios/iosmotionmanager.mm
+++ b/src/plugins/sensors/ios/iosmotionmanager.mm
@@ -39,6 +39,8 @@
#include "iosmotionmanager.h"
+#import <CoreMotion/CoreMotion.h>
+
static CMMotionManager *sharedManager = nil;
@implementation QIOSMotionManager
diff --git a/src/plugins/sensors/ios/iosproximitysensor.h b/src/plugins/sensors/ios/iosproximitysensor.h
index 99f9564e..4cff4fce 100644
--- a/src/plugins/sensors/ios/iosproximitysensor.h
+++ b/src/plugins/sensors/ios/iosproximitysensor.h
@@ -43,10 +43,10 @@
#include <qsensorbackend.h>
#include <qproximitysensor.h>
-QT_BEGIN_NAMESPACE
-
@class ProximitySensorCallback;
+QT_BEGIN_NAMESPACE
+
class IOSProximitySensor : public QSensorBackend
{
public:
diff --git a/src/plugins/sensors/ios/main.mm b/src/plugins/sensors/ios/main.mm
index 40f84e9a..a4766c37 100644
--- a/src/plugins/sensors/ios/main.mm
+++ b/src/plugins/sensors/ios/main.mm
@@ -48,6 +48,11 @@
#include "ioscompass.h"
#include "iosproximitysensor.h"
+#import <CoreLocation/CoreLocation.h>
+#ifdef HAVE_COREMOTION
+#import <CoreMotion/CoreMotion.h>
+#endif
+
class IOSSensorPlugin : public QObject, public QSensorPluginInterface, public QSensorBackendFactory
{
Q_OBJECT
@@ -56,30 +61,41 @@ class IOSSensorPlugin : public QObject, public QSensorPluginInterface, public QS
public:
void registerSensors()
{
+#ifdef HAVE_COREMOTION
QSensorManager::registerBackend(QAccelerometer::type, IOSAccelerometer::id, this);
if ([QIOSMotionManager sharedManager].gyroAvailable)
QSensorManager::registerBackend(QGyroscope::type, IOSGyroscope::id, this);
if ([QIOSMotionManager sharedManager].magnetometerAvailable)
QSensorManager::registerBackend(QMagnetometer::type, IOSMagnetometer::id, this);
+#endif
+#ifdef HAVE_COMPASS
if ([CLLocationManager headingAvailable])
QSensorManager::registerBackend(QCompass::type, IOSCompass::id, this);
+#endif
+#ifdef HAVE_UIDEVICE
if (IOSProximitySensor::available())
QSensorManager::registerBackend(QProximitySensor::type, IOSProximitySensor::id, this);
+#endif
}
QSensorBackend *createBackend(QSensor *sensor)
{
+#ifdef HAVE_COREMOTION
if (sensor->identifier() == IOSAccelerometer::id)
return new IOSAccelerometer(sensor);
if (sensor->identifier() == IOSGyroscope::id)
return new IOSGyroscope(sensor);
if (sensor->identifier() == IOSMagnetometer::id)
return new IOSMagnetometer(sensor);
+#endif
+#ifdef HAVE_COMPASS
if (sensor->identifier() == IOSCompass::id)
return new IOSCompass(sensor);
+#endif
+#ifdef HAVE_UIDEVICE
if (sensor->identifier() == IOSProximitySensor::id)
return new IOSProximitySensor(sensor);
-
+#endif
return 0;
}
};
diff --git a/src/plugins/sensors/sensorfw/sensorfw.pro b/src/plugins/sensors/sensorfw/sensorfw.pro
index b30b3624..63a66117 100644
--- a/src/plugins/sensors/sensorfw/sensorfw.pro
+++ b/src/plugins/sensors/sensorfw/sensorfw.pro
@@ -1,11 +1,9 @@
TARGET = qtsensors_sensorfw
-QT = core sensors network dbus
+QT = core sensors-private network dbus
include(sensorfw.pri)
-
-CONFIG += link_pkgconfig
-PKGCONFIG += sensord-qt5
+QMAKE_USE += sensorfw
CONFIGFILES.files = Sensors.conf
CONFIGFILES.path = /etc/xdg/QtProject/
diff --git a/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp b/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
index 17027778..27a07ad6 100644
--- a/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
@@ -59,7 +59,8 @@ SensorfwSensorBase::SensorfwSensorBase(QSensor *sensor)
m_efficientBufferSize(1),
m_maxBufferSize(1),
m_available(false),
- running(false)
+ running(false),
+ m_attemptRestart(false)
{
watcher = new QDBusServiceWatcher("com.nokia.SensorService",QDBusConnection::systemBus(),
@@ -131,8 +132,12 @@ void SensorfwSensorBase::start()
if (returnCode == 0) {
running = true;
return;
+ } else if (returnCode == QDBusError::ServiceUnknown) {
+ m_attemptRestart = true;
+ qWarning() << "m_sensorInterface did not start, DBus service unknown. Waiting for service registration and retrying.";
+ } else {
+ qWarning() << "m_sensorInterface did not start, error code:" << returnCode;
}
- qWarning() << "m_sensorInterface did not start, error code:" << returnCode;
}
sensorStopped();
}
@@ -142,6 +147,7 @@ void SensorfwSensorBase::stop()
if (m_sensorInterface)
m_sensorInterface->stop();
running = false;
+ m_attemptRestart = false;
}
void SensorfwSensorBase::setRanges(qreal correctionFactor)
@@ -219,7 +225,7 @@ void SensorfwSensorBase::connectToSensord()
m_remoteSensorManager = 0;
return;
}
- if (running) {
+ if (running || m_attemptRestart) {
stop();
reinitIsNeeded = true;
start();
diff --git a/src/plugins/sensors/sensorfw/sensorfwsensorbase.h b/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
index df8ca844..3e5e0538 100644
--- a/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
+++ b/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
@@ -113,6 +113,7 @@ private:
QDBusServiceWatcher *watcher;
bool m_available;
bool running;
+ bool m_attemptRestart;
private slots:
void connectToSensord();
void sensordUnregistered();
diff --git a/src/plugins/sensors/sensors.pro b/src/plugins/sensors/sensors.pro
index 5a860fdc..76989335 100644
--- a/src/plugins/sensors/sensors.pro
+++ b/src/plugins/sensors/sensors.pro
@@ -1,14 +1,15 @@
TEMPLATE = subdirs
+QT_FOR_CONFIG += sensors-private
android {
isEmpty(SENSORS_PLUGINS): SENSORS_PLUGINS = android generic
}
-sensorfw {
+qtConfig(sensorfw) {
isEmpty(SENSORS_PLUGINS): SENSORS_PLUGINS = sensorfw generic
}
-ios {
+darwin {
isEmpty(SENSORS_PLUGINS): SENSORS_PLUGINS = ios generic
}
@@ -31,5 +32,5 @@ isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, linux):linux:SUBDIRS += linux
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, iio-sensor-proxy):linux:qtHaveModule(dbus):SUBDIRS += iio-sensor-proxy
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, android):android:SUBDIRS += android
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, sensorfw):sensorfw:SUBDIRS += sensorfw
-isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, ios):ios:SUBDIRS += ios
+isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, ios):darwin:SUBDIRS += ios
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, winrt):winrt:SUBDIRS += winrt
diff --git a/src/sensors/configure.json b/src/sensors/configure.json
new file mode 100644
index 00000000..633de2a1
--- /dev/null
+++ b/src/sensors/configure.json
@@ -0,0 +1,32 @@
+{
+ "module": "sensors",
+
+ "libraries": {
+ "sensorfw": {
+ "label": "sensorfw",
+ "sources": [
+ { "type": "pkgConfig", "args": "sensord-qt5" }
+ ]
+ }
+ },
+
+ "features": {
+ "sensorfw": {
+ "label": "sensorfw",
+ "condition": "libs.sensorfw",
+ "output": [ "privateFeature" ]
+ }
+ },
+
+ "report": [
+ ],
+
+ "summary": [
+ {
+ "section": "Qt Sensors",
+ "entries": [
+ "sensorfw"
+ ]
+ }
+ ]
+}
diff --git a/src/sensors/doc/src/sensorfwbackend.qdoc b/src/sensors/doc/src/sensorfwbackend.qdoc
index 0ff31f80..c3189bbc 100644
--- a/src/sensors/doc/src/sensorfwbackend.qdoc
+++ b/src/sensors/doc/src/sensorfwbackend.qdoc
@@ -33,9 +33,5 @@
The Sensorfw sensor backend requires the Sensorfw and sensor daemon. Sensorfw
was originally used in MeeGo, and is available on :
https://github.com/mer-packages/sensorfw
-
- To compile the sensorfw backend, you need sensorfw installed and run qmake
- with CONFIG+=sensorfw
-
*/