メイン Scenario Setup & Configuration MACプロトコルの追加について | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yukkin61562 | 投稿日時: 2009/11/4 17:52 |
半人前 登録日: 2009/9/14 居住地: 投稿: 27 |
MACプロトコルの追加について お世話になっております。
現在、MACプロトコルを追加しようと思っており、そこで行き詰っています。 具体的には、既にある mac_dot11.h の冒頭の define の定数値を 少し書き換えたものをオリジナルのプロトコルとして追加したいと思っています。 Programmers Guide の Adding a Wireless MAC Protocol を見ながら やっていますが、コンパイルでエラーが出てしまいます。 手順としては、 ・mac_dot11.h を修正したものを mac_myprotocol.h として保存 ・mac_dot11.cpp をmac_myprotocol.cpp で保存し 先ほどの .h をinclude する ・mac.h 及び trace.h を書き換える ・mac.cpp に必要な部分を追加する(←ここらへんが自信ありません・・・) といった感じでよろしいでしょうか? 思うに、そのままコピーして使うと、変数名や関数名の宣言がバッティング してしまってコンパイルエラーになっているのかと思いますが・・・。 今のところは、choices.xml と mac_dot11.cpp を少し書き換えて、GUI上から 値をさわれるようにしており何とかなっていますが、後々プロトコルを 追加することを考えると、この方法ばかりもやっていられないので、 今回質問させていただきました。 以上、よろしくお願いいたします。 |
matumoto | 投稿日時: 2009/11/4 20:27 |
一人前 登録日: 2008/5/13 居住地: 投稿: 80 |
Re: MACプロトコルの追加について QualNetに限らず、ソースコードの改造における一般論になります。
既存のプロトコルを一部改造して使う場合、 既存のプロトコルとの共存をあきらめてしまい、改造してしまう。 既存のプロトコルとの共存が必要になるので、改造する。 しかありません。 あるいは、 既存のプロトコル(つまりQualNetオリジナル)の環境をとっとく。 改造したプロトコルの環境を別に作る。 使う場合に、これら2つのQualNetを使い分ける。 方法がありますが、シナリオでの共存はできません。 少なくとも、既存のプロトコルとの共存が必要なので改造する場合は、 改造部分とコンフリクトしないように、丁寧に名前を書き換えるしか ありません。 で、今回の場合です。 『既にある mac_dot11.h の冒頭の define の定数値を少し書き換えたもの』 だけが改造内容であれば、defineの内容をconfigで設定可能にする改造が楽です。 たとえば、 #define DOT11_PS_LISTEN_INTERVAL 10 は、 int DOT11_PS_LISTEN_INTERVAL; にしてしまい、実体をdot11の構造体で定義。実際の値は.configから読む。 configに値が定義されていなければ、デフォルトとして10にしておく。 使っている場所では、DOT11_PS_LISTEN_INTERVAL ではなくって、 何たら構造体.DOT11_PS_LISTEN_INTERVAL とか、 何たら構造体へのポインタ->DOT11_PS_LISTEN_INTERVAL と使う。 などの方法です。 ただし、 実際のdefineの内容にも依存するので、全てがうまく改造できるか否かは 保障の限りではありません。 あと、『コンパイルでエラーが出てしま』っていれば、 QualNetの実行形式はできないはずですが... 『今のところは、choices.xml と mac_dot11.cpp を少し書き換えて、 GUI上から値をさわれるようにしており何とかなっていますが』 という状況がいまいちつかめません。 |
yukkin61562 | 投稿日時: 2009/11/4 21:16 |
半人前 登録日: 2009/9/14 居住地: 投稿: 27 |
Re: MACプロトコルの追加について matu さん
お世話になっております。 おっしゃる「シナリオでの共存」をしたいと思っています。環境を使い分けるという感じではなく、 端末ごとに違うMACプロトコルを設定する、という風にしたいと思っています。 (違うMACプロトコルといってもパラメータの数値が異なるだけなので通信はできるかと思います) 現在はchoices.xml と mac_dot11.cpp を少し書き換えて使っていると書きましたが、 これは matu さんが提案された方法に近いかもしれません。というのは choices.xml に手動で変更したいパラメータを追加することによってGUI上から さわれるようにしているということです。 具体的には、CWminを端末ごとに変えたいと思っていました。 例として、RTS Threshold は GUI 上からさわれるようになっています。 それを真似して、CWminをGUI上から端末ごとに変えることに成功しました。 もしこれを「新たなプロトコル追加」としてやろうとすると、 各種関数等の名前をすべて書き換えないといけないということになる、ということでよろしいでしょうか。 |
matumoto | 投稿日時: 2009/11/5 9:39 |
一人前 登録日: 2008/5/13 居住地: 投稿: 80 |
Re: MACプロトコルの追加について 新たなプロトコル追加が、既存のプロトコルを流用するのであれば、
すでに書いたように流用したものの共存の問題が発生します。 また、全く新規にプロトコルを作成するときでも、 既存のものとコンフリクトを避けなければいけません。 いずれにせよ、 すでに何かがある状態でそこに何かをいれるわけなので、 何らかの調整は必要です。 |
yukkin61562 | 投稿日時: 2009/11/5 19:35 |
半人前 登録日: 2009/9/14 居住地: 投稿: 27 |
Re: MACプロトコルの追加について お返事ありがとうございます。
そうですか、、あまりプログラミングに慣れていないもので…すみません。 とにかく、自分の方法の問題点が明確になったので良かったと思います。 ありがとうございました! |
matumoto | 投稿日時: 2009/11/5 20:28 |
一人前 登録日: 2008/5/13 居住地: 投稿: 80 |
Re: MACプロトコルの追加について 慣れてくると、どの方法が近道(改造量が少ない)か
なんとなくわかってくると思います。 QualNetの使い方とは別のソフトウェア一般のことですが、 作業量の見積について経験を重ねることも、 ソフトウェアの開発を生業とする場合は大切ですので、 いろいろチャレンジして下さい。 |
yukkin61562 | 投稿日時: 2009/11/6 5:54 |
半人前 登録日: 2009/9/14 居住地: 投稿: 27 |
Re: MACプロトコルの追加について ありがとうございます。
何より経験をつまないといけませんね。 努力します。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |