diff --git a/lib/sink_impl.cc b/lib/sink_impl.cc index 317855a..a7a0487 100644 --- a/lib/sink_impl.cc +++ b/lib/sink_impl.cc @@ -245,6 +245,13 @@ sink_impl::sink_impl( const std::string &args ) if (!_devs.size()) throw std::runtime_error("No devices specified via device arguments."); + + /* Populate the _gain and _gain_mode arrays with the hardware state */ + for ( sink_iface *dev : _devs ) + for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++) { + _gain_mode[dev_chan] = dev->get_gain_mode(dev_chan); + _gain[dev_chan] = dev->get_gain(dev_chan); + } } size_t sink_impl::get_num_channels() diff --git a/lib/source_impl.cc b/lib/source_impl.cc index 8f2028b..ff4d489 100644 --- a/lib/source_impl.cc +++ b/lib/source_impl.cc @@ -403,6 +403,13 @@ source_impl::source_impl( const std::string &args ) if (!_devs.size()) throw std::runtime_error("No devices specified via device arguments."); + + /* Populate the _gain and _gain_mode arrays with the hardware state */ + for ( source_iface *dev : _devs ) + for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++) { + _gain_mode[dev_chan] = dev->get_gain_mode(dev_chan); + _gain[dev_chan] = dev->get_gain(dev_chan); + } } size_t source_impl::get_num_channels()