Как задержать сообщение перед отправкой по беспроводной сети с помощью sendDirect? - PullRequest
0 голосов
/ 14 февраля 2019

мой вопрос прост: как я задерживаю сообщение перед отправкой с помощью sendDirect () Я использую этот прототип функции, как вы можете видеть в моем коде ниже:

sendDirect(cMessage *msg, cModule *mod, const char *gateName, int index=-1) 

и я знаю, что есть и другиеПрототипы функций sendDirect допускают как задержку распространения, так и длительность

sendDirect(cMessage *msg, simtime_t propagationDelay, simtime_t duration,
cModule *mod, int gateId)
sendDirect(cMessage *msg, simtime_t propagationDelay, simtime_t duration,
cModule *mod, const char *gateName, int index=-1)
sendDirect(cMessage *msg, simtime_t propagationDelay, simtime_t duration,
cGate *gate)  

Как использовать переменную задержки для создания фактической задержки?Пожалуйста, помогите Вот мой код: Test.ned

package a8;

//
// TODO auto-generated module
//
simple Test
{
    parameters:
     @display("i=block/circle");
     double bpTime @unit(s) = default(2s); //this is my delay variable   
     gates:
         output mydataout3 @directIn;
}

Test.h

#ifndef __A8_TEST_H_
#define __A8_TEST_H_

#include <omnetpp.h>
#include <stdio.h>
#include <string.h>
#include "myMessage_m.h"

/**
 * TODO - Generated class
 */
class Test: public cSimpleModule
{
protected:
    virtual void initialize();
    virtual void handleMessage(cMessage *msg);
    virtual myMessage *createMessage();
};

#endif

Test.cc

    #include "test.h"
    #include <stdio.h>
    #include <string.h>
    #include "myMessage_m.h"

    #include "sha256.h"
    #include "aes128.h"
    #include "runninglengthencoding.h"
    Define_Module(Test);

    void Test::initialize()
    {
        // TODO - Generated method body
        myMessage *Newmsg = createMessage();
        simtime_t timeout = par("bpTime"); //bptime is of type double
        scheduleAt(simTime()+timeout, Newmsg);  //this is what is causing the error


        cModule *target;
        target = getParentModule()->getSubmodule("accesspoint");

        sendDirect(Newmsg,target,"radioIn"); //how do I create delay before using this line of code

    }

    void Test::handleMessage(cMessage *msg)
    {
        // TODO - Generated method body

    }

    myMessage *Test::createMessage(){ 
        //code intentionally left out 
}
...