195c7a0636763c0861d46425709befe90a3919c04Yifan Hong/*
295c7a0636763c0861d46425709befe90a3919c04Yifan Hong * Copyright (C) 2017 The Android Open Source Project
395c7a0636763c0861d46425709befe90a3919c04Yifan Hong *
495c7a0636763c0861d46425709befe90a3919c04Yifan Hong * Licensed under the Apache License, Version 2.0 (the "License");
595c7a0636763c0861d46425709befe90a3919c04Yifan Hong * you may not use this file except in compliance with the License.
695c7a0636763c0861d46425709befe90a3919c04Yifan Hong * You may obtain a copy of the License at
795c7a0636763c0861d46425709befe90a3919c04Yifan Hong *
895c7a0636763c0861d46425709befe90a3919c04Yifan Hong *      http://www.apache.org/licenses/LICENSE-2.0
995c7a0636763c0861d46425709befe90a3919c04Yifan Hong *
1095c7a0636763c0861d46425709befe90a3919c04Yifan Hong * Unless required by applicable law or agreed to in writing, software
1195c7a0636763c0861d46425709befe90a3919c04Yifan Hong * distributed under the License is distributed on an "AS IS" BASIS,
1295c7a0636763c0861d46425709befe90a3919c04Yifan Hong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1395c7a0636763c0861d46425709befe90a3919c04Yifan Hong * See the License for the specific language governing permissions and
1495c7a0636763c0861d46425709befe90a3919c04Yifan Hong * limitations under the License.
1595c7a0636763c0861d46425709befe90a3919c04Yifan Hong */
1695c7a0636763c0861d46425709befe90a3919c04Yifan Hong
1795c7a0636763c0861d46425709befe90a3919c04Yifan Hong#ifndef ANDROID_FRAMEWORKS_SENSORSERVICE_V1_0_EVENTQUEUE_H
1895c7a0636763c0861d46425709befe90a3919c04Yifan Hong#define ANDROID_FRAMEWORKS_SENSORSERVICE_V1_0_EVENTQUEUE_H
1995c7a0636763c0861d46425709befe90a3919c04Yifan Hong
2095c7a0636763c0861d46425709befe90a3919c04Yifan Hong#include "SensorManager.h"
2195c7a0636763c0861d46425709befe90a3919c04Yifan Hong
2295c7a0636763c0861d46425709befe90a3919c04Yifan Hong#include <android/frameworks/sensorservice/1.0/IEventQueue.h>
2395c7a0636763c0861d46425709befe90a3919c04Yifan Hong#include <android/frameworks/sensorservice/1.0/IEventQueueCallback.h>
2495c7a0636763c0861d46425709befe90a3919c04Yifan Hong#include <hidl/MQDescriptor.h>
2595c7a0636763c0861d46425709befe90a3919c04Yifan Hong#include <hidl/Status.h>
2695c7a0636763c0861d46425709befe90a3919c04Yifan Hong#include <sensor/SensorManager.h>
2795c7a0636763c0861d46425709befe90a3919c04Yifan Hong
2895c7a0636763c0861d46425709befe90a3919c04Yifan Hongnamespace android {
2995c7a0636763c0861d46425709befe90a3919c04Yifan Hongnamespace frameworks {
3095c7a0636763c0861d46425709befe90a3919c04Yifan Hongnamespace sensorservice {
3195c7a0636763c0861d46425709befe90a3919c04Yifan Hongnamespace V1_0 {
3295c7a0636763c0861d46425709befe90a3919c04Yifan Hongnamespace implementation {
3395c7a0636763c0861d46425709befe90a3919c04Yifan Hong
3495c7a0636763c0861d46425709befe90a3919c04Yifan Hongusing ::android::frameworks::sensorservice::V1_0::IEventQueue;
3595c7a0636763c0861d46425709befe90a3919c04Yifan Hongusing ::android::frameworks::sensorservice::V1_0::IEventQueueCallback;
3695c7a0636763c0861d46425709befe90a3919c04Yifan Hongusing ::android::frameworks::sensorservice::V1_0::Result;
3795c7a0636763c0861d46425709befe90a3919c04Yifan Hongusing ::android::hardware::Return;
3895c7a0636763c0861d46425709befe90a3919c04Yifan Hongusing ::android::sp;
3995c7a0636763c0861d46425709befe90a3919c04Yifan Hong
4095c7a0636763c0861d46425709befe90a3919c04Yifan Hongstruct EventQueue final : public IEventQueue {
4195c7a0636763c0861d46425709befe90a3919c04Yifan Hong    EventQueue(
4295c7a0636763c0861d46425709befe90a3919c04Yifan Hong        sp<IEventQueueCallback> callback,
4395c7a0636763c0861d46425709befe90a3919c04Yifan Hong        sp<::android::Looper> looper,
4495c7a0636763c0861d46425709befe90a3919c04Yifan Hong        sp<::android::SensorEventQueue> internalQueue);
4506d46fda66f7e6cc144a195ac6dc065bca2e3616Yifan Hong    void onLastStrongRef(const void *) override;
4695c7a0636763c0861d46425709befe90a3919c04Yifan Hong
4795c7a0636763c0861d46425709befe90a3919c04Yifan Hong    // Methods from ::android::frameworks::sensorservice::V1_0::IEventQueue follow.
4895c7a0636763c0861d46425709befe90a3919c04Yifan Hong    Return<Result> enableSensor(int32_t sensorHandle, int32_t samplingPeriodUs, int64_t maxBatchReportLatencyUs) override;
4995c7a0636763c0861d46425709befe90a3919c04Yifan Hong    Return<Result> disableSensor(int32_t sensorHandle) override;
5095c7a0636763c0861d46425709befe90a3919c04Yifan Hong
5195c7a0636763c0861d46425709befe90a3919c04Yifan Hongprivate:
5295c7a0636763c0861d46425709befe90a3919c04Yifan Hong    friend class EventQueueLooperCallback;
5395c7a0636763c0861d46425709befe90a3919c04Yifan Hong    sp<::android::Looper> mLooper;
5495c7a0636763c0861d46425709befe90a3919c04Yifan Hong    sp<::android::SensorEventQueue> mInternalQueue;
5595c7a0636763c0861d46425709befe90a3919c04Yifan Hong};
5695c7a0636763c0861d46425709befe90a3919c04Yifan Hong
5795c7a0636763c0861d46425709befe90a3919c04Yifan Hong}  // namespace implementation
5895c7a0636763c0861d46425709befe90a3919c04Yifan Hong}  // namespace V1_0
5995c7a0636763c0861d46425709befe90a3919c04Yifan Hong}  // namespace sensorservice
6095c7a0636763c0861d46425709befe90a3919c04Yifan Hong}  // namespace frameworks
6195c7a0636763c0861d46425709befe90a3919c04Yifan Hong}  // namespace android
6295c7a0636763c0861d46425709befe90a3919c04Yifan Hong
6395c7a0636763c0861d46425709befe90a3919c04Yifan Hong#endif  // ANDROID_FRAMEWORKS_SENSORSERVICE_V1_0_EVENTQUEUE_H
64