Skip to content

Commit b538882

Browse files
committed
XU list saved in uvc_device not uvc_sensor
1 parent 5d995ee commit b538882

File tree

7 files changed

+13
-4
lines changed

7 files changed

+13
-4
lines changed

src/linux/backend-v4l2.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ namespace librealsense
355355
void set_power_state(power_state state) override;
356356
power_state get_power_state() const override { return _state; }
357357

358+
void register_xu( platform::extension_unit && xu ) override {}
358359
void init_xu(const extension_unit&) override {}
359360
bool set_xu(const extension_unit& xu, uint8_t control, const uint8_t* data, int size) override;
360361
bool get_xu(const extension_unit& xu, uint8_t control, uint8_t* data, int size) const override;

src/mf/mf-uvc.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,9 @@ namespace librealsense
885885
CHECK_HR(MFCreateSourceReaderFromMediaSource(_source, _reader_attrs, &_reader));
886886
CHECK_HR(_reader->SetStreamSelection(static_cast<DWORD>(MF_SOURCE_READER_ALL_STREAMS), TRUE));
887887
_power_state = D0;
888+
889+
for( auto && xu : _xus )
890+
init_xu( xu );
888891
}
889892
890893
void wmf_uvc_device::set_d3()

src/mf/mf-uvc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ namespace librealsense
7979
static bool is_connected(const uvc_device_info& info);
8080
static void foreach_uvc_device(enumeration_callback action);
8181

82+
void register_xu( platform::extension_unit && xu ) override { _xus.push_back( std::move( xu ) ); }
8283
void init_xu(const extension_unit& xu) override;
8384
bool set_xu(const extension_unit& xu, uint8_t ctrl, const uint8_t* data, int len) override;
8485
bool get_xu(const extension_unit& xu, uint8_t ctrl, uint8_t* data, int len) const override;
@@ -146,6 +147,7 @@ namespace librealsense
146147
bool _streaming = false;
147148
std::atomic<bool> _is_started = false;
148149
std::wstring _device_id;
150+
std::vector< platform::extension_unit > _xus;
149151
};
150152

151153
class source_reader_callback : public IMFSourceReaderCallback

src/platform/uvc-device.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ class uvc_device
128128
virtual void set_power_state( power_state state ) = 0;
129129
virtual power_state get_power_state() const = 0;
130130

131+
virtual void register_xu( platform::extension_unit && xu ) = 0;
131132
virtual void init_xu( const extension_unit & xu ) = 0;
132133
virtual bool set_xu( const extension_unit & xu, uint8_t ctrl, const uint8_t * data, int len ) = 0;
133134
virtual bool get_xu( const extension_unit & xu, uint8_t ctrl, uint8_t * data, int len ) const = 0;
@@ -183,6 +184,8 @@ class retry_controls_work_around : public uvc_device
183184

184185
power_state get_power_state() const override { return _dev->get_power_state(); }
185186

187+
void register_xu( platform::extension_unit && xu ) override { _dev->register_xu( std::move( xu ) ); }
188+
186189
void init_xu( const extension_unit & xu ) override { _dev->init_xu( xu ); }
187190

188191
bool set_xu( const extension_unit & xu, uint8_t ctrl, const uint8_t * data, int len ) override
@@ -313,6 +316,8 @@ class multi_pins_uvc_device : public uvc_device
313316

314317
power_state get_power_state() const override { return _dev.front()->get_power_state(); }
315318

319+
void register_xu( platform::extension_unit && xu ) override { _dev.front()->register_xu( std::move( xu ) ); }
320+
316321
void init_xu( const extension_unit & xu ) override { _dev.front()->init_xu( xu ); }
317322

318323
bool set_xu( const extension_unit & xu, uint8_t ctrl, const uint8_t * data, int len ) override

src/uvc-sensor.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ void uvc_sensor::finished_bulk_operation()
372372

373373
void uvc_sensor::register_xu( platform::extension_unit xu )
374374
{
375-
_xus.push_back( std::move( xu ) );
375+
_device->register_xu( std::move( xu ) );
376376
}
377377

378378

@@ -419,8 +419,6 @@ void uvc_sensor::acquire_power()
419419
try
420420
{
421421
_device->set_power_state( platform::D0 );
422-
for( auto && xu : _xus )
423-
_device->init_xu( xu );
424422
}
425423
catch( std::exception const & e )
426424
{

src/uvc-sensor.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ class uvc_sensor : public raw_sensor_base
104104
std::atomic< int > _user_count;
105105
std::mutex _power_lock;
106106
std::mutex _configure_lock;
107-
std::vector< platform::extension_unit > _xus;
108107
std::unique_ptr< power > _power;
109108
std::unique_ptr< frame_timestamp_reader > _timestamp_reader;
110109
};

src/uvc/uvc-device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ namespace librealsense
5151
virtual void set_power_state(power_state state) override;
5252
virtual power_state get_power_state() const override;
5353

54+
void register_xu( platform::extension_unit && xu ) override {} // Not supported
5455
virtual void init_xu(const extension_unit& xu) override;
5556
virtual bool set_xu(const extension_unit& xu, uint8_t ctrl, const uint8_t* data, int len) override;
5657
virtual bool get_xu(const extension_unit& xu, uint8_t ctrl, uint8_t* data, int len) const override;

0 commit comments

Comments
 (0)