Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/10:8/8
2024/05/09:21/23

2024/03/11より375/1386
人気モジュール
No.1: フォーラム 103
No.2: QualNet概要 6
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット93
No.2:Linux3
No.3:Unknown OS1

No.1:どっかの巡回ロボット87
No.2:Safari3
No.3:Majestic-12巡回ロボット3

日曜日からの合計
メイン
   Miscellaneous: Architecture & Generic Development Questions
     コンフィグファイルからのノードタイプ読み込み
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
the_thirdman
投稿日時: 2006/4/13 0:04
新米
登録日: 2005/9/21
居住地:
投稿: 10
コンフィグファイルからのノードタイプ読み込み
ノードIDによってノードのタイプを分類し、パケットを受け取った際に各ノードタイプに応じた処理をするようにaodv.cppを改良しています。

この際、ノードタイプを分類するためにif文の条件にノードIDを使用し、aodv.cpp内でノードタイプを取得する関数を以下のように作成しました。

/***********************************
ノードタイプ取得関数
************************************/
char*
AodvGetNodeType(NodeAddress nodeId)
{
char* NodeType;

if ((1<= nodeId && nodeId <=20 ))
{
NodeType = "A";
}
else if((21<= nodeId && nodeId <=200))
{
NodeType = "B";
}

     ・・・・・・・・・・・・・

else NodeType = NULL;

return(NodeType);
}

このような方法でノードタイプを取得する関数を作成したのですが、
上の例で言いますと、例えばノードタイプAであるノードが21個以上の環境でシミュレーションしたいといった場合にはこの関数内の数値を書き換え、またコンパイルし直すといった作業が必要となってしまうのでどうにか他の方法がないかと考えています。

そこで、いちいちコンパイルし直す必要がないように、例えば各ノードタイプごとの下限と上限をシナリオのconfigファイル内で指定し、それを読み込むことで実現できないかなと思っているのですが、このようなことは可能でしょうか?

この辺をこういじればいいのではないかといった程度のアドバイスでもかまわないので回答のほうよろしくお願いします。
penguish
投稿日時: 2006/4/13 17:48
常連
登録日: 2005/4/8
居住地:
投稿: 45
Re: コンフィグファイルからのノードタイプ読み込み
aodv.cpp で AODV の設定を config ファイルから読み込む
関数があります。
AodvInitializeConfigurableParameters
これを参考にしたら如何でしょう。

例えば
AODV_TYPE_A 1 2 # 1〜2 は type a
AODV_TYPE_B 3 10 # 3〜10 は type b

と言った具合にconfigファイルに書いておいて、IO_READ 系の
APIを使ってAodvInitializeConfigurableParametersで読み込み
AodvData 構造体に設定しておく。

あとは 必要な箇所で AodvData に設定したフィールドを参照
すればよいと思いますよ。もちろん AodvData構造体の変更も
必要ですが。どうでしょう?
mast
投稿日時: 2006/4/14 2:15
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: コンフィグファイルからのノードタイプ読み込み
こんにちは。
IGMPの初期化コード(network/igmp.cpp内のIgmpInit関数)に以下のような箇所があります。
        // Check input file to determine if this node is a router
        retVal = IgmpIsRouter(node->nodeId, nodeInput);

        if (retVal) {
            igmp->igmpNodeType = IGMP_ROUTER;
        } else {
            igmp->igmpNodeType = IGMP_HOST;
        }

これは、IgmpIsRouter関数を呼び出してその返り値に応じて、当該ノードのIGMPノードタイプを設定しているのですが、これを真似してみるというのもアリかもしれません。

というのは、IgmpIsRouter関数内では、設定ファイルのIGMP-ROUTER-LISTというパラメータを処理しているのですが、その処理コードを見てみると、
IGMP-ROUTER-LIST {1, 3, 10 thru 20}
というような指定の仕方ができるようになっているので、このやり方を真似して、
configファイルで
AODV_TYPE_A_LIST {1, 3, 10 thru 20}
AODV_TYPE_B_LIST {2, 4 thru 9, 21 thru 30}
といった設定ができるようにしておけば、使いやすいのではないかと思われます。

GUIの設定は、gui/settings/choices.xmlで、以下のような感じでAODVのvariableを追加しておけばよさそうに思います。
(これもIGMP-ROUTER-LISTの真似ですが…)
<option value="AODV" name="AODV" addon="Developer,MANET">
    ...
    <variable name="Type-A Node List" key="AODV_TYPE_A_LIST" type="Text" default="{}" help="List TYPE-A nodes between the '{}' separated by commas.  You can use 'thru' to specify a range of nodes." invisible="node,interface" />
    <variable name="Type-B Node List" key="AODV_TYPE_B_LIST" type="Text" default="{}" help="List TYPE-B nodes between the '{}' separated by commas.  You can use 'thru' to specify a range of nodes." invisible="node,interface" />
</option>

mast
投稿日時: 2006/4/14 2:31
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: コンフィグファイルからのノードタイプ読み込み
先の投稿は、少し焦点がぼやけてしまった気がしたので、、一言で書き直します。

IgmpIsRouter関数が参考になるかと思います。
the_thirdman
投稿日時: 2006/4/14 17:03
新米
登録日: 2005/9/21
居住地:
投稿: 10
Re: コンフィグファイルからのノードタイプ読み込み
>penguishさん, mastさん
返信が遅れてしまい申し訳ございません。
詳細な回答のほうありがとうございます。
とても参考になりました

お二人の意見を参考にさせていただき、
さっそく改造に着手したいと思います。
また何かありましたら質問させていただくかと
思いますが、よろしくお願いします。

このたびは丁寧な対応本当にありがとうございました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT