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