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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/16:14/14
2024/05/15:17/23

2024/03/17より394/1404
人気モジュール
No.1: フォーラム 82
No.2: QualNet概要 2
No.3: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット62
No.2:Unknown OS1

No.1:どっかの巡回ロボット54
No.2:Majestic-12巡回ロボット5
No.3:Google巡回ロボット3

日曜日からの合計
メイン
   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プロトコルの追加について
ありがとうございます。
何より経験をつまないといけませんね。
努力します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT