142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li/* 242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * Copyright (C) 2011 The Android Open Source Project 342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * 442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * Licensed under the Apache License, Version 2.0 (the "License"); 542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * you may not use this file except in compliance with the License. 642419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * You may obtain a copy of the License at 742419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * 842419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * http://www.apache.org/licenses/LICENSE-2.0 942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * 1042419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * Unless required by applicable law or agreed to in writing, software 1142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * distributed under the License is distributed on an "AS IS" BASIS, 1242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * See the License for the specific language governing permissions and 1442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li * limitations under the License. 1542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li */ 1642419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 1742419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li//#define LOG_NDEBUG 0 1842419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li#define LOG_TAG "ICameraRecordingProxyListener" 1942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li#include <camera/ICameraRecordingProxyListener.h> 2042419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li#include <binder/IMemory.h> 2142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li#include <binder/Parcel.h> 2242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li#include <utils/Log.h> 2342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 2442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Linamespace android { 2542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 2642419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Lienum { 2742419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li DATA_CALLBACK_TIMESTAMP = IBinder::FIRST_CALL_TRANSACTION, 2842419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li}; 2942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 3042419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Liclass BpCameraRecordingProxyListener: public BpInterface<ICameraRecordingProxyListener> 3142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li{ 3242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Lipublic: 3342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li BpCameraRecordingProxyListener(const sp<IBinder>& impl) 3442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li : BpInterface<ICameraRecordingProxyListener>(impl) 3542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li { 3642419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li } 3742419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 3842419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& imageData) 3942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li { 4042419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li LOGV("dataCallback"); 4142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li Parcel data, reply; 4242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li data.writeInterfaceToken(ICameraRecordingProxyListener::getInterfaceDescriptor()); 4342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li data.writeInt64(timestamp); 4442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li data.writeInt32(msgType); 4542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li data.writeStrongBinder(imageData->asBinder()); 4642419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li remote()->transact(DATA_CALLBACK_TIMESTAMP, data, &reply, IBinder::FLAG_ONEWAY); 4742419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li } 4842419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li}; 4942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 5042419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng LiIMPLEMENT_META_INTERFACE(CameraRecordingProxyListener, "android.hardware.ICameraRecordingProxyListener"); 5142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 5242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li// ---------------------------------------------------------------------- 5342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 5442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Listatus_t BnCameraRecordingProxyListener::onTransact( 5542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 5642419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li{ 5742419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li switch(code) { 5842419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li case DATA_CALLBACK_TIMESTAMP: { 5942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li LOGV("DATA_CALLBACK_TIMESTAMP"); 6042419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li CHECK_INTERFACE(ICameraRecordingProxyListener, data, reply); 6142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li nsecs_t timestamp = data.readInt64(); 6242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li int32_t msgType = data.readInt32(); 6342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder()); 6442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li dataCallbackTimestamp(timestamp, msgType, imageData); 6542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li return NO_ERROR; 6642419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li } break; 6742419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li default: 6842419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li return BBinder::onTransact(code, data, reply, flags); 6942419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li } 7042419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li} 7142419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 7242419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li// ---------------------------------------------------------------------------- 7342419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 7442419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li}; // namespace android 7542419ce28a09eb63e29a8fef87e6f5534f41902fWu-cheng Li 76