Revision control

++ // Copyright (C) 2016 The Qt Company Ltd.
++ // 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
++
++ #include "qaccelerometer.h"
++ #include "qaccelerometer_p.h"
++
++ QT_BEGIN_NAMESPACE
++
++ IMPLEMENT_READING(QAccelerometerReading)
++
++ /*!
++ \class QAccelerometerReading
++ \ingroup sensors_reading
++ \inmodule QtSensors
++ \since 5.1
++
++ \brief The QAccelerometerReading class reports on linear acceleration
++ along the X, Y and Z axes.
++
++ \section1 QAccelerometerReading Units
++ The scale of the values is meters per second squared.
++ The axes are arranged as follows.
++
++ \image sensors-coordinates2.jpg
++ {Device with positive and negative x, y, and z
++ acceleration axes extending in all six directions}
++
++ A monoblock device sitting at rest, face up on a desk will experience
++ a force of approximately 9.8 on the Z axis (ie. towards the roof).
++ This is the proper acceleration the device experiences relative to
++ freefall.
++ */
++
++ /*!
++ \property QAccelerometerReading::x
++ \brief the acceleration on the X axis.
++
++ The scale of the values is meters per second squared.
++ \sa {QAccelerometerReading Units}
++ */
++
++ qreal QAccelerometerReading::x() const
++ {
++ return d->x;
++ }
++
++ /*!
++ Sets the acceleration on the X axis to \a x.
++ */
++ void QAccelerometerReading::setX(qreal x)
++ {
++ d->x = x;
++ }
++
++ /*!
++ \property QAccelerometerReading::y
++ \brief the acceleration on the Y axis.
++
++ The scale of the values is meters per second squared.
++ \sa {QAccelerometerReading Units}
++ */
++
++ qreal QAccelerometerReading::y() const
++ {
++ return d->y;
++ }
++
++ /*!
++ Sets the acceleration on the Y axis to \a y.
++ */
++ void QAccelerometerReading::setY(qreal y)
++ {
++ d->y = y;
++ }
++
++ /*!
++ \property QAccelerometerReading::z
++ \brief the acceleration on the Z axis.
++
++ The scale of the values is meters per second squared.
++ \sa {QAccelerometerReading Units}
++ */
++
++ qreal QAccelerometerReading::z() const
++ {
++ return d->z;
++ }
++
++ /*!
++ Sets the acceleration on the Z axis to \a z.
++ */
++ void QAccelerometerReading::setZ(qreal z)
++ {
++ d->z = z;
++ }
++
++ // =====================================================================
++
++ /*!
++ \class QAccelerometerFilter
++ \ingroup sensors_filter
++ \inmodule QtSensors
++ \since 5.1
++
++ \brief The QAccelerometerFilter class is a convenience wrapper around QSensorFilter.
++
++ The only difference is that the filter() method features a pointer to QAccelerometerReading
++ instead of QSensorReading.
++ */
++
++ /*!
++ \fn QAccelerometerFilter::filter(QAccelerometerReading *reading)
++
++ Called when \a reading changes. Returns false to prevent the reading from propagating.
++
++ \sa QSensorFilter::filter()
++ */
++
++ bool QAccelerometerFilter::filter(QSensorReading *reading)
++ {
++ return filter(static_cast<QAccelerometerReading*>(reading));
++ }
++
++ char const * const QAccelerometer::sensorType("QAccelerometer");
++
++ /*!
++ \enum QAccelerometer::AccelerationMode
++
++ \brief This enum represents the acceleration mode of an acceleration sensor.
++
++ The acceleration mode controls how the sensor reports acceleration. QAccelerometer::Combined
++ is the only mode in which the values can be directly physically measured, the others are an
++ approximation.
++
++ \value Combined Both the acceleration caused by gravity and the acceleration caused by the
++ user moving the device is reported combined.
++ \value Gravity Only the acceleration caused by gravity is reported. Movements of the device
++ caused by the user have no effect other than changing the direction when the
++ device is rotated.
++ \value User Only the acceleration caused by the user moving the device is reported, the
++ effect of gravity is canceled out. A device at rest therefore should report
++ values of, or close to, zero.
++ In other APIs, this mode might be known as \e {linear acceleration}.
++
++ \sa QAccelerometer::accelerationMode
++ \since 5.1
++ */
++
++ /*!
++ \class QAccelerometer
++ \ingroup sensors_type
++ \inmodule QtSensors
++ \since 5.1
++
++ \brief The QAccelerometer class is a convenience wrapper around QSensor.
++
++ The only behavioural difference is that this class sets the type properly.
++
++ It also supports changing the acceleration mode, which controls whether the force of gravity
++ is included in the accelerometer values or not.
++
++ Furthermore, this class features a reading() function that returns a QAccelerometerReading
++ instead of a QSensorReading.
++
++ For details about how the sensor works, see \l QAccelerometerReading.
++
++ \sa QAccelerometerReading
++ */
++
++ /*!
++ Construct the sensor as a child of \a parent.
++ */
++ QAccelerometer::QAccelerometer(QObject *parent)
++ : QSensor(QAccelerometer::sensorType, *new QAccelerometerPrivate, parent)
++ {
++ }
++
++ /*!
++ Destroy the sensor. Stops the sensor if it has not already been stopped.
++ */
++ QAccelerometer::~QAccelerometer()
++ {
++ }
++
++ /*!
++ \property QAccelerometer::accelerationMode
++ \brief The acceleration mode controls how acceleration values are reported.
++ \since 5.1
++
++ The acceleration mode controls how the acceleration sensor reports its values.
++ The default mode is QAccelerometer::Combined, which means the acceleration caused
++ by gravity is included in the reported values.
++
++ Acceleration caused by gravity and acceleration caused by the user moving the device
++ are physically impossible to distinguish because of general relativity. Most devices use
++ sensor fusion to figure out which parts of the acceleration is caused by gravity, for example
++ by using a rotation sensor to calculate the gravity direction and assuming a fixed magnitude
++ for gravity. Therefore the result is only an approximation and may be inaccurate.
++ The QAccelerometer::Combined mode is the most accurate one, as it does not involve approximating
++ the gravity.
++
++ Not all backends and devices might support setting the acceleration mode. For those cases, the
++ default mode QAccelerometer::Combined is used, changing it has no effect.
++ */
++ QAccelerometer::AccelerationMode QAccelerometer::accelerationMode() const
++ {
++ Q_D(const QAccelerometer);
++ return d->accelerationMode;
++ }
++
++ /*!
++ Sets the acceleration mode to \a accelerationMode.
++ \since 5.1
++ */
++ void QAccelerometer::setAccelerationMode(QAccelerometer::AccelerationMode accelerationMode)
++ {
++ Q_D(QAccelerometer);
++ if (d->accelerationMode != accelerationMode) {
++ d->accelerationMode = accelerationMode;
++ emit accelerationModeChanged(d->accelerationMode);
++ }
++ }
++
++ /*!
++ \fn QAccelerometer::reading() const
++
++ Returns the reading class for this sensor.
++
++ \sa QSensor::reading()
++ */
++
++ QAccelerometerReading *QAccelerometer::reading() const
++ {
++ return static_cast<QAccelerometerReading*>(QSensor::reading());
++ }
++
++ /*!
++ \fn QAccelerometer::accelerationModeChanged(AccelerationMode accelerationMode)
++
++ Emitted when the \a accelerationMode was changed.
++
++ \since 5.1
++ */
++
++ QT_END_NAMESPACE
++
++ #include "moc_qaccelerometer.cpp"