diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/camera/Android.mk | 23 | ||||
-rw-r--r-- | libs/camera/Camera.cpp | 448 | ||||
-rw-r--r-- | libs/camera/CameraParameters.cpp | 479 | ||||
-rw-r--r-- | libs/camera/ICamera.cpp | 420 | ||||
-rw-r--r-- | libs/camera/ICameraClient.cpp | 132 | ||||
-rw-r--r-- | libs/camera/ICameraRecordingProxy.cpp | 109 | ||||
-rw-r--r-- | libs/camera/ICameraRecordingProxyListener.cpp | 75 | ||||
-rw-r--r-- | libs/camera/ICameraService.cpp | 113 | ||||
-rw-r--r-- | libs/common_time/Android.mk | 21 | ||||
-rw-r--r-- | libs/common_time/ICommonClock.cpp | 432 | ||||
-rw-r--r-- | libs/common_time/ICommonTimeConfig.cpp | 508 | ||||
-rw-r--r-- | libs/common_time/cc_helper.cpp | 129 | ||||
-rw-r--r-- | libs/common_time/local_clock.cpp | 92 | ||||
-rw-r--r-- | libs/common_time/utils.cpp | 89 | ||||
-rw-r--r-- | libs/common_time/utils.h | 34 |
15 files changed, 0 insertions, 3104 deletions
diff --git a/libs/camera/Android.mk b/libs/camera/Android.mk deleted file mode 100644 index 7286f92..0000000 --- a/libs/camera/Android.mk +++ /dev/null @@ -1,23 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:= \ - Camera.cpp \ - CameraParameters.cpp \ - ICamera.cpp \ - ICameraClient.cpp \ - ICameraService.cpp \ - ICameraRecordingProxy.cpp \ - ICameraRecordingProxyListener.cpp - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libbinder \ - libhardware \ - libui \ - libgui - -LOCAL_MODULE:= libcamera_client - -include $(BUILD_SHARED_LIBRARY) diff --git a/libs/camera/Camera.cpp b/libs/camera/Camera.cpp deleted file mode 100644 index b81fe86..0000000 --- a/libs/camera/Camera.cpp +++ /dev/null @@ -1,448 +0,0 @@ -/* -** -** Copyright (C) 2008, 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_NDEBUG 0 -#define LOG_TAG "Camera" -#include <utils/Log.h> -#include <utils/threads.h> -#include <binder/IPCThreadState.h> -#include <binder/IServiceManager.h> -#include <binder/IMemory.h> - -#include <camera/Camera.h> -#include <camera/ICameraRecordingProxyListener.h> -#include <camera/ICameraService.h> - -#include <gui/ISurfaceTexture.h> -#include <gui/Surface.h> - -namespace android { - -// client singleton for camera service binder interface -Mutex Camera::mLock; -sp<ICameraService> Camera::mCameraService; -sp<Camera::DeathNotifier> Camera::mDeathNotifier; - -// establish binder interface to camera service -const sp<ICameraService>& Camera::getCameraService() -{ - Mutex::Autolock _l(mLock); - if (mCameraService.get() == 0) { - sp<IServiceManager> sm = defaultServiceManager(); - sp<IBinder> binder; - do { - binder = sm->getService(String16("media.camera")); - if (binder != 0) - break; - ALOGW("CameraService not published, waiting..."); - usleep(500000); // 0.5 s - } while(true); - if (mDeathNotifier == NULL) { - mDeathNotifier = new DeathNotifier(); - } - binder->linkToDeath(mDeathNotifier); - mCameraService = interface_cast<ICameraService>(binder); - } - ALOGE_IF(mCameraService==0, "no CameraService!?"); - return mCameraService; -} - -// --------------------------------------------------------------------------- - -Camera::Camera() -{ - init(); -} - -// construct a camera client from an existing camera remote -sp<Camera> Camera::create(const sp<ICamera>& camera) -{ - ALOGV("create"); - if (camera == 0) { - ALOGE("camera remote is a NULL pointer"); - return 0; - } - - sp<Camera> c = new Camera(); - if (camera->connect(c) == NO_ERROR) { - c->mStatus = NO_ERROR; - c->mCamera = camera; - camera->asBinder()->linkToDeath(c); - return c; - } - return 0; -} - -void Camera::init() -{ - mStatus = UNKNOWN_ERROR; -} - -Camera::~Camera() -{ - // We don't need to call disconnect() here because if the CameraService - // thinks we are the owner of the hardware, it will hold a (strong) - // reference to us, and we can't possibly be here. We also don't want to - // call disconnect() here if we are in the same process as mediaserver, - // because we may be invoked by CameraService::Client::connect() and will - // deadlock if we call any method of ICamera here. -} - -int32_t Camera::getNumberOfCameras() -{ - const sp<ICameraService>& cs = getCameraService(); - if (cs == 0) return 0; - return cs->getNumberOfCameras(); -} - -status_t Camera::getCameraInfo(int cameraId, - struct CameraInfo* cameraInfo) { - const sp<ICameraService>& cs = getCameraService(); - if (cs == 0) return UNKNOWN_ERROR; - return cs->getCameraInfo(cameraId, cameraInfo); -} - -sp<Camera> Camera::connect(int cameraId, bool force, bool keep) -{ - ALOGV("connect"); - sp<Camera> c = new Camera(); - const sp<ICameraService>& cs = getCameraService(); - if (cs != 0) { - c->mCamera = cs->connect(c, cameraId, force, keep); - } - if (c->mCamera != 0) { - c->mCamera->asBinder()->linkToDeath(c); - c->mStatus = NO_ERROR; - } else { - c.clear(); - } - return c; -} - -void Camera::disconnect() -{ - ALOGV("disconnect"); - if (mCamera != 0) { - mCamera->disconnect(); - mCamera->asBinder()->unlinkToDeath(this); - mCamera = 0; - } -} - -status_t Camera::reconnect() -{ - ALOGV("reconnect"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->connect(this); -} - -sp<ICamera> Camera::remote() -{ - return mCamera; -} - -status_t Camera::lock() -{ - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->lock(); -} - -status_t Camera::unlock() -{ - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->unlock(); -} - -// pass the buffered Surface to the camera service -status_t Camera::setPreviewDisplay(const sp<Surface>& surface) -{ - ALOGV("setPreviewDisplay(%p)", surface.get()); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - if (surface != 0) { - return c->setPreviewDisplay(surface); - } else { - ALOGD("app passed NULL surface"); - return c->setPreviewDisplay(0); - } -} - -// pass the buffered ISurfaceTexture to the camera service -status_t Camera::setPreviewTexture(const sp<ISurfaceTexture>& surfaceTexture) -{ - ALOGV("setPreviewTexture(%p)", surfaceTexture.get()); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - if (surfaceTexture != 0) { - return c->setPreviewTexture(surfaceTexture); - } else { - ALOGD("app passed NULL surface"); - return c->setPreviewTexture(0); - } -} - -// start preview mode -status_t Camera::startPreview() -{ - ALOGV("startPreview"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->startPreview(); -} - -status_t Camera::storeMetaDataInBuffers(bool enabled) -{ - ALOGV("storeMetaDataInBuffers: %s", - enabled? "true": "false"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->storeMetaDataInBuffers(enabled); -} - -// start recording mode, must call setPreviewDisplay first -status_t Camera::startRecording() -{ - ALOGV("startRecording"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->startRecording(); -} - -// stop preview mode -void Camera::stopPreview() -{ - ALOGV("stopPreview"); - sp <ICamera> c = mCamera; - if (c == 0) return; - c->stopPreview(); -} - -// stop recording mode -void Camera::stopRecording() -{ - ALOGV("stopRecording"); - { - Mutex::Autolock _l(mLock); - mRecordingProxyListener.clear(); - } - sp <ICamera> c = mCamera; - if (c == 0) return; - c->stopRecording(); -} - -// release a recording frame -void Camera::releaseRecordingFrame(const sp<IMemory>& mem) -{ - ALOGV("releaseRecordingFrame"); - sp <ICamera> c = mCamera; - if (c == 0) return; - c->releaseRecordingFrame(mem); -} - -// get preview state -bool Camera::previewEnabled() -{ - ALOGV("previewEnabled"); - sp <ICamera> c = mCamera; - if (c == 0) return false; - return c->previewEnabled(); -} - -// get recording state -bool Camera::recordingEnabled() -{ - ALOGV("recordingEnabled"); - sp <ICamera> c = mCamera; - if (c == 0) return false; - return c->recordingEnabled(); -} - -status_t Camera::autoFocus() -{ - ALOGV("autoFocus"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->autoFocus(); -} - -status_t Camera::cancelAutoFocus() -{ - ALOGV("cancelAutoFocus"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->cancelAutoFocus(); -} - -// take a picture -status_t Camera::takePicture(int msgType) -{ - ALOGV("takePicture: 0x%x", msgType); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->takePicture(msgType); -} - -// set preview/capture parameters - key/value pairs -status_t Camera::setParameters(const String8& params) -{ - ALOGV("setParameters"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->setParameters(params); -} - -// get preview/capture parameters - key/value pairs -String8 Camera::getParameters() const -{ - ALOGV("getParameters"); - String8 params; - sp <ICamera> c = mCamera; - if (c != 0) params = mCamera->getParameters(); - return params; -} - -// send command to camera driver -status_t Camera::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) -{ - ALOGV("sendCommand"); - sp <ICamera> c = mCamera; - if (c == 0) return NO_INIT; - return c->sendCommand(cmd, arg1, arg2); -} - -void Camera::setListener(const sp<CameraListener>& listener) -{ - Mutex::Autolock _l(mLock); - mListener = listener; -} - -void Camera::setRecordingProxyListener(const sp<ICameraRecordingProxyListener>& listener) -{ - Mutex::Autolock _l(mLock); - mRecordingProxyListener = listener; -} - -void Camera::setPreviewCallbackFlags(int flag) -{ - ALOGV("setPreviewCallbackFlags"); - sp <ICamera> c = mCamera; - if (c == 0) return; - mCamera->setPreviewCallbackFlag(flag); -} - -// callback from camera service -void Camera::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) -{ - sp<CameraListener> listener; - { - Mutex::Autolock _l(mLock); - listener = mListener; - } - if (listener != NULL) { - listener->notify(msgType, ext1, ext2); - } -} - -// callback from camera service when frame or image is ready -void Camera::dataCallback(int32_t msgType, const sp<IMemory>& dataPtr, - camera_frame_metadata_t *metadata) -{ - sp<CameraListener> listener; - { - Mutex::Autolock _l(mLock); - listener = mListener; - } - if (listener != NULL) { - listener->postData(msgType, dataPtr, metadata); - } -} - -// callback from camera service when timestamped frame is ready -void Camera::dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr) -{ - // If recording proxy listener is registered, forward the frame and return. - // The other listener (mListener) is ignored because the receiver needs to - // call releaseRecordingFrame. - sp<ICameraRecordingProxyListener> proxylistener; - { - Mutex::Autolock _l(mLock); - proxylistener = mRecordingProxyListener; - } - if (proxylistener != NULL) { - proxylistener->dataCallbackTimestamp(timestamp, msgType, dataPtr); - return; - } - - sp<CameraListener> listener; - { - Mutex::Autolock _l(mLock); - listener = mListener; - } - if (listener != NULL) { - listener->postDataTimestamp(timestamp, msgType, dataPtr); - } else { - ALOGW("No listener was set. Drop a recording frame."); - releaseRecordingFrame(dataPtr); - } -} - -void Camera::binderDied(const wp<IBinder>& who) { - ALOGW("ICamera died"); - notifyCallback(CAMERA_MSG_ERROR, CAMERA_ERROR_SERVER_DIED, 0); -} - -void Camera::DeathNotifier::binderDied(const wp<IBinder>& who) { - ALOGV("binderDied"); - Mutex::Autolock _l(Camera::mLock); - Camera::mCameraService.clear(); - ALOGW("Camera server died!"); -} - -sp<ICameraRecordingProxy> Camera::getRecordingProxy() { - ALOGV("getProxy"); - return new RecordingProxy(this); -} - -status_t Camera::RecordingProxy::startRecording(const sp<ICameraRecordingProxyListener>& listener) -{ - ALOGV("RecordingProxy::startRecording"); - mCamera->setRecordingProxyListener(listener); - mCamera->reconnect(); - return mCamera->startRecording(); -} - -void Camera::RecordingProxy::stopRecording() -{ - ALOGV("RecordingProxy::stopRecording"); - mCamera->stopRecording(); -} - -void Camera::RecordingProxy::releaseRecordingFrame(const sp<IMemory>& mem) -{ - ALOGV("RecordingProxy::releaseRecordingFrame"); - mCamera->releaseRecordingFrame(mem); -} - -Camera::RecordingProxy::RecordingProxy(const sp<Camera>& camera) -{ - mCamera = camera; -} - -}; // namespace android diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp deleted file mode 100644 index 059a8a5..0000000 --- a/libs/camera/CameraParameters.cpp +++ /dev/null @@ -1,479 +0,0 @@ -/* -** -** Copyright 2008, 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 "CameraParams" -#include <utils/Log.h> - -#include <string.h> -#include <stdlib.h> -#include <camera/CameraParameters.h> - -namespace android { -// Parameter keys to communicate between camera application and driver. -const char CameraParameters::KEY_PREVIEW_SIZE[] = "preview-size"; -const char CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES[] = "preview-size-values"; -const char CameraParameters::KEY_PREVIEW_FORMAT[] = "preview-format"; -const char CameraParameters::KEY_SUPPORTED_PREVIEW_FORMATS[] = "preview-format-values"; -const char CameraParameters::KEY_PREVIEW_FRAME_RATE[] = "preview-frame-rate"; -const char CameraParameters::KEY_SUPPORTED_PREVIEW_FRAME_RATES[] = "preview-frame-rate-values"; -const char CameraParameters::KEY_PREVIEW_FPS_RANGE[] = "preview-fps-range"; -const char CameraParameters::KEY_SUPPORTED_PREVIEW_FPS_RANGE[] = "preview-fps-range-values"; -const char CameraParameters::KEY_PICTURE_SIZE[] = "picture-size"; -const char CameraParameters::KEY_SUPPORTED_PICTURE_SIZES[] = "picture-size-values"; -const char CameraParameters::KEY_PICTURE_FORMAT[] = "picture-format"; -const char CameraParameters::KEY_SUPPORTED_PICTURE_FORMATS[] = "picture-format-values"; -const char CameraParameters::KEY_JPEG_THUMBNAIL_WIDTH[] = "jpeg-thumbnail-width"; -const char CameraParameters::KEY_JPEG_THUMBNAIL_HEIGHT[] = "jpeg-thumbnail-height"; -const char CameraParameters::KEY_SUPPORTED_JPEG_THUMBNAIL_SIZES[] = "jpeg-thumbnail-size-values"; -const char CameraParameters::KEY_JPEG_THUMBNAIL_QUALITY[] = "jpeg-thumbnail-quality"; -const char CameraParameters::KEY_JPEG_QUALITY[] = "jpeg-quality"; -const char CameraParameters::KEY_ROTATION[] = "rotation"; -const char CameraParameters::KEY_GPS_LATITUDE[] = "gps-latitude"; -const char CameraParameters::KEY_GPS_LONGITUDE[] = "gps-longitude"; -const char CameraParameters::KEY_GPS_ALTITUDE[] = "gps-altitude"; -const char CameraParameters::KEY_GPS_TIMESTAMP[] = "gps-timestamp"; -const char CameraParameters::KEY_GPS_PROCESSING_METHOD[] = "gps-processing-method"; -const char CameraParameters::KEY_WHITE_BALANCE[] = "whitebalance"; -const char CameraParameters::KEY_SUPPORTED_WHITE_BALANCE[] = "whitebalance-values"; -const char CameraParameters::KEY_EFFECT[] = "effect"; -const char CameraParameters::KEY_SUPPORTED_EFFECTS[] = "effect-values"; -const char CameraParameters::KEY_ANTIBANDING[] = "antibanding"; -const char CameraParameters::KEY_SUPPORTED_ANTIBANDING[] = "antibanding-values"; -const char CameraParameters::KEY_SCENE_MODE[] = "scene-mode"; -const char CameraParameters::KEY_SUPPORTED_SCENE_MODES[] = "scene-mode-values"; -const char CameraParameters::KEY_FLASH_MODE[] = "flash-mode"; -const char CameraParameters::KEY_SUPPORTED_FLASH_MODES[] = "flash-mode-values"; -const char CameraParameters::KEY_FOCUS_MODE[] = "focus-mode"; -const char CameraParameters::KEY_SUPPORTED_FOCUS_MODES[] = "focus-mode-values"; -const char CameraParameters::KEY_MAX_NUM_FOCUS_AREAS[] = "max-num-focus-areas"; -const char CameraParameters::KEY_FOCUS_AREAS[] = "focus-areas"; -const char CameraParameters::KEY_FOCAL_LENGTH[] = "focal-length"; -const char CameraParameters::KEY_HORIZONTAL_VIEW_ANGLE[] = "horizontal-view-angle"; -const char CameraParameters::KEY_VERTICAL_VIEW_ANGLE[] = "vertical-view-angle"; -const char CameraParameters::KEY_EXPOSURE_COMPENSATION[] = "exposure-compensation"; -const char CameraParameters::KEY_MAX_EXPOSURE_COMPENSATION[] = "max-exposure-compensation"; -const char CameraParameters::KEY_MIN_EXPOSURE_COMPENSATION[] = "min-exposure-compensation"; -const char CameraParameters::KEY_EXPOSURE_COMPENSATION_STEP[] = "exposure-compensation-step"; -const char CameraParameters::KEY_AUTO_EXPOSURE_LOCK[] = "auto-exposure-lock"; -const char CameraParameters::KEY_AUTO_EXPOSURE_LOCK_SUPPORTED[] = "auto-exposure-lock-supported"; -const char CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK[] = "auto-whitebalance-lock"; -const char CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK_SUPPORTED[] = "auto-whitebalance-lock-supported"; -const char CameraParameters::KEY_MAX_NUM_METERING_AREAS[] = "max-num-metering-areas"; -const char CameraParameters::KEY_METERING_AREAS[] = "metering-areas"; -const char CameraParameters::KEY_ZOOM[] = "zoom"; -const char CameraParameters::KEY_MAX_ZOOM[] = "max-zoom"; -const char CameraParameters::KEY_ZOOM_RATIOS[] = "zoom-ratios"; -const char CameraParameters::KEY_ZOOM_SUPPORTED[] = "zoom-supported"; -const char CameraParameters::KEY_SMOOTH_ZOOM_SUPPORTED[] = "smooth-zoom-supported"; -const char CameraParameters::KEY_FOCUS_DISTANCES[] = "focus-distances"; -const char CameraParameters::KEY_VIDEO_FRAME_FORMAT[] = "video-frame-format"; -const char CameraParameters::KEY_VIDEO_SIZE[] = "video-size"; -const char CameraParameters::KEY_SUPPORTED_VIDEO_SIZES[] = "video-size-values"; -const char CameraParameters::KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO[] = "preferred-preview-size-for-video"; -const char CameraParameters::KEY_MAX_NUM_DETECTED_FACES_HW[] = "max-num-detected-faces-hw"; -const char CameraParameters::KEY_MAX_NUM_DETECTED_FACES_SW[] = "max-num-detected-faces-sw"; -const char CameraParameters::KEY_RECORDING_HINT[] = "recording-hint"; -const char CameraParameters::KEY_VIDEO_SNAPSHOT_SUPPORTED[] = "video-snapshot-supported"; -const char CameraParameters::KEY_VIDEO_STABILIZATION[] = "video-stabilization"; -const char CameraParameters::KEY_VIDEO_STABILIZATION_SUPPORTED[] = "video-stabilization-supported"; - -const char CameraParameters::TRUE[] = "true"; -const char CameraParameters::FALSE[] = "false"; -const char CameraParameters::FOCUS_DISTANCE_INFINITY[] = "Infinity"; - -// Values for white balance settings. -const char CameraParameters::WHITE_BALANCE_AUTO[] = "auto"; -const char CameraParameters::WHITE_BALANCE_INCANDESCENT[] = "incandescent"; -const char CameraParameters::WHITE_BALANCE_FLUORESCENT[] = "fluorescent"; -const char CameraParameters::WHITE_BALANCE_WARM_FLUORESCENT[] = "warm-fluorescent"; -const char CameraParameters::WHITE_BALANCE_DAYLIGHT[] = "daylight"; -const char CameraParameters::WHITE_BALANCE_CLOUDY_DAYLIGHT[] = "cloudy-daylight"; -const char CameraParameters::WHITE_BALANCE_TWILIGHT[] = "twilight"; -const char CameraParameters::WHITE_BALANCE_SHADE[] = "shade"; - -// Values for effect settings. -const char CameraParameters::EFFECT_NONE[] = "none"; -const char CameraParameters::EFFECT_MONO[] = "mono"; -const char CameraParameters::EFFECT_NEGATIVE[] = "negative"; -const char CameraParameters::EFFECT_SOLARIZE[] = "solarize"; -const char CameraParameters::EFFECT_SEPIA[] = "sepia"; -const char CameraParameters::EFFECT_POSTERIZE[] = "posterize"; -const char CameraParameters::EFFECT_WHITEBOARD[] = "whiteboard"; -const char CameraParameters::EFFECT_BLACKBOARD[] = "blackboard"; -const char CameraParameters::EFFECT_AQUA[] = "aqua"; - -// Values for antibanding settings. -const char CameraParameters::ANTIBANDING_AUTO[] = "auto"; -const char CameraParameters::ANTIBANDING_50HZ[] = "50hz"; -const char CameraParameters::ANTIBANDING_60HZ[] = "60hz"; -const char CameraParameters::ANTIBANDING_OFF[] = "off"; - -// Values for flash mode settings. -const char CameraParameters::FLASH_MODE_OFF[] = "off"; -const char CameraParameters::FLASH_MODE_AUTO[] = "auto"; -const char CameraParameters::FLASH_MODE_ON[] = "on"; -const char CameraParameters::FLASH_MODE_RED_EYE[] = "red-eye"; -const char CameraParameters::FLASH_MODE_TORCH[] = "torch"; - -// Values for scene mode settings. -const char CameraParameters::SCENE_MODE_AUTO[] = "auto"; -const char CameraParameters::SCENE_MODE_ACTION[] = "action"; -const char CameraParameters::SCENE_MODE_PORTRAIT[] = "portrait"; -const char CameraParameters::SCENE_MODE_LANDSCAPE[] = "landscape"; -const char CameraParameters::SCENE_MODE_NIGHT[] = "night"; -const char CameraParameters::SCENE_MODE_NIGHT_PORTRAIT[] = "night-portrait"; -const char CameraParameters::SCENE_MODE_THEATRE[] = "theatre"; -const char CameraParameters::SCENE_MODE_BEACH[] = "beach"; -const char CameraParameters::SCENE_MODE_SNOW[] = "snow"; -const char CameraParameters::SCENE_MODE_SUNSET[] = "sunset"; -const char CameraParameters::SCENE_MODE_STEADYPHOTO[] = "steadyphoto"; -const char CameraParameters::SCENE_MODE_FIREWORKS[] = "fireworks"; -const char CameraParameters::SCENE_MODE_SPORTS[] = "sports"; -const char CameraParameters::SCENE_MODE_PARTY[] = "party"; -const char CameraParameters::SCENE_MODE_CANDLELIGHT[] = "candlelight"; -const char CameraParameters::SCENE_MODE_BARCODE[] = "barcode"; - -const char CameraParameters::PIXEL_FORMAT_YUV422SP[] = "yuv422sp"; -const char CameraParameters::PIXEL_FORMAT_YUV420SP[] = "yuv420sp"; -const char CameraParameters::PIXEL_FORMAT_YUV422I[] = "yuv422i-yuyv"; -const char CameraParameters::PIXEL_FORMAT_YUV420P[] = "yuv420p"; -const char CameraParameters::PIXEL_FORMAT_RGB565[] = "rgb565"; -const char CameraParameters::PIXEL_FORMAT_RGBA8888[] = "rgba8888"; -const char CameraParameters::PIXEL_FORMAT_JPEG[] = "jpeg"; -const char CameraParameters::PIXEL_FORMAT_BAYER_RGGB[] = "bayer-rggb"; - -// Values for focus mode settings. -const char CameraParameters::FOCUS_MODE_AUTO[] = "auto"; -const char CameraParameters::FOCUS_MODE_INFINITY[] = "infinity"; -const char CameraParameters::FOCUS_MODE_MACRO[] = "macro"; -const char CameraParameters::FOCUS_MODE_FIXED[] = "fixed"; -const char CameraParameters::FOCUS_MODE_EDOF[] = "edof"; -const char CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO[] = "continuous-video"; -const char CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE[] = "continuous-picture"; - -CameraParameters::CameraParameters() - : mMap() -{ -} - -CameraParameters::~CameraParameters() -{ -} - -String8 CameraParameters::flatten() const -{ - String8 flattened(""); - size_t size = mMap.size(); - - for (size_t i = 0; i < size; i++) { - String8 k, v; - k = mMap.keyAt(i); - v = mMap.valueAt(i); - - flattened += k; - flattened += "="; - flattened += v; - if (i != size-1) - flattened += ";"; - } - - return flattened; -} - -void CameraParameters::unflatten(const String8 ¶ms) -{ - const char *a = params.string(); - const char *b; - - mMap.clear(); - - for (;;) { - // Find the bounds of the key name. - b = strchr(a, '='); - if (b == 0) - break; - - // Create the key string. - String8 k(a, (size_t)(b-a)); - - // Find the value. - a = b+1; - b = strchr(a, ';'); - if (b == 0) { - // If there's no semicolon, this is the last item. - String8 v(a); - mMap.add(k, v); - break; - } - - String8 v(a, (size_t)(b-a)); - mMap.add(k, v); - a = b+1; - } -} - - -void CameraParameters::set(const char *key, const char *value) -{ - // XXX i think i can do this with strspn() - if (strchr(key, '=') || strchr(key, ';')) { - //XXX ALOGE("Key \"%s\"contains invalid character (= or ;)", key); - return; - } - - if (strchr(value, '=') || strchr(key, ';')) { - //XXX ALOGE("Value \"%s\"contains invalid character (= or ;)", value); - return; - } - - mMap.replaceValueFor(String8(key), String8(value)); -} - -void CameraParameters::set(const char *key, int value) -{ - char str[16]; - sprintf(str, "%d", value); - set(key, str); -} - -void CameraParameters::setFloat(const char *key, float value) -{ - char str[16]; // 14 should be enough. We overestimate to be safe. - snprintf(str, sizeof(str), "%g", value); - set(key, str); -} - -const char *CameraParameters::get(const char *key) const -{ - String8 v = mMap.valueFor(String8(key)); - if (v.length() == 0) - return 0; - return v.string(); -} - -int CameraParameters::getInt(const char *key) const -{ - const char *v = get(key); - if (v == 0) - return -1; - return strtol(v, 0, 0); -} - -float CameraParameters::getFloat(const char *key) const -{ - const char *v = get(key); - if (v == 0) return -1; - return strtof(v, 0); -} - -void CameraParameters::remove(const char *key) -{ - mMap.removeItem(String8(key)); -} - -// Parse string like "640x480" or "10000,20000" -static int parse_pair(const char *str, int *first, int *second, char delim, - char **endptr = NULL) -{ - // Find the first integer. - char *end; - int w = (int)strtol(str, &end, 10); - // If a delimeter does not immediately follow, give up. - if (*end != delim) { - ALOGE("Cannot find delimeter (%c) in str=%s", delim, str); - return -1; - } - - // Find the second integer, immediately after the delimeter. - int h = (int)strtol(end+1, &end, 10); - - *first = w; - *second = h; - - if (endptr) { - *endptr = end; - } - - return 0; -} - -static void parseSizesList(const char *sizesStr, Vector<Size> &sizes) -{ - if (sizesStr == 0) { - return; - } - - char *sizeStartPtr = (char *)sizesStr; - - while (true) { - int width, height; - int success = parse_pair(sizeStartPtr, &width, &height, 'x', - &sizeStartPtr); - if (success == -1 || (*sizeStartPtr != ',' && *sizeStartPtr != '\0')) { - ALOGE("Picture sizes string \"%s\" contains invalid character.", sizesStr); - return; - } - sizes.push(Size(width, height)); - - if (*sizeStartPtr == '\0') { - return; - } - sizeStartPtr++; - } -} - -void CameraParameters::setPreviewSize(int width, int height) -{ - char str[32]; - sprintf(str, "%dx%d", width, height); - set(KEY_PREVIEW_SIZE, str); -} - -void CameraParameters::getPreviewSize(int *width, int *height) const -{ - *width = *height = -1; - // Get the current string, if it doesn't exist, leave the -1x-1 - const char *p = get(KEY_PREVIEW_SIZE); - if (p == 0) return; - parse_pair(p, width, height, 'x'); -} - -void CameraParameters::getPreferredPreviewSizeForVideo(int *width, int *height) const -{ - *width = *height = -1; - const char *p = get(KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO); - if (p == 0) return; - parse_pair(p, width, height, 'x'); -} - -void CameraParameters::getSupportedPreviewSizes(Vector<Size> &sizes) const -{ - const char *previewSizesStr = get(KEY_SUPPORTED_PREVIEW_SIZES); - parseSizesList(previewSizesStr, sizes); -} - -void CameraParameters::setVideoSize(int width, int height) -{ - char str[32]; - sprintf(str, "%dx%d", width, height); - set(KEY_VIDEO_SIZE, str); -} - -void CameraParameters::getVideoSize(int *width, int *height) const -{ - *width = *height = -1; - const char *p = get(KEY_VIDEO_SIZE); - if (p == 0) return; - parse_pair(p, width, height, 'x'); -} - -void CameraParameters::getSupportedVideoSizes(Vector<Size> &sizes) const -{ - const char *videoSizesStr = get(KEY_SUPPORTED_VIDEO_SIZES); - parseSizesList(videoSizesStr, sizes); -} - -void CameraParameters::setPreviewFrameRate(int fps) -{ - set(KEY_PREVIEW_FRAME_RATE, fps); -} - -int CameraParameters::getPreviewFrameRate() const -{ - return getInt(KEY_PREVIEW_FRAME_RATE); -} - -void CameraParameters::getPreviewFpsRange(int *min_fps, int *max_fps) const -{ - *min_fps = *max_fps = -1; - const char *p = get(KEY_PREVIEW_FPS_RANGE); - if (p == 0) return; - parse_pair(p, min_fps, max_fps, ','); -} - -void CameraParameters::setPreviewFormat(const char *format) -{ - set(KEY_PREVIEW_FORMAT, format); -} - -const char *CameraParameters::getPreviewFormat() const -{ - return get(KEY_PREVIEW_FORMAT); -} - -void CameraParameters::setPictureSize(int width, int height) -{ - char str[32]; - sprintf(str, "%dx%d", width, height); - set(KEY_PICTURE_SIZE, str); -} - -void CameraParameters::getPictureSize(int *width, int *height) const -{ - *width = *height = -1; - // Get the current string, if it doesn't exist, leave the -1x-1 - const char *p = get(KEY_PICTURE_SIZE); - if (p == 0) return; - parse_pair(p, width, height, 'x'); -} - -void CameraParameters::getSupportedPictureSizes(Vector<Size> &sizes) const -{ - const char *pictureSizesStr = get(KEY_SUPPORTED_PICTURE_SIZES); - parseSizesList(pictureSizesStr, sizes); -} - -void CameraParameters::setPictureFormat(const char *format) -{ - set(KEY_PICTURE_FORMAT, format); -} - -const char *CameraParameters::getPictureFormat() const -{ - return get(KEY_PICTURE_FORMAT); -} - -void CameraParameters::dump() const -{ - ALOGD("dump: mMap.size = %d", mMap.size()); - for (size_t i = 0; i < mMap.size(); i++) { - String8 k, v; - k = mMap.keyAt(i); - v = mMap.valueAt(i); - ALOGD("%s: %s\n", k.string(), v.string()); - } -} - -status_t CameraParameters::dump(int fd, const Vector<String16>& args) const -{ - const size_t SIZE = 256; - char buffer[SIZE]; - String8 result; - snprintf(buffer, 255, "CameraParameters::dump: mMap.size = %d\n", mMap.size()); - result.append(buffer); - for (size_t i = 0; i < mMap.size(); i++) { - String8 k, v; - k = mMap.keyAt(i); - v = mMap.valueAt(i); - snprintf(buffer, 255, "\t%s: %s\n", k.string(), v.string()); - result.append(buffer); - } - write(fd, result.string(), result.size()); - return NO_ERROR; -} - -}; // namespace android diff --git a/libs/camera/ICamera.cpp b/libs/camera/ICamera.cpp deleted file mode 100644 index 8d8408c..0000000 --- a/libs/camera/ICamera.cpp +++ /dev/null @@ -1,420 +0,0 @@ -/* -** -** Copyright 2008, 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_NDEBUG 0 -#define LOG_TAG "ICamera" -#include <utils/Log.h> -#include <stdint.h> -#include <sys/types.h> -#include <binder/Parcel.h> -#include <camera/ICamera.h> -#include <gui/ISurfaceTexture.h> -#include <gui/Surface.h> - -namespace android { - -enum { - DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, - SET_PREVIEW_DISPLAY, - SET_PREVIEW_TEXTURE, - SET_PREVIEW_CALLBACK_FLAG, - START_PREVIEW, - STOP_PREVIEW, - AUTO_FOCUS, - CANCEL_AUTO_FOCUS, - TAKE_PICTURE, - SET_PARAMETERS, - GET_PARAMETERS, - SEND_COMMAND, - CONNECT, - LOCK, - UNLOCK, - PREVIEW_ENABLED, - START_RECORDING, - STOP_RECORDING, - RECORDING_ENABLED, - RELEASE_RECORDING_FRAME, - STORE_META_DATA_IN_BUFFERS, -}; - -class BpCamera: public BpInterface<ICamera> -{ -public: - BpCamera(const sp<IBinder>& impl) - : BpInterface<ICamera>(impl) - { - } - - // disconnect from camera service - void disconnect() - { - ALOGV("disconnect"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(DISCONNECT, data, &reply); - } - - // pass the buffered Surface to the camera service - status_t setPreviewDisplay(const sp<Surface>& surface) - { - ALOGV("setPreviewDisplay"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - Surface::writeToParcel(surface, &data); - remote()->transact(SET_PREVIEW_DISPLAY, data, &reply); - return reply.readInt32(); - } - - // pass the buffered SurfaceTexture to the camera service - status_t setPreviewTexture(const sp<ISurfaceTexture>& surfaceTexture) - { - ALOGV("setPreviewTexture"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - sp<IBinder> b(surfaceTexture->asBinder()); - data.writeStrongBinder(b); - remote()->transact(SET_PREVIEW_TEXTURE, data, &reply); - return reply.readInt32(); - } - - // set the preview callback flag to affect how the received frames from - // preview are handled. See Camera.h for details. - void setPreviewCallbackFlag(int flag) - { - ALOGV("setPreviewCallbackFlag(%d)", flag); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - data.writeInt32(flag); - remote()->transact(SET_PREVIEW_CALLBACK_FLAG, data, &reply); - } - - // start preview mode, must call setPreviewDisplay first - status_t startPreview() - { - ALOGV("startPreview"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(START_PREVIEW, data, &reply); - return reply.readInt32(); - } - - // start recording mode, must call setPreviewDisplay first - status_t startRecording() - { - ALOGV("startRecording"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(START_RECORDING, data, &reply); - return reply.readInt32(); - } - - // stop preview mode - void stopPreview() - { - ALOGV("stopPreview"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(STOP_PREVIEW, data, &reply); - } - - // stop recording mode - void stopRecording() - { - ALOGV("stopRecording"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(STOP_RECORDING, data, &reply); - } - - void releaseRecordingFrame(const sp<IMemory>& mem) - { - ALOGV("releaseRecordingFrame"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - data.writeStrongBinder(mem->asBinder()); - remote()->transact(RELEASE_RECORDING_FRAME, data, &reply); - } - - status_t storeMetaDataInBuffers(bool enabled) - { - ALOGV("storeMetaDataInBuffers: %s", enabled? "true": "false"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - data.writeInt32(enabled); - remote()->transact(STORE_META_DATA_IN_BUFFERS, data, &reply); - return reply.readInt32(); - } - - // check preview state - bool previewEnabled() - { - ALOGV("previewEnabled"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(PREVIEW_ENABLED, data, &reply); - return reply.readInt32(); - } - - // check recording state - bool recordingEnabled() - { - ALOGV("recordingEnabled"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(RECORDING_ENABLED, data, &reply); - return reply.readInt32(); - } - - // auto focus - status_t autoFocus() - { - ALOGV("autoFocus"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(AUTO_FOCUS, data, &reply); - status_t ret = reply.readInt32(); - return ret; - } - - // cancel focus - status_t cancelAutoFocus() - { - ALOGV("cancelAutoFocus"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(CANCEL_AUTO_FOCUS, data, &reply); - status_t ret = reply.readInt32(); - return ret; - } - - // take a picture - returns an IMemory (ref-counted mmap) - status_t takePicture(int msgType) - { - ALOGV("takePicture: 0x%x", msgType); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - data.writeInt32(msgType); - remote()->transact(TAKE_PICTURE, data, &reply); - status_t ret = reply.readInt32(); - return ret; - } - - // set preview/capture parameters - key/value pairs - status_t setParameters(const String8& params) - { - ALOGV("setParameters"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - data.writeString8(params); - remote()->transact(SET_PARAMETERS, data, &reply); - return reply.readInt32(); - } - - // get preview/capture parameters - key/value pairs - String8 getParameters() const - { - ALOGV("getParameters"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(GET_PARAMETERS, data, &reply); - return reply.readString8(); - } - virtual status_t sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) - { - ALOGV("sendCommand"); - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - data.writeInt32(cmd); - data.writeInt32(arg1); - data.writeInt32(arg2); - remote()->transact(SEND_COMMAND, data, &reply); - return reply.readInt32(); - } - virtual status_t connect(const sp<ICameraClient>& cameraClient) - { - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - data.writeStrongBinder(cameraClient->asBinder()); - remote()->transact(CONNECT, data, &reply); - return reply.readInt32(); - } - virtual status_t lock() - { - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(LOCK, data, &reply); - return reply.readInt32(); - } - virtual status_t unlock() - { - Parcel data, reply; - data.writeInterfaceToken(ICamera::getInterfaceDescriptor()); - remote()->transact(UNLOCK, data, &reply); - return reply.readInt32(); - } -}; - -IMPLEMENT_META_INTERFACE(Camera, "android.hardware.ICamera"); - -// ---------------------------------------------------------------------- - -status_t BnCamera::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) -{ - switch(code) { - case DISCONNECT: { - ALOGV("DISCONNECT"); - CHECK_INTERFACE(ICamera, data, reply); - disconnect(); - return NO_ERROR; - } break; - case SET_PREVIEW_DISPLAY: { - ALOGV("SET_PREVIEW_DISPLAY"); - CHECK_INTERFACE(ICamera, data, reply); - sp<Surface> surface = Surface::readFromParcel(data); - reply->writeInt32(setPreviewDisplay(surface)); - return NO_ERROR; - } break; - case SET_PREVIEW_TEXTURE: { - ALOGV("SET_PREVIEW_TEXTURE"); - CHECK_INTERFACE(ICamera, data, reply); - sp<ISurfaceTexture> st = interface_cast<ISurfaceTexture>(data.readStrongBinder()); - reply->writeInt32(setPreviewTexture(st)); - return NO_ERROR; - } break; - case SET_PREVIEW_CALLBACK_FLAG: { - ALOGV("SET_PREVIEW_CALLBACK_TYPE"); - CHECK_INTERFACE(ICamera, data, reply); - int callback_flag = data.readInt32(); - setPreviewCallbackFlag(callback_flag); - return NO_ERROR; - } break; - case START_PREVIEW: { - ALOGV("START_PREVIEW"); - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(startPreview()); - return NO_ERROR; - } break; - case START_RECORDING: { - ALOGV("START_RECORDING"); - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(startRecording()); - return NO_ERROR; - } break; - case STOP_PREVIEW: { - ALOGV("STOP_PREVIEW"); - CHECK_INTERFACE(ICamera, data, reply); - stopPreview(); - return NO_ERROR; - } break; - case STOP_RECORDING: { - ALOGV("STOP_RECORDING"); - CHECK_INTERFACE(ICamera, data, reply); - stopRecording(); - return NO_ERROR; - } break; - case RELEASE_RECORDING_FRAME: { - ALOGV("RELEASE_RECORDING_FRAME"); - CHECK_INTERFACE(ICamera, data, reply); - sp<IMemory> mem = interface_cast<IMemory>(data.readStrongBinder()); - releaseRecordingFrame(mem); - return NO_ERROR; - } break; - case STORE_META_DATA_IN_BUFFERS: { - ALOGV("STORE_META_DATA_IN_BUFFERS"); - CHECK_INTERFACE(ICamera, data, reply); - bool enabled = data.readInt32(); - reply->writeInt32(storeMetaDataInBuffers(enabled)); - return NO_ERROR; - } break; - case PREVIEW_ENABLED: { - ALOGV("PREVIEW_ENABLED"); - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(previewEnabled()); - return NO_ERROR; - } break; - case RECORDING_ENABLED: { - ALOGV("RECORDING_ENABLED"); - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(recordingEnabled()); - return NO_ERROR; - } break; - case AUTO_FOCUS: { - ALOGV("AUTO_FOCUS"); - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(autoFocus()); - return NO_ERROR; - } break; - case CANCEL_AUTO_FOCUS: { - ALOGV("CANCEL_AUTO_FOCUS"); - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(cancelAutoFocus()); - return NO_ERROR; - } break; - case TAKE_PICTURE: { - ALOGV("TAKE_PICTURE"); - CHECK_INTERFACE(ICamera, data, reply); - int msgType = data.readInt32(); - reply->writeInt32(takePicture(msgType)); - return NO_ERROR; - } break; - case SET_PARAMETERS: { - ALOGV("SET_PARAMETERS"); - CHECK_INTERFACE(ICamera, data, reply); - String8 params(data.readString8()); - reply->writeInt32(setParameters(params)); - return NO_ERROR; - } break; - case GET_PARAMETERS: { - ALOGV("GET_PARAMETERS"); - CHECK_INTERFACE(ICamera, data, reply); - reply->writeString8(getParameters()); - return NO_ERROR; - } break; - case SEND_COMMAND: { - ALOGV("SEND_COMMAND"); - CHECK_INTERFACE(ICamera, data, reply); - int command = data.readInt32(); - int arg1 = data.readInt32(); - int arg2 = data.readInt32(); - reply->writeInt32(sendCommand(command, arg1, arg2)); - return NO_ERROR; - } break; - case CONNECT: { - CHECK_INTERFACE(ICamera, data, reply); - sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder()); - reply->writeInt32(connect(cameraClient)); - return NO_ERROR; - } break; - case LOCK: { - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(lock()); - return NO_ERROR; - } break; - case UNLOCK: { - CHECK_INTERFACE(ICamera, data, reply); - reply->writeInt32(unlock()); - return NO_ERROR; - } break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - -// ---------------------------------------------------------------------------- - -}; // namespace android diff --git a/libs/camera/ICameraClient.cpp b/libs/camera/ICameraClient.cpp deleted file mode 100644 index 205c8ba..0000000 --- a/libs/camera/ICameraClient.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* -** -** Copyright 2008, 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_NDEBUG 0 -#define LOG_TAG "ICameraClient" -#include <utils/Log.h> -#include <stdint.h> -#include <sys/types.h> -#include <camera/ICameraClient.h> - -namespace android { - -enum { - NOTIFY_CALLBACK = IBinder::FIRST_CALL_TRANSACTION, - DATA_CALLBACK, - DATA_CALLBACK_TIMESTAMP, -}; - -class BpCameraClient: public BpInterface<ICameraClient> -{ -public: - BpCameraClient(const sp<IBinder>& impl) - : BpInterface<ICameraClient>(impl) - { - } - - // generic callback from camera service to app - void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) - { - ALOGV("notifyCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeInt32(msgType); - data.writeInt32(ext1); - data.writeInt32(ext2); - remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // generic data callback from camera service to app with image data - void dataCallback(int32_t msgType, const sp<IMemory>& imageData, - camera_frame_metadata_t *metadata) - { - ALOGV("dataCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeInt32(msgType); - data.writeStrongBinder(imageData->asBinder()); - if (metadata) { - data.writeInt32(metadata->number_of_faces); - data.write(metadata->faces, sizeof(camera_face_t) * metadata->number_of_faces); - } - remote()->transact(DATA_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // generic data callback from camera service to app with image data - void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& imageData) - { - ALOGV("dataCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeInt64(timestamp); - data.writeInt32(msgType); - data.writeStrongBinder(imageData->asBinder()); - remote()->transact(DATA_CALLBACK_TIMESTAMP, data, &reply, IBinder::FLAG_ONEWAY); - } -}; - -IMPLEMENT_META_INTERFACE(CameraClient, "android.hardware.ICameraClient"); - -// ---------------------------------------------------------------------- - -status_t BnCameraClient::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) -{ - switch(code) { - case NOTIFY_CALLBACK: { - ALOGV("NOTIFY_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - int32_t msgType = data.readInt32(); - int32_t ext1 = data.readInt32(); - int32_t ext2 = data.readInt32(); - notifyCallback(msgType, ext1, ext2); - return NO_ERROR; - } break; - case DATA_CALLBACK: { - ALOGV("DATA_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - int32_t msgType = data.readInt32(); - sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder()); - camera_frame_metadata_t *metadata = NULL; - if (data.dataAvail() > 0) { - metadata = new camera_frame_metadata_t; - metadata->number_of_faces = data.readInt32(); - metadata->faces = (camera_face_t *) data.readInplace( - sizeof(camera_face_t) * metadata->number_of_faces); - } - dataCallback(msgType, imageData, metadata); - if (metadata) delete metadata; - return NO_ERROR; - } break; - case DATA_CALLBACK_TIMESTAMP: { - ALOGV("DATA_CALLBACK_TIMESTAMP"); - CHECK_INTERFACE(ICameraClient, data, reply); - nsecs_t timestamp = data.readInt64(); - int32_t msgType = data.readInt32(); - sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder()); - dataCallbackTimestamp(timestamp, msgType, imageData); - return NO_ERROR; - } break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - -// ---------------------------------------------------------------------------- - -}; // namespace android - diff --git a/libs/camera/ICameraRecordingProxy.cpp b/libs/camera/ICameraRecordingProxy.cpp deleted file mode 100644 index 7223b6d..0000000 --- a/libs/camera/ICameraRecordingProxy.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2011 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_NDEBUG 0 -#define LOG_TAG "ICameraRecordingProxy" -#include <camera/ICameraRecordingProxy.h> -#include <camera/ICameraRecordingProxyListener.h> -#include <binder/IMemory.h> -#include <binder/Parcel.h> -#include <stdint.h> -#include <utils/Log.h> - -namespace android { - -enum { - START_RECORDING = IBinder::FIRST_CALL_TRANSACTION, - STOP_RECORDING, - RELEASE_RECORDING_FRAME, -}; - - -class BpCameraRecordingProxy: public BpInterface<ICameraRecordingProxy> -{ -public: - BpCameraRecordingProxy(const sp<IBinder>& impl) - : BpInterface<ICameraRecordingProxy>(impl) - { - } - - status_t startRecording(const sp<ICameraRecordingProxyListener>& listener) - { - ALOGV("startRecording"); - Parcel data, reply; - data.writeInterfaceToken(ICameraRecordingProxy::getInterfaceDescriptor()); - data.writeStrongBinder(listener->asBinder()); - remote()->transact(START_RECORDING, data, &reply); - return reply.readInt32(); - } - - void stopRecording() - { - ALOGV("stopRecording"); - Parcel data, reply; - data.writeInterfaceToken(ICameraRecordingProxy::getInterfaceDescriptor()); - remote()->transact(STOP_RECORDING, data, &reply); - } - - void releaseRecordingFrame(const sp<IMemory>& mem) - { - ALOGV("releaseRecordingFrame"); - Parcel data, reply; - data.writeInterfaceToken(ICameraRecordingProxy::getInterfaceDescriptor()); - data.writeStrongBinder(mem->asBinder()); - remote()->transact(RELEASE_RECORDING_FRAME, data, &reply); - } -}; - -IMPLEMENT_META_INTERFACE(CameraRecordingProxy, "android.hardware.ICameraRecordingProxy"); - -// ---------------------------------------------------------------------- - -status_t BnCameraRecordingProxy::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) -{ - switch(code) { - case START_RECORDING: { - ALOGV("START_RECORDING"); - CHECK_INTERFACE(ICameraRecordingProxy, data, reply); - sp<ICameraRecordingProxyListener> listener = - interface_cast<ICameraRecordingProxyListener>(data.readStrongBinder()); - reply->writeInt32(startRecording(listener)); - return NO_ERROR; - } break; - case STOP_RECORDING: { - ALOGV("STOP_RECORDING"); - CHECK_INTERFACE(ICameraRecordingProxy, data, reply); - stopRecording(); - return NO_ERROR; - } break; - case RELEASE_RECORDING_FRAME: { - ALOGV("RELEASE_RECORDING_FRAME"); - CHECK_INTERFACE(ICameraRecordingProxy, data, reply); - sp<IMemory> mem = interface_cast<IMemory>(data.readStrongBinder()); - releaseRecordingFrame(mem); - return NO_ERROR; - } break; - - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - -// ---------------------------------------------------------------------------- - -}; // namespace android - diff --git a/libs/camera/ICameraRecordingProxyListener.cpp b/libs/camera/ICameraRecordingProxyListener.cpp deleted file mode 100644 index cb17f19..0000000 --- a/libs/camera/ICameraRecordingProxyListener.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2011 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_NDEBUG 0 -#define LOG_TAG "ICameraRecordingProxyListener" -#include <camera/ICameraRecordingProxyListener.h> -#include <binder/IMemory.h> -#include <binder/Parcel.h> -#include <utils/Log.h> - -namespace android { - -enum { - DATA_CALLBACK_TIMESTAMP = IBinder::FIRST_CALL_TRANSACTION, -}; - -class BpCameraRecordingProxyListener: public BpInterface<ICameraRecordingProxyListener> -{ -public: - BpCameraRecordingProxyListener(const sp<IBinder>& impl) - : BpInterface<ICameraRecordingProxyListener>(impl) - { - } - - void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& imageData) - { - ALOGV("dataCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraRecordingProxyListener::getInterfaceDescriptor()); - data.writeInt64(timestamp); - data.writeInt32(msgType); - data.writeStrongBinder(imageData->asBinder()); - remote()->transact(DATA_CALLBACK_TIMESTAMP, data, &reply, IBinder::FLAG_ONEWAY); - } -}; - -IMPLEMENT_META_INTERFACE(CameraRecordingProxyListener, "android.hardware.ICameraRecordingProxyListener"); - -// ---------------------------------------------------------------------- - -status_t BnCameraRecordingProxyListener::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) -{ - switch(code) { - case DATA_CALLBACK_TIMESTAMP: { - ALOGV("DATA_CALLBACK_TIMESTAMP"); - CHECK_INTERFACE(ICameraRecordingProxyListener, data, reply); - nsecs_t timestamp = data.readInt64(); - int32_t msgType = data.readInt32(); - sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder()); - dataCallbackTimestamp(timestamp, msgType, imageData); - return NO_ERROR; - } break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - -// ---------------------------------------------------------------------------- - -}; // namespace android - diff --git a/libs/camera/ICameraService.cpp b/libs/camera/ICameraService.cpp deleted file mode 100644 index c74298a..0000000 --- a/libs/camera/ICameraService.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* -** -** Copyright 2008, 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. -*/ - -#include <stdint.h> -#include <sys/types.h> - -#include <binder/Parcel.h> -#include <binder/IPCThreadState.h> -#include <binder/IServiceManager.h> - -#include <camera/ICameraService.h> - -namespace android { - -class BpCameraService: public BpInterface<ICameraService> -{ -public: - BpCameraService(const sp<IBinder>& impl) - : BpInterface<ICameraService>(impl) - { - } - - // get number of cameras available - virtual int32_t getNumberOfCameras() - { - Parcel data, reply; - data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); - remote()->transact(BnCameraService::GET_NUMBER_OF_CAMERAS, data, &reply); - return reply.readInt32(); - } - - // get information about a camera - virtual status_t getCameraInfo(int cameraId, - struct CameraInfo* cameraInfo) { - Parcel data, reply; - data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); - data.writeInt32(cameraId); - remote()->transact(BnCameraService::GET_CAMERA_INFO, data, &reply); - cameraInfo->facing = reply.readInt32(); - cameraInfo->orientation = reply.readInt32(); - return reply.readInt32(); - } - - // connect to camera service - virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, int cameraId, - bool force, bool keep) - { - Parcel data, reply; - data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); - data.writeStrongBinder(cameraClient->asBinder()); - data.writeInt32(cameraId); - data.writeInt32(force); - data.writeInt32(keep); - remote()->transact(BnCameraService::CONNECT, data, &reply); - return interface_cast<ICamera>(reply.readStrongBinder()); - } -}; - -IMPLEMENT_META_INTERFACE(CameraService, "android.hardware.ICameraService"); - -// ---------------------------------------------------------------------- - -status_t BnCameraService::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) -{ - switch(code) { - case GET_NUMBER_OF_CAMERAS: { - CHECK_INTERFACE(ICameraService, data, reply); - reply->writeInt32(getNumberOfCameras()); - return NO_ERROR; - } break; - case GET_CAMERA_INFO: { - CHECK_INTERFACE(ICameraService, data, reply); - CameraInfo cameraInfo; - memset(&cameraInfo, 0, sizeof(cameraInfo)); - status_t result = getCameraInfo(data.readInt32(), &cameraInfo); - reply->writeInt32(cameraInfo.facing); - reply->writeInt32(cameraInfo.orientation); - reply->writeInt32(result); - return NO_ERROR; - } break; - case CONNECT: { - CHECK_INTERFACE(ICameraService, data, reply); - sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder()); - const int cameraId = data.readInt32(); - const int force = data.readInt32(); - const int keep = data.readInt32(); - sp<ICamera> camera = connect(cameraClient, cameraId, force, keep); - reply->writeStrongBinder(camera->asBinder()); - return NO_ERROR; - } break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - -// ---------------------------------------------------------------------------- - -}; // namespace android diff --git a/libs/common_time/Android.mk b/libs/common_time/Android.mk deleted file mode 100644 index 526f17b..0000000 --- a/libs/common_time/Android.mk +++ /dev/null @@ -1,21 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -# -# libcommon_time_client -# (binder marshalers for ICommonClock as well as common clock and local clock -# helper code) -# - -include $(CLEAR_VARS) - -LOCAL_MODULE := libcommon_time_client -LOCAL_MODULE_TAGS := optional -LOCAL_SRC_FILES := cc_helper.cpp \ - local_clock.cpp \ - ICommonClock.cpp \ - ICommonTimeConfig.cpp \ - utils.cpp -LOCAL_SHARED_LIBRARIES := libbinder \ - libhardware \ - libutils - -include $(BUILD_SHARED_LIBRARY) diff --git a/libs/common_time/ICommonClock.cpp b/libs/common_time/ICommonClock.cpp deleted file mode 100644 index 28b43ac..0000000 --- a/libs/common_time/ICommonClock.cpp +++ /dev/null @@ -1,432 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ -#include <linux/socket.h> - -#include <common_time/ICommonClock.h> -#include <binder/Parcel.h> - -#include "utils.h" - -namespace android { - -/***** ICommonClock *****/ - -enum { - IS_COMMON_TIME_VALID = IBinder::FIRST_CALL_TRANSACTION, - COMMON_TIME_TO_LOCAL_TIME, - LOCAL_TIME_TO_COMMON_TIME, - GET_COMMON_TIME, - GET_COMMON_FREQ, - GET_LOCAL_TIME, - GET_LOCAL_FREQ, - GET_ESTIMATED_ERROR, - GET_TIMELINE_ID, - GET_STATE, - GET_MASTER_ADDRESS, - REGISTER_LISTENER, - UNREGISTER_LISTENER, -}; - -const String16 ICommonClock::kServiceName("common_time.clock"); -const uint64_t ICommonClock::kInvalidTimelineID = 0; -const int32_t ICommonClock::kErrorEstimateUnknown = 0x7FFFFFFF; - -class BpCommonClock : public BpInterface<ICommonClock> -{ - public: - BpCommonClock(const sp<IBinder>& impl) - : BpInterface<ICommonClock>(impl) {} - - virtual status_t isCommonTimeValid(bool* valid, uint32_t* timelineID) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(IS_COMMON_TIME_VALID, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *valid = reply.readInt32(); - *timelineID = reply.readInt32(); - } - } - return status; - } - - virtual status_t commonTimeToLocalTime(int64_t commonTime, - int64_t* localTime) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - data.writeInt64(commonTime); - status_t status = remote()->transact(COMMON_TIME_TO_LOCAL_TIME, - data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *localTime = reply.readInt64(); - } - } - return status; - } - - virtual status_t localTimeToCommonTime(int64_t localTime, - int64_t* commonTime) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - data.writeInt64(localTime); - status_t status = remote()->transact(LOCAL_TIME_TO_COMMON_TIME, - data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *commonTime = reply.readInt64(); - } - } - return status; - } - - virtual status_t getCommonTime(int64_t* commonTime) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_COMMON_TIME, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *commonTime = reply.readInt64(); - } - } - return status; - } - - virtual status_t getCommonFreq(uint64_t* freq) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_COMMON_FREQ, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *freq = reply.readInt64(); - } - } - return status; - } - - virtual status_t getLocalTime(int64_t* localTime) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_LOCAL_TIME, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *localTime = reply.readInt64(); - } - } - return status; - } - - virtual status_t getLocalFreq(uint64_t* freq) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_LOCAL_FREQ, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *freq = reply.readInt64(); - } - } - return status; - } - - virtual status_t getEstimatedError(int32_t* estimate) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_ESTIMATED_ERROR, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *estimate = reply.readInt32(); - } - } - return status; - } - - virtual status_t getTimelineID(uint64_t* id) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_TIMELINE_ID, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *id = static_cast<uint64_t>(reply.readInt64()); - } - } - return status; - } - - virtual status_t getState(State* state) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_STATE, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *state = static_cast<State>(reply.readInt32()); - } - } - return status; - } - - virtual status_t getMasterAddr(struct sockaddr_storage* addr) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_MASTER_ADDRESS, data, &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) - deserializeSockaddr(&reply, addr); - } - return status; - } - - virtual status_t registerListener( - const sp<ICommonClockListener>& listener) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - data.writeStrongBinder(listener->asBinder()); - - status_t status = remote()->transact(REGISTER_LISTENER, data, &reply); - - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t unregisterListener( - const sp<ICommonClockListener>& listener) { - Parcel data, reply; - data.writeInterfaceToken(ICommonClock::getInterfaceDescriptor()); - data.writeStrongBinder(listener->asBinder()); - status_t status = remote()->transact(UNREGISTER_LISTENER, data, &reply); - - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } -}; - -IMPLEMENT_META_INTERFACE(CommonClock, "android.os.ICommonClock"); - -status_t BnCommonClock::onTransact(uint32_t code, - const Parcel& data, - Parcel* reply, - uint32_t flags) { - switch(code) { - case IS_COMMON_TIME_VALID: { - CHECK_INTERFACE(ICommonClock, data, reply); - bool valid; - uint32_t timelineID; - status_t status = isCommonTimeValid(&valid, &timelineID); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(valid); - reply->writeInt32(timelineID); - } - return OK; - } break; - - case COMMON_TIME_TO_LOCAL_TIME: { - CHECK_INTERFACE(ICommonClock, data, reply); - int64_t commonTime = data.readInt64(); - int64_t localTime; - status_t status = commonTimeToLocalTime(commonTime, &localTime); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(localTime); - } - return OK; - } break; - - case LOCAL_TIME_TO_COMMON_TIME: { - CHECK_INTERFACE(ICommonClock, data, reply); - int64_t localTime = data.readInt64(); - int64_t commonTime; - status_t status = localTimeToCommonTime(localTime, &commonTime); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(commonTime); - } - return OK; - } break; - - case GET_COMMON_TIME: { - CHECK_INTERFACE(ICommonClock, data, reply); - int64_t commonTime; - status_t status = getCommonTime(&commonTime); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(commonTime); - } - return OK; - } break; - - case GET_COMMON_FREQ: { - CHECK_INTERFACE(ICommonClock, data, reply); - uint64_t freq; - status_t status = getCommonFreq(&freq); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(freq); - } - return OK; - } break; - - case GET_LOCAL_TIME: { - CHECK_INTERFACE(ICommonClock, data, reply); - int64_t localTime; - status_t status = getLocalTime(&localTime); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(localTime); - } - return OK; - } break; - - case GET_LOCAL_FREQ: { - CHECK_INTERFACE(ICommonClock, data, reply); - uint64_t freq; - status_t status = getLocalFreq(&freq); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(freq); - } - return OK; - } break; - - case GET_ESTIMATED_ERROR: { - CHECK_INTERFACE(ICommonClock, data, reply); - int32_t error; - status_t status = getEstimatedError(&error); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(error); - } - return OK; - } break; - - case GET_TIMELINE_ID: { - CHECK_INTERFACE(ICommonClock, data, reply); - uint64_t id; - status_t status = getTimelineID(&id); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(static_cast<int64_t>(id)); - } - return OK; - } break; - - case GET_STATE: { - CHECK_INTERFACE(ICommonClock, data, reply); - State state; - status_t status = getState(&state); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(static_cast<int32_t>(state)); - } - return OK; - } break; - - case GET_MASTER_ADDRESS: { - CHECK_INTERFACE(ICommonClock, data, reply); - struct sockaddr_storage addr; - status_t status = getMasterAddr(&addr); - - if ((status == OK) && !canSerializeSockaddr(&addr)) { - status = UNKNOWN_ERROR; - } - - reply->writeInt32(status); - - if (status == OK) { - serializeSockaddr(reply, &addr); - } - - return OK; - } break; - - case REGISTER_LISTENER: { - CHECK_INTERFACE(ICommonClock, data, reply); - sp<ICommonClockListener> listener = - interface_cast<ICommonClockListener>(data.readStrongBinder()); - status_t status = registerListener(listener); - reply->writeInt32(status); - return OK; - } break; - - case UNREGISTER_LISTENER: { - CHECK_INTERFACE(ICommonClock, data, reply); - sp<ICommonClockListener> listener = - interface_cast<ICommonClockListener>(data.readStrongBinder()); - status_t status = unregisterListener(listener); - reply->writeInt32(status); - return OK; - } break; - } - return BBinder::onTransact(code, data, reply, flags); -} - -/***** ICommonClockListener *****/ - -enum { - ON_TIMELINE_CHANGED = IBinder::FIRST_CALL_TRANSACTION, -}; - -class BpCommonClockListener : public BpInterface<ICommonClockListener> -{ - public: - BpCommonClockListener(const sp<IBinder>& impl) - : BpInterface<ICommonClockListener>(impl) {} - - virtual void onTimelineChanged(uint64_t timelineID) { - Parcel data, reply; - data.writeInterfaceToken( - ICommonClockListener::getInterfaceDescriptor()); - data.writeInt64(timelineID); - remote()->transact(ON_TIMELINE_CHANGED, data, &reply); - } -}; - -IMPLEMENT_META_INTERFACE(CommonClockListener, - "android.os.ICommonClockListener"); - -status_t BnCommonClockListener::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { - switch(code) { - case ON_TIMELINE_CHANGED: { - CHECK_INTERFACE(ICommonClockListener, data, reply); - uint32_t timelineID = data.readInt64(); - onTimelineChanged(timelineID); - return NO_ERROR; - } break; - } - - return BBinder::onTransact(code, data, reply, flags); -} - -}; // namespace android diff --git a/libs/common_time/ICommonTimeConfig.cpp b/libs/common_time/ICommonTimeConfig.cpp deleted file mode 100644 index 8eb37cb..0000000 --- a/libs/common_time/ICommonTimeConfig.cpp +++ /dev/null @@ -1,508 +0,0 @@ -/* - * Copyright (C) 2011 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. - */ -#include <linux/socket.h> - -#include <common_time/ICommonTimeConfig.h> -#include <binder/Parcel.h> - -#include "utils.h" - -namespace android { - -/***** ICommonTimeConfig *****/ - -enum { - GET_MASTER_ELECTION_PRIORITY = IBinder::FIRST_CALL_TRANSACTION, - SET_MASTER_ELECTION_PRIORITY, - GET_MASTER_ELECTION_ENDPOINT, - SET_MASTER_ELECTION_ENDPOINT, - GET_MASTER_ELECTION_GROUP_ID, - SET_MASTER_ELECTION_GROUP_ID, - GET_INTERFACE_BINDING, - SET_INTERFACE_BINDING, - GET_MASTER_ANNOUNCE_INTERVAL, - SET_MASTER_ANNOUNCE_INTERVAL, - GET_CLIENT_SYNC_INTERVAL, - SET_CLIENT_SYNC_INTERVAL, - GET_PANIC_THRESHOLD, - SET_PANIC_THRESHOLD, - GET_AUTO_DISABLE, - SET_AUTO_DISABLE, - FORCE_NETWORKLESS_MASTER_MODE, -}; - -const String16 ICommonTimeConfig::kServiceName("common_time.config"); - -class BpCommonTimeConfig : public BpInterface<ICommonTimeConfig> -{ - public: - BpCommonTimeConfig(const sp<IBinder>& impl) - : BpInterface<ICommonTimeConfig>(impl) {} - - virtual status_t getMasterElectionPriority(uint8_t *priority) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_MASTER_ELECTION_PRIORITY, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *priority = static_cast<uint8_t>(reply.readInt32()); - } - } - - return status; - } - - virtual status_t setMasterElectionPriority(uint8_t priority) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - data.writeInt32(static_cast<int32_t>(priority)); - status_t status = remote()->transact(SET_MASTER_ELECTION_PRIORITY, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t getMasterElectionEndpoint(struct sockaddr_storage *addr) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_MASTER_ELECTION_ENDPOINT, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - deserializeSockaddr(&reply, addr); - } - } - - return status; - } - - virtual status_t setMasterElectionEndpoint( - const struct sockaddr_storage *addr) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - if (!canSerializeSockaddr(addr)) - return BAD_VALUE; - if (NULL == addr) { - data.writeInt32(0); - } else { - data.writeInt32(1); - serializeSockaddr(&data, addr); - } - status_t status = remote()->transact(SET_MASTER_ELECTION_ENDPOINT, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t getMasterElectionGroupId(uint64_t *id) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_MASTER_ELECTION_GROUP_ID, - data, - &reply); - - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *id = static_cast<uint64_t>(reply.readInt64()); - } - } - - return status; - } - - virtual status_t setMasterElectionGroupId(uint64_t id) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - data.writeInt64(id); - status_t status = remote()->transact(SET_MASTER_ELECTION_GROUP_ID, - data, - &reply); - - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t getInterfaceBinding(String16& ifaceName) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_INTERFACE_BINDING, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - ifaceName = reply.readString16(); - } - } - - return status; - } - - virtual status_t setInterfaceBinding(const String16& ifaceName) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - data.writeString16(ifaceName); - status_t status = remote()->transact(SET_INTERFACE_BINDING, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t getMasterAnnounceInterval(int *interval) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_MASTER_ANNOUNCE_INTERVAL, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *interval = reply.readInt32(); - } - } - - return status; - } - - virtual status_t setMasterAnnounceInterval(int interval) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - data.writeInt32(interval); - status_t status = remote()->transact(SET_MASTER_ANNOUNCE_INTERVAL, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t getClientSyncInterval(int *interval) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_CLIENT_SYNC_INTERVAL, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *interval = reply.readInt32(); - } - } - - return status; - } - - virtual status_t setClientSyncInterval(int interval) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - data.writeInt32(interval); - status_t status = remote()->transact(SET_CLIENT_SYNC_INTERVAL, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t getPanicThreshold(int *threshold) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_PANIC_THRESHOLD, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *threshold = reply.readInt32(); - } - } - - return status; - } - - virtual status_t setPanicThreshold(int threshold) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - data.writeInt32(threshold); - status_t status = remote()->transact(SET_PANIC_THRESHOLD, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t getAutoDisable(bool *autoDisable) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(GET_AUTO_DISABLE, - data, - &reply); - if (status == OK) { - status = reply.readInt32(); - if (status == OK) { - *autoDisable = (0 != reply.readInt32()); - } - } - - return status; - } - - virtual status_t setAutoDisable(bool autoDisable) { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - data.writeInt32(autoDisable ? 1 : 0); - status_t status = remote()->transact(SET_AUTO_DISABLE, - data, - &reply); - - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } - - virtual status_t forceNetworklessMasterMode() { - Parcel data, reply; - data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor()); - status_t status = remote()->transact(FORCE_NETWORKLESS_MASTER_MODE, - data, - &reply); - - if (status == OK) { - status = reply.readInt32(); - } - - return status; - } -}; - -IMPLEMENT_META_INTERFACE(CommonTimeConfig, "android.os.ICommonTimeConfig"); - -status_t BnCommonTimeConfig::onTransact(uint32_t code, - const Parcel& data, - Parcel* reply, - uint32_t flags) { - switch(code) { - case GET_MASTER_ELECTION_PRIORITY: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - uint8_t priority; - status_t status = getMasterElectionPriority(&priority); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(static_cast<int32_t>(priority)); - } - return OK; - } break; - - case SET_MASTER_ELECTION_PRIORITY: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - uint8_t priority = static_cast<uint8_t>(data.readInt32()); - status_t status = setMasterElectionPriority(priority); - reply->writeInt32(status); - return OK; - } break; - - case GET_MASTER_ELECTION_ENDPOINT: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - struct sockaddr_storage addr; - status_t status = getMasterElectionEndpoint(&addr); - - if ((status == OK) && !canSerializeSockaddr(&addr)) { - status = UNKNOWN_ERROR; - } - - reply->writeInt32(status); - - if (status == OK) { - serializeSockaddr(reply, &addr); - } - - return OK; - } break; - - case SET_MASTER_ELECTION_ENDPOINT: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - struct sockaddr_storage addr; - int hasAddr = data.readInt32(); - - status_t status; - if (hasAddr) { - deserializeSockaddr(&data, &addr); - status = setMasterElectionEndpoint(&addr); - } else { - status = setMasterElectionEndpoint(&addr); - } - - reply->writeInt32(status); - return OK; - } break; - - case GET_MASTER_ELECTION_GROUP_ID: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - uint64_t id; - status_t status = getMasterElectionGroupId(&id); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt64(id); - } - return OK; - } break; - - case SET_MASTER_ELECTION_GROUP_ID: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - uint64_t id = static_cast<uint64_t>(data.readInt64()); - status_t status = setMasterElectionGroupId(id); - reply->writeInt32(status); - return OK; - } break; - - case GET_INTERFACE_BINDING: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - String16 ret; - status_t status = getInterfaceBinding(ret); - reply->writeInt32(status); - if (status == OK) { - reply->writeString16(ret); - } - return OK; - } break; - - case SET_INTERFACE_BINDING: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - String16 ifaceName; - ifaceName = data.readString16(); - status_t status = setInterfaceBinding(ifaceName); - reply->writeInt32(status); - return OK; - } break; - - case GET_MASTER_ANNOUNCE_INTERVAL: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - int interval; - status_t status = getMasterAnnounceInterval(&interval); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(interval); - } - return OK; - } break; - - case SET_MASTER_ANNOUNCE_INTERVAL: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - int interval = data.readInt32(); - status_t status = setMasterAnnounceInterval(interval); - reply->writeInt32(status); - return OK; - } break; - - case GET_CLIENT_SYNC_INTERVAL: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - int interval; - status_t status = getClientSyncInterval(&interval); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(interval); - } - return OK; - } break; - - case SET_CLIENT_SYNC_INTERVAL: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - int interval = data.readInt32(); - status_t status = setClientSyncInterval(interval); - reply->writeInt32(status); - return OK; - } break; - - case GET_PANIC_THRESHOLD: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - int threshold; - status_t status = getPanicThreshold(&threshold); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(threshold); - } - return OK; - } break; - - case SET_PANIC_THRESHOLD: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - int threshold = data.readInt32(); - status_t status = setPanicThreshold(threshold); - reply->writeInt32(status); - return OK; - } break; - - case GET_AUTO_DISABLE: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - bool autoDisable; - status_t status = getAutoDisable(&autoDisable); - reply->writeInt32(status); - if (status == OK) { - reply->writeInt32(autoDisable ? 1 : 0); - } - return OK; - } break; - - case SET_AUTO_DISABLE: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - bool autoDisable = (0 != data.readInt32()); - status_t status = setAutoDisable(autoDisable); - reply->writeInt32(status); - return OK; - } break; - - case FORCE_NETWORKLESS_MASTER_MODE: { - CHECK_INTERFACE(ICommonTimeConfig, data, reply); - status_t status = forceNetworklessMasterMode(); - reply->writeInt32(status); - return OK; - } break; - } - return BBinder::onTransact(code, data, reply, flags); -} - -}; // namespace android - diff --git a/libs/common_time/cc_helper.cpp b/libs/common_time/cc_helper.cpp deleted file mode 100644 index 8d8556c..0000000 --- a/libs/common_time/cc_helper.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2011 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. - */ - -#include <stdint.h> - -#include <common_time/cc_helper.h> -#include <common_time/ICommonClock.h> -#include <utils/threads.h> - -namespace android { - -Mutex CCHelper::lock_; -sp<ICommonClock> CCHelper::common_clock_; -sp<ICommonClockListener> CCHelper::common_clock_listener_; -uint32_t CCHelper::ref_count_ = 0; - -bool CCHelper::verifyClock_l() { - bool ret = false; - - if (common_clock_ == NULL) { - common_clock_ = ICommonClock::getInstance(); - if (common_clock_ == NULL) - goto bailout; - } - - if (ref_count_ > 0) { - if (common_clock_listener_ == NULL) { - common_clock_listener_ = new CommonClockListener(); - if (common_clock_listener_ == NULL) - goto bailout; - - if (OK != common_clock_->registerListener(common_clock_listener_)) - goto bailout; - } - } - - ret = true; - -bailout: - if (!ret) { - common_clock_listener_ = NULL; - common_clock_ = NULL; - } - return ret; -} - -CCHelper::CCHelper() { - Mutex::Autolock lock(&lock_); - ref_count_++; - verifyClock_l(); -} - -CCHelper::~CCHelper() { - Mutex::Autolock lock(&lock_); - - assert(ref_count_ > 0); - ref_count_--; - - // If we were the last CCHelper instance in the system, and we had - // previously register a listener, unregister it now so that the common time - // service has the chance to go into auto-disabled mode. - if (!ref_count_ && - (common_clock_ != NULL) && - (common_clock_listener_ != NULL)) { - common_clock_->unregisterListener(common_clock_listener_); - common_clock_listener_ = NULL; - } -} - -void CCHelper::CommonClockListener::onTimelineChanged(uint64_t timelineID) { - // do nothing; listener is only really used as a token so the server can - // find out when clients die. -} - -// Helper methods which attempts to make calls to the common time binder -// service. If the first attempt fails with DEAD_OBJECT, the helpers will -// attempt to make a connection to the service again (assuming that the process -// hosting the service had crashed and the client proxy we are holding is dead) -// If the second attempt fails, or no connection can be made, the we let the -// error propagate up the stack and let the caller deal with the situation as -// best they can. -#define CCHELPER_METHOD(decl, call) \ - status_t CCHelper::decl { \ - Mutex::Autolock lock(&lock_); \ - \ - if (!verifyClock_l()) \ - return DEAD_OBJECT; \ - \ - status_t status = common_clock_->call; \ - if (DEAD_OBJECT == status) { \ - if (!verifyClock_l()) \ - return DEAD_OBJECT; \ - status = common_clock_->call; \ - } \ - \ - return status; \ - } - -#define VERIFY_CLOCK() - -CCHELPER_METHOD(isCommonTimeValid(bool* valid, uint32_t* timelineID), - isCommonTimeValid(valid, timelineID)) -CCHELPER_METHOD(commonTimeToLocalTime(int64_t commonTime, int64_t* localTime), - commonTimeToLocalTime(commonTime, localTime)) -CCHELPER_METHOD(localTimeToCommonTime(int64_t localTime, int64_t* commonTime), - localTimeToCommonTime(localTime, commonTime)) -CCHELPER_METHOD(getCommonTime(int64_t* commonTime), - getCommonTime(commonTime)) -CCHELPER_METHOD(getCommonFreq(uint64_t* freq), - getCommonFreq(freq)) -CCHELPER_METHOD(getLocalTime(int64_t* localTime), - getLocalTime(localTime)) -CCHELPER_METHOD(getLocalFreq(uint64_t* freq), - getLocalFreq(freq)) - -} // namespace android diff --git a/libs/common_time/local_clock.cpp b/libs/common_time/local_clock.cpp deleted file mode 100644 index a7c61fc..0000000 --- a/libs/common_time/local_clock.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2011 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 "common_time" -#include <utils/Log.h> - -#include <assert.h> -#include <stdint.h> - -#include <common_time/local_clock.h> -#include <hardware/hardware.h> -#include <hardware/local_time_hal.h> -#include <utils/Errors.h> -#include <utils/threads.h> - -namespace android { - -Mutex LocalClock::dev_lock_; -local_time_hw_device_t* LocalClock::dev_ = NULL; - -LocalClock::LocalClock() { - int res; - const hw_module_t* mod; - - AutoMutex lock(&dev_lock_); - - if (dev_ != NULL) - return; - - res = hw_get_module_by_class(LOCAL_TIME_HARDWARE_MODULE_ID, NULL, &mod); - if (res) { - ALOGE("Failed to open local time HAL module (res = %d)", res); - } else { - res = local_time_hw_device_open(mod, &dev_); - if (res) { - ALOGE("Failed to open local time HAL device (res = %d)", res); - dev_ = NULL; - } - } -} - -bool LocalClock::initCheck() { - return (NULL != dev_); -} - -int64_t LocalClock::getLocalTime() { - assert(NULL != dev_); - assert(NULL != dev_->get_local_time); - - return dev_->get_local_time(dev_); -} - -uint64_t LocalClock::getLocalFreq() { - assert(NULL != dev_); - assert(NULL != dev_->get_local_freq); - - return dev_->get_local_freq(dev_); -} - -status_t LocalClock::setLocalSlew(int16_t rate) { - assert(NULL != dev_); - - if (!dev_->set_local_slew) - return INVALID_OPERATION; - - return static_cast<status_t>(dev_->set_local_slew(dev_, rate)); -} - -int32_t LocalClock::getDebugLog(struct local_time_debug_event* records, - int max_records) { - assert(NULL != dev_); - - if (!dev_->get_debug_log) - return INVALID_OPERATION; - - return dev_->get_debug_log(dev_, records, max_records); -} - -} // namespace android diff --git a/libs/common_time/utils.cpp b/libs/common_time/utils.cpp deleted file mode 100644 index 6539171..0000000 --- a/libs/common_time/utils.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -#include <arpa/inet.h> -#include <linux/socket.h> - -#include <binder/Parcel.h> - -namespace android { - -bool canSerializeSockaddr(const struct sockaddr_storage* addr) { - switch (addr->ss_family) { - case AF_INET: - case AF_INET6: - return true; - default: - return false; - } -} - -void serializeSockaddr(Parcel* p, const struct sockaddr_storage* addr) { - switch (addr->ss_family) { - case AF_INET: { - const struct sockaddr_in* s = - reinterpret_cast<const struct sockaddr_in*>(addr); - p->writeInt32(AF_INET); - p->writeInt32(ntohl(s->sin_addr.s_addr)); - p->writeInt32(static_cast<int32_t>(ntohs(s->sin_port))); - } break; - - case AF_INET6: { - const struct sockaddr_in6* s = - reinterpret_cast<const struct sockaddr_in6*>(addr); - const int32_t* a = - reinterpret_cast<const int32_t*>(s->sin6_addr.s6_addr); - p->writeInt32(AF_INET6); - p->writeInt32(ntohl(a[0])); - p->writeInt32(ntohl(a[1])); - p->writeInt32(ntohl(a[2])); - p->writeInt32(ntohl(a[3])); - p->writeInt32(static_cast<int32_t>(ntohs(s->sin6_port))); - p->writeInt32(ntohl(s->sin6_flowinfo)); - p->writeInt32(ntohl(s->sin6_scope_id)); - } break; - } -} - -void deserializeSockaddr(const Parcel* p, struct sockaddr_storage* addr) { - memset(addr, 0, sizeof(addr)); - - addr->ss_family = p->readInt32(); - switch(addr->ss_family) { - case AF_INET: { - struct sockaddr_in* s = - reinterpret_cast<struct sockaddr_in*>(addr); - s->sin_addr.s_addr = htonl(p->readInt32()); - s->sin_port = htons(static_cast<uint16_t>(p->readInt32())); - } break; - - case AF_INET6: { - struct sockaddr_in6* s = - reinterpret_cast<struct sockaddr_in6*>(addr); - int32_t* a = reinterpret_cast<int32_t*>(s->sin6_addr.s6_addr); - - a[0] = htonl(p->readInt32()); - a[1] = htonl(p->readInt32()); - a[2] = htonl(p->readInt32()); - a[3] = htonl(p->readInt32()); - s->sin6_port = htons(static_cast<uint16_t>(p->readInt32())); - s->sin6_flowinfo = htonl(p->readInt32()); - s->sin6_scope_id = htonl(p->readInt32()); - } break; - } -} - -} // namespace android diff --git a/libs/common_time/utils.h b/libs/common_time/utils.h deleted file mode 100644 index ce79d0d..0000000 --- a/libs/common_time/utils.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2012 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_LIBCOMMONCLOCK_UTILS_H -#define ANDROID_LIBCOMMONCLOCK_UTILS_H - -#include <linux/socket.h> - -#include <binder/Parcel.h> -#include <utils/Errors.h> - -namespace android { - -extern bool canSerializeSockaddr(const struct sockaddr_storage* addr); -extern void serializeSockaddr(Parcel* p, const struct sockaddr_storage* addr); -extern status_t deserializeSockaddr(const Parcel* p, - struct sockaddr_storage* addr); - -}; // namespace android - -#endif // ANDROID_LIBCOMMONCLOCK_UTILS_H |