我的网络中有两种类型的子模块。
AdhocHost
这是INET框架中的标准定义。 IMobility
的模块及其移动类型
类型RandomWPMobility
,都是标准的INET模块。 我可以通过以下代码获取AdhocHost
类型的模块的位置:
module = simulation.getModuleByPath("Mynet.host[1]");
c = MobilityAccess().get(module)->getCurrentPosition();
host[*]
属于AdhocHost
类型。
但是当我用阻塞[1]替换host[1]
时(阻塞类型为IMobility
),在运行模拟之前会出现此错误:
模块(MyMobileController)中的错误Mynet.mymobilecontroller期间 网络初始化:模型错误:模块(IMobility)移动性不是 找到。
模块mymobilecontroller
是包含这部分代码的模块。该模块不需要移动。它的职责是记录移动模块在网络中的位置。
有什么问题?
答案 0 :(得分:2)
' MobilityAccess'代码期望您将 NetworkNode 传递给包含名为mobility
且类型为IMobility
的子模块的 NetworkNode 。在第一种情况下,它是真的(使用StandardHost)但是在第二种情况下,您直接传递具有IMobility类型的模块。
长话短说,具有IMobility类型的模块意味着存在于网络节点的 INSIDE 而不是网络级别。
解决方案:我不确定阻塞模块应该做什么,但它不应该是一种IMobility,而应该是包含子模块的模块输入IMobility。