Как перенаправить входящий трафик на модуль в его простой подмодуль в Omnet ++? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть этот код, где модуль, который расширяет модуль WirelessHost, состоит из простого модуля, называемого узлом: Когда я запускаю симуляцию, появляются только события мобильности, никакие коммуникационные события не отображаются. Я думаю, что это связано с не связывание модуля Drone gates с воротами, получающими входящий трафик. Как я могу это сделать, пожалуйста?


                            SaaS.ned

import inet.node.inet.WirelessHost;
import inet.visualizer.integrated.IntegratedVisualizer;
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.physicallayer.unitdisk.UnitDiskRadioMedium;

simple Node
{
    gates:
        input in[];
        output out[];
}

module Drone extends WirelessHost
{                 
        gates:
            input in[];
            output out[];

         submodules:
            myNode: Node;

        connections allowunconnected:    
            for i=0..sizeof(in)-1 {
                in++ -->  myNode.in++;
            }
            for i=0..sizeof(out)-1 {
                out++ <--  myNode.out++;
            }
}

network SaaS
{
    parameters:
        int numDrones;

    submodules:
        visualizer: IntegratedVisualizer {
            @display("p=94.376,433.728");
        }

        configurator: Ipv4NetworkConfigurator {
            parameters:
                config = xml("<config><interface hosts='*' address='145.236.x.x' netmask='255.255.0.0'/></config>");
                @display("p=94.376,56.224;is=s");
        }

        radioMedium: UnitDiskRadioMedium {
            @display("p=94.376,178.71199");
        }

        drone[numDrones]: Drone {
            @display("i=misc/node_vs");
        }
}

                           Node.cc

#include <string.h>
#include <omnetpp.h>

using namespace omnetpp;

class Node : public cSimpleModule
{
     protected:
      // The following redefined virtual function holds the algorithm.
      virtual void initialize() override;
      virtual void handleMessage(cMessage *msg) override;
};

// The module class needs to be registered with OMNeT++
Define_Module(Node);
using namespace std;

void Node::initialize()
{
    int n = gateSize("out");
    cMessage *msg = new cMessage("tictocMessage");
    for (int i = 0; i < n ; i++)
            send(msg, "out", i);
}

void Node::handleMessage(cMessage *msg)
{
    int n = gateSize("out");
    for (int i = 0; i < n ; i++)
        send(msg, "out", i);
}

1 Ответ

1 голос
/ 15 мая 2019

Это не так, как предполагается настроить WirelessHost в INET.

Вы должны реализовать модуль приложения UDP, и вы должны настроить это приложение для использования в WirelessHost.

*.drone[0].numApps = 1
*.drone[0].app[0].typename = "MyUDPApp"

Нет необходимости расширять WirelessHost, так как он уже содержит вектор модуля с именем app, который можно настроить с помощью различных прикладных модулей. Вы должны проверить различные примеры того, как приложения настроены в них

...