25 std::shared_ptr<librealsense::context>
ctx;
26 std::shared_ptr<librealsense::device_info>
info;
31 std::shared_ptr<librealsense::context>
ctx;
32 std::vector<rs2_device_info>
list;
38 std::shared_ptr<librealsense::stream_profile_interface>
clone;
49 virtual std::shared_ptr<device_interface>
create_device(
bool register_device_notifications =
false)
const 51 return create(
_ctx, register_device_notifications);
68 virtual std::shared_ptr<device_interface>
create(std::shared_ptr<context> ctx,
69 bool register_device_notifications)
const = 0;
71 std::shared_ptr<context>
_ctx;
84 std::shared_ptr<playback_device> _dev;
101 std::shared_ptr<device_interface>
create(std::shared_ptr<context>,
bool)
const override 109 class context :
public std::enable_shared_from_this<context>
113 const char* filename =
nullptr,
114 const char* section =
nullptr,
117 void stop(){_device_watcher->stop();}
119 std::vector<std::shared_ptr<device_info>>
query_devices()
const;
130 std::shared_ptr<device_interface>
add_device(
const std::string& file);
136 const std::map<std::string, std::shared_ptr<device_info>>& old_playback_devices,
137 const std::map<std::string, std::shared_ptr<device_info>>& new_playback_devices);
138 void raise_devices_changed(
const std::vector<rs2_device_info>& removed,
const std::vector<rs2_device_info>& added);
140 std::shared_ptr<lazy<rs2_extrinsics>> fetch_edge(
int from,
int to);
142 std::shared_ptr<platform::backend> _backend;
144 std::shared_ptr<tm2_context> _tm2_context;
146 std::shared_ptr<platform::device_watcher> _device_watcher;
147 std::map<std::string, std::shared_ptr<device_info>> _playback_devices;
148 std::map<uint64_t, devices_changed_callback_ptr> _devices_changed_callbacks;
152 std::map<int, std::weak_ptr<const stream_interface>> _streams;
153 std::map<int, std::map<int, std::weak_ptr<lazy<rs2_extrinsics>>>> _extrinsics;
154 std::mutex _streams_mutex, _devices_changed_callbacks_mtx;
161 std::shared_ptr<device_interface>
create(std::shared_ptr<context> ctx,
bool register_device_notifications)
const override 168 return _dev->get_device_data();
171 std::shared_ptr<device_interface> _dev;
175 std::vector<platform::uvc_device_info>
filter_by_product(
const std::vector<platform::uvc_device_info>& devices,
const std::set<uint16_t>& pid_list);
177 const std::vector<std::vector<platform::uvc_device_info>>& devices,
178 const std::vector<platform::hid_device_info>& hids);
179 std::vector<std::vector<platform::uvc_device_info>>
group_devices_by_unique_id(
const std::vector<platform::uvc_device_info>& devices);
180 void trim_device_list(std::vector<platform::uvc_device_info>& devices,
const std::vector<platform::uvc_device_info>& chosen);
181 bool mi_present(
const std::vector<platform::uvc_device_info>& devices, uint32_t mi);
183 std::vector<platform::uvc_device_info>
filter_by_mi(
const std::vector<platform::uvc_device_info>& devices, uint32_t mi);
185 std::vector<platform::usb_device_info>
filter_by_product(
const std::vector<platform::usb_device_info>& devices,
const std::set<uint16_t>& pid_list);
186 void trim_device_list(std::vector<platform::usb_device_info>& devices,
const std::vector<platform::usb_device_info>& chosen);
std::shared_ptr< librealsense::context > ctx
Definition: context.h:31
std::shared_ptr< librealsense::context > ctx
Definition: context.h:25
std::vector< std::shared_ptr< device_info > > create_devices(platform::backend_device_group devices, const std::map< std::string, std::shared_ptr< device_info >> &playback_devices) const
playback_device_info(std::shared_ptr< playback_device > dev)
Definition: context.h:86
virtual platform::backend_device_group get_device_data() const =0
std::shared_ptr< librealsense::device_info > info
Definition: context.h:26
platform::backend_device_group get_device_data() const override
Definition: context.h:166
std::vector< std::shared_ptr< device_info > > devices_info
Definition: context.h:107
rs2_recording_mode
Definition: rs_internal.h:25
std::vector< std::pair< std::vector< platform::uvc_device_info >, std::vector< platform::hid_device_info > > > group_devices_and_hids_by_unique_id(const std::vector< std::vector< platform::uvc_device_info >> &devices, const std::vector< platform::hid_device_info > &hids)
Definition: context.h:109
virtual std::shared_ptr< device_interface > create_device(bool register_device_notifications=false) const
Definition: context.h:49
std::vector< rs2_device_info > list
Definition: context.h:32
std::vector< platform::uvc_device_info > filter_by_product(const std::vector< platform::uvc_device_info > &devices, const std::set< uint16_t > &pid_list)
std::vector< std::vector< platform::uvc_device_info > > group_devices_by_unique_id(const std::vector< platform::uvc_device_info > &devices)
std::shared_ptr< device_interface > create(std::shared_ptr< context >, bool) const override
Definition: context.h:101
virtual bool operator==(const device_info &other) const
Definition: context.h:58
void remove_device(const std::string &file)
Definition: streaming.h:31
std::shared_ptr< context > _ctx
Definition: context.h:71
std::vector< std::shared_ptr< device_info > > query_devices() const
std::shared_ptr< librealsense::stream_profile_interface > clone
Definition: context.h:38
readonly_device_info(std::shared_ptr< device_interface > dev)
Definition: context.h:160
platform::backend_device_group get_device_data() const override
Definition: context.h:96
Definition: streaming.h:46
platform::uvc_device_info get_mi(const std::vector< platform::uvc_device_info > &devices, uint32_t mi)
virtual ~device_info()=default
Definition: rs_internal.h:30
backend_type
Definition: context.h:74
std::shared_ptr< device_interface > create(std::shared_ptr< context > ctx, bool register_device_notifications) const override
Definition: context.h:161
void stop()
Definition: context.h:117
context(backend_type type, const char *filename=nullptr, const char *section=nullptr, rs2_recording_mode mode=RS2_RECORDING_MODE_COUNT)
void trim_device_list(std::vector< platform::uvc_device_info > &devices, const std::vector< platform::uvc_device_info > &chosen)
virtual std::shared_ptr< device_interface > create(std::shared_ptr< context > ctx, bool register_device_notifications) const =0
librealsense::stream_profile_interface * profile
Definition: context.h:37
std::shared_ptr< device_interface > create_device(bool) const override
Definition: context.h:92
std::vector< platform::uvc_device_info > filter_by_mi(const std::vector< platform::uvc_device_info > &devices, uint32_t mi)
Definition: context.h:157
const platform::backend & get_backend() const
Definition: context.h:120
uint64_t register_internal_device_callback(devices_changed_callback_ptr callback)
void set_devices_changed_callback(devices_changed_callback_ptr callback)
std::shared_ptr< rs2_devices_changed_callback > devices_changed_callback_ptr
Definition: types.h:825
device_info(std::shared_ptr< context > backend)
Definition: context.h:64
void unregister_internal_device_callback(uint64_t cb_id)
std::shared_ptr< device_interface > add_device(const std::string &file)
bool mi_present(const std::vector< platform::uvc_device_info > &devices, uint32_t mi)