сборочный узел с INET getContainedNicModule (): модуль nic не найден - PullRequest
0 голосов
/ 08 февраля 2019

Я создаю беспроводной узел, и в настоящее время он выглядит следующим образом

 module Node extends NodeBase
 {
    parameters:
        mobility.typename = default("StationaryMobility");
        Physical.antenna.mobilityModule = default("^.^.mobility");
        @display("bgl=8;bgb=230.31801,357.28");
        *.interfaceTableModule = default(absPath(".interfaceTable"));
    gates:
        input radioIn @directIn;
    submodules:
        //Don't know what this does but need interfaceTableModule to be defined
        interfaceTable: InterfaceTable {
            parameters:
                @display("p=125,240;is=s");
        }
        Physical: Ieee802154UwbIrRadio{
            @display("p=41,74");
        }
        Link: <default("Ieee802154Mac")> like IMacProtocol {
            @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;
}

Ошибка времени выполнения возникает при попытке симулятора загрузить LinkLayer.

Ошибка времени выполнения: getContainingNicModule(): nic module not found (it should have a property named nic) for module 'network.componenet1.Link' ... during network initialisation

Я полагаю, что функция getContainingNicModule пытается найти модуль сетевой карты, который является родителем канального уровня.Я искал свойство nic и не могу ничего найти.Это может быть связано со свойством interface, но у inet.LinkLayerNodeBase, который я отражаю, такого свойства нет.

Почему выдается эта ошибка?

1 Ответ

0 голосов
/ 14 февраля 2019

Любой модуль like IMacProtocol должен быть подмодулем IWirelessInterface

. При изменении реализаций IRadio и IMacProtocol на комбинированную реализацию IWirelessInterface в Ieee802154UwbIrInterface он больше недал мне nic module not found error.

Функция, которая выдавала ошибку: findContainedNicModule .Он ищет, может ли быть приведен родительский модуль к типу InterfaceEntry.Если происходит сбой, то возникает ошибка, связанная со свойством nic, однако ни у одного модуля больше нет этого свойства.

С тех пор как в inet 3.6.4 (я думаю) типы Nic были заменены на Interfaceтипы .Однако многие другие ссылки на Nic не были изменены.Таким образом, ошибка не совсем точно отражает проблему.

Рабочий модуль теперь:

module Node extends NodeBase
{

    parameters:
        mobility.typename = default("StationaryMobility");
        wlan.radio.antenna.mobilityModule = default("^.^.^.mobility");
        @display("bgl=8;bgb=230.31801,357.28");
    gates:
        input radioIn @directIn;
    submodules:
        //Don't know what this does but need interfaceTableModule to be defined
        interfaceTable: InterfaceTable {
            parameters:
                @display("p=125,240;is=s");
        }
        wlan: <default("Ieee802154UwbIrInterface")> like IWirelessInterface{
            parameters:
                @display("p=41,248,row,150;q=queue");
        }
        Net: BroadcastRouting {
            @display("p=41,148");
        }
    connections allowunconnected:
        radioIn --> wlan.radioIn;
        wlan.upperLayerOut --> Net.fromMac;
        wlan.upperLayerIn <-- Net.toMac;
}
...