天天看點

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_impl類的構造函數進行執行個體化。multi_usrp_impl類的構造函數:

然後就可以調用所建立的usrp對象的get_device()和get_tree()方法,對裝置對象的屬性樹進行操作了。

但是,到這裡仍然很難将multi_usrp與usrp2的實作—usrp2_impl類聯系起來。看usrp2_impl的繼承關系可知其繼承自uhd::device。而在multi_usrp_impl的構造函數中,_dev=device::make(addr),這裡就通過device::make()傳回了一個指向device對象的指針。