#ifndef UHD_DEVICE_H #define UHD_DEVICE_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include class uhd_io_thread: public QThread{ Q_OBJECT public: explicit uhd_io_thread (QObject * p); explicit uhd_io_thread (std::function runner,QObject * p); void setRunner(std::function r){ m_runner = r;} public: void run() override; private: std::function m_runner; }; class uhd_device{ public: uhd_device(); uhd_device(const std::string &args); ~uhd_device(); public: void setDevArgs(const std::string &args); std::string devArgs() const ; public: bool open_device(); bool close_device(); void run_IO(); protected: std::atomic stop_signal_called; std::atomic streaming; std::string m_dev_args; size_t m_spb_size = 65536; uhd::usrp::multi_usrp::sptr usrp; size_t m_channel = 0; protected: //初始化队列 double * m_buffer_tmFrag; long long * m_buffer_tmSec; short * m_buffer_iq_all; short * * m_buffer_iq; int * m_buf_iqsize; const size_t bufsz = 1024; //收发计数 long long rx_count ; public: quint64 set_center_freq(const quint64 freq_in_hz); double set_sample_rate(const double sprate); void set_rx_atn(const std::string & ana); double set_rx_gain(double gain); double set_rx_bandwidth(double bw); }; #endif // UHD_DEVICE_H