Source code
Revision control
Copy as Markdown
// Copyright (C) 2025 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
#include <QtCore/private/qohoscommon_p.h>
#include <QtSensors/qaccelerometer.h>
#include <QtSensors/qgyroscope.h>
#include <QtSensors/qlightsensor.h>
#include <QtSensors/qmagnetometer.h>
#include <QtSensors/qrotationsensor.h>
#include <algorithm>
#include <cstring>
#include <ohossensorutils.h>
namespace {
struct SensorTypeMapping
{
::Sensor_Type ohosType;
const char *qtType;
};
const SensorTypeMapping sensorTypeTable[] = {
{::SENSOR_TYPE_ACCELEROMETER, QAccelerometer::sensorType},
{::SENSOR_TYPE_GYROSCOPE, QGyroscope::sensorType},
{::SENSOR_TYPE_AMBIENT_LIGHT, QLightSensor::sensorType},
{::SENSOR_TYPE_MAGNETIC_FIELD, QMagnetometer::sensorType},
{::SENSOR_TYPE_ORIENTATION, QRotationSensor::sensorType},
};
}
const char *tryMapOhosToQtSensorType(::Sensor_Type sensorType)
{
auto it = std::find_if(
std::begin(sensorTypeTable),
std::end(sensorTypeTable),
[sensorType](const SensorTypeMapping &entry) {
return entry.ohosType == sensorType;
}
);
return (it != std::end(sensorTypeTable))
? it->qtType
: nullptr;
}
std::optional<::Sensor_Type> tryMapQtToOhosSensorType(const char *qtType)
{
auto it = std::find_if(
std::begin(sensorTypeTable),
std::end(sensorTypeTable),
[qtType](const SensorTypeMapping &entry) {
return std::strcmp(entry.qtType, qtType) == 0;
}
);
return (it != std::end(sensorTypeTable))
? std::optional(it->ohosType)
: std::nullopt;
}