#include <iostream>

#include <boost/foreach.hpp>

#include <osmosdr/device.h>
#include <osmosdr/source.h>

int main(void)
{
	osmosdr::devices_t devs = osmosdr::device::find();

	BOOST_FOREACH(osmosdr::device_t &dev, devs)
	{
		if (dev.count("file") || dev.count("rtl_tcp"))
			continue; /* skip file and tcp sources (always present) */

                if (dev.count("uhd")) /* change master clock rate for uhd based devices */
                        dev["mcr"] = "52e6";

		std::cout << dev.to_pp_string() << std::endl;
		std::cout << dev.to_string() << std::endl;
		std::cout << std::endl;

		osmosdr::source::sptr src = osmosdr::source::make( dev.to_string() );

		std::cout << "Rates: ";
		BOOST_FOREACH(osmosdr::range_t rate, src->get_sample_rates())
			std::cout << rate.to_pp_string() << " ";
		std::cout << std::endl;

		std::cout << "Gains: ";
		BOOST_FOREACH(osmosdr::range_t gain, src->get_gain_range())
			std::cout << gain.to_pp_string() << " ";
		std::cout << std::endl;

                std::cout << "Bands: ";
                BOOST_FOREACH(osmosdr::range_t band, src->get_freq_range())
                        std::cout << band.to_pp_string() << " ";
                std::cout << std::endl;

                std::cout << "Bandwidths: ";
                BOOST_FOREACH(osmosdr::range_t band, src->get_bandwidth_range())
                        std::cout << band.to_pp_string() << " ";
                std::cout << std::endl;

                std::cout << "Antennas: ";
                BOOST_FOREACH(std::string antenna, src->get_antennas())
                        std::cout << antenna << " ";
                std::cout << std::endl;

		std::cout << std::endl;
	}

	return 0;
}
