Revision control
++ // 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;
++ }