Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b25d3927 authored by Eino-Ville Talvala's avatar Eino-Ville Talvala Committed by android-build-merger
Browse files

Merge "CameraService: Clean up ICameraServiceProxy; send it more info" into...

Merge "CameraService: Clean up ICameraServiceProxy; send it more info" into oc-dr1-dev am: 437f48e6
am: 63d16055

Change-Id: Idbdbb279845ff9286e74c62115d1c6f1114ec12c
parents dd188890 63d16055
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -31,9 +31,11 @@ cc_library_shared {
        // include libcamera_client, at the path "aidl/package/path/BnFoo.h"
        "aidl/android/hardware/ICameraService.aidl",
        "aidl/android/hardware/ICameraServiceListener.aidl",
        "aidl/android/hardware/ICameraServiceProxy.aidl",
        "aidl/android/hardware/camera2/ICameraDeviceCallbacks.aidl",
        "aidl/android/hardware/camera2/ICameraDeviceUser.aidl",


        // Source for camera interface parcelables, and manually-written interfaces
        "Camera.cpp",
        "CameraMetadata.cpp",
@@ -42,7 +44,6 @@ cc_library_shared {
        "CameraParameters2.cpp",
        "ICamera.cpp",
        "ICameraClient.cpp",
        "ICameraServiceProxy.cpp",
        "ICameraRecordingProxy.cpp",
        "ICameraRecordingProxyListener.cpp",
        "camera2/CaptureRequest.cpp",

camera/ICameraServiceProxy.cpp

deleted100644 → 0
+0 −73
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#define LOG_TAG "BpCameraServiceProxy"

#include <stdint.h>

#include <binder/Parcel.h>

#include <camera/ICameraServiceProxy.h>

namespace android {

class BpCameraServiceProxy: public BpInterface<ICameraServiceProxy> {
public:
    explicit BpCameraServiceProxy(const sp<IBinder>& impl)
        : BpInterface<ICameraServiceProxy>(impl) {}

    virtual void pingForUserUpdate() {
        Parcel data;
        data.writeInterfaceToken(ICameraServiceProxy::getInterfaceDescriptor());
        remote()->transact(BnCameraServiceProxy::PING_FOR_USER_UPDATE, data, nullptr,
                IBinder::FLAG_ONEWAY);
    }

    virtual void notifyCameraState(String16 cameraId, CameraState newCameraState) {
        Parcel data;
        data.writeInterfaceToken(ICameraServiceProxy::getInterfaceDescriptor());
        data.writeString16(cameraId);
        data.writeInt32(newCameraState);
        remote()->transact(BnCameraServiceProxy::NOTIFY_CAMERA_STATE, data, nullptr,
                IBinder::FLAG_ONEWAY);
    }

};


IMPLEMENT_META_INTERFACE(CameraServiceProxy, "android.hardware.ICameraServiceProxy");

status_t BnCameraServiceProxy::onTransact(uint32_t code, const Parcel& data, Parcel* reply,
        uint32_t flags) {
    switch(code) {
        case PING_FOR_USER_UPDATE: {
            CHECK_INTERFACE(ICameraServiceProxy, data, reply);
            pingForUserUpdate();
            return NO_ERROR;
        } break;
        case NOTIFY_CAMERA_STATE: {
            CHECK_INTERFACE(ICameraServiceProxy, data, reply);
            String16 cameraId = data.readString16();
            CameraState newCameraState =
                static_cast<CameraState>(data.readInt32());
            notifyCameraState(cameraId, newCameraState);
            return NO_ERROR;
        } break;
        default:
            return BBinder::onTransact(code, data, reply, flags);
    }
}
}; // namespace android
+18 −2
Original line number Diff line number Diff line
@@ -31,7 +31,23 @@ interface ICameraServiceProxy
    oneway void pingForUserUpdate();

    /**
     * Update the status of a camera device
     * Values for notifyCameraState newCameraState
     */
     oneway void notifyCameraState(String cameraId, int newCameraState);
    const int CAMERA_STATE_OPEN = 0;
    const int CAMERA_STATE_ACTIVE = 1;
    const int CAMERA_STATE_IDLE = 2;
    const int CAMERA_STATE_CLOSED = 3;

    /**
     * Values for notifyCameraState facing
     */
    const int CAMERA_FACING_BACK = 0;
    const int CAMERA_FACING_FRONT = 1;
    const int CAMERA_FACING_EXTERNAL = 2;

    /**
     * Update the status of a camera device.
     */
    oneway void notifyCameraState(String cameraId, int facing, int newCameraState,
            String clientName);
}
+0 −65
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_HARDWARE_ICAMERASERVICEPROXY_H
#define ANDROID_HARDWARE_ICAMERASERVICEPROXY_H

#include <utils/RefBase.h>
#include <binder/IInterface.h>
#include <binder/Parcel.h>

namespace android {

/**
 * Interface from native camera service to managed-side camera service proxy.
 *
 * Keep in sync with frameworks/base/core/java/android/hardware/ICameraServiceProxy.aidl
 *
 */
class ICameraServiceProxy : public IInterface {
public:
    enum {
        PING_FOR_USER_UPDATE = IBinder::FIRST_CALL_TRANSACTION,
        NOTIFY_CAMERA_STATE
    };

    enum CameraState {
        CAMERA_STATE_OPEN,
        CAMERA_STATE_ACTIVE,
        CAMERA_STATE_IDLE,
        CAMERA_STATE_CLOSED
    };

    DECLARE_META_INTERFACE(CameraServiceProxy);

    virtual void pingForUserUpdate() = 0;
    virtual void notifyCameraState(String16 cameraId, CameraState newCameraState) = 0;
};

class BnCameraServiceProxy: public BnInterface<ICameraServiceProxy>
{
public:
    virtual status_t    onTransact( uint32_t code,
                                    const Parcel& data,
                                    Parcel* reply,
                                    uint32_t flags = 0);
};



}; // namespace android

#endif // ANDROID_HARDWARE_ICAMERASERVICEPROXY_H
+6 −5
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ namespace android {
using binder::Status;
using hardware::ICamera;
using hardware::ICameraClient;
using hardware::ICameraServiceProxy;
using hardware::ICameraServiceListener;
using hardware::camera::common::V1_0::CameraDeviceStatus;
using hardware::camera::common::V1_0::TorchModeStatus;
@@ -2213,7 +2214,7 @@ status_t CameraService::BasicClient::startCameraOps() {

    // Transition device state to OPEN
    sCameraService->updateProxyDeviceState(ICameraServiceProxy::CAMERA_STATE_OPEN,
            mCameraIdStr);
            mCameraIdStr, mCameraFacing, mClientPackageName);

    return OK;
}
@@ -2237,7 +2238,7 @@ status_t CameraService::BasicClient::finishCameraOps() {

        // Transition device state to CLOSED
        sCameraService->updateProxyDeviceState(ICameraServiceProxy::CAMERA_STATE_CLOSED,
                mCameraIdStr);
                mCameraIdStr, mCameraFacing, mClientPackageName);
    }
    // Always stop watching, even if no camera op is active
    if (mOpsCallback != NULL) {
@@ -2741,12 +2742,12 @@ void CameraService::CameraState::updateStatus(StatusInternal status,
    onStatusUpdatedLocked(cameraId, status);
}

void CameraService::updateProxyDeviceState(ICameraServiceProxy::CameraState newState,
        const String8& cameraId) {
void CameraService::updateProxyDeviceState(int newState,
        const String8& cameraId, int facing, const String16& clientName) {
    sp<ICameraServiceProxy> proxyBinder = getCameraServiceProxy();
    if (proxyBinder == nullptr) return;
    String16 id(cameraId);
    proxyBinder->notifyCameraState(id, newState);
    proxyBinder->notifyCameraState(id, newState, facing, clientName);
}

status_t CameraService::getTorchStatusLocked(
Loading