Camera: Switch camera2 to auto-gen C++ binder interfaces
- Move camera service AIDL files to frameworks/av
- Build C++ interface stubs with AIDL tools
- Add necessary native-side parcelables and update existing ones
- Remove manually-written stubs, rearrange remaining manual stubs
- Adjust implementations to work with auto-generated stubs
- Adjust method signatures for auto-gen differences
- Add rich error messages using binder::Status
Bug: 25091611
Change-Id: I6f69f34b9d1a3f8d1fb7db87357363f8fa8483ff
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp
index 5ac5743..4eb7b03 100644
--- a/services/camera/libcameraservice/api1/Camera2Client.cpp
+++ b/services/camera/libcameraservice/api1/Camera2Client.cpp
@@ -24,6 +24,7 @@
#include <cutils/properties.h>
#include <gui/Surface.h>
+#include <android/hardware/camera2/ICameraDeviceCallbacks.h>
#include "api1/Camera2Client.h"
@@ -46,7 +47,7 @@
// Interface used by CameraService
Camera2Client::Camera2Client(const sp<CameraService>& cameraService,
- const sp<ICameraClient>& cameraClient,
+ const sp<hardware::ICameraClient>& cameraClient,
const String16& clientPackageName,
int cameraId,
int cameraFacing,
@@ -367,15 +368,16 @@
// ICamera interface
-void Camera2Client::disconnect() {
+binder::Status Camera2Client::disconnect() {
ATRACE_CALL();
Mutex::Autolock icl(mBinderSerializationLock);
+ binder::Status res = binder::Status::ok();
// Allow both client and the cameraserver to disconnect at all times
int callingPid = getCallingPid();
- if (callingPid != mClientPid && callingPid != mServicePid) return;
+ if (callingPid != mClientPid && callingPid != mServicePid) return res;
- if (mDevice == 0) return;
+ if (mDevice == 0) return res;
ALOGV("Camera %d: Shutting down", mCameraId);
@@ -389,7 +391,7 @@
{
SharedParameters::Lock l(mParameters);
- if (l.mParameters.state == Parameters::DISCONNECTED) return;
+ if (l.mParameters.state == Parameters::DISCONNECTED) return res;
l.mParameters.state = Parameters::DISCONNECTED;
}
@@ -430,9 +432,11 @@
mDevice.clear();
CameraService::Client::disconnect();
+
+ return res;
}
-status_t Camera2Client::connect(const sp<ICameraClient>& client) {
+status_t Camera2Client::connect(const sp<hardware::ICameraClient>& client) {
ATRACE_CALL();
ALOGV("%s: E", __FUNCTION__);
Mutex::Autolock icl(mBinderSerializationLock);
@@ -1682,22 +1686,22 @@
}
}
-void Camera2Client::notifyError(ICameraDeviceCallbacks::CameraErrorCode errorCode,
+void Camera2Client::notifyError(int32_t errorCode,
const CaptureResultExtras& resultExtras) {
int32_t err = CAMERA_ERROR_UNKNOWN;
switch(errorCode) {
- case ICameraDeviceCallbacks::ERROR_CAMERA_DISCONNECTED:
+ case hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_DISCONNECTED:
err = CAMERA_ERROR_RELEASED;
break;
- case ICameraDeviceCallbacks::ERROR_CAMERA_DEVICE:
+ case hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_DEVICE:
err = CAMERA_ERROR_UNKNOWN;
break;
- case ICameraDeviceCallbacks::ERROR_CAMERA_SERVICE:
+ case hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_SERVICE:
err = CAMERA_ERROR_SERVER_DIED;
break;
- case ICameraDeviceCallbacks::ERROR_CAMERA_REQUEST:
- case ICameraDeviceCallbacks::ERROR_CAMERA_RESULT:
- case ICameraDeviceCallbacks::ERROR_CAMERA_BUFFER:
+ case hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_REQUEST:
+ case hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_RESULT:
+ case hardware::camera2::ICameraDeviceCallbacks::ERROR_CAMERA_BUFFER:
ALOGW("%s: Received recoverable error %d from HAL - ignoring, requestId %" PRId32,
__FUNCTION__, errorCode, resultExtras.requestId);
return;