0

Veins-4a2 を使用し、デモ例のシナリオを変更しました。ノードがメッセージを受信したときに ACK である新しい wsm を追加しました。これは、送信元ノードに ACK メッセージを送信します。onData() 関数に次の行を追加しました。

sendWSM(prepareWSM("ack", ackLengthBits, type_SCH, ackPriority, sourcenode.idNode, 2));

確かに BaseWaveApplLayer.cc の prepareWSM と handleLowerMsg() 関数を変更しましたが、シミュレーションを実行すると 10 秒後にクラッシュします。これはエラーメッセージです:

モジュール (Mac1609_4) のエラー RSUExampleScenario.node[2].nic.mac1609_4 (id=240) イベント #1196、t=9.210177776741: モデル エラー: ASSERT: 関数 handleUpperMsg の条件 useSCH false、venes/modules/mac/ieee80211p/ Mac1609_4.cc 259 行目。

ACK メッセージに SCH チャネルを再利用する権利がないということですか? どうすればこの問題を解決できますか?

4

1 に答える 1

0

Veins 4a2 の 1609.4 MAC 層は、シングル チャネルとマルチ チャネルの 2 つの動作モードのいずれかで使用できます。この動作は、.ned ファイルの次のパラメーターを設定することで構成できます。

// cycle between an SCH and the CCH (or stay on CCH all the time)
bool useServiceChannel = default(true);

投稿しているエラー メッセージから、このパラメータを に設定したように見えます。これはfalse、無線を常にコントロール チャネル (CCH) に維持することを意味します。同時に、投稿したコードは、サービス チャネル (SCH) を介して送信されるメッセージを要求します。

したがって、相互に排他的な動作を要求しています。

静脈はこれを正しく識別し、シミュレーションを中止しました。

于 2016-07-11T13:19:12.347 に答える