diff options
Diffstat (limited to 'gr-usrp2/src/usrp2_sink_32fc.cc')
-rw-r--r-- | gr-usrp2/src/usrp2_sink_32fc.cc | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/gr-usrp2/src/usrp2_sink_32fc.cc b/gr-usrp2/src/usrp2_sink_32fc.cc index 56cde6ba7a..acbba7abae 100644 --- a/gr-usrp2/src/usrp2_sink_32fc.cc +++ b/gr-usrp2/src/usrp2_sink_32fc.cc @@ -25,22 +25,47 @@ #endif #include <usrp2_sink_32fc.h> +#include <usrp2/metadata.h> #include <gr_io_signature.h> -#include <usrp_standard.h> -#include <usrp_bytesex.h> +#include <iostream> usrp2_sink_32fc_sptr -usrp2_make_sink_32fc() throw (std::runtime_error) +usrp2_make_sink_32fc(const std::string &ifc, const std::string &mac_addr) + throw (std::runtime_error) { - return usrp2_sink_32fc_sptr(new usrp2_sink_32fc()); + return usrp2_sink_32fc_sptr(new usrp2_sink_32fc(ifc, mac_addr)); } -usrp2_sink_32fc::usrp2_sink_32fc() throw (std::runtime_error) +usrp2_sink_32fc::usrp2_sink_32fc(const std::string &ifc, const std::string &mac_addr) + throw (std::runtime_error) : usrp2_sink_base("usrp2_sink_32fc", - gr_make_io_signature(1, 1, sizeof(gr_complex))) + gr_make_io_signature(1, 1, sizeof(gr_complex)), + ifc, mac_addr) { + // NOP } usrp2_sink_32fc::~usrp2_sink_32fc() { + // NOP +} + +int +usrp2_sink_32fc::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + gr_complex *in = (gr_complex *)input_items[0]; + + usrp2::tx_metadata metadata; + metadata.timestamp = -1; + metadata.send_now = 1; + metadata.start_of_burst = 1; + + bool ok = d_u2->tx_complex_float(0, // FIXME: someday, streams will have channel numbers + in, noutput_items, &metadata); + if (!ok) + std::cerr << "usrp2_sink_32fc: tx_complex_float failed" << std::endl; + + return noutput_items; } |