12823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk/* 22823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * Copyright (C) 2015 The Android Open Source Project 32823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * 42823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * Licensed under the Apache License, Version 2.0 (the "License"); 52823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * you may not use this file except in compliance with the License. 62823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * You may obtain a copy of the License at 72823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * 82823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * http://www.apache.org/licenses/LICENSE-2.0 92823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * 102823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * Unless required by applicable law or agreed to in writing, software 112823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * distributed under the License is distributed on an "AS IS" BASIS, 122823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * See the License for the specific language governing permissions and 142823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk * limitations under the License. 152823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk */ 162823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 172823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk#define LOG_TAG "BpCameraServiceProxy" 182823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 192823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk#include <stdint.h> 202823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 212823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk#include <binder/Parcel.h> 222823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 232823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk#include <camera/ICameraServiceProxy.h> 242823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 252823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunknamespace android { 262823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 272823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunkclass BpCameraServiceProxy: public BpInterface<ICameraServiceProxy> { 282823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunkpublic: 29090ef604f81447eab4aa0a5b45d6307482573560Chih-Hung Hsieh explicit BpCameraServiceProxy(const sp<IBinder>& impl) 30090ef604f81447eab4aa0a5b45d6307482573560Chih-Hung Hsieh : BpInterface<ICameraServiceProxy>(impl) {} 312823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 322823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk virtual void pingForUserUpdate() { 33412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala Parcel data; 342823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk data.writeInterfaceToken(ICameraServiceProxy::getInterfaceDescriptor()); 35412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala remote()->transact(BnCameraServiceProxy::PING_FOR_USER_UPDATE, data, nullptr, 362823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk IBinder::FLAG_ONEWAY); 372823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk } 38412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala 39412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala virtual void notifyCameraState(String16 cameraId, CameraState newCameraState) { 40412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala Parcel data; 41412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala data.writeInterfaceToken(ICameraServiceProxy::getInterfaceDescriptor()); 42412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala data.writeString16(cameraId); 43412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala data.writeInt32(newCameraState); 44412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala remote()->transact(BnCameraServiceProxy::NOTIFY_CAMERA_STATE, data, nullptr, 45412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala IBinder::FLAG_ONEWAY); 46412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala } 47412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala 482823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk}; 492823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 502823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 512823ce0ce6f9d508a07de20912c93cce9165027fRuben BrunkIMPLEMENT_META_INTERFACE(CameraServiceProxy, "android.hardware.ICameraServiceProxy"); 522823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 532823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunkstatus_t BnCameraServiceProxy::onTransact(uint32_t code, const Parcel& data, Parcel* reply, 542823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk uint32_t flags) { 552823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk switch(code) { 562823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk case PING_FOR_USER_UPDATE: { 572823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk CHECK_INTERFACE(ICameraServiceProxy, data, reply); 582823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk pingForUserUpdate(); 592823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk return NO_ERROR; 602823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk } break; 61412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala case NOTIFY_CAMERA_STATE: { 62412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala CHECK_INTERFACE(ICameraServiceProxy, data, reply); 63412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala String16 cameraId = data.readString16(); 64412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala CameraState newCameraState = 65412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala static_cast<CameraState>(data.readInt32()); 66412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala notifyCameraState(cameraId, newCameraState); 67412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala return NO_ERROR; 68412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala } break; 692823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk default: 702823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk return BBinder::onTransact(code, data, reply, flags); 712823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk } 722823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk} 732823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk}; // namespace android 74