diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2016-12-13 11:25:55 -0800 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2016-12-13 16:32:23 -0800 |
commit | f51fca277eb5b86bd0b2e3fc90ecb2b63089de29 (patch) | |
tree | 4c9b0b9c9e3969dca6ee7a0e0f4b0904a1757d8c /camera/CameraBase.cpp | |
parent | 07f49573613aee5a8e661f74a324db371ecc8551 (diff) |
Camera service: Updates in preparation for HIDL
- For all camera2 paths, and anything shared between the legacy API and
camera2, switch to using strings for camera IDs
- Update ICameraService.addListener to return current set of known
devices and their status, to allow for immediate return of camera
devices when first connecting to camera service
- Remove unused code path for getCameraCharacteristics with HALv1
- Add namespace qualifiers to Binder objects that are also used by
hardware binder.
- Switch to using new HIDL DeviceStatus and TorchStatus enumerations
for better type safety in the service; map more clearly between
the HAL, service-internal, and Binder enums.
Test: cts-tradefed run cts -m Camera --skip-connectivity-check -d -o --abi armeabi-v7a --disable-reboot
Bug: 32991422
Change-Id: I765951d9a21000a8432bed9aa0e3604709daa4b1
Diffstat (limited to 'camera/CameraBase.cpp')
-rw-r--r-- | camera/CameraBase.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/camera/CameraBase.cpp b/camera/CameraBase.cpp index 68e73f2051..ece64fdbe8 100644 --- a/camera/CameraBase.cpp +++ b/camera/CameraBase.cpp @@ -39,7 +39,7 @@ namespace android { namespace hardware { -status_t CameraInfo::writeToParcel(Parcel* parcel) const { +status_t CameraInfo::writeToParcel(android::Parcel* parcel) const { status_t res; res = parcel->writeInt32(facing); if (res != OK) return res; @@ -47,7 +47,7 @@ status_t CameraInfo::writeToParcel(Parcel* parcel) const { return res; } -status_t CameraInfo::readFromParcel(const Parcel* parcel) { +status_t CameraInfo::readFromParcel(const android::Parcel* parcel) { status_t res; res = parcel->readInt32(&facing); if (res != OK) return res; @@ -55,8 +55,24 @@ status_t CameraInfo::readFromParcel(const Parcel* parcel) { return res; } +status_t CameraStatus::writeToParcel(android::Parcel* parcel) const { + status_t res; + res = parcel->writeString8(cameraId); + if (res != OK) return res; + res = parcel->writeInt32(status); + return res; } +status_t CameraStatus::readFromParcel(const android::Parcel* parcel) { + status_t res; + res = parcel->readString8(&cameraId); + if (res != OK) return res; + res = parcel->readInt32(&status); + return res; +} + +} // namespace hardware + namespace { sp<::android::hardware::ICameraService> gCameraService; const int kCameraServicePollDelay = 500000; // 0.5s @@ -239,24 +255,6 @@ status_t CameraBase<TCam, TCamTraits>::getCameraInfo(int cameraId, return res.isOk() ? OK : res.serviceSpecificErrorCode(); } -template <typename TCam, typename TCamTraits> -status_t CameraBase<TCam, TCamTraits>::addServiceListener( - const sp<::android::hardware::ICameraServiceListener>& listener) { - const sp<::android::hardware::ICameraService>& cs = getCameraService(); - if (cs == 0) return UNKNOWN_ERROR; - binder::Status res = cs->addListener(listener); - return res.isOk() ? OK : res.serviceSpecificErrorCode(); -} - -template <typename TCam, typename TCamTraits> -status_t CameraBase<TCam, TCamTraits>::removeServiceListener( - const sp<::android::hardware::ICameraServiceListener>& listener) { - const sp<::android::hardware::ICameraService>& cs = getCameraService(); - if (cs == 0) return UNKNOWN_ERROR; - binder::Status res = cs->removeListener(listener); - return res.isOk() ? OK : res.serviceSpecificErrorCode(); -} - template class CameraBase<Camera>; } // namespace android |