Skip to content

Commit f6d212b

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

File tree

8 files changed

+12
-15
lines changed

8 files changed

+12
-15
lines changed

src/linux/backend-v4l2.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +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 init_xu(const extension_unit&) override {}
358+
void register_xu( platform::extension_unit && xu ) override {}
359359
bool set_xu(const extension_unit& xu, uint8_t control, const uint8_t* data, int size) override;
360360
bool get_xu(const extension_unit& xu, uint8_t control, uint8_t* data, int size) const override;
361361
control_range get_xu_range(const extension_unit& xu, uint8_t control, int len) 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: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +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 init_xu(const extension_unit& xu) override;
82+
void register_xu( platform::extension_unit && xu ) override { _xus.push_back( std::move( xu ) ); }
8383
bool set_xu(const extension_unit& xu, uint8_t ctrl, const uint8_t* data, int len) override;
8484
bool get_xu(const extension_unit& xu, uint8_t ctrl, uint8_t* data, int len) const override;
8585
control_range get_xu_range(const extension_unit& xu, uint8_t ctrl, int len) const override;
@@ -101,6 +101,7 @@ namespace librealsense
101101
private:
102102
friend class source_reader_callback;
103103

104+
void init_xu(const extension_unit& xu);
104105
void play_profile(stream_profile profile, frame_callback callback);
105106
void stop_stream_cleanup(const stream_profile& profile, std::vector<profile_and_callback>::iterator& elem);
106107
void flush(int sIndex);
@@ -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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +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 init_xu( const extension_unit & xu ) = 0;
131+
virtual void register_xu( platform::extension_unit && xu ) = 0;
132132
virtual bool set_xu( const extension_unit & xu, uint8_t ctrl, const uint8_t * data, int len ) = 0;
133133
virtual bool get_xu( const extension_unit & xu, uint8_t ctrl, uint8_t * data, int len ) const = 0;
134134
virtual control_range get_xu_range( const extension_unit & xu, uint8_t ctrl, int len ) const = 0;
@@ -183,7 +183,7 @@ class retry_controls_work_around : public uvc_device
183183

184184
power_state get_power_state() const override { return _dev->get_power_state(); }
185185

186-
void init_xu( const extension_unit & xu ) override { _dev->init_xu( xu ); }
186+
void register_xu( platform::extension_unit && xu ) override { _dev->register_xu( std::move( xu ) ); }
187187

188188
bool set_xu( const extension_unit & xu, uint8_t ctrl, const uint8_t * data, int len ) override
189189
{
@@ -313,7 +313,7 @@ class multi_pins_uvc_device : public uvc_device
313313

314314
power_state get_power_state() const override { return _dev.front()->get_power_state(); }
315315

316-
void init_xu( const extension_unit & xu ) override { _dev.front()->init_xu( xu ); }
316+
void register_xu( platform::extension_unit && xu ) override { _dev.front()->register_xu( std::move( xu ) ); }
317317

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

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.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,6 @@ namespace librealsense
210210
return _power_state;
211211
}
212212

213-
void rs_uvc_device::init_xu(const extension_unit& xu)
214-
{
215-
// not supported
216-
return;
217-
}
218-
219213
bool rs_uvc_device::set_xu(const extension_unit& xu, uint8_t ctrl, const uint8_t* data, int len)
220214
{
221215
return uvc_set_ctrl(xu.unit, ctrl, (void *) data, len);

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)