#pragma once #include #include #include #include #include #include "cvmmap_streamer/ipc/contracts.hpp" namespace cvmmap_streamer::sim { struct RuntimeConfig { std::uint32_t frames{360}; std::uint32_t fps{60}; std::uint16_t width{64}; std::uint16_t height{48}; std::optional emit_reset_at{}; std::optional emit_reset_every{}; std::optional switch_format_at{}; std::optional switch_width{}; std::optional switch_height{}; std::string label{"sim"}; std::string shm_name{"cvmmap_sim"}; std::string zmq_endpoint{"ipc:///tmp/cvmmap_sim"}; std::uint8_t channels{3}; ipc::Depth depth{ipc::Depth::U8}; ipc::PixelFormat pixel_format{ipc::PixelFormat::BGR}; [[nodiscard]] std::uint32_t payload_size_bytes() const; }; enum class ParseStatus { Ok, Help, Error, }; struct ParseResult { ParseStatus status{ParseStatus::Ok}; RuntimeConfig config{}; std::string message{}; int exit_code{0}; }; std::expected parse_runtime_config(int argc, char **argv); void print_help(); ParseResult parse_runtime_config_with_cli11( int argc, char **argv, std::string_view executable_name = "cvmmap_sim"); } // namespace cvmmap_streamer::sim