Source code

Revision control

Copy as Markdown

// Copyright (C) 2019 BogDan Vatra <bogdan@kde.org>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
// Qt-Security score:significant reason:default
#ifndef ANDROIDCOMPASS_H
#define ANDROIDCOMPASS_H
#include <QMutex>
#include <qcompass.h>
#include "sensoreventqueue.h"
class AndroidCompass : public ThreadSafeSensorBackend
{
Q_OBJECT
public:
AndroidCompass(QSensor *sensor, QObject *parent = nullptr);
~AndroidCompass() override;
void start() override;
void stop() override;
private:
void readAllEvents();
static int looperCallback(int /*fd*/, int /*events*/, void* data);
private:
QCompassReading m_reading;
const ASensor *m_accelerometer = nullptr;
const ASensor *m_magnetometer = nullptr;
ASensorEventQueue* m_sensorEventQueue = nullptr;
ASensorVector m_accelerometerEvent;
ASensorVector m_magneticEvent;
QMutex m_sensorsMutex;
};
#endif // ANDROIDCOMPASS_H