ns-3上への指向性通信の実装について

directionalwifiモジュール

ns-3上で指向性アンテナを用いた無線通信の検証ができるようにdirectionalwifiモジュールを実装しました。 directionalwifiモジュールはns-3のwifiモジュールを拡張したモジュールです。 directionalwifiモジュールでは、DMAC (Directional MAC)を実装しています。directionalwifiモジュールを編集することで、ns-3を用いて指向性通信のシミュレーションをすることが可能です。

wifiantenna・orientationモジュール

directionalwifiモジュールのアンテナモデルとしてwifiantennaモジュールを実装しました。 wifiantennaモジュールはAntenna/Orientation Supportのパッチファイルを基に実装しました。

directionalwifiモジュールで指向性アンテナやノードの方向を表すモデルとしてorientationモジュールを実装しました。 orientationモジュールはAntenna/Orientation Supportのパッチファイルを基に実装しました。

directionalwifiの使用方法

directionalwifiはns-3.20のwifiモジュールを改良して作成したため、ns-3.20のみ動作が保証されています。ここではホームディレクトリにns-3.20がインストールされていると仮定してdirectionalwifiの使用方法を記載します。ns-3.20のインストールは、↓を参考にして下さい。

ns-3.20のインストール

プログラムのダウンロード

まず、git(ns3-directionalwifi)からソースコードをダウンロードします。https://github.com/yusuke-sugiyama/ns-3-directionalwifiを開くと↓のページが表示されます。

intro01.png

右下のDownload ZIPをクリックすると「ns-3-directionalwifi-master.zip」がダウンロードできます。

プログラムの配置方法

ダウンロードした「ns-3-directionalwifi-master.zip」をhomeディレクトリに置いたと仮定して話を進めます。まず、以下のコマンドを利用してzipを解凍します。

unzip ns-3-directionalwifi-master.zip

すると、「ns-3-directionalwifi-master」ディレクトリが生成されるのでcdコマンドでそのディレクトリに移動します。

cd ns-3-directionalwifi-master

次に、「ns-3-directionalwifi-master/src」の中身をns-3.20の「src」に上書き、「ns-3-directionalwifi-master/scratch」の中身ををns-3.20の「scratch」に追加します。

ns-3.20の「scratch」に「directionalwifi」フォルダが追加されます。 ns-3.20の「src」に「wifiantenna」・「orientation」フォルダが追加されます。 ns-3.20の「src/wifi」・「src/antenna」の一部のソースファイルが上書きされますのでご注意ください。

cp -r src/* ../ns-allinone-3.20/ns-3.20/src/
cp -r scratch/* ../ns-allinone-3.20/ns-3.20/scratch/

最後にns-3.20のディレクトリに移動して、「waf」を用いてビルドします。

cd ~/ns-allinone-3.20/ns-3.20/
./waf configure
./waf

これで、プログラムの配置は完了です。

directionalwifiのチュートリアル

directionalwifiモジュールの ダウンロードからプログラムの配置 を行っていない場合はそちらを先にして下さい。チュートリアルでは、directionalwifiモジュールが使用可能であること、ホームディレクトリにns-3.20がインストールされていることとして話を進めていきます。 ns-3.20のインストールは、↓を参考にして下さい。

ns-3.20のインストール

プログラムの実行方法

まず、ns-3.20の「scratch/directionalwifi」ディレクトリに移動します。

cd ~/ns-allinone-3.20/ns-3.20/scratch/directionalwifi/

以下のコマンドを実行することでデフォルト値でシミュレーションを実行することが可能です。

./waf --run "directionalwifi"

↓の図に実行結果を示します。

cmd1.png

プログラムの実行結果確認方法

まず、ns-3.20の「scratch/directionalwifi」ディレクトリに移動します。

cd ~/ns-allinone-3.20/ns-3.20/scratch/directionalwifi/

catコマンドを利用してシミュレーションの実行結果を確認できます。

cat ../../data-run-xxxxxxxxxx.sca ※ xxxxxxxxxx には数字が入ります

↓の図に実行結果を示します。

cmd2.png

パラメータ

  • phy-tx-data:全ノードのDATAの送信回数
  • phy-tx-ack:全ノードのACKの送信回数
  • phy-tx-rts:全ノードのRTSの送信回数
  • phy-tx-cts:全ノードのCTSの送信回数
  • phy-tx-other:全ノードのAODVフレームなどその他のフレームの送信回数
  • mac-total-missed-ack:全ノードのACK待ちのタイムアウト回数
  • endTime-xxx:シミュレーションの終了時間
  • delay-xxx:データが生成されてから受信されるまでの時間

プログラムの詳細

シミュレーションのパラメータ

  • ノード数:4
  • データサイズ:1500 [Bytes]
  • データの発生間隔:0.002 [s]
  • ノード間の距離:90 [m]
  • 伝送レート: 6 [Mbps]
  • ルーティングプロトコル:AODV

アンテナのパラメータ

  • 指向性アンテナの範囲内の利得 3 [dB]
  • 指向性アンテナの範囲外の利得 -80 [dB]
  • オムニアンテナの利得 0 [dB]

トポロジ

  • ライントポロジ

↓の図にシミュレーションで用いたトポロジを示します。

topology.png

シミュレーションの終了条件

  • ノード4がノード3から1100回フレームを受信
  • シミュレーション開始から1000秒経過

directionalwifiの詳細

仕様説明

実装した指向性アンテナを用いたMACプロトコルであるDMACに関する論文と実装した機能を解説したPDFを載せます。

[Directional Virtual Carrier Sensing for Directional Antennas in Mobile Ad Hoc Networks]

Mineo Takai, Jay Martin, Rajive Bagrodia, Aifeng Ren, Directional Virtual Carrier Sensing for Directional Antennas in Mobile Ad Hoc Networks, Proceedings of the 3rd ACM international symposium on Mobile ad hoc networking & computing (ACM MOBIHOC'02), 2002

[A MAC protocol for full exploitation of Directional Antennas in Ad-hoc Wireless Networks]

Thanasis Korakis, Gentian Jakllari, Leandros Tassiulas, A MAC protocol for full exploitation of Directional Antennas in Ad-hoc Wireless Networks, Proceedings of the 4th ACM international symposium on Mobile ad hoc networking & computing (ACM MOBIHOC'03), 2003

新規に追加したファイル

wifiantenna/model/wifi-antenna-model.cc (h)

WifiAntennaModel

  • MacLowクラスからアンテナを制御するメソッドを呼び出すためのクラス

WifiAntennaListener

  • DcfManager・MacLow・InterferenceHelperにアンテナンモードの変更を通知するためのクラス

wifiantenna/model/wifi-switched-beam-antenna-model.cc (h)

WifiSwitchedBeamAntennaModel

  • 5つのアンテナモードを切り替えることができるスイッチドビームアンテナのモデルを実装したクラス
  • 5つのアンテナモードとして以下のビームパターンを持つ
    1. 無指向性
    2. 0~π/2方向への指向性
    3. π/2~π方向への指向性
    4. π~3π/2方向への指向性
    5. 3π/2~2π方向への指向性

orientation/model/orientation-model.cc

Orientation

  • WifiAntennaModelクラスからアンテナの方向を制御するメソッドを呼び出すためのクラス

orientation/model/constant-orientation-model.cc (h)

ConstantOrientationModel

  • アンテナの方向を特定方向に向けるためのクラス
class3.png
図1: アンテナモデル・オリエンテーションモデルのクラス図


図1にアンテナモデル・オリエンテーションモデルのクラス図を示します。

wifi/model/geography-tag.cc (h)

GeographyTag

class1.png
図2: GeographyTagのクラス図


図2にGeographyTagのクラス図を示します。 GeographyTagはTagクラスを継承しています。 GeographyTagは送信ノードの位置情報を保存してAOA (Angle Of Arrival)を求める際に利用されます。

※ m_zは必ず0が入る仕様となっています。

wifi/model/geography-table.cc (h)

GeographyTable/GeographyItem

class2.png
図3: GeographyTable/GeographyItemのクラス図


図3にGeographyTable/GeographyItemのクラス図を示します。 GeographyTableクラスは隣接ノードの位置情報を管理するクラスです。 GeographyTableクラスはGeographyItemクラスを持ちます。 GeographyItemクラスは、addressとしてm_adderss、ノードのx座標としてm_x、ノードのy座標としてm_y、ノードのz座標としてm_zをメンバ変数に持ちます。

※ m_zは利用していないため必ず0が入ります。

変更したファイル

antenna/model/angles.cc (h)

変更点

  • phiとthetaを正規化

追加関数

  • Angles Inverse (void)
    phiとthetaの角度を反転する。
  • double NormalizeOverTwoPI (double a)
    引数aを0~2πとなるように正規化して正規化した値を返す。
  • double NormalizeOverPI (double a)
    引数aを0~πとなるように正規化して正規化した値を返す。

変更関数

  • Angles (double p, double t)
    phiとthetaの値を正規化するように変更。
  • Angles (Vector v)
    phiとthetaの値を正規化するように変更。
  • Angles (Vector v, Vector o)
    phiとthetaの値を正規化するように変更。

wifi/helper/yans-wifi-helper.cc (h)

変更点

  • YansWifiPhyクラスからWifiAntennaModelを参照できるように処理を追加

追加変数

  • Ptr<WifiAntennaModel> m_antenna
    WifiAntennaModelへのポインタを格納する。

追加関数

  • SetAntenna (Ptr<WifiAntennaModel> antenna)
    m_antennaにantennaを格納する。

変更関数

  • YansWifiPhyHelper ()
    m_antennaにWifiAntennaModelへのポインタを格納する処理を追加。
  • Create (Ptr<Node> node, Ptr<WifiNetDevice> device) const
    YansWifiPhyにWifiAntennaModelのポインタを渡す処理を追加。

wifi/model/regular-wifi-mac.cc (h)

変更点

  • DcfManagerにAntennaListenerを持たせる関数を追加。

変更関数

  • SetWifiPhy (Ptr<WifiPhy> phy)
    DcfManagerにAntennaListenerを持たせる処理を追加。

wifi/model/dcf-manager.cc (h)

変更点

  • アンテナモードごとのNAV・CCABusyの値が返されるようにNAV・CCABusyに関する変数を配列化

追加変数

  • AntennaListener* m_antennaListener
    AntennaListenerのポインタを格納する。
  • m_firstBackoffStart
    バックオフ時間の開始時間を格納する。
  • int m_antennaMode
    現在のアンテナモードを格納する。
  • m_nextAntennaMode
    送信開始時のアンテナモードを格納する。

変更変数

  • m_lastNavStart
    アンテナモードの数に適応させるため配列化する。
  • m_lastNavDuration
    アンテナモードの数に適応させるため配列化する。
  • m_lastBusyStart
    アンテナモードの数に適応させるため配列化する。
  • m_lastBusyDuration
    アンテナモードの数に適応させるため配列化する。

追加関数

  • NotifyChangeAntennaModeNow (int mode)
    WifiAntennaModelからアンテナモードの変更を通知される。
  • void SetBackoff (Time start, uint32_t nSlots)
    引数startをバックオフの開始時間に、nSlotsをバックオフのスロット数に設定する。
  • Time GetFirstBackoffStart (void)
    m_firstBackoffStartを取得する。
  • void NotifyNextTransmission (DcfManager* manager)
    DoNotifyNextTransmission (manager)を呼び出すことで、次の送信に備えてアンテナモードを切り替える。
  • void SetupAntennaListener (Ptr<WifiAntennaModel> antenna)
    引数antennaに指定されているWifiAntennaModelのリスナーとしてDcfManagerを登録する。
  • void SetNextAntennaMode (int mode)
    引数modeをm_nextAntennaModeに代入する。

変更関数

  • DcfManager ()
    m_antennaListenerを初期化する処理を追加。
    m_lastNavStart・m_lastNavDuration・m_lastBusyStart・m_lastBusyDurationを配列にしてそれぞれを初期化するように変更。
  • ~DcfManager ()

    m_antennaListenerを破棄する処理を追加。
  • void StartBackoffNow (uint32_t nSlots)
    m_firstBackoffStartに現在時間を代入する処理を追加。
  • bool IsBusy (void)
    アンテナモードがm_nextAntennaModeの場合のNAVを用いてNAVが設定されているか判定をするように変更。
  • void RequestAccess (DcfState *state)
    次の送信時に用いられるアンテナモードをMACヘッダから推定して、m_nextAntennaModeを更新する処理を追加。
  • Time GetAccessGrantStart (void)
    アンテナモードがm_nextAntennaModeの場合のNAV・CCABusyの終了時間を用いて送信を開始可能な時間を求めるように変更。
  • void NotifyMaybeCcaBusyStartNow (Time duration)
    アンテナモードがm_antennaModeの場合のCCABusyの値を格納するように変更。
  • void NotifySwitchingStartNow (Time duration)
    アンテナモードがm_antennaModeの場合のNAV・CCABusyの値を用いるように変更。
  • void NotifyNavResetNow (Time duration)
    アンテナモードがm_antennaModeの場合のNAVを用いるように変更。
  • void NotifyNavStartNow (Time duration, int mode)
    引数にmodeを追加。
    アンテナモードがOMNI(無指向性モード)・引数modeの2つの場合のNAVを更新するように変更。

追加クラス

  • AntennaListener : public ns3::WifiAntennaListener
    WifiAntenaModelのリスナークラス。
    アンテナモードの変更の通知に利用する。

wifi/model/dca-txop.cc (h)

変更点

  • 指向性アンテナの方向を制御する処理を追加

追加関数

  • virtual void DoNotifyNextTransmission (DcfManager* manager)
    DcaTxopクラスのNotifyNextTransmission (manager)を呼び出す。
  • void NotifyNextTransmission (DcfManager* manager)
    m_currentPacketに何も設定されていない場合にキューからパケットを取り出し設定する。
    送信開始時のアンテナのモードをMACヘッダから推定してm_nextAntennaModeに設定する。

変更関数

  • void MissedCts (void)
    アンテナモードをOMNI (無指向性)に設定する処理を追加。
  • void GotAck (double snr, WifiMode txMode)
    アンテナモードをOMNI (無指向性)に設定する処理を追加。
  • void MissedAck (void)
    アンテナモードをOMNI (無指向性)に設定する処理を追加。

wifi/model/edca-txop.cc (h)

変更点

  • DcfManagerの持つ抽象メソッドを実装

追加関数

  • virtual void DoNotifyNextTransmission (DcfManager* manager)
    DcaTxopクラスのNotifyNextTransmission (manager)を呼び出す。

wifi/model/mac-low.cc (h)

変更点

  • アンテナモードごとのNAVの値が返されるようにNAVに関する変数を配列化
  • 指向性アンテナの方向を制御する処理・関数を追加
  • GeographyTableにノードの位置を登録する処理を追加

追加変数

  • AntennaListenerMacLow* m_antennaListener
    AntennaListenerMacLowのポインタを格納する。
  • int m_antennaMode
    現在のアンテナモードを格納する。

変更変数

  • m_lastNavStart
    アンテナモードの数に適応させるため配列化する。
  • m_lastNavDuration
    アンテナモードの数に適応させるため配列化する。

追加関数

  • void SetupAntennaListener (Ptr<WifiAntennaModel> antenna)
    引数antennaに指定されているWifiAntennaModelのリスナーとしてMacLowを登録する。
  • void NotifyChangeAntennaModeNow (int mode)
    WifiAntennaModelからアンテナモードの変更を通知される。
  • void SetAntennaMode (int mode)
    アンテナモードをmodeに設定する。
  • void SetAntennaMode (Angles bet)
    角度betを基にアンテナモードを設定する。
  • int GetNextAntennaMode (Mac48Address addr)
    アドレスaddrを基に送信開始時のアンテナモードを設定する。
  • int GetNextAntennaMode (Angles bet)
    角度betを基に送信開始時のアンテナモードを設定する。

変更関数

  • MacLow ()
    m_lastNavStart・m_lastNavDurationを配列化して初期化する処理に変更。m_antennaListener・m_antennaModeを初期化する処理を追加。
  • void DoDispose (void)
    m_antennaListenerを破棄する処理を追加。
  • void SetPhy (Ptr<WifiPhy> phy)
    MacLowにWifiAntennaModelのリスナーを登録する処理を追加。
  • void NotifySwichingStartNow (Time duration)
    アンテナモードがm_antennaModeの場合のNAVを更新。
  • ReceiveOk (...)
    ノードの位置情報をGeographyTableに保存する処理を追加。
    送信開始時のアンテナモードをもとにNAVが設定されているか判定する処理を追加。
  • void NotifyNav (..., int mode)
    引数にアンテナモードを示すmodeを追加。
  • void DoNavResetNow (Time duration)
    アンテナモードがm_antennaModeの場合のNAVを更新する処理に変更。
  • bool DoNavStartNow (Time duration, int mode)
    引数にアンテナモードを示すmodeを追加。
    アンテナモードがOMNI (無指向性)・modeの場合のNAVを更新する処理に変更。
  • void ForwardDown (...)
    ノードの位置情報を設定したGeographyTagをパケットに付加する処理を追加。
  • void SendRtsForPacket (void)
    宛先ノードがGeographyTableに存在する場合、そのノードがいる方向にアンテナモードを設定して、存在しない場合はOMNI (無指向性)をアンテナモードに設定する。
  • void SendDataPacket (void)
    宛先ノードがブロードキャスト通信の場合にアンテナモードをOMNIに設定する処理を追加。
  • bool IsNavZero (int mode)
    引数にアンテナモードを示すmodeを追加。
    アンテナモードがmodeの場合のNAVを用いるように変更。
  • void SendCtsAfterRts (...)
    RTSの送信元ノードがGeographyTableに存在する場合、そのノードがいる方向にアンテナモードを設定して、存在しない場合はOMNI (無指向性)をアンテナモードに設定する。
    追加クラス
  • AntennaListener : public ns3::WifiAntennaListenerMacLow
    WifiAntenaModelのリスナークラス。
    アンテナモードの変更の通知に利用する。

wifi/model/wifi-phy.cc (h)

変更点

  • WifiAntennaModelへのポインタを返す関数を追加

追加関数

  • virtual Ptr<WifiAntennaModel> GetAntenna (void) const = 0;
    WifiAntennaModelのポインタを返す。

wifi/model/yans-wifi-phy.cc (h)

変更点

  • GeographyTableクラスのポインタを追加
  • アンテナモードにより受信電力を計算するように変更

追加変数

  • Ptr<WifiAntennaModel> m_antenna
    WifiAntennaModelへのポインタを格納する。
  • Ptr<GeographyTable> m_geo
    GeographyTableへのポインタを格納する。

追加関数

  • SetAntenna (Ptr<WifiAntennaModel> antenna)
    m_antennaにantennaを格納する。
    WifiPhyStateHelperにWifiAntennaModelのポインタを渡す。
    InterferenceHelperにWifiAntennaModelのポインタを渡す。
  • GetAntenna (void) const
    m_antennaを返す。

変更関数

  • YansWifiPhy ()
    m_geoにGeographyTableのポインタを追加。
  • DoDispose
    m_geoを初期化する処理を追加。
  • StartReceivePacket (..., double rxPowerDbm[WifiAntennaModel::NUMBER_OF_ANTENNA_MODELS])
    rxPowerDbmを配列で取り扱うように変更。
    アンテナモードごとに受信電力を計算するように変更。

wifi/model/yans-wifi-channel.cc (h)

変更点

  • 受信電力をアンテナモードに対応した配列で取り扱うように変更
  • 受信電力の計算時に送信アンテナゲイン・受信アンテナゲインを加えるように変更

変更関数

  • void Send (Ptr<YansWifiPhy> sender, Ptr<const Packet> packet, double txPowerDbm, WifiTxVector txVector, WifiPreamble preamble) const
    送信アンテナゲイン・受信アンテナゲインを受信電力に含めるように変更。
  • void Receive (..., double rxPowerDbm[WifiAntennaModel::NUMBER_OF_ANTENNA_MODELS])
    rxPoserDbmを配列で取り扱うように変更。

wifi/model/wifi-phy-state-helper.cc (h)

変更点

  • アンテナモードごとのNAV・CCABusyの値が返されるようにNAV・CCABusyに関する変数を配列化
  • アンテナモードによってNAV・CCABusyが変わるように変更

追加変数

  • AntennaListenerState* m_antennaListener
    AntennaListenerStateのポインタを格納する。
  • int m_antennaMode
    現在のアンテナモードを格納する。

変更変数

  • m_startCcaBusy
    アンテナモードの数だけ配列化する。
  • m_endCcaBusy
    アンテナモードの数だけ配列化する。

追加関数

  • void SetupAntennaListener (Ptr<WiriAntennaModel> antenna)
    引数antennaに指定されているWifiAntennaModelのリスナーとしてWifiPhyStateHelperを登録する。
  • void NotifyChangeAntennaModeNow (int mode)
    WifiAntennaModelからアンテナモードの変更を通知される。

変更関数

  • WifiPhyStateHelper ()
    m_antennaListenerを初期化する処理を追加。
    m_startCcaBusy・m_endCcaBusyを配列化して初期化する処理を追加。
  • Time GetDelayUntilIdle (void)
    アンテナモードがm_antennaModeの場合のCcaBusyを用いるように変更。
  • enum WifiPhy::State GetState (void)
    アンテナモードがm_antennaModeの場合のCcaBusyを用いるように変更。
  • void LogPreviousIdleAndCcaBusyStates (void)
    アンテナモードがm_antennaModeの場合のCcaBusyを用いるように変更。
  • void SwitchToTx (...)
    アンテナモードがm_antennaModeの場合のCcaBusyを用いるように変更。
  • void SwitchToRx (...)
    アンテナモードがm_antennaModeの場合のCcaBusyを用いるように変更。
  • void SwitchToChannelSwitching (Time swichingDuration)
    アンテナモードがm_antennaModeの場合のCcaBusyを用いるように変更。
  • void SwitchMaybeToCcaBusy (Time duration)
    アンテナモードがm_antennaModeの場合のCcaBusyを用いるように変更。

追加クラス

  • AntennaListenerState : public ns3::WifiAntennaListener
    WifiAntenaModelのリスナークラス。
    アンテナモードの変更の通知に利用する。

wifi/model/interference-helper.cc (h)

変更点

  • 受信電力をアンテナモードに対応した配列で取り扱うように変更
  • アンテナモードが変わっても正しく受信電力を計算できるように変更

追加変数

  • AntennaListenerInterferenceHelper* m_antennaListener
    AntennaListenerInterferenceHelperのポインタを格納する。

追加関数

  • double* GetAllRxPowerW (void)
    rxPowerWを返す。
  • GetDelta (int mode)
    アンテナモードがmodeの場合のDeltaを返す。
  • InterferenceHelper::NiChanges::iterator GetEventPosition (Ptr<InterferenceHelper::Event> event)
    引数eventの干渉が開始する位置をm_niChangesから探して返す。
  • InterferenceHelper::NiChanges::iterator GetEventEndPosition (Ptr<InterferenceHelper::Event> event)
    引数eventの干渉が終了する位置をm_niChangesから探して返す。
  • NotifyChangeAntennaModeNow (int mode)
    WifiAntennaModelからアンテナモードの変更を通知される。
  • void SetupAntennaListener (Ptr<WifiAntennaModel> antenna)
    引数antennaにWifiAntennaModelのリスナーとしてInterferenceHelperを登録する。

変更関数

  • Event (..., double rxPower[WifiAntennaModel::NUMBER_OF_ANTENNA_MODELS])
    rxPowerを配列に変更してアンテナのモードごとに格納するように変更。
  • double GetRxPowerW (int mode)
    アンテナモードがmodeの場合のm_rxPowerWを返すように変更。
  • InterferenceHelper ()
    m_antennaListenerを初期化する処理を追加。
  • NiChange (Time time, double* delta)
    引数deltaをポインタで渡すように変更。
  • void Add (..., double rxPowerW[WifiAntennaModel::NUMBER_OF_ANTENNA_MODELS])
    引数rxPowerWを配列で渡すように変更。
  • Time GetEnergyDuration (double energyW)
    アンテナモードがm_antennaModeの場合を用いるように変更。
  • void AppendEvent (Ptr<InterferenceHelper::Event> event)
    受信状態でない場合ににm_firstPowerに受信電力を集約しないように変更。
  • double CalculateNoiseInerferenceW (Ptr<InterferenceHelper::Event> event, NiChanges *ni)
    アンテナモードがm_antennaModeの場合を用いるように変更。
  • double CalculatePer (Ptr<InterferenceHelper::Event> event, NiChanges *ni)
    アンテナモードがm_antennaModeの場合を用いるように変更。
  • struct InterferenceHelper::SnrPer CalculateSnrPer (Ptr<InterferenceHelper::Event> event)
    m_firstPowerに受信電力を集約するように変更。
    受信終了後、アンテナモードが変更しても受信電力の計算を正しく行うために、NiChangeを追加。
    アンテナモードがm_antennaModeの場合を用いるように変更。
  • InterferenceHelper::NiChanges::iterator GetPosition (Time moment)
    NiChangeに渡す引数zeroを配列に変更。

追加クラス

  • AntennaListenerInterferenceHelper : public ns3::WifiAntennaListener
    WifiAntenaModelのリスナークラス。
    アンテナモードの変更の通知に利用する。

添付ファイル: fileclass3.png 609件 [詳細] filedirectionalwifi_module.pdf 758件 [詳細] fileclass2.png 573件 [詳細] fileclass1.png 573件 [詳細] filetopology.png 567件 [詳細] filecmd2.png 561件 [詳細] filecmd1.png 554件 [詳細] fileintro01.png 571件 [詳細]

  添付編集
Last-modified: 2014-12-04 (木) 18:24:29 (1103d)