2017-04-16 9 views
0

メッセージを受信したノードにAckを送信しようとしています。私はフレームIDを取得することができません、それを把握することができませんどのように私はこのフレームIDを私のメッセージに含めるとそれを放送するのですか?任意のポインタ?それは役に立つでしょう。ありがとう。RSUからノードのノードへのACKの送信

更新:これは私がやろうとしていることです。メッセージがRSUのBaseWaveApplLayer :: handleLowerMsg関数で受信されると、フレームIDを抽出してAckを送信しています。私が直面する問題は、sendDownを使用している間に、イベントが送信される予定であるというエラーが発生しています。メッセージを正しくスケジュールする方法は?私はsendDown(msg)を使用しています。

私は正しいフレームIDを取得していません、私はencapsulatedFrame idを使用しましたが、それは異なる値を与えます、どのようにBasicSafetyMessageまたはcMessageからフレームIDを取得しますか?

コード:

void BaseWaveApplLayer::handleLowerMsg(cMessage* msg) { 
WaveShortMessage* wsm = dynamic_cast<WaveShortMessage*>(msg); 
ASSERT(wsm); 
if (BasicSafetyMessage* bsm = dynamic_cast<BasicSafetyMessage*>(wsm)) { 
    receivedBSMs++; 
    onBSM(bsm); 
    if(isBaseStation()) 
    { 
     BasicSafetyMessage* Ack= new BasicSafetyMessage(); 
     populateWSM(Ack); 
     Ack->setWsmData(getFrameId(bsm)); 
     EV<<" Sending Ack Frame ID"<<getFrameId(bsm); 
     sendDown(Ack); 
    } 
    else 
    { 
     EV<<"Received FrameId"<<bsm->getWsmData(); 
     std::string str(bsm->getWsmData()); 
     int FrameId= std::atoi(str.c_str()); 
     checkIds(FrameId); 
    } 

}} 

答えて

0

あなたは、パラメータとして認めるためのパラメータとしてframeIdを追加する新しいメッセージタイプを作成する必要があります。受信側では、送信されたパケットとその値を比較できます。新しいメッセージの作成方法については、OMNeT ++ user manualを参照してください。ヒントについては、this postも参照してください。

+0

こんにちは@ julian-heinovski、私はVeinsを使用しているので、populateWSM(wsm)関数を呼び出しています。受信したframeIdにwsmデータを変更しています。私が直面する問題は、このメッセージを送信することです。このメッセージを作成した後、sendDownを呼び出すが、[実行]をクリックするとアプリケーションがクラッシュする。 – Sam1324

+0

この情報と対応するコードとエラーメッセージのスニペットであなたの投稿を更新してください。 –

+0

こんにちは、ここで私がやろうとしているのは、メッセージがRSUのBaseWaveApplLayer :: handleLowerMsg関数で受信されたときに、フレームIDを抽出してメッセージを送り返すときです。私が直面する問題は、sendDownを使用している間です。私はすでにメッセージが送信される予定であるというエラーが発生しています。メッセージを正しくスケジュールする方法は?私はsendDown(msg)を利用しています。 – Sam1324

関連する問題