GnuRadio-查看源码方式
1.创建grp
以PLL Frequency Detector为例
创建一个空的锁相环频率检波模块
2.将Options设置成python输出
因为很多模块对C++的支持不好,会报错
3.生成py代码
查看模块名
4.使用everything,搜索pll_freqdet_cf【这就是相关模块实现】
这里前提必须要下载源码,否则找不到;其中xx.yml文件是grp的配置,pll_freqdet_cf.h是类头文件,pll_freqdet_cf_impl.xx是实现私有化
5.查看pll_freqdet_cf.h
这个接口是面向用户的,一般都是一个静态make函数,这里有三个入参:loop_bw,max_freq,min_freq,最终会在GRP中供设置:
6.查看pll_freqdet_cf_impl.h
可以看到pll_freqdet_cf_impl继承了pll_freqdet_cf
7.查看pll_freqdet_cf_impl.cc
这里实现了接口的make接口,内部是创建了一个实现类pll_freqdet_cf_impl的智能指针,故会调用pll_freqdet_cf_impl构造函数
①、用户传递进入的三个参数依旧作为构造入参;
②、在初始化列表里实现了pll_freqdet_cf的父类sync_block
这里应该只是对模块做一些标记
③、在初始化列表里实现了pll_freqdet_cf的父类control_loop,同时传入用户参数
此时都是将相关参数存储
8.开始运行
上面第7步主要是通过层层代码查看其源码,实际上运行的时候会调用实现类的work接口
这里基本就是核心的地方了。
长风破浪会有时,直挂云帆济沧海!
可通过下方链接找到博主
https://www.cnblogs.com/judes/p/10875138.html