/* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_HARDWARE_SENSORS_V2_1_H #define ANDROID_HARDWARE_SENSORS_V2_1_H #include "Sensors.h" #include "EventMessageQueueWrapper.h" #include namespace android { namespace hardware { namespace sensors { namespace V2_1 { namespace implementation { using Result = ::android::hardware::sensors::V1_0::Result; using Sensors = ::android::hardware::sensors::V2_X::implementation::Sensors; class ISensorsCallbackWrapper : public V2_0::ISensorsCallback { public: ISensorsCallbackWrapper(const sp& callback) : mCallback(callback) {} Return onDynamicSensorsConnected(const hidl_vec& sensorInfos) override { return mCallback->onDynamicSensorsConnected_2_1(convertToNewSensorInfos(sensorInfos)); } Return onDynamicSensorsDisconnected(const hidl_vec& sensorHandles) override { return mCallback->onDynamicSensorsDisconnected(sensorHandles); } private: sp mCallback; }; struct SensorsV2_1 : public Sensors { SensorsV2_1(); // Methods from ::android::hardware::sensors::V2_1::ISensors follow. Return getSensorsList_2_1(ISensors::getSensorsList_2_1_cb _hidl_cb) override; Return getSensorsList(V2_0::ISensors::getSensorsList_cb _hidl_cb) override { std::vector sensors; for (const auto &sensor : mSensors) { auto &info = sensor.second->getSensorInfo(); if (info.type != SensorType::HINGE_ANGLE) { sensors.push_back(V2_1::implementation::convertToOldSensorInfo( sensor.second->getSensorInfo())); } } // Call the HIDL callback with the SensorInfo _hidl_cb(sensors); return Void(); } Return initialize_2_1( const ::android::hardware::MQDescriptorSync& eventQueueDescriptor, const ::android::hardware::MQDescriptorSync& wakeLockDescriptor, const sp& sensorsCallback) override; Return injectSensorData_2_1(const V2_1::Event& event) override; private: sp mCallbackWrapper; }; } // namespace implementation } // namespace V2_1 } // namespace sensors } // namespace hardware } // namespace android #endif // ANDROID_HARDWARE_SENSORS_V2_1_H