18fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner/*
28fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * Copyright (C) 2016 The Android Open Source Project
38fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner *
48fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * Licensed under the Apache License, Version 2.0 (the "License");
58fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * you may not use this file except in compliance with the License.
68fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * You may obtain a copy of the License at
78fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner *
88fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner *      http://www.apache.org/licenses/LICENSE-2.0
98fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner *
108fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * Unless required by applicable law or agreed to in writing, software
118fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * distributed under the License is distributed on an "AS IS" BASIS,
128fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * See the License for the specific language governing permissions and
148fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner * limitations under the License.
158fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner */
168fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
178fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner#define LOG_TAG "VrService"
188fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
193ff5260601184d52a8c9a028d6a3af150d2a6757Mark Salyzyn#include <log/log.h>
203ff5260601184d52a8c9a028d6a3af150d2a6757Mark Salyzyn
218fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner#include <hardware/hardware.h>
228fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner#include <hardware/vr.h>
233ff5260601184d52a8c9a028d6a3af150d2a6757Mark Salyzyn
248fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner#include "Vr.h"
258fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
268fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donnernamespace android {
278fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donnernamespace hardware {
288fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donnernamespace vr {
298fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donnernamespace V1_0 {
308fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donnernamespace implementation {
318fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
328fd4c6141a640798f4f9ac9b96395727cc681fdeCraig DonnerVr::Vr(vr_module_t *device) : mDevice(device) {}
338fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
348fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner// Methods from ::android::hardware::vr::V1_0::IVr follow.
358fd4c6141a640798f4f9ac9b96395727cc681fdeCraig DonnerReturn<void> Vr::init() {
368fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    mDevice->init(mDevice);
378fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    return Void();
388fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner}
398fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
408fd4c6141a640798f4f9ac9b96395727cc681fdeCraig DonnerReturn<void> Vr::setVrMode(bool enabled)  {
418fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    mDevice->set_vr_mode(mDevice, enabled);
428fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    return Void();
438fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner}
448fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
45aa011ee002adb92a9694706ec08626e0b2ad9572Chris PhoenixIVr* HIDL_FETCH_IVr(const char * /*name*/) {
468fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    const hw_module_t *hw_module = NULL;
478fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
48aa011ee002adb92a9694706ec08626e0b2ad9572Chris Phoenix    int ret = hw_get_module(VR_HARDWARE_MODULE_ID, &hw_module);
498fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    if (ret == 0) {
508fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner        return new Vr(reinterpret_cast<vr_module_t*>(
518fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner                const_cast<hw_module_t*>(hw_module)));
528fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    } else {
53aa011ee002adb92a9694706ec08626e0b2ad9572Chris Phoenix        ALOGE("hw_get_module %s failed: %d", VR_HARDWARE_MODULE_ID, ret);
548fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner        return nullptr;
558fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner    }
568fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner}
578fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner
588fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner} // namespace implementation
598fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner}  // namespace V1_0
608fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner}  // namespace vr
618fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner}  // namespace hardware
628fd4c6141a640798f4f9ac9b96395727cc681fdeCraig Donner}  // namespace android
63