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: 292823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk BpCameraServiceProxy(const sp<IBinder>& impl) : BpInterface<ICameraServiceProxy>(impl) {} 302823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 312823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk virtual void pingForUserUpdate() { 32412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala Parcel data; 332823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk data.writeInterfaceToken(ICameraServiceProxy::getInterfaceDescriptor()); 34412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala remote()->transact(BnCameraServiceProxy::PING_FOR_USER_UPDATE, data, nullptr, 352823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk IBinder::FLAG_ONEWAY); 362823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk } 37412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala 38412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala virtual void notifyCameraState(String16 cameraId, CameraState newCameraState) { 39412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala Parcel data; 40412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala data.writeInterfaceToken(ICameraServiceProxy::getInterfaceDescriptor()); 41412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala data.writeString16(cameraId); 42412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala data.writeInt32(newCameraState); 43412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala remote()->transact(BnCameraServiceProxy::NOTIFY_CAMERA_STATE, data, nullptr, 44412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala IBinder::FLAG_ONEWAY); 45412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala } 46412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala 472823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk}; 482823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 492823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 502823ce0ce6f9d508a07de20912c93cce9165027fRuben BrunkIMPLEMENT_META_INTERFACE(CameraServiceProxy, "android.hardware.ICameraServiceProxy"); 512823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk 522823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunkstatus_t BnCameraServiceProxy::onTransact(uint32_t code, const Parcel& data, Parcel* reply, 532823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk uint32_t flags) { 542823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk switch(code) { 552823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk case PING_FOR_USER_UPDATE: { 562823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk CHECK_INTERFACE(ICameraServiceProxy, data, reply); 572823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk pingForUserUpdate(); 582823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk return NO_ERROR; 592823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk } break; 60412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala case NOTIFY_CAMERA_STATE: { 61412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala CHECK_INTERFACE(ICameraServiceProxy, data, reply); 62412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala String16 cameraId = data.readString16(); 63412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala CameraState newCameraState = 64412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala static_cast<CameraState>(data.readInt32()); 65412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala notifyCameraState(cameraId, newCameraState); 66412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala return NO_ERROR; 67412fe56cd7cf7d73bc5d2bcc3f635bc650d18de9Eino-Ville Talvala } break; 682823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk default: 692823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk return BBinder::onTransact(code, data, reply, flags); 702823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk } 712823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk} 722823ce0ce6f9d508a07de20912c93cce9165027fRuben Brunk}; // namespace android 73