00001 00002 // PROYECTO FIN DE CARRERA // 00003 // TITULO: Disenyo de nuevas arquitecturas y algoritmos de gestión de recursos en // 00004 // redes de acceso FiWi // 00005 // AUTOR: Ana Emma Lopez Mato // 00006 // TUTOR: Noemi Merayo Alvarez // 00007 // INGENIERIA TECNICA DE TELECOMUNICACIONES, SISTEMAS DE TELECOMUNICACION // 00008 // UNIVERSIDAD DE VALLADOLID // 00010 00011 #include "ONU_Rxuser.h" 00012 #include "GATE_m.h" 00013 #include "REPORT_m.h" 00014 #include "ETHERNET_m.h" 00015 /* 00016 * MODULO ONU_Rxuser: 00017 */ 00018 Define_Module(ONU_Rxuser); 00019 00021 //FUNCION INITIALIZE()--> ESTA FUNCION SE INVOCA DESPUÉS DE QUE OMNET++ HA PUESTO EN MARCHA LA RED, EN LA CUAL SE LEEN LOS // 00022 // PARAMETROS DEL MODULO Y SE INICIALIZAN TODAS DAS LAS VARIABLES DECLARADAS PARA ESTE MODULO SIMPLE, SE // 00023 // ASIGNAN ESTRUCTURAS DE DATOS DINAMICOS Y SE ASIGNAN E INICIALIZAN LOS AUTOMENSAJES SI SON NECESARIOS // 00024 // PARA EL FUNCIONAMIENTO DE ESTE MODULO. // 00026 void ONU_Rxuser::initialize() 00027 { 00028 nombreonu = getParentModule()->getIndex(); // IDENTIFICADOR DE LA ONU 00029 numReceived = 0; // INICIALIZAMOS EL NÚMERO DE PAQUETES ETHERNET RECIBIDOS A 0 00030 } 00031 00033 //FUNCION HANDLEMESSAGE(CMESSAGE *MSG)--> ESTA FUNCION SE INVOCA CON EL MENSAJE COMO PARAMETRO CADA VEZ QUE EL MODULO RECIBE UN // 00034 // UN MENSAJE O PAQUETE. SE RECORRE EL CODIGO IMPLEMENTADO PARA DEVOLVER UN VALOR O // 00035 // EJECUTAR UNA FUNCION DENTRO DEL MODULO SIMPLE. EL TIEMPO DE SIMULACION NO TRANSCURRE // 00036 // DENTRO DE LA LLAMADA DE LA FUNCION HANDLEMESSAGE(CMESSAGE *MSG) MIENTRAS RECORRE EL // 00037 // CODIGO IMPLEMENTADO. // // 00039 void ONU_Rxuser::handleMessage(cMessage *msg) 00040 { 00041 // VARIABLES 00042 simtime_t eed; 00043 00044 // RECOGIDA DE ESTADISTICAS MANUALMENTE 00045 eed = simTime() - msg->getCreationTime(); // PARAMETRO PARA CALCULAR EL RETARDO EXTREMO A EXTREMOS MANUALMENTE 00046 eedStats.collect(eed); // RECOGEMOS EL RESULTADO 00047 00048 ETHERNETmsg *ethernetmsg=check_and_cast<ETHERNETmsg*>(msg); // CHEQUEAMOS EL PAQUETE ETHERNET 00049 00050 // VISUALIZAMOS POR PANTALLA CUANDO RECIBIMOS EL PAQUETE ETHERNET 00051 //ev <<" Paquete Ethernet recibido y borrado."<<endl; 00052 00053 numReceived++; // INCREMENTAMOS EN UNO EL CONTADOR DE NÚMERO DE PAQUETES ETHERNET RECIBIDOS 00054 00055 delete ethernetmsg; // BORRAMOS EL MENSAJE ETHERNET 00056 } 00057 00058 void ONU_Rxuser::finish() 00059 { 00060 // VISUALIZAMOS POR PANTALLA LA RECOGIDA DE ESTADISTICAS DE ESTE MODULO DE CUANDO LLAMAMOS A LA FUNCION FINISH() 00061 //ev<<" ONU " << nombreonu << endl; 00062 //ev<<" EstadÃsticas en el ONU_Rxuser para paquetes Ethernet"<<endl; 00065 00066 }