1b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/*
2b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Copyright (C) 2011 The Android Open Source Project
3b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine *
4b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Licensed under the Apache License, Version 2.0 (the "License");
5b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * you may not use this file except in compliance with the License.
6b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * You may obtain a copy of the License at
7b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine *
8b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine *      http://www.apache.org/licenses/LICENSE-2.0
9b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine *
10b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Unless required by applicable law or agreed to in writing, software
11b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * distributed under the License is distributed on an "AS IS" BASIS,
12b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * See the License for the specific language governing permissions and
14b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * limitations under the License.
15b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine */
16b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
17b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#ifndef HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA_H
18b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#define HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA_H
19b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
20b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/*
21b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Contains declaration of a class EmulatedFakeCamera that encapsulates
22b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * functionality of a fake camera. This class is nothing more than a placeholder
23b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * for EmulatedFakeCameraDevice instance.
24b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine */
25b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
265467be2eefc007ebf09baf109dafe058abc1ffc5Vladimir Chtchetkine#include "EmulatedCamera.h"
275467be2eefc007ebf09baf109dafe058abc1ffc5Vladimir Chtchetkine#include "EmulatedFakeCameraDevice.h"
28b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
29b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkinenamespace android {
30b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
31b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/* Encapsulates functionality of a fake camera.
32b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * This class is nothing more than a placeholder for EmulatedFakeCameraDevice
33b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * instance that emulates a fake camera device.
34b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine */
35b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkineclass EmulatedFakeCamera : public EmulatedCamera {
36b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkinepublic:
37b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    /* Constructs EmulatedFakeCamera instance. */
38c9d6edeea5921a11e305273f3dd604278c45e9d7Vladimir Chtchetkine    EmulatedFakeCamera(int cameraId, bool facingBack, struct hw_module_t* module);
39b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
40b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    /* Destructs EmulatedFakeCamera instance. */
41b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    ~EmulatedFakeCamera();
42b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
43b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    /****************************************************************************
44b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     * EmulatedCamera virtual overrides.
45b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     ***************************************************************************/
46b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
47b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkinepublic:
4849842cee0549befb6d7a4353247190820037e1c4Vladimir Chtchetkine    /* Initializes EmulatedFakeCamera instance. */
49b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     status_t Initialize();
50b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
51b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    /****************************************************************************
52b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     * EmulatedCamera abstract API implementation.
53b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     ***************************************************************************/
54b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
55b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkineprotected:
56b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    /* Gets emulated camera device ised by this instance of the emulated camera.
57b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     */
585467be2eefc007ebf09baf109dafe058abc1ffc5Vladimir Chtchetkine    EmulatedCameraDevice* getCameraDevice();
59b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
60b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    /****************************************************************************
61b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     * Data memebers.
62b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine     ***************************************************************************/
63b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
64b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkineprotected:
65c9d6edeea5921a11e305273f3dd604278c45e9d7Vladimir Chtchetkine    /* Facing back (true) or front (false) switch. */
66c9d6edeea5921a11e305273f3dd604278c45e9d7Vladimir Chtchetkine    bool                        mFacingBack;
67c9d6edeea5921a11e305273f3dd604278c45e9d7Vladimir Chtchetkine
68b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine    /* Contained fake camera device object. */
695467be2eefc007ebf09baf109dafe058abc1ffc5Vladimir Chtchetkine    EmulatedFakeCameraDevice    mFakeCameraDevice;
70b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine};
71b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
72b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine}; /* namespace android */
73b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine
74b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#endif  /* HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA_H */
75