| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_CAMERA_LIB_FAKE_CAMERA_FAKE_CAMERA_H_ |
| #define SRC_CAMERA_LIB_FAKE_CAMERA_FAKE_CAMERA_H_ |
| |
| #include <fuchsia/camera3/cpp/fidl.h> |
| #include <lib/fit/result.h> |
| #include <zircon/types.h> |
| |
| #include "src/camera/lib/fake_stream/fake_stream.h" |
| |
| namespace camera { |
| |
| using FakeConfiguration = std::vector<std::shared_ptr<FakeStream>>; |
| |
| // This class provides a mechanism for simulating a camera device, controller driver, and content |
| // streams. All methods are thread-safe. |
| class FakeCamera { |
| public: |
| virtual ~FakeCamera() = default; |
| |
| // Create a fake camera with the given identifier and configurations. |
| static fit::result<std::unique_ptr<FakeCamera>, zx_status_t> Create( |
| std::string identifier, std::vector<FakeConfiguration> configurations); |
| |
| // Returns a request handler for the Device interface. |
| virtual fidl::InterfaceRequestHandler<fuchsia::camera3::Device> GetHandler() = 0; |
| |
| // Sets the state of the fake physical mute switch. |
| virtual void SetHardwareMuteState(bool muted) = 0; |
| }; |
| |
| } // namespace camera |
| |
| #endif // SRC_CAMERA_LIB_FAKE_CAMERA_FAKE_CAMERA_H_ |