void enable_device(rs2::device dev) { std::string serial_number(dev.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER)); std::lock_guard<std::mutex> lock(_mutex); if (_devices.find(serial_number) != _devices.end()) { return; //already in } // Ignoring platform cameras (webcams, etc..) if (platform_camera_name == dev.get_info(RS2_CAMERA_INFO_NAME)) { return; } // Create a pipeline from the given device rs2::pipeline p; rs2::config c; c.enable_device(serial_number); // Start the pipeline with the configuration rs2::pipeline_profile profile = p.start(c); // Hold it internally _devices.emplace(serial_number, view_port{ {},{},{}, p, profile }); }
void rebuild() try { auto& ctx = t_jit_realsense::context(); // First cleanup if device is changing cleanup(); dev = nullptr; // Try to get the new device auto devs = ctx.query_devices(); auto n_dev = devs.size(); post("There are %d connected RealSense devices.\n", n_dev); if(n_dev <= device) { post("Device %d is not connected.", device); return; } dev = devs[device]; post("\nUsing device %d, an %s\n", device, dev.get_info(rs2_camera_info::RS2_CAMERA_INFO_NAME)); post(" Serial number: %s\n", dev.get_info(rs2_camera_info::RS2_CAMERA_INFO_SERIAL_NUMBER)); post(" Firmware version: %s\n", dev.get_info(rs2_camera_info::RS2_CAMERA_INFO_FIRMWARE_VERSION)); rebuild_streams(); device_cache = device; out_count_cache = out_count; } catch(const std::exception & e) { error("realsense: %s\n", e.what()); if(dev) dev = nullptr; }
static std::string get_device_information(const rs2::device& dev) { std::stringstream ss; ss << "Device information: " << std::endl; for (int i = 0; i < static_cast<int>(RS2_CAMERA_INFO_COUNT); i++) { rs2_camera_info info_type = static_cast<rs2_camera_info>(i); ss << " " << std::left << std::setw(20) << info_type << " : "; if (dev.supports(info_type)) ss << dev.get_info(info_type) << std::endl; else ss << "N/A" << std::endl; } return ss.str(); }