NS3-新增模块和调试


本周,应老师要求,为NS3新增lorawan-classB的模块。

模块的github地址:https://github.com/ConstantJoe/ns3-lorawan-class-B/tree/master/lorawan

下面是碰到的问题和经验总结。

1.如何在NS3.29中添加模块

To install this module, you should do as follow:
1. Download ns-3 latest version (ns-3-27) at [ns-3 main page](https://www.nsnam.org/ns-3-27).
2. Extract ns-allinone-3.27.tar.bz2 file.
3. Download ns3 lora module, then copy it ./src folder inside ns-allinone-3.27 folder.
4. Run three next statements to build source code:
```
	~/ns-allinone-3.27/ns-3$ ./waf clean
	~/ns-allinone-3.27/ns-3$ ./waf configure --enable-tests --enable-examples
	~/ns-allinone-3.27/ns-3$ ./waf build	
```

## Running the tests and examples

To test ns3 lora module, you run this statement:
```
	~/ns-allinone-3.27/ns-3$ ./test.py -s lora-node -m -t lora-node.txt
```
To run example of ns3 lora module, you run this statement:
```
	~/ns-allinone-3.27/ns-3$ ./waf --run lora-example
来源 :https://github.com/drakkar-lig/lora-ns3-module/blob/master/README.md

2.新装模块时碰到的问题
1.build过程中报错
           lorawan/helper/lorawan-helper.cc:215:66: error: ‘DLT_LORATAP’ is not a member of ‘ns3::PcapHelper’ PcapHelper::DLT_LORATAP);           因为使用的是C++编程语言,我对这方面了解很少(本科时候的欠账呀)。 一开始盲目去谷歌搜索(不得不说,谷歌在这方面是最好用的搜索引擎了)找不到相关信息。           后来,静下心来,查看源文件   lorawan/helper/lorawan-helper.cc:, 215gg,定位到报错位置。发现作者细心的写了注释。 PcapHelper:: DLT_LORATAP, 而后定位类PcapHelper 位置 :ns-3.29/build/ns3/tracer_helper.h. 根据注释,新增DLT_LORATAP = 270 解决问题。           经验 :报错了要去查看源文件,不盲目搜索     2.而后使用 ./waf --run 命令运行该模块中的example 碰到了一连串的问题,安装eclipse,在这个软件里编译和运行ns3模块,各个函数之间的依赖关系变得直观了。 ns3联合eclipse的安装方法(亲测可用): http://blog.sina.com.cn/s/blog_5584ff150102yixl.html   如果碰到找不到路径的问题,请仔细确认,是使用绝对路径还是相对路径。   那篇博客中的在我的eclipse june 2018(4.8.0)中未找到,暂时没发现影响。

 目前实现了对example中error问题的定位,具体的错误原因还待继续确定。。。。

            具体碰到的问题: NS版本 3.28 ,解决方法同3.29  问题:lorawan/helper/lorawan-helper.cc:215:66: error: ‘DLT_LORATAP’ is not a member of ‘ns3::PcapHelper’ PcapHelper::DLT_LORATAP);   解决方法 :在ns-allinone-3.28/ns-3.28/build/ns3/tracer_helper.h  line 61中新增  DLT_LORATAP = 270   运行example时, 3.28和3.29有相同的问题 不能运行的example 0. lorawan-error-distance-plot.cc  问题 : 找不到该模块  解决方法 在lorawan/examples/wscript 里将该example加进去 新问题:1. compling出错, 定位问题: lorawan-error-distance-plot.cc  line58  函数LoRaWANErrorDistanceCallback  的参数LoRaWANDataIndicationParams’ was not declared in this scope       1, 3 有相同的问题 1.lorawan-unconfirmed-data-up-example.cc   报错位置 :line104   定位文件位置  /ns-allinone-3.29/ns-3.29/build/ns3/callback.h   line 1449, traced-callback.h, line=280    msg="Incompatible types. (feed to "c++filt -t" if needed) got=CallbackImpl, std::allocator >,ns3::Time,ns3::LoRaWANPhyEnumeration,ns3::LoRaWANPhyEnumeration> expected=CallbackImpl, std::allocator >,ns3::LoRaWANPhyEnumeration,ns3::LoRaWANPhyEnumeration>", file=./ns3/callback.h, line=1449 msg="when connecting to phy0", file=./ns3/traced-callback.h, line=280 terminate called without an active exception   3.lorawan-simultaneous-unconfirmed-data-up-example   msg="Incompatible types. (feed to "c++filt -t" if needed) got=CallbackImpl, std::allocator >,ns3::Time,ns3::LoRaWANPhyEnumeration,ns3::LoRaWANPhyEnumeration> expected=CallbackImpl, std::allocator >,ns3::LoRaWANPhyEnumeration,ns3::LoRaWANPhyEnumeration>", file=./ns3/callback.h, line=1449 msg="when connecting to phy0", file=./ns3/traced-callback.h, line=280 terminate called without an active exception     2.  lorawan-phy-example.cc   跑到 run时 报错000 LoRaWANPhy:LoRaWANPhy(0x7fffc91a5560, 0) LoRaWANPhy:ChangeTrxState(): 0x7fffc91a5560 state: 0 -> 0 LoRaWANPhy:ChangeTrxState(): 0x7fffc91a5560 state: 0 -> 0 LoRaWANPhy:LoRaWANPhy(0x7fffc91a5560, 0) LoRaWANPhy:ChangeTrxState(): 0x7fffc91a5560 state: 0 -> 0 LoRaWANPhy:ChangeTrxState(): 0x7fffc91a5560 state: 0 -> 0 SingleModelSpectrumChannel:SingleModelSpectrumChannel(0x562edfd9bcf0) SingleModelSpectrumChannel:GetTypeId() LoRaWANPhy:SetChannel(0x562edfda74c0, 0x562edfd9bcf0) LoRaWANPhy:SetChannel(0x562edfda76b0, 0x562edfd9bcf0) SingleModelSpectrumChannel:AddRx(0x562edfd9bcf0, 0x562edfda74c0) SingleModelSpectrumChannel:AddRx(0x562edfd9bcf0, 0x562edfda76b0) LoRaWANPhy:SetMobility(0x562edfda74c0, 0x562edfd8cb90) LoRaWANPhy:SetMobility(0x562edfda76b0, 0x562edfd8e510) LoRaWANPhy:SetSetTRXStateConfirmCallback(0x562edfda74c0) LoRaWANPhy:SetSetTRXStateConfirmCallback(0x562edfda76b0) LoRaWANPhy:SetTRXStateRequest(0x562edfda74c0, 3) LoRaWANPhy:SetTRXStateRequest(): Trying to set m_trxState from 0 to 3 LoRaWANPhy:ChangeTrxState(): 0x562edfda74c0 state: 0 -> 3 At: +0.0ns Received Set TRX Confirm: 3 LoRaWANPhy:SetTRXStateRequest(0x562edfda76b0, 2) LoRaWANPhy:SetTRXStateRequest(): Trying to set m_trxState from 0 to 2 LoRaWANPhy:ChangeTrxState(): 0x562edfda76b0 state: 0 -> 2 At: +0.0ns Received Set TRX Confirm: 2 LoRaWANPhy:SetPdDataIndicationCallback(0x562edfda76b0) At: +1000000000.0ns Sending one frame LoRaWANPhy:PdDataRequest(0x562edfda74c0) LoRaWANPhy:PdDataRequest(): 0x562edfda74c0 m_trxState = 3 LoRaWANPhy:CalculateTxTime(0x562edfda74c0) LoRaWANPhy:CalculateTxTime(): 0x562edfda74c0: 12|0|10|0|16|8|663552uS SingleModelSpectrumChannel:StartTx(0x562edfd9bcf0, 0, +663552000.0ns, 0x562edfda74c0)     assert failed. cond="txParams->psd", msg="NULL txPsd", file=../src/spectrum/model/single-model-spectrum-channel.cc, line=86    terminate called without an active exception   定位 single-model-spectrum-channel.cc  void singleModelSpectrumChannel :: StartTx(Ptr( --command-template="gdb --args %s ").http://blog.sina.com.cn/s/blog_5584ff150102yixl.html
 

相关