为什么 radioIn 连接需要 "like IRadio" 来停止门未连接到兄弟错误?
Why is "like IRadio" required for radioIn connection to stop gate is not connected to sibling error?
我创建了一个简单的节点,它可以将内容传递到网络层 BroadcastRouting
,然后再将它们转发回去。
我收到错误:Gate 'radioIn' is not connected to sibling or parent module.
我通过为输入门提供 属性 @directIn
并通过使物理层 <default("Ieee802154UwbIrRadio")> like IRadio
而不仅仅是 Ieee802154UwbIrRadio
来修复它
为什么要修复它?
我以为Ieee802154UwbIrRadio已经有了radioIn gate
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;
}
为了保持封装概念的工作,INET 的无线电基础设施(更准确地说是管理媒体本身的模块)期望您的 Node
模块有一个 radioIn
门。无线消息将使用 directSend()
呼叫传递到该门。现在因为这些门 没有 连接到外部的任何东西,而它们显然连接到 Physical
模块的门 OMNeT++ 抛出一个错误,因为这是一个典型的错误。这就是为什么你必须明确地用 @directIn
注释标记门,以禁用此验证检查。
事实上,该门连接(在内部)到 Physical.radioIn
门或 Ieee802154UwbIrRadio
有一个 radioIn
门只是一个实现细节。它应该不重要,因为它在节点内部。
我创建了一个简单的节点,它可以将内容传递到网络层 BroadcastRouting
,然后再将它们转发回去。
我收到错误:Gate 'radioIn' is not connected to sibling or parent module.
我通过为输入门提供 属性 @directIn
并通过使物理层 <default("Ieee802154UwbIrRadio")> like IRadio
而不仅仅是 Ieee802154UwbIrRadio
为什么要修复它? 我以为Ieee802154UwbIrRadio已经有了radioIn gate
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;
}
为了保持封装概念的工作,INET 的无线电基础设施(更准确地说是管理媒体本身的模块)期望您的 Node
模块有一个 radioIn
门。无线消息将使用 directSend()
呼叫传递到该门。现在因为这些门 没有 连接到外部的任何东西,而它们显然连接到 Physical
模块的门 OMNeT++ 抛出一个错误,因为这是一个典型的错误。这就是为什么你必须明确地用 @directIn
注释标记门,以禁用此验证检查。
事实上,该门连接(在内部)到 Physical.radioIn
门或 Ieee802154UwbIrRadio
有一个 radioIn
门只是一个实现细节。它应该不重要,因为它在节点内部。