Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

devPktGen.cpp

Go to the documentation of this file.
00001 #include <list>
00002 #include "SlottedAloha.h"
00003 
00004 #include "devPktGen.h"
00005 
00017 DevPktGen::DevPktGen(SysSAloha *_System, DevAP* _theAP)
00018 : DEDevice(_System), System(_System), theAP(_theAP), counter(0)
00019 {
00020   the_SG_Probe = 0;
00021 };
00022 
00023 void DevPktGen::setup(ParamManager *Param, GlobalProbeManager *Results)
00024 {
00025   Param->addClass ("Dev_Test_PktGen", "Data Terminal generator");
00026   Param->addParameter ("Dev_Test_PktGen", new DETimeParameter("MsgInterarrTime",  "Mean message interarrival time", "10.0", "(0,inf)" ));
00027 }
00028 
00038 void DevPktGen::Initialize()
00039 {
00040   DETime MsgInterarrTime = get<DETimeParameter,DETime>(Param, "MsgInterarrTime", "Dev_Test_PktGen", "");
00041   MsgInterarrTimeGen = ExponentialDETimeRndGen(MsgInterarrTime);
00042 
00043   if( the_SG_Probe )
00044     delete( the_SG_Probe );
00045   the_SG_Probe = new ProbeSG( "the_SG" );
00046   
00047   list<DevPkt*>::iterator dtListIter;
00048   for(  dtListIter=dtList.begin(); dtListIter!=dtList.end(); dtListIter++)
00049     delete (*dtListIter);
00050   dtList.clear();
00051   
00052   DevPkt* newPkt = new DevPkt( System, this, theAP, counter++);
00053   the_SG_Probe->Observe_S(1);
00054   newPkt->Initialize();
00055   dtList.push_back(newPkt);
00056   
00057   newEvent(new Ev_PktGen_Generation(this), MsgInterarrTimeGen.get());  
00058 }
00059 
00060 /*
00061  Packet generation function. We create a new packet and we reschedule another generation.
00062  */
00063 void DevPktGen::HEv_PktGen_Generation()
00064 {
00065   DevPkt* newPkt = new DevPkt( System, this, theAP, counter++);
00066   the_SG_Probe->Observe_S(1);
00067   newPkt->Initialize();
00068   dtList.push_back(newPkt);
00069   
00070   newEvent(new Ev_PktGen_Generation(this), MsgInterarrTimeGen.get());  
00071 }
00072 
00073 /*
00074  A backlogged packet is recorded in the appropriate probe.
00075  */
00076 void DevPktGen::AddBacklogged()
00077 {
00078   the_SG_Probe->Observe_G(1);
00079 }
00080 
00081 /*
00082  A packet has been successfully sent. Note that it is not mandatory to store each generated instance
00083  somewhere. The simulation could work without this, but we need it in case of multiple runs.
00084  
00085  In a multiple run, the Packet Generator \e could be destoyed, so we need to track down what has been
00086  created in order to destroy it.
00087  */
00088 void DevPktGen::RemoveTerminal(DevPkt* dt)
00089 {
00090   list<DevPkt*>::iterator dtListIter;
00091   dtListIter = find(dtList.begin(), dtList.end(), dt);
00092   dtList.erase(dtListIter);
00093 }
00094 
00095 /*
00096  As in RemoveTerminal(), it is better to clean up the gerated packets.
00097  */
00098 DevPktGen::~DevPktGen()
00099 {
00100   list<DevPkt*>::iterator dtListIter;
00101   for(  dtListIter=dtList.begin(); dtListIter!=dtList.end(); dtListIter++)
00102     delete (*dtListIter);
00103   dtList.clear();
00104 }
00105 
00106 
00107 

Generated on Wed Dec 22 23:26:43 2004 for NePSing Slotted Aloha example by doxygen 1.3.9.1 ---- Hosted by SourceForge.net Logo