// License: Apache 2.0. See LICENSE file in root directory. // Copyright(c) 2021 Intel Corporation. All Rights Reserved. #pragma once #include #include #include #include #include ////////////////////////////// // Demos Helpers // ////////////////////////////// // Find devices with specified streams bool device_with_streams(std::vector stream_requests, std::string& out_serial) { rs2::context ctx; auto devs = ctx.query_devices(); std::vector unavailable_streams = stream_requests; for (auto dev : devs) { std::map found_streams; for (auto& type : stream_requests) { found_streams[type] = false; for (auto& sensor : dev.query_sensors()) { for (auto& profile : sensor.get_stream_profiles()) { if (profile.stream_type() == type) { found_streams[type] = true; unavailable_streams.erase(std::remove(unavailable_streams.begin(), unavailable_streams.end(), type), unavailable_streams.end()); if (dev.supports(RS2_CAMERA_INFO_SERIAL_NUMBER)) out_serial = dev.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER); } } } } // Check if all streams are found in current device bool found_all_streams = true; for (auto& stream : found_streams) { if (!stream.second) { found_all_streams = false; break; } } if (found_all_streams) return true; } // After scanning all devices, not all requested streams were found for (auto& type : unavailable_streams) { switch (type) { case RS2_STREAM_POSE: case RS2_STREAM_FISHEYE: std::cerr << "Connect T26X and rerun the demo" << std::endl; break; case RS2_STREAM_DEPTH: std::cerr << "The demo requires Realsense camera with DEPTH sensor" << std::endl; break; case RS2_STREAM_COLOR: std::cerr << "The demo requires Realsense camera with RGB sensor" << std::endl; break; default: throw std::runtime_error("The requested stream: " + std::to_string(type) + ", for the demo is not supported by connected devices!"); // stream type } } return false; }