OMnet++奮闘記3

ついに2個のdelayを一つにすることに成功しました!
しかしバイトがあるのでコードを貼れない…
でもうれしくて報告!帰ってきたらソースコードはります。


そんなわけでとりあえずソースから。
txc.ccとtictoc.nedは変化なしです。


delay.ned

simple Delay
  gates:
    in: in;
    out: out
;
endsimple

こんだけ。
前と変わったところは行列のような[]がついたところです。


次にdelay.cc

#include
#include


class Delay : public cSimpleModule
{
 protected:
  virtual void handleMessage(cMessage *msg);
};


Define_Module(Delay);


void Delay::handleMessage(cMessage *msg)
{
  if(msg->arrivedOn("in",0)){
    send(msg, gate("out",0));
  }
  else{
    send(msg,gate("out",1));
  }
}


これが一番悩みました。
manualを見て関数を調べ、send()にもいろいろあるとかarrivedOn()とかも知りました。


そんでtopology.ned

import "Txc1" , "Delay";


module topology
  submodules:
    tic: Txc1;
      display:"p=0,0;i=block/routing";
    toc: Txc1;
      display:"p=100,100;i=block/routing";
    delay1: Delay;
      gatesizes:
        in[2],
        out[2];
      display:"p=50,50;i=block/opticaldelay_s";


  connections://maybe mistakes are here.
    tic.out --> delay 100ms --> delay1.in[0];
    toc.in <-- delay 100ms <-- delay1.out[0];


    toc.out --> delay 100ms --> delay1.in[1];
    tic.in <-- delay 100ms <-- delay1.out[1];
endmodule


network Tictoc1: topology
endnetwork;

以上です。
とりあえず一つにもできたし、delayもgateを増やせるようになったので満足です。
これを発展させればスイッチになるんかな…とか思いつつ。

以上でとりあえずOMnet++はひとまず休みです。
これ以上は僕の研究とかかわるかもしれないのでw;
でも「こんなのがほしいな」みたいなのがあれば作ろうと思います。


いまんとこネットワークでそんなのはなさそうだけど…
あとモジュールの階層化について理解して、余裕があったら載せたいと思います。


以上です。
ありがとうございましたー。