为什么将radioIn连接到停止门所需的“ like IRadio”未连接到同级错误?

时间:2019-02-07 18:13:07

标签: omnet++ inet

我创建了一个简单的节点,该节点将事物传递到网络层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;
}

1 个答案:

答案 0 :(得分:1)

为了保持封装概念的正常运行,INET的无线电基础结构(更确切地说是管理媒体本身的模块)期望您的Node模块具有radioIn门。无线消息将使用directSend()呼叫传递到该网关。现在,由于这些门没有连接到外部任何东西,而显然它们已连接到Physical模块的门,因此OMNeT ++会引发错误,因为这是典型错误。这就是为什么您必须显式地用@directIn注释标记门以禁用此验证检查的原因。

该门(在内部)连接到Physical.radioIn门或Ieee802154UwbIrRadio有一个radioIn门的事实只是一个实现细节。 无关紧要,因为它在节点内部。