From 94b1e4f01c58fd9ee4a9af537b8c46c3ab324dff Mon Sep 17 00:00:00 2001 From: Lincoln Ramsay Date: Wed, 19 Oct 2011 16:29:37 +1000 Subject: Get the simulator backend going Change-Id: Idbb4ba7b97be38f74f3a74e5d54c15209d5a788a Sanity-Review: Qt Sanity Bot Reviewed-by: Zsolt Simon --- src/plugins/sensors/sensors.pro | 2 +- src/plugins/sensors/simulator/main.cpp | 8 +- .../sensors/simulator/qsensordata_simulator.cpp | 4 + .../sensors/simulator/qsensordata_simulator_p.h | 17 ++- src/plugins/sensors/simulator/simulator.pri | 19 --- src/plugins/sensors/simulator/simulator.pro | 28 +++- .../simulator/simulatorambientlightsensor.cpp | 2 +- src/plugins/sensors/simulator/simulatorcommon.cpp | 146 +++++++++------------ src/plugins/sensors/simulator/simulatorcommon.h | 60 ++++----- .../sensors/simulator/simulatorlightsensor.cpp | 2 +- 10 files changed, 131 insertions(+), 157 deletions(-) delete mode 100644 src/plugins/sensors/simulator/simulator.pri diff --git a/src/plugins/sensors/sensors.pro b/src/plugins/sensors/sensors.pro index f3d3525c..5dc7475c 100644 --- a/src/plugins/sensors/sensors.pro +++ b/src/plugins/sensors/sensors.pro @@ -1,5 +1,5 @@ TEMPLATE = subdirs SUBDIRS += dummy generic -#simulator: SUBDIRS += simulator +simulator:SUBDIRS += simulator diff --git a/src/plugins/sensors/simulator/main.cpp b/src/plugins/sensors/simulator/main.cpp index ff6b2bab..641f7a69 100644 --- a/src/plugins/sensors/simulator/main.cpp +++ b/src/plugins/sensors/simulator/main.cpp @@ -45,11 +45,9 @@ #include "simulatorcompass.h" #include "simulatorproximitysensor.h" #include "simulatormagnetometer.h" -#include -#include -#include -#include -#include +#include +#include +#include class SimulatorSensorPlugin : public QObject, public QSensorPluginInterface, public QSensorBackendFactory { diff --git a/src/plugins/sensors/simulator/qsensordata_simulator.cpp b/src/plugins/sensors/simulator/qsensordata_simulator.cpp index 168f0653..0cf70d4c 100644 --- a/src/plugins/sensors/simulator/qsensordata_simulator.cpp +++ b/src/plugins/sensors/simulator/qsensordata_simulator.cpp @@ -43,6 +43,8 @@ #include +namespace QtMobility { + void qt_registerSensorTypes() { qRegisterMetaTypeStreamOperators("QtMobility::QAmbientLightReadingData"); @@ -126,3 +128,5 @@ QDataStream &operator>>(QDataStream &in, QMagnetometerReadingData &s) in >> s.x >> s.y >> s.z >> s.calibrationLevel >> s.timestamp; return in; } + +} // namespace diff --git a/src/plugins/sensors/simulator/qsensordata_simulator_p.h b/src/plugins/sensors/simulator/qsensordata_simulator_p.h index 13750b01..cec91caf 100644 --- a/src/plugins/sensors/simulator/qsensordata_simulator_p.h +++ b/src/plugins/sensors/simulator/qsensordata_simulator_p.h @@ -57,7 +57,7 @@ #include #include -QT_BEGIN_HEADER +namespace QtMobility { struct QAmbientLightReadingData { @@ -103,14 +103,13 @@ struct QProximityReadingData void qt_registerSensorTypes(); +} -Q_DECLARE_METATYPE(QAmbientLightReadingData) -Q_DECLARE_METATYPE(QLightReadingData) -Q_DECLARE_METATYPE(QAccelerometerReadingData) -Q_DECLARE_METATYPE(QMagnetometerReadingData) -Q_DECLARE_METATYPE(QCompassReadingData) -Q_DECLARE_METATYPE(QProximityReadingData) - -QT_END_HEADER +Q_DECLARE_METATYPE(QtMobility::QAmbientLightReadingData) +Q_DECLARE_METATYPE(QtMobility::QLightReadingData) +Q_DECLARE_METATYPE(QtMobility::QAccelerometerReadingData) +Q_DECLARE_METATYPE(QtMobility::QMagnetometerReadingData) +Q_DECLARE_METATYPE(QtMobility::QCompassReadingData) +Q_DECLARE_METATYPE(QtMobility::QProximityReadingData) #endif // QSENSORDATA_SIMULATOR_P_H diff --git a/src/plugins/sensors/simulator/simulator.pri b/src/plugins/sensors/simulator/simulator.pri deleted file mode 100644 index bdce2b4a..00000000 --- a/src/plugins/sensors/simulator/simulator.pri +++ /dev/null @@ -1,19 +0,0 @@ -HEADERS += simulatorcommon.h\ - simulatoraccelerometer.h\ - simulatorambientlightsensor.h\ - simulatorlightsensor.h\ - simulatorcompass.h\ - simulatorproximitysensor.h\ - simulatormagnetometer.h\ - qsensordata_simulator_p.h - -SOURCES += simulatorcommon.cpp\ - simulatoraccelerometer.cpp\ - simulatorambientlightsensor.cpp\ - simulatorlightsensor.cpp\ - simulatorcompass.cpp\ - simulatorproximitysensor.cpp\ - simulatormagnetometer.cpp\ - qsensordata_simulator.cpp\ - main.cpp - diff --git a/src/plugins/sensors/simulator/simulator.pro b/src/plugins/sensors/simulator/simulator.pro index 18f515b1..62544ce0 100644 --- a/src/plugins/sensors/simulator/simulator.pro +++ b/src/plugins/sensors/simulator/simulator.pro @@ -1,19 +1,35 @@ load(qt_module) -include(simulator.pri) - TARGET = qtsensors_simulator load(qt_plugin) DESTDIR = $$QT.sensors.plugins/sensors -#TODO what is the simulator called in Qt 5? -#qtAddLibrary(QtMobilitySimulator) - symbian:TARGET.EPOCALLOWDLLDATA = 1 -QT=core gui network sensors +QT=core gui network sensors simulator target.path += $$[QT_INSTALL_PLUGINS]/sensors INSTALLS += target +HEADERS += \ + simulatorcommon.h\ + simulatoraccelerometer.h\ + simulatorambientlightsensor.h\ + simulatorlightsensor.h\ + simulatorcompass.h\ + simulatorproximitysensor.h\ + simulatormagnetometer.h\ + qsensordata_simulator_p.h + +SOURCES += \ + simulatorcommon.cpp\ + simulatoraccelerometer.cpp\ + simulatorambientlightsensor.cpp\ + simulatorlightsensor.cpp\ + simulatorcompass.cpp\ + simulatorproximitysensor.cpp\ + simulatormagnetometer.cpp\ + qsensordata_simulator.cpp\ + main.cpp + diff --git a/src/plugins/sensors/simulator/simulatorambientlightsensor.cpp b/src/plugins/sensors/simulator/simulatorambientlightsensor.cpp index a11fc540..b36257fa 100644 --- a/src/plugins/sensors/simulator/simulatorambientlightsensor.cpp +++ b/src/plugins/sensors/simulator/simulatorambientlightsensor.cpp @@ -53,7 +53,7 @@ SimulatorAmbientLightSensor::SimulatorAmbientLightSensor(QSensor *sensor) void SimulatorAmbientLightSensor::poll() { - QAmbientLightReadingData data = get_qtAmbientLightData(); + QtMobility::QAmbientLightReadingData data = get_qtAmbientLightData(); quint64 newTimestamp; if (!data.timestamp.isValid()) newTimestamp = QDateTime::currentDateTime().toTime_t(); diff --git a/src/plugins/sensors/simulator/simulatorcommon.cpp b/src/plugins/sensors/simulator/simulatorcommon.cpp index 3b5753f5..6fb84204 100644 --- a/src/plugins/sensors/simulator/simulatorcommon.cpp +++ b/src/plugins/sensors/simulator/simulatorcommon.cpp @@ -41,92 +41,70 @@ #include "simulatorcommon.h" #include "qsensordata_simulator_p.h" -#include "mobilitysimulatorglobal.h" -#include - -#include - -#include - -using namespace QtSimulatorPrivate; - -Q_GLOBAL_STATIC(QAmbientLightReadingData, qtAmbientLightData) -Q_GLOBAL_STATIC(QLightReadingData, qtLightData) -Q_GLOBAL_STATIC(QAccelerometerReadingData, qtAccelerometerData) -Q_GLOBAL_STATIC(QMagnetometerReadingData, qtMagnetometerData) -Q_GLOBAL_STATIC(QCompassReadingData, qtCompassData) -Q_GLOBAL_STATIC(QProximityReadingData, qtProximityData) - -namespace Simulator +#include +#include + +using namespace Simulator; + +Q_GLOBAL_STATIC(QtMobility::QAmbientLightReadingData, qtAmbientLightData) +Q_GLOBAL_STATIC(QtMobility::QLightReadingData, qtLightData) +Q_GLOBAL_STATIC(QtMobility::QAccelerometerReadingData, qtAccelerometerData) +Q_GLOBAL_STATIC(QtMobility::QMagnetometerReadingData, qtMagnetometerData) +Q_GLOBAL_STATIC(QtMobility::QCompassReadingData, qtCompassData) +Q_GLOBAL_STATIC(QtMobility::QProximityReadingData, qtProximityData) +Q_GLOBAL_STATIC(SensorsConnection, sensorsConnection) + +SensorsConnection::SensorsConnection(QObject *parent) + : QObject(parent) + , mInitialDataSent(false) { - SensorsConnection::SensorsConnection(MobilityConnection *mobilityCon) - : QObject(mobilityCon) - , mConnection(mobilityCon) - , mInitialDataReceived(false) - { - qt_registerSensorTypes(); - mobilityCon->addMessageHandler(this); - } - - - void SensorsConnection::getInitialData() - { - RemoteMetacall::call(mConnection->sendSocket(), NoSync, "setRequestsSensors"); - - while (!mInitialDataReceived) { - mConnection->receiveSocket()->waitForReadyRead(100); - mConnection->onReadyRead(); - } - } - - void SensorsConnection::initialSensorsDataSent() - { - mInitialDataReceived = true; - } - - void SensorsConnection::setAmbientLightData(const QAmbientLightReadingData &data) - { - *qtAmbientLightData() = data; - } + QtMobility::qt_registerSensorTypes(); + mConnection = new Connection(Connection::Client, "QtSimulator_Mobility_ServerName1.3.0.0", 0xbeef+1, Version(1,0,0,0), this); + mWorker = mConnection->connectToServer(Connection::simulatorHostName(true), 0xbeef+1); + if (!mWorker) + qFatal("Could not connect to server"); + mWorker->addReceiver(this); + mWorker->call("setRequestsSensors"); +} - void SensorsConnection::setLightData(const QLightReadingData &data) - { - *qtLightData() = data; - } +SensorsConnection::~SensorsConnection() +{ + delete mWorker; +} - void SensorsConnection::setAccelerometerData(const QAccelerometerReadingData &data) - { - *qtAccelerometerData() = data; - } +void SensorsConnection::setAmbientLightData(const QtMobility::QAmbientLightReadingData &data) +{ + *qtAmbientLightData() = data; +} - void SensorsConnection::setMagnetometerData(const QMagnetometerReadingData &data) - { - *qtMagnetometerData() = data; - } +void SensorsConnection::setLightData(const QtMobility::QLightReadingData &data) +{ + *qtLightData() = data; +} - void SensorsConnection::setCompassData(const QCompassReadingData &data) - { - *qtCompassData() = data; - } +void SensorsConnection::setAccelerometerData(const QtMobility::QAccelerometerReadingData &data) +{ + *qtAccelerometerData() = data; +} - void SensorsConnection::setProximityData(const QProximityReadingData &data) - { - *qtProximityData() = data; - } -} // namespace +void SensorsConnection::setMagnetometerData(const QtMobility::QMagnetometerReadingData &data) +{ + *qtMagnetometerData() = data; +} -void ensureSimulatorConnection() +void SensorsConnection::setCompassData(const QtMobility::QCompassReadingData &data) { - using namespace Simulator; + *qtCompassData() = data; +} - static bool connected = false; - if (connected) - return; +void SensorsConnection::setProximityData(const QtMobility::QProximityReadingData &data) +{ + *qtProximityData() = data; +} - connected = true; - MobilityConnection *connection = MobilityConnection::instance(); - SensorsConnection *sensorsConnection = new SensorsConnection(connection); - sensorsConnection->getInitialData(); +void SensorsConnection::initialSensorsDataSent() +{ + mInitialDataSent = true; } SimulatorCommon::SimulatorCommon(QSensor *sensor) @@ -135,7 +113,7 @@ SimulatorCommon::SimulatorCommon(QSensor *sensor) { addDataRate(1, 100); sensor->setDataRate(20); - ensureSimulatorConnection(); + (void)sensorsConnection(); // Ensure this exists } void SimulatorCommon::start() @@ -164,37 +142,37 @@ void SimulatorCommon::stop() void SimulatorCommon::timerEvent(QTimerEvent * /*event*/) { + if (!sensorsConnection()->safe()) return; // wait until it's safe to read the data poll(); } -QAccelerometerReadingData get_qtAccelerometerData() +QtMobility::QAccelerometerReadingData get_qtAccelerometerData() { return *qtAccelerometerData(); } -QMagnetometerReadingData get_qtMagnetometerData() +QtMobility::QMagnetometerReadingData get_qtMagnetometerData() { return *qtMagnetometerData(); } -QAmbientLightReadingData get_qtAmbientLightData() +QtMobility::QAmbientLightReadingData get_qtAmbientLightData() { return *qtAmbientLightData(); } -QLightReadingData get_qtLightData() +QtMobility::QLightReadingData get_qtLightData() { return *qtLightData(); } -QCompassReadingData get_qtCompassData() +QtMobility::QCompassReadingData get_qtCompassData() { return *qtCompassData(); } -QProximityReadingData get_qtProximityData() +QtMobility::QProximityReadingData get_qtProximityData() { return *qtProximityData(); } -#include "moc_simulatorcommon.cpp" diff --git a/src/plugins/sensors/simulator/simulatorcommon.h b/src/plugins/sensors/simulator/simulatorcommon.h index f5ee714c..d9fad5a3 100644 --- a/src/plugins/sensors/simulator/simulatorcommon.h +++ b/src/plugins/sensors/simulator/simulatorcommon.h @@ -45,37 +45,37 @@ #include #include "qsensordata_simulator_p.h" -QT_BEGIN_HEADER - class QTimer; namespace Simulator { - class MobilityConnection; + class Connection; + class ConnectionWorker; +} - class SensorsConnection : public QObject - { - Q_OBJECT - public: - SensorsConnection(MobilityConnection *mobilityCon); - virtual ~SensorsConnection() {} +class SensorsConnection : public QObject +{ + Q_OBJECT +public: + explicit SensorsConnection(QObject *parent = 0); + virtual ~SensorsConnection(); - void getInitialData(); + bool safe() const { return mInitialDataSent; } - private slots: - void setAmbientLightData(const QtMobility::QAmbientLightReadingData &); - void setLightData(const QtMobility::QLightReadingData &); - void setAccelerometerData(const QtMobility::QAccelerometerReadingData &); - void setMagnetometerData(const QtMobility::QMagnetometerReadingData &); - void setCompassData(const QtMobility::QCompassReadingData &); - void setProximityData(const QtMobility::QProximityReadingData &); - void initialSensorsDataSent(); +public slots: + void setAmbientLightData(const QtMobility::QAmbientLightReadingData &); + void setLightData(const QtMobility::QLightReadingData &); + void setAccelerometerData(const QtMobility::QAccelerometerReadingData &); + void setMagnetometerData(const QtMobility::QMagnetometerReadingData &); + void setCompassData(const QtMobility::QCompassReadingData &); + void setProximityData(const QtMobility::QProximityReadingData &); + void initialSensorsDataSent(); - private: - MobilityConnection *mConnection; - bool mInitialDataReceived; - }; -} // end namespace Simulator +private: + Simulator::Connection *mConnection; + Simulator::ConnectionWorker *mWorker; + bool mInitialDataSent; +}; class SimulatorCommon : public QSensorBackend { @@ -91,14 +91,12 @@ private: int m_timerid; }; -QAccelerometerReadingData get_qtAccelerometerData(); -QMagnetometerReadingData get_qtMagnetometerData(); -QAmbientLightReadingData get_qtAmbientLightData(); -QLightReadingData get_qtLightData(); -QCompassReadingData get_qtCompassData(); -QProximityReadingData get_qtProximityData(); - -QT_END_HEADER +QtMobility::QAccelerometerReadingData get_qtAccelerometerData(); +QtMobility::QMagnetometerReadingData get_qtMagnetometerData(); +QtMobility::QAmbientLightReadingData get_qtAmbientLightData(); +QtMobility::QLightReadingData get_qtLightData(); +QtMobility::QCompassReadingData get_qtCompassData(); +QtMobility::QProximityReadingData get_qtProximityData(); #endif diff --git a/src/plugins/sensors/simulator/simulatorlightsensor.cpp b/src/plugins/sensors/simulator/simulatorlightsensor.cpp index dd6d96f5..d9f4ae04 100644 --- a/src/plugins/sensors/simulator/simulatorlightsensor.cpp +++ b/src/plugins/sensors/simulator/simulatorlightsensor.cpp @@ -53,7 +53,7 @@ SimulatorLightSensor::SimulatorLightSensor(QSensor *sensor) void SimulatorLightSensor::poll() { - QLightReadingData data = get_qtLightData(); + QtMobility::QLightReadingData data = get_qtLightData(); quint64 newTimestamp; if (!data.timestamp.isValid()) newTimestamp = QDateTime::currentDateTime().toTime_t(); -- cgit v1.2.3