Klassen/Funktionen



  • Hallo, kann mir jemand helfen?
    ich muss in der Funktion

    void PacketList::deque()

    die Funktion

    double Mac::serviceTime(Packet* p)

    aufrufen, habe aber Probleme mit den Unterschiedlichen Klassennamen

    Hier Ausschnitte des Codes:

    void PacketList::deque() {

    /Das erste Paket aus der verketteten Liste wird geholt.
    Falls diese leer ist (das sollte normalerweise nicht
    vorkommen), wird der Vorgang abgebrochen.
    /

    PacketListItem* pli = dequeList();
    if(!pli) {
    fprintf(stderr, "dequeuing packet, but the queue is empty?? %lf\n", NOW);
    return;
    }

    /Solange dieses Paket bearbeitet wird, ist die
    Warteschlange blockiert.
    /

    blocked_ = 1;

    /Da die Multihop-Warteschlange nicht explizit einem
    Knoten zugeordnet ist, muss der Send-Handler des
    Pakets zwischengespeichert werden.
    /

    if(mh_) setHandler(*(pli->txh_));

    /*Die Servicezeit für das Paket wird berechnet.*/

    Packet* p = pli->pkt_;

    ➡ double stime = serviceTime(p); ⚠ //das es so nicht funktioniert weiss ich, aber hier muss der Aufruf stattfinden

    stime += blockTime(stime);

    /Das Paket wird an den Scheduler übergeben.
    Wenn die Servicezeit der Warteschlange abgelaufen ist,
    wird es vom List-Handler weitergegeben.
    /

    Scheduler::instance().schedule(&plh_, p, stime);
    }

    double Mac::serviceTime(Packet* p) {

    int bytes = hdr_cmn::access(p)->size() + MAC_HDR_LEN;

    if (hdr_cmn::access(p)->uid()>2)
    printf("check:%d\n",((WirelessPhy*)
    netif_)->propagation_test(p));

    SNR = 10*log10(PR/Pn);

    if(SNR > 30)
    {
    bandw_ = 54000000.000000;
    }
    else if(SNR <= 0)
    {
    bandw_ = 10e-12;
    }
    else
    {
    bandw_ = 9/5*SNR*10e6;
    }

    return (((double)bytes * 8.0 * factor_) / bandw_);

    }



  • double stime = Mac::serviceTime(p);
    

    Falls das nicht funktioniert hast du offensichtlich vergessen in dem ganzen unrelevanten, schlecht bzw. gar nicht formatiertem Code wichtige Informationen zu verstecken.

    Schau dir einfach mal ein Buch und/oder Tutorial an...


Anmelden zum Antworten