summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/android/androidcompass.h
blob: 592d641c6d9463ac52f86d9638d153d24ea1057f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 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

#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