USRP设备创建过程

简介:

要使用USRP,程序中必须包含multi_usrp.hpp头文件,该头文件中的multi_usrp类通过给定的地址返回底层的一个usrp设备对象:

static sptr make(const device_addr_t &dev_addr);

但看程序可以看到,multi_usrp是一个抽象类,很多函数并没有具体的实现除make()函数以外的所有函数都是纯虚函数。由此,USRP设备对象一定是通过make()函数实现的,来看mulyi_usrp::make()函数的实现:

multi_usrp::sptr multi_usrp::make(const device_addr_t &dev_addr){
    UHD_LOG << "multi_usrp::make with args " << dev_addr.to_pp_string() << std::endl;
    return sptr(new multi_usrp_impl(dev_addr));
}
可知实际是调用multi_usrp_impl类的构造函数进行实例化。multi_usrp_impl类的构造函数:

multi_usrp_impl::multi_usrp_impl(const device_addr_t &addr){
        _dev = device::make(addr);
        _tree = _dev->get_tree();
    }

然后就可以调用所创建的usrp对象的get_device()和get_tree()方法,对设备对象的属性树进行操作了。

但是,到这里仍然很难将multi_usrp与usrp2的实现—usrp2_impl类联系起来。看usrp2_impl的继承关系可知其继承自uhd::device。而在multi_usrp_impl的构造函数中,_dev=device::make(addr),这里就通过device::make()返回了一个指向device对象的指针。


目录
相关文章
USRP相关报错解决办法
USRP相关报错解决办法
502 1
|
算法 C++ 索引
GNURadio+USRP+OFDM实现文件传输(一)
GNURadio+USRP+OFDM实现文件传输(一)
2608 1
|
算法 异构计算
m基于FPGA的gardner环定时同步实现,含testbench测试程序
m基于FPGA的gardner环定时同步实现,含testbench测试程序
613 0
|
tengine 弹性计算 运维
性能提升一倍!云原生网关支持 TLS 硬件加速
业界在优化 HTTPS 的性能上也做了诸多探索,传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面如何优化也无法满足流量日益增长的速度,加上 CPU 摩尔定律已入暮年,使得专用硬件卸载 CPU 密集型运算成为业界一个通用解决方案。
2077 94
性能提升一倍!云原生网关支持 TLS 硬件加速
|
网络协议 UED 开发者
|
Kubernetes jenkins 持续交付
微服务从代码到k8s部署应有尽有大结局(k8s部署)
微服务从代码到k8s部署应有尽有大结局(k8s部署)
|
关系型数据库 MySQL 开发工具
MySQL中忘记用户密码怎么办?
MySQL中忘记用户密码怎么办?
|
算法
GNURadio+USRP+OFDM实现文件传输(二)
GNURadio+USRP+OFDM实现文件传输(二)
1532 1
GNURadio+USRP+OFDM实现文件传输(三)
GNURadio+USRP+OFDM实现文件传输(三)
1028 0