1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/*
2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2017 The Android Open Source Project
3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License.
6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at
7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and
14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License.
15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */
16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#ifndef ANDROID_VR_MANAGER_H
18edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define ANDROID_VR_MANAGER_H
19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <binder/IInterface.h>
21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android {
23921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian
243f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian// Must be kept in sync with interface defined in IVrStateCallbacks.aidl.
253f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
263f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianclass IVrStateCallbacks : public IInterface {
273f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianpublic:
28921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian    DECLARE_META_INTERFACE(VrStateCallbacks)
2999ed22412db547c59d3da08114d9d5a586442b30Glenn Kasten
3099ed22412db547c59d3da08114d9d5a586442b30Glenn Kasten    virtual void onVrStateChanged(bool enabled) = 0;
31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project};
32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
3399b49840d309727678b77403d6cc9f920111623fMathias Agopianenum VrStateCallbacksTransaction {
34076b1cc3a9b90aa5b381a1ed268ca0b548444c9bMathias Agopian    ON_VR_STATE_CHANGED = IBinder::FIRST_CALL_TRANSACTION,
3599b49840d309727678b77403d6cc9f920111623fMathias Agopian};
3699b49840d309727678b77403d6cc9f920111623fMathias Agopian
37edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass BnVrStateCallbacks : public BnInterface<IVrStateCallbacks> {
3899b49840d309727678b77403d6cc9f920111623fMathias Agopianpublic:
39375f56363a8737119ce2222dcfaacbe1cf733fc0Mathias Agopian    status_t onTransact(uint32_t code, const Parcel& data,
40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                        Parcel* reply, uint32_t flags = 0) override;
419c5a3335110769993d3fe997bdf1d594954d4304Alan Viverette};
42921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian
4390ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian
4490ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian// Must be kept in sync with interface defined in
45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// IPersistentVrStateCallbacks.aidl.
468630320433bd15aca239522e54e711ef6372ab07Mathias Agopian
478630320433bd15aca239522e54e711ef6372ab07Mathias Agopianclass IPersistentVrStateCallbacks : public IInterface {
48921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopianpublic:
49edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    DECLARE_META_INTERFACE(PersistentVrStateCallbacks)
50921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian
5192a979a92c34b7de609ce2b1662c73bb8a2728b9Mathias Agopian    virtual void onPersistentVrStateChanged(bool enabled) = 0;
52faf77cce9d9ec0238d6999b3bd0d40c71ff403c5Jamie Gennis};
534b0eba949cc026ffb2c75313042d8a7bcb3fcf86Jamie Gennis
544b0eba949cc026ffb2c75313042d8a7bcb3fcf86Jamie Gennisenum PersistentVrStateCallbacksTransaction {
55f1d8e87b09abf963cd5b6a026194c1940fadb7b4Mathias Agopian    ON_PERSISTENT_VR_STATE_CHANGED = IBinder::FIRST_CALL_TRANSACTION,
568630320433bd15aca239522e54e711ef6372ab07Mathias Agopian};
57ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian
588630320433bd15aca239522e54e711ef6372ab07Mathias Agopianclass BnPersistentVrStateCallbacks
59edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project        : public BnInterface<IPersistentVrStateCallbacks> {
60edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic:
61edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    status_t onTransact(uint32_t code, const Parcel& data,
62edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                        Parcel* reply, uint32_t flags = 0) override;
63edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project};
64d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopian
65d0566bc26fcf6ca396118701fa11900b627f2c09Mathias Agopian
66f33e4b6f13bc3ee2d2a4e1abd1ada171c70d3492Mathias Agopian// Must be kept in sync with interface defined in IVrManager.aidl.
67edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
68b7e930db175c192464cebdeb49eb56cf6dd60114Mathias Agopianclass IVrManager : public IInterface {
69e3c697fb929c856b59fa56a8e05a2a7eba187c3dMathias Agopianpublic:
70875d8e1323536e16dcfc90c9674d7ad32116a69aMathias Agopian    DECLARE_META_INTERFACE(VrManager)
71d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis
72edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    virtual void registerListener(const sp<IVrStateCallbacks>& cb) = 0;
73edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    virtual void unregisterListener(const sp<IVrStateCallbacks>& cb) = 0;
74edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    virtual void registerPersistentVrStateListener(
75edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project        const sp<IPersistentVrStateCallbacks>& cb) = 0;
76e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian    virtual void unregisterPersistentVrStateListener(
77e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian        const sp<IPersistentVrStateCallbacks>& cb) = 0;
78e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian    virtual bool getVrModeState() = 0;
79e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian};
80edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
81edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectenum VrManagerTransaction {
824f4f0943489d9113c66ac22b58cfba8c21dfa879Mathias Agopian    REGISTER_LISTENER = IBinder::FIRST_CALL_TRANSACTION,
83921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian    UNREGISTER_LISTENER,
848630320433bd15aca239522e54e711ef6372ab07Mathias Agopian    REGISTER_PERSISTENT_VR_STATE_LISTENER,
85edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    UNREGISTER_PERSISTENT_VR_STATE_LISTENER,
86edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    GET_VR_MODE_STATE,
87b6df7d0e4c2117ca476662bd52b6745b3d8a305fMathias Agopian};
88921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian
89921e6ac4b7610a178285898d191eb0e3afe906c0Mathias Agopian};  // namespace android
90118d0245ee0a3b107055782aa8b555404b6f0280Mathias Agopian
91b6df7d0e4c2117ca476662bd52b6745b3d8a305fMathias Agopian#endif // ANDROID_VR_MANAGER_H
9299ce5cdeb383216dee95af4d90e47406b0948ea1Mathias Agopian