#include <devPkt.h>
Inherits DEDevice.
Inheritance diagram for DevPkt:


Public Member Functions | |
| void | Initialize () |
| Initialize function. | |
| DevPkt (DESystem *_System, DevPktGen *_thePktGen, DevAP *_theAP, int _ID) | |
| Contructor. | |
| virtual const char * | Type () const |
| This will allow the events and such to print debugging informations in a meaningful way. | |
| void | HEv_Pkt_Feedback (int type) |
| Handler for the Ev_Pkt_Feedback event. | |
Static Public Member Functions | |
| void | setup (ParamManager *Param, GlobalProbeManager *Results) |
| Setup function, where the parameters are defined. | |
Protected Attributes | |
| int | ID |
| ID of the device, useful for debugging purposes. | |
| DevAP * | theAP |
| The Access Point. | |
| DevPktGen * | thePktGen |
| The DevPkt generator. | |
| double | meanWaitingSlots |
| Mean waiting time (in slots) before a retransmission. | |
| DETime | generationTime |
| The packet generation time. | |
| int | attempt_counter |
| The number of transmission attemts. | |
| ProbeHistogram * | theTxTimeProbeHist |
| Probe for the time of transmission of a packet. | |
| ProbeHistogram * | theTxAttemptsProbeHist |
| Probe for the transmission attemts. | |
This class send a packet to the DevAP, wait for the ACK/NACK and eventually send it again.
Definition at line 31 of file devPkt.h.
|
||||||||||||||||||||
|
Contructor. Remember to clear variables for initialization in Initialize(). Do NOT initialize variables here unless they are constants. Definition at line 20 of file devPkt.cpp. References theTxAttemptsProbeHist, and theTxTimeProbeHist. 00025 : DEDevice(_System), thePktGen(_thePktGen), theAP(_theAP), ID(_ID), 00026 attempt_counter(1) 00027 { 00028 theTxTimeProbeHist = 0; 00029 theTxAttemptsProbeHist = 0; 00030 };
|
|
|
Handler for the Ev_Pkt_Feedback event. The feedback (ACK/NACK) is received here. If we get an ACK, some measures are done and the instance is deleted. Otherwise the packet is rescheduled for another transmission attempt at the right time (again, a synchronization is due). Definition at line 73 of file devPkt.cpp. References DevPktGen::AddBacklogged(), attempt_counter, meanWaitingSlots, DEDevice::newEvent(), ProbeHistogram::Observe(), DevPktGen::RemoveTerminal(), rndGeometric0(), theAP, thePktGen, theTxAttemptsProbeHist, theTxTimeProbeHist, time_int, and DETime::ToBeginOfTheNextUsefulStep(). 00074 {
00075 if( type == 0 ) {
00076 double foo = *T-generationTime;
00077 theTxTimeProbeHist->Observe(foo);
00078 theTxAttemptsProbeHist->Observe(attempt_counter);
00079
00080 thePktGen->RemoveTerminal(this);
00081 delete this;
00082 }
00083 else {
00084 thePktGen->AddBacklogged();
00085 attempt_counter++;
00086 DETime foo = DETime( time_int(rndGeometric0(meanWaitingSlots)), time_int(0), time_int(0));
00087 newEvent(new Ev_AP_Packet_Arrival(theAP, this), foo + T->ToBeginOfTheNextUsefulStep() );
00088 }
00089 }
|
Here is the call graph for this function:

|
|
Initialize function. Here is where the parameters are read and the real initialization takes place. Note (again) that this function can be called multiple times; hence, you must clear previous instances. Here we send the packet to the Access Pointer the first time. Since we cannot be sure to be at the start of a slot, we send it with a delay corresponding to this difference. I.e., we do a small synchronization. About the theTxTimeProbeHist, we set its bin to a nonstandard value to allow a meaningful measure. Reimplemented from DEDevice. Definition at line 48 of file devPkt.cpp. References DETime::BeginOfTheNextUsefulStep(), generationTime, meanWaitingSlots, DEDevice::newEvent(), theAP, theTxAttemptsProbeHist, theTxTimeProbeHist, and time_int. Referenced by DevPktGen::HEv_PktGen_Generation(), and DevPktGen::Initialize(). 00049 {
00050 meanWaitingSlots = get<DoubleParameter,double>(Param, "meanWaitingSlots", "Dev_Test_Pkt", "");
00051
00052 DETime oneSlot = DETime(time_int(1), time_int(0), time_int(0));
00053 if( theTxTimeProbeHist )
00054 delete( theTxTimeProbeHist );
00055 theTxTimeProbeHist = Results->getGlobalProbeHistogram("TxTime", double(oneSlot));
00056
00057 if( theTxAttemptsProbeHist )
00058 delete( theTxAttemptsProbeHist );
00059 theTxAttemptsProbeHist = Results->getGlobalProbeHistogram("TxAttempts");
00060
00061 generationTime = T->BeginOfTheNextUsefulStep();
00062
00063 newEvent(new Ev_AP_Packet_Arrival(theAP, this), T->ToBeginOfTheNextUsefulStep());
00064 }
|
Here is the call graph for this function:

1.3.9.1 ---- Hosted
by