| // 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_CONTROLLER_FAKE_CONTROLLER_H_ | |
| #define SRC_CAMERA_LIB_FAKE_CONTROLLER_FAKE_CONTROLLER_H_ | |
| #include <fuchsia/camera2/hal/cpp/fidl.h> | |
| #include <fuchsia/camera3/cpp/fidl.h> | |
| #include <lib/async-loop/cpp/loop.h> | |
| #include <lib/fidl/cpp/binding.h> | |
| #include <lib/fit/result.h> | |
| #include <zircon/status.h> | |
| #include <memory> | |
| #include <queue> | |
| #include <vector> | |
| #include "src/camera/lib/fake_legacy_stream/fake_legacy_stream.h" | |
| class FakeController : public fuchsia::camera2::hal::Controller { | |
| public: | |
| FakeController(); | |
| ~FakeController() override; | |
| static fit::result<std::unique_ptr<FakeController>, zx_status_t> Create( | |
| fidl::InterfaceRequest<fuchsia::camera2::hal::Controller> request); | |
| static std::vector<fuchsia::camera2::hal::Config> GetDefaultConfigs(); | |
| zx_status_t SendFrameViaLegacyStream(fuchsia::camera2::FrameAvailableInfo info); | |
| bool LegacyStreamBufferIsOutstanding(uint32_t id); | |
| private: | |
| // |fuchsia::camera2::hal::Controller| | |
| void GetNextConfig(fuchsia::camera2::hal::Controller::GetNextConfigCallback callback) override; | |
| void CreateStream(uint32_t config_index, uint32_t stream_index, uint32_t image_format_index, | |
| fuchsia::sysmem::BufferCollectionInfo_2 buffer_collection, | |
| fidl::InterfaceRequest<fuchsia::camera2::Stream> stream) override; | |
| void EnableStreaming() override; | |
| void DisableStreaming() override; | |
| void GetDeviceInfo(fuchsia::camera2::hal::Controller::GetDeviceInfoCallback callback) override; | |
| async::Loop loop_; | |
| uint32_t get_configs_call_count_ = 0; | |
| fidl::Binding<fuchsia::camera2::hal::Controller> binding_; | |
| std::unique_ptr<camera::FakeLegacyStream> stream_; | |
| bool streaming_enabled_ = true; | |
| }; | |
| #endif // SRC_CAMERA_LIB_FAKE_CONTROLLER_FAKE_CONTROLLER_H_ |