%description: Test dynamic creation and setup of DatarateChannels %file: test.ned simple Node1 { gates: output out @loose; } simple Node2 { gates: input in @loose; } network Test { submodules: node1: Node1; node2: Node2; } %file: test.cc #include using namespace omnetpp; namespace @TESTNAME@ { class Node1 : public cSimpleModule { public: Node1() : cSimpleModule(16384) { } virtual void activity() override; }; Define_Module(Node1); static void dumpParams(const char *label, cComponent *c) { EV << label << ":\n"; for (int i=0; igetNumParams(); i++) EV << " " << c->par(i).getFullName() << "=" << c->par(i).str() << "\n"; } void Node1::activity() { cDatarateChannel *ch = cDatarateChannel::create("channel"); dumpParams("After creation", ch); ch->setDisabled(true); ch->setDelay(0.001); ch->setDatarate(10000); ch->setBitErrorRate(0.001); dumpParams("After setting pars", ch); cModule *node2 = getParentModule()->getSubmodule("node2"); gate("out")->connectTo(node2->gate("in"), ch); dumpParams("After connecting", ch); ch->setDisabled(false); ch->setDelay(0.002); ch->setDatarate(20000); ch->setBitErrorRate(0.002); dumpParams("After changing pars", ch); EV << ".\n"; send(new cPacket("pk"), "out"); } class Node2 : public cSimpleModule { public: virtual void handleMessage(cMessage *msg) override { delete msg; } }; Define_Module(Node2); }; //namespace %contains: stdout After creation: disabled=false delay=0s datarate=0bps ber=0 per=0 After setting pars: disabled=true delay=0.001s datarate=10000bps ber=0.001 per=0 Initializing channel Test.node1.out.channel, stage 0 After connecting: disabled=true delay=0.001s datarate=10000bps ber=0.001 per=0 After changing pars: disabled=false delay=0.002s datarate=20000bps ber=0.002 per=0 .