Klassen/Funktionen
-
Hallo, kann mir jemand helfen?
ich muss in der Funktionvoid 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...