diff options
author | Brian Stack <bstack@google.com> | 2018-10-16 14:51:34 -0700 |
---|---|---|
committer | Brian Stack <bstack@google.com> | 2018-10-24 16:15:59 -0700 |
commit | 60fcdcf635736cecbadcbbbd26e9858af671bbbe (patch) | |
tree | ba797028f14661a01c140255d685e31032f95416 | |
parent | 85d87d6b43015f238fd75bb8efa834f021f118e5 (diff) |
Create Sensors HAL 2.0 Default Implementation
Auto-generated default implementation for Sensors HAL 2.0 via
hidl-gen and cleaned up formatting.
Modifies Android.bp for binderized HAL implementation which includes:
- Adding service.cpp
- Adding android.hardware.sensors@2.0-service.rc
android.hardware.sensors@2.0-service.rc was copied and updated from
the sensors@1.0 default implementation.
Bug: 111070257
Test: Builds
Change-Id: I6a939511ff6b4011cfe95bd26c3093ad18f26f5a
-rw-r--r-- | sensors/2.0/default/Android.bp | 34 | ||||
-rw-r--r-- | sensors/2.0/default/OWNERS | 2 | ||||
-rw-r--r-- | sensors/2.0/default/Sensors.cpp | 93 | ||||
-rw-r--r-- | sensors/2.0/default/Sensors.h | 79 | ||||
-rw-r--r-- | sensors/2.0/default/android.hardware.sensors@2.0-service.rc | 5 | ||||
-rw-r--r-- | sensors/2.0/default/service.cpp | 41 |
6 files changed, 254 insertions, 0 deletions
diff --git a/sensors/2.0/default/Android.bp b/sensors/2.0/default/Android.bp new file mode 100644 index 0000000000..45de61ef12 --- /dev/null +++ b/sensors/2.0/default/Android.bp @@ -0,0 +1,34 @@ +// +// Copyright (C) 2018 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. + +cc_binary { + name: "android.hardware.sensors@2.0-service", + defaults: ["hidl_defaults"], + vendor: true, + relative_install_path: "hw", + srcs: [ + "service.cpp", + "Sensors.cpp", + ], + init_rc: ["android.hardware.sensors@2.0-service.rc"], + shared_libs: [ + "android.hardware.sensors@1.0", + "android.hardware.sensors@2.0", + "libhidlbase", + "libhidltransport", + "liblog", + "libutils", + ], +} diff --git a/sensors/2.0/default/OWNERS b/sensors/2.0/default/OWNERS new file mode 100644 index 0000000000..2031d848cf --- /dev/null +++ b/sensors/2.0/default/OWNERS @@ -0,0 +1,2 @@ +bduddie@google.com +bstack@google.com diff --git a/sensors/2.0/default/Sensors.cpp b/sensors/2.0/default/Sensors.cpp new file mode 100644 index 0000000000..181349d4fb --- /dev/null +++ b/sensors/2.0/default/Sensors.cpp @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2018 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. + */ + +#include "Sensors.h" + +namespace android { +namespace hardware { +namespace sensors { +namespace V2_0 { +namespace implementation { + +using ::android::hardware::sensors::V1_0::Event; +using ::android::hardware::sensors::V1_0::OperationMode; +using ::android::hardware::sensors::V1_0::RateLevel; +using ::android::hardware::sensors::V1_0::Result; +using ::android::hardware::sensors::V1_0::SharedMemInfo; + +// Methods from ::android::hardware::sensors::V2_0::ISensors follow. +Return<void> Sensors::getSensorsList(getSensorsList_cb /* _hidl_cb */) { + // TODO implement + return Void(); +} + +Return<Result> Sensors::setOperationMode(OperationMode /* mode */) { + // TODO implement + return Result{}; +} + +Return<Result> Sensors::activate(int32_t /* sensorHandle */, bool /* enabled */) { + // TODO implement + return Result{}; +} + +Return<Result> Sensors::initialize( + const ::android::hardware::MQDescriptorSync<Event>& /* eventQueueDescriptor */, + const ::android::hardware::MQDescriptorSync<uint32_t>& /* wakeLockDescriptor */, + const sp<ISensorsCallback>& /* sensorsCallback */) { + // TODO implement + return Result{}; +} + +Return<Result> Sensors::batch(int32_t /* sensorHandle */, int64_t /* samplingPeriodNs */, + int64_t /* maxReportLatencyNs */) { + // TODO implement + return Result{}; +} + +Return<Result> Sensors::flush(int32_t /* sensorHandle */) { + // TODO implement + return Result{}; +} + +Return<Result> Sensors::injectSensorData(const Event& /* event */) { + // TODO implement + return Result{}; +} + +Return<void> Sensors::registerDirectChannel(const SharedMemInfo& /* mem */, + registerDirectChannel_cb /* _hidl_cb */) { + // TODO implement + return Void(); +} + +Return<Result> Sensors::unregisterDirectChannel(int32_t /* channelHandle */) { + // TODO implement + return Result{}; +} + +Return<void> Sensors::configDirectReport(int32_t /* sensorHandle */, int32_t /* channelHandle */, + RateLevel /* rate */, + configDirectReport_cb /* _hidl_cb */) { + // TODO implement + return Void(); +} + +} // namespace implementation +} // namespace V2_0 +} // namespace sensors +} // namespace hardware +} // namespace android diff --git a/sensors/2.0/default/Sensors.h b/sensors/2.0/default/Sensors.h new file mode 100644 index 0000000000..1596aa8a89 --- /dev/null +++ b/sensors/2.0/default/Sensors.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2018 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_0_SENSORS_H +#define ANDROID_HARDWARE_SENSORS_V2_0_SENSORS_H + +#include <android/hardware/sensors/2.0/ISensors.h> +#include <hidl/MQDescriptor.h> +#include <hidl/Status.h> + +namespace android { +namespace hardware { +namespace sensors { +namespace V2_0 { +namespace implementation { + +using ::android::sp; +using ::android::hardware::hidl_array; +using ::android::hardware::hidl_memory; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; + +struct Sensors : public ISensors { + using Event = ::android::hardware::sensors::V1_0::Event; + using OperationMode = ::android::hardware::sensors::V1_0::OperationMode; + using RateLevel = ::android::hardware::sensors::V1_0::RateLevel; + using Result = ::android::hardware::sensors::V1_0::Result; + using SharedMemInfo = ::android::hardware::sensors::V1_0::SharedMemInfo; + + // Methods from ::android::hardware::sensors::V2_0::ISensors follow. + Return<void> getSensorsList(getSensorsList_cb _hidl_cb) override; + + Return<Result> setOperationMode(OperationMode mode) override; + + Return<Result> activate(int32_t sensorHandle, bool enabled) override; + + Return<Result> initialize( + const ::android::hardware::MQDescriptorSync<Event>& eventQueueDescriptor, + const ::android::hardware::MQDescriptorSync<uint32_t>& wakeLockDescriptor, + const sp<ISensorsCallback>& sensorsCallback) override; + + Return<Result> batch(int32_t sensorHandle, int64_t samplingPeriodNs, + int64_t maxReportLatencyNs) override; + + Return<Result> flush(int32_t sensorHandle) override; + + Return<Result> injectSensorData(const Event& event) override; + + Return<void> registerDirectChannel(const SharedMemInfo& mem, + registerDirectChannel_cb _hidl_cb) override; + + Return<Result> unregisterDirectChannel(int32_t channelHandle) override; + + Return<void> configDirectReport(int32_t sensorHandle, int32_t channelHandle, RateLevel rate, + configDirectReport_cb _hidl_cb) override; +}; + +} // namespace implementation +} // namespace V2_0 +} // namespace sensors +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_SENSORS_V2_0_SENSORS_H diff --git a/sensors/2.0/default/android.hardware.sensors@2.0-service.rc b/sensors/2.0/default/android.hardware.sensors@2.0-service.rc new file mode 100644 index 0000000000..321d760b0d --- /dev/null +++ b/sensors/2.0/default/android.hardware.sensors@2.0-service.rc @@ -0,0 +1,5 @@ +service vendor.sensors-hal-2-0 /vendor/bin/hw/android.hardware.sensors@2.0-service + class hal + user system + group system + rlimit rtprio 10 10 diff --git a/sensors/2.0/default/service.cpp b/sensors/2.0/default/service.cpp new file mode 100644 index 0000000000..5c13e331d0 --- /dev/null +++ b/sensors/2.0/default/service.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2018 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. + */ + +#define LOG_TAG "android.hardware.sensors@2.0-service" + +#include <android/hardware/sensors/2.0/ISensors.h> +#include <hidl/HidlTransportSupport.h> +#include <log/log.h> +#include <utils/StrongPointer.h> +#include "Sensors.h" + +using android::hardware::configureRpcThreadpool; +using android::hardware::joinRpcThreadpool; +using android::hardware::sensors::V2_0::ISensors; +using android::hardware::sensors::V2_0::implementation::Sensors; + +int main(int /* argc */, char** /* argv */) { + configureRpcThreadpool(1, true); + + android::sp<ISensors> sensors = new Sensors(); + if (sensors->registerAsService() != ::android::OK) { + ALOGE("Failed to register Sensors HAL instance"); + return -1; + } + + joinRpcThreadpool(); + return 1; // joinRpcThreadpool shouldn't exit +} |