我创建了一个简单的节点,该节点将事物传递到网络层BroadcastRouting
,然后将其再次转发回去。
我遇到错误:Gate 'radioIn' is not connected to sibling or parent module.
我通过为输入门设置属性@directIn
并通过使物理层为<default("Ieee802154UwbIrRadio")> like IRadio
而不是仅仅Ieee802154UwbIrRadio
为什么要解决此问题? 我以为Ieee802154UwbIrRadio已经有了radioIn门。
module Node
{
@display("bgl=8;bgb=97,315");
gates:
input radioIn @directIn;
submodules:
Physical: <default("Ieee802154UwbIrRadio")> like IRadio {
@display("p=41,74");
}
Link: Ieee802154Mac {
@display("p=41,169");
}
Net: BroadcastRouting {
@display("p=41,248");
}
connections allowunconnected:
radioIn --> Physical.radioIn;
Physical.upperLayerOut --> Link.lowerLayerIn;
Physical.upperLayerIn <-- Link.lowerLayerOut;
Link.upperLayerOut --> Net.fromMac;
Link.upperLayerIn <-- Net.toMac;
}
答案 0 :(得分:1)
为了保持封装概念的正常运行,INET的无线电基础结构(更确切地说是管理媒体本身的模块)期望您的Node
模块具有radioIn
门。无线消息将使用directSend()
呼叫传递到该网关。现在,由于这些门没有未连接到外部任何东西,而显然它们已连接到Physical
模块的门,因此OMNeT ++会引发错误,因为这是典型错误。这就是为什么您必须显式地用@directIn
注释标记门以禁用此验证检查的原因。
该门(在内部)连接到Physical.radioIn
门或Ieee802154UwbIrRadio
有一个radioIn
门的事实只是一个实现细节。 无关紧要,因为它在节点内部。