blob: a79b3c36075e3f509f5bae4f8846c20d13173de9 [file] [log] [blame]
Priya Komarlingamb85535d2009-11-30 13:06:01 -08001/*
2** Copyright 2008, Google Inc.
Apurva Rajguru08383852010-05-17 14:25:39 -07003** Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved.
Priya Komarlingamb85535d2009-11-30 13:06:01 -08004**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9** http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18#ifndef ANDROID_HARDWARE_QUALCOMM_CAMERA_HARDWARE_H
19#define ANDROID_HARDWARE_QUALCOMM_CAMERA_HARDWARE_H
20
Priya Komarlingam9bb2d492010-06-23 19:21:52 -070021#include <camera/CameraHardwareInterface.h>
Priya Komarlingamb85535d2009-11-30 13:06:01 -080022#include <binder/MemoryBase.h>
23#include <binder/MemoryHeapBase.h>
24#include <stdint.h>
Kiran Kumar H N5efb3ff2009-12-07 01:02:44 -080025#include <ui/Overlay.h>
Priya Komarlingamb85535d2009-11-30 13:06:01 -080026
27extern "C" {
28#include <linux/android_pmem.h>
29#include <media/msm_camera.h>
30#include <camera.h>
Apurva Rajguru1db0c392009-11-30 21:39:04 -080031#include <camera_defs_i.h>
Nishant Pandit741742b2010-09-21 03:24:20 +053032#include <mm_camera_interface.h>
Priya Komarlingamb85535d2009-11-30 13:06:01 -080033}
34
35struct str_map {
36 const char *const desc;
37 int val;
38};
39
Kiran Kumar H N8ff7b982010-01-25 13:54:39 -080040typedef enum {
41 TARGET_MSM7625,
42 TARGET_MSM7627,
43 TARGET_QSD8250,
44 TARGET_MSM7630,
Nishant Pandit3c278cd2010-07-13 15:56:04 +053045 TARGET_MSM8660,
Kiran Kumar H N8ff7b982010-01-25 13:54:39 -080046 TARGET_MAX
47}targetType;
48
Vamshidhar Kondra92ce9142010-09-03 18:22:08 +053049typedef enum {
50 LIVESHOT_DONE,
51 LIVESHOT_IN_PROGRESS,
52 LIVESHOT_STOPPED
53}liveshotState;
54
Kiran Kumar H N8ff7b982010-01-25 13:54:39 -080055struct target_map {
56 const char *targetStr;
57 targetType targetEnum;
58};
59
Srinivasan Kannan9c14ead2010-02-22 17:15:58 -080060struct board_property{
61 targetType target;
62 unsigned int previewSizeMask;
Apurva Rajguru8e0a8da2010-06-02 11:26:36 -070063 bool hasSceneDetect;
Apurva Rajgurue5965c42010-09-09 14:24:54 -070064 bool hasSelectableZoneAf;
Srinivasan Kannan9c14ead2010-02-22 17:15:58 -080065};
66
Priya Komarlingamb85535d2009-11-30 13:06:01 -080067namespace android {
68
69class QualcommCameraHardware : public CameraHardwareInterface {
70public:
71
72 virtual sp<IMemoryHeap> getPreviewHeap() const;
73 virtual sp<IMemoryHeap> getRawHeap() const;
74
75 virtual void setCallbacks(notify_callback notify_cb,
76 data_callback data_cb,
77 data_callback_timestamp data_cb_timestamp,
78 void* user);
79 virtual void enableMsgType(int32_t msgType);
80 virtual void disableMsgType(int32_t msgType);
81 virtual bool msgTypeEnabled(int32_t msgType);
82
83 virtual status_t dump(int fd, const Vector<String16>& args) const;
84 virtual status_t startPreview();
85 virtual void stopPreview();
86 virtual bool previewEnabled();
87 virtual status_t startRecording();
88 virtual void stopRecording();
89 virtual bool recordingEnabled();
90 virtual void releaseRecordingFrame(const sp<IMemory>& mem);
91 virtual status_t autoFocus();
92 virtual status_t cancelAutoFocus();
93 virtual status_t takePicture();
Vamshidhar Kondra92ce9142010-09-03 18:22:08 +053094 virtual status_t takeLiveSnapshot();
95 void set_liveshot_exifinfo();
Priya Komarlingamb85535d2009-11-30 13:06:01 -080096 virtual status_t cancelPicture();
97 virtual status_t setParameters(const CameraParameters& params);
98 virtual CameraParameters getParameters() const;
99 virtual status_t sendCommand(int32_t command, int32_t arg1, int32_t arg2);
Kiran Kumar H N4dd45a62010-02-26 15:56:33 -0800100 virtual status_t getBufferInfo( sp<IMemory>& Frame, size_t *alignedSize);
Mohan Kandra1659b0c2010-07-18 16:36:25 -0700101 virtual void encodeData( );
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800102
103 virtual void release();
Kiran Kumar H N5efb3ff2009-12-07 01:02:44 -0800104 virtual bool useOverlay();
105 virtual status_t setOverlay(const sp<Overlay> &overlay);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800106
107 static sp<CameraHardwareInterface> createInstance();
108 static sp<QualcommCameraHardware> getInstance();
109
110 void receivePreviewFrame(struct msm_frame *frame);
Vamshidhar Kondra92ce9142010-09-03 18:22:08 +0530111 void receiveLiveSnapshot(uint32_t jpeg_size);
Nishant Pandit741742b2010-09-21 03:24:20 +0530112 void receiveCameraStats(camstats_type stype, camera_preview_histogram_info* histinfo);
Sravankb4f5f1c2010-01-21 11:06:17 +0530113 void receiveRecordingFrame(struct msm_frame *frame);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800114 void receiveJpegPicture(void);
115 void jpeg_set_location();
116 void receiveJpegPictureFragment(uint8_t *buf, uint32_t size);
Kiran Kumar H Ncb54ba82010-03-09 10:27:38 -0800117 void notifyShutter(common_crop_t *crop, bool mPlayShutterSoundOnly);
Mohan Kandra3dd524f2010-09-20 13:41:42 -0700118 void receive_camframe_error_timeout();
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800119
120private:
121 QualcommCameraHardware();
122 virtual ~QualcommCameraHardware();
123 status_t startPreviewInternal();
Nishant Pandit741742b2010-09-21 03:24:20 +0530124 status_t setHistogramOn();
125 status_t setHistogramOff();
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800126 void stopPreviewInternal();
127 friend void *auto_focus_thread(void *user);
128 void runAutoFocus();
129 status_t cancelAutoFocusInternal();
130 bool native_set_dimension (int camfd);
131 bool native_jpeg_encode (void);
Deepak Kurieneb58c682010-11-01 15:26:02 -0700132 bool native_set_parms(mm_camera_parm_type_t type, uint16_t length, void *value);
133 bool native_set_parms( mm_camera_parm_type_t type, uint16_t length, void *value, int *result);
Mohan Kandrad9efed92010-01-15 19:08:39 -0800134 bool native_zoom_image(int fd, int srcOffset, int dstOffset, common_crop_t *crop);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800135
136 static wp<QualcommCameraHardware> singleton;
137
138 /* These constants reflect the number of buffers that libmmcamera requires
139 for preview and raw, and need to be updated when libmmcamera
140 changes.
141 */
142 static const int kPreviewBufferCount = NUM_PREVIEW_BUFFERS;
143 static const int kRawBufferCount = 1;
144 static const int kJpegBufferCount = 1;
145
Srinivasan Kannan5701a942010-04-15 16:17:21 -0700146 int jpegPadding;
147
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800148 CameraParameters mParameters;
149 unsigned int frame_size;
150 bool mCameraRunning;
Srinivasan Kannan74712c92010-04-07 13:36:48 -0700151 Mutex mCameraRunningLock;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800152 bool mPreviewInitialized;
153
154 // This class represents a heap which maintains several contiguous
155 // buffers. The heap may be backed by pmem (when pmem_pool contains
156 // the name of a /dev/pmem* file), or by ashmem (when pmem_pool == NULL).
157
158 struct MemPool : public RefBase {
159 MemPool(int buffer_size, int num_buffers,
160 int frame_size,
161 const char *name);
162
163 virtual ~MemPool() = 0;
164
165 void completeInitialization();
166 bool initialized() const {
167 return mHeap != NULL && mHeap->base() != MAP_FAILED;
168 }
169
170 virtual status_t dump(int fd, const Vector<String16>& args) const;
171
172 int mBufferSize;
173 int mAlignedBufferSize;
174 int mNumBuffers;
175 int mFrameSize;
176 sp<MemoryHeapBase> mHeap;
177 sp<MemoryBase> *mBuffers;
178
179 const char *mName;
180 };
181
182 struct AshmemPool : public MemPool {
183 AshmemPool(int buffer_size, int num_buffers,
184 int frame_size,
185 const char *name);
186 };
187
188 struct PmemPool : public MemPool {
189 PmemPool(const char *pmem_pool,
190 int control_camera_fd, int flags, int pmem_type,
191 int buffer_size, int num_buffers,
Mohan Kandra02486042010-06-18 16:49:43 -0700192 int frame_size, int cbcr_offset,
193 int yoffset, const char *name);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800194 virtual ~PmemPool();
195 int mFd;
196 int mPmemType;
Mohan Kandra02486042010-06-18 16:49:43 -0700197 int mCbCrOffset;
198 int myOffset;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800199 int mCameraControlFd;
200 uint32_t mAlignedSize;
201 struct pmem_region mSize;
202 };
203
204 sp<PmemPool> mPreviewHeap;
Sravankb4f5f1c2010-01-21 11:06:17 +0530205 sp<PmemPool> mRecordHeap;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800206 sp<PmemPool> mThumbnailHeap;
207 sp<PmemPool> mRawHeap;
208 sp<PmemPool> mDisplayHeap;
209 sp<AshmemPool> mJpegHeap;
Nishant Pandit741742b2010-09-21 03:24:20 +0530210 sp<AshmemPool> mStatHeap;
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800211 sp<PmemPool> mRawSnapShotPmemHeap;
Priyanka Kharat02807662010-10-13 23:44:47 -0700212 sp<PmemPool> mPostViewHeap;
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800213
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800214 bool startCamera();
215 bool initPreview();
Sravankb4f5f1c2010-01-21 11:06:17 +0530216 bool initRecord();
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800217 void deinitPreview();
218 bool initRaw(bool initJpegHeap);
Vamshidhar Kondra92ce9142010-09-03 18:22:08 +0530219 bool initLiveSnapshot(int videowidth, int videoheight);
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800220 bool initRawSnapshot();
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800221 void deinitRaw();
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800222 void deinitRawSnapshot();
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800223
224 bool mFrameThreadRunning;
225 Mutex mFrameThreadWaitLock;
226 Condition mFrameThreadWait;
227 friend void *frame_thread(void *user);
228 void runFrameThread(void *data);
229
Sravankb4f5f1c2010-01-21 11:06:17 +0530230 //720p recording video thread
231 bool mVideoThreadExit;
Mohan Kandra156d0ac2010-01-25 16:59:17 -0800232 bool mVideoThreadRunning;
Sravankb4f5f1c2010-01-21 11:06:17 +0530233 Mutex mVideoThreadWaitLock;
234 Condition mVideoThreadWait;
235 friend void *video_thread(void *user);
236 void runVideoThread(void *data);
237
Nishant Pandit741742b2010-09-21 03:24:20 +0530238 // For Histogram
239 int mStatsOn;
240 int mCurrent;
241 bool mSendData;
242 Mutex mStatsWaitLock;
243 Condition mStatsWait;
244
245
Sravankb4f5f1c2010-01-21 11:06:17 +0530246
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800247 bool mShutterPending;
248 Mutex mShutterLock;
249
250 bool mSnapshotThreadRunning;
251 Mutex mSnapshotThreadWaitLock;
252 Condition mSnapshotThreadWait;
253 friend void *snapshot_thread(void *user);
254 void runSnapshotThread(void *data);
Srinivasan Kannan426cde72010-06-04 09:37:21 -0700255 Mutex mRawPictureHeapLock;
Mohan Kandraca2e7a92010-06-21 15:48:45 -0700256 bool mJpegThreadRunning;
257 Mutex mJpegThreadWaitLock;
258 Condition mJpegThreadWait;
259 bool mInSnapshotMode;
260 Mutex mInSnapshotModeWaitLock;
261 Condition mInSnapshotModeWait;
Mohan Kandra1659b0c2010-07-18 16:36:25 -0700262 bool mEncodePending;
263 Mutex mEncodePendingWaitLock;
264 Condition mEncodePendingWait;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800265
Mohan Kandrabad0eaa2010-02-04 15:11:54 -0800266 void debugShowPreviewFPS() const;
267 void debugShowVideoFPS() const;
Mohan Kandra740cfce2010-01-07 12:58:24 -0800268
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800269 int mSnapshotFormat;
Priyanka Kharat02807662010-10-13 23:44:47 -0700270 bool mFirstFrame;
Deepak Kurieneb58c682010-11-01 15:26:02 -0700271 void hasAutoFocusSupport();
Srinivasan Kannan3b9e8df2009-12-05 12:21:46 -0800272 void filterPictureSizes();
Srinivasan Kannan9c14ead2010-02-22 17:15:58 -0800273 void filterPreviewSizes();
Kiran Kumar H N8ff7b982010-01-25 13:54:39 -0800274 void storeTargetType();
Apurva Rajguru8e0a8da2010-06-02 11:26:36 -0700275 bool supportsSceneDetection();
Apurva Rajgurue5965c42010-09-09 14:24:54 -0700276 bool supportsSelectableZoneAf();
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800277
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800278 void initDefaultParameters();
Srinivasan Kannan71229622009-12-04 12:05:58 -0800279 void findSensorType();
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800280
281 status_t setPreviewSize(const CameraParameters& params);
Srinivasan Kannan264376e2010-08-13 18:54:35 -0700282 status_t setJpegThumbnailSize(const CameraParameters& params);
Srinivasan Kannana01751b2010-06-24 18:44:40 -0700283 status_t setPreviewFrameRate(const CameraParameters& params);
Mohan Kandrabf6146d2010-07-20 18:48:37 -0700284 status_t setPreviewFrameRateMode(const CameraParameters& params);
Mohan Kandra091d5ab2010-07-14 16:53:25 -0700285 status_t setRecordSize(const CameraParameters& params);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800286 status_t setPictureSize(const CameraParameters& params);
287 status_t setJpegQuality(const CameraParameters& params);
288 status_t setAntibanding(const CameraParameters& params);
289 status_t setEffect(const CameraParameters& params);
Srinivasan Kannan4cc4b862010-06-30 14:22:26 -0700290 status_t setExposureCompensation(const CameraParameters &params);
Apurva Rajguru55562b02009-12-03 12:25:35 -0800291 status_t setAutoExposure(const CameraParameters& params);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800292 status_t setWhiteBalance(const CameraParameters& params);
293 status_t setFlash(const CameraParameters& params);
294 status_t setGpsLocation(const CameraParameters& params);
295 status_t setRotation(const CameraParameters& params);
296 status_t setZoom(const CameraParameters& params);
297 status_t setFocusMode(const CameraParameters& params);
Nishant Panditc8c1ee72009-12-03 16:24:02 +0530298 status_t setBrightness(const CameraParameters& params);
Priyanka Kharate8dd0d62010-09-27 09:52:34 -0700299 status_t setSkinToneEnhancement(const CameraParameters& params);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800300 status_t setOrientation(const CameraParameters& params);
Nishant Panditc8c1ee72009-12-03 16:24:02 +0530301 status_t setLensshadeValue(const CameraParameters& params);
302 status_t setISOValue(const CameraParameters& params);
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800303 status_t setPictureFormat(const CameraParameters& params);
Srinivasan Kannanbddfd502010-01-03 17:27:36 -0800304 status_t setSharpness(const CameraParameters& params);
305 status_t setContrast(const CameraParameters& params);
306 status_t setSaturation(const CameraParameters& params);
Apurva Rajguru08383852010-05-17 14:25:39 -0700307 status_t setSceneMode(const CameraParameters& params);
Apurva Rajguru7b949c92010-05-26 15:46:57 -0700308 status_t setContinuousAf(const CameraParameters& params);
Apurva Rajguru0a2cb922010-06-08 15:33:22 -0700309 status_t setTouchAfAec(const CameraParameters& params);
Apurva Rajguru8e0a8da2010-06-02 11:26:36 -0700310 status_t setSceneDetect(const CameraParameters& params);
Mohan Kandra7110c242010-07-18 15:34:48 -0700311 status_t setStrTextures(const CameraParameters& params);
312 status_t setPreviewFormat(const CameraParameters& params);
Apurva Rajgurue5965c42010-09-09 14:24:54 -0700313 status_t setSelectableZoneAf(const CameraParameters& params);
Apurva Rajguru66bdd7f2009-12-10 19:28:02 -0800314 void setGpsParameters();
Priyanka Kharat02807662010-10-13 23:44:47 -0700315 bool storePreviewFrameForPostview();
Kiran Kumar H Nb49af212010-02-17 15:12:17 -0800316 bool isValidDimension(int w, int h);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800317
318 Mutex mLock;
Kiran Kumar H N215cac42009-12-08 01:53:46 -0800319 Mutex mCamframeTimeoutLock;
320 bool camframe_timeout_flag;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800321 bool mReleasedRecordingFrame;
322
323 void receiveRawPicture(void);
Srinivasan Kannan39dae8e2009-12-03 15:52:34 -0800324 void receiveRawSnapshot(void);
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800325
326 Mutex mCallbackLock;
Kiran Kumar H N5efb3ff2009-12-07 01:02:44 -0800327 Mutex mOverlayLock;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800328 Mutex mRecordLock;
329 Mutex mRecordFrameLock;
330 Condition mRecordWait;
331 Condition mStateWait;
332
333 /* mJpegSize keeps track of the size of the accumulated JPEG. We clear it
334 when we are about to take a picture, so at any time it contains either
335 zero, or the size of the last JPEG picture taken.
336 */
337 uint32_t mJpegSize;
338 unsigned int mPreviewFrameSize;
Sravankb4f5f1c2010-01-21 11:06:17 +0530339 unsigned int mRecordFrameSize;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800340 int mRawSize;
Mohan Kandra1659b0c2010-07-18 16:36:25 -0700341 int mCbCrOffsetRaw;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800342 int mJpegMaxSize;
Nishant Pandit741742b2010-09-21 03:24:20 +0530343 int32_t mStatSize;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800344
345#if DLOPEN_LIBMMCAMERA
346 void *libmmcamera;
347#endif
348
349 int mCameraControlFd;
350 struct msm_camsensor_info mSensorInfo;
351 cam_ctrl_dimension_t mDimension;
352 bool mAutoFocusThreadRunning;
353 Mutex mAutoFocusThreadLock;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800354
Srinivasan Kannan572e25c2010-02-01 16:04:37 -0800355 Mutex mAfLock;
356
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800357 pthread_t mFrameThread;
Sravankb4f5f1c2010-01-21 11:06:17 +0530358 pthread_t mVideoThread;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800359 pthread_t mSnapshotThread;
360
361 common_crop_t mCrop;
362
Srinivasan Kannana01751b2010-06-24 18:44:40 -0700363 bool mInitialized;
364
Kiran Kumar H N215cac42009-12-08 01:53:46 -0800365 int mBrightness;
Priyanka Kharate8dd0d62010-09-27 09:52:34 -0700366 int mSkinToneEnhancement;
Apurva Rajguruf12d9d22010-04-05 16:47:12 -0700367 int mHJR;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800368 struct msm_frame frames[kPreviewBufferCount];
Apurva Rajguruc73c1722010-04-15 17:39:11 -0700369 struct msm_frame *recordframes;
Mohan Kandra1fd90f92010-06-17 14:54:17 -0700370 bool *record_buffers_tracking_flag;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800371 bool mInPreviewCallback;
Kiran Kumar H N5efb3ff2009-12-07 01:02:44 -0800372 bool mUseOverlay;
Kiran Kumar H N215cac42009-12-08 01:53:46 -0800373 sp<Overlay> mOverlay;
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800374
375 int32_t mMsgEnabled; // camera msg to be handled
376 notify_callback mNotifyCallback;
377 data_callback mDataCallback;
378 data_callback_timestamp mDataCallbackTimestamp;
379 void *mCallbackCookie; // same for all callbacks
Mohan Kandra740cfce2010-01-07 12:58:24 -0800380 int mDebugFps;
Mohan Kandrad9efed92010-01-15 19:08:39 -0800381 int kPreviewBufferCountActual;
382 int previewWidth, previewHeight;
Apurva Rajguru3da1a702010-07-28 12:32:42 -0700383 bool mSnapshotDone;
Deepak Kurienbf83f8e2010-09-30 10:29:26 -0700384 bool mSnapshotPrepare;
Deepak Kurieneb58c682010-11-01 15:26:02 -0700385 bool mHasAutoFocusSupport;
Nishant Pandit741742b2010-09-21 03:24:20 +0530386 mm_camera_config mCfgControl;
Mohan Kandra39fad8d2010-07-15 12:29:19 -0700387 int videoWidth, videoHeight;
388
389 bool mDisEnabled;
390 int mRotation;
Mohan Kandra9aff1f42010-09-02 19:00:41 -0700391 bool mResetOverlayCrop;
Mohan Kandra5e4f9d92010-08-26 18:23:50 -0700392 int mThumbnailWidth, mThumbnailHeight;
Mohan Kandra39fad8d2010-07-15 12:29:19 -0700393 status_t setVpeParameters();
Mohan Kandracedd6cc2010-09-14 14:37:08 -0700394 status_t setDIS();
Priya Komarlingamb85535d2009-11-30 13:06:01 -0800395};
396
397}; // namespace android
398
399#endif