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 "OLT_Tx.h" 00012 #include "GATE_m.h" 00013 #include "REPORT_m.h" 00014 #include "ETHERNET_m.h" 00015 /* 00016 * MODULO OLT_Tx: 00017 */ 00018 Define_Module(OLT_Tx); 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 OLT_Tx::initialize() 00027 { 00028 } 00029 00031 //FUNCION HANDLEMESSAGE(CMESSAGE *MSG)--> ESTA FUNCION SE INVOCA CON EL MENSAJE COMO PARAMETRO CADA VEZ QUE EL MODULO RECIBE UN // 00032 // UN MENSAJE O PAQUETE. SE RECORRE EL CODIGO IMPLEMENTADO PARA DEVOLVER UN VALOR O // 00033 // EJECUTAR UNA FUNCION DENTRO DEL MODULO SIMPLE. EL TIEMPO DE SIMULACION NO TRANSCURRE // 00034 // DENTRO DE LA LLAMADA DE LA FUNCION HANDLEMESSAGE(CMESSAGE *MSG) MIENTRAS RECORRE EL // 00035 // CODIGO IMPLEMENTADO. // // 00037 void OLT_Tx::handleMessage(cMessage *msg) 00038 { 00039 // VARIABLES 00040 int type = msg->getKind(); // VARIABLE TYPE PARA IDENTIFICAR LOS MENSAJES DE LA RED 00041 00042 // ESTRUCTURA CONDICIONAL SWITCH QUE NOS DIFERENCIA LOS MENSAJES QUE LLEGUEN A ESTE MODULO 00043 switch(type) 00044 { 00045 case 0: 00046 // LLEGA UN PAQUETE GATE CON IDENTIFICADOR = 0 00047 if(msg->getKind()==0) 00048 { 00049 //GATEmsg *gatemsg=check_and_cast<GATEmsg*>(msg); // CHEQUEAMOS EL PAQUETE GATE 00050 /* 00051 // VISUALIZAMOS LOS CAMPOS DEL PAQUETE GATE 00052 ev<<" Paquete Gate."<<endl; 00053 ev<<" Origen OLT ID: "<<gatemsg->getSrcAddress()<<endl; 00054 ev<<" Destino ONU "<<gatemsg->getDestAddress()<<endl; 00055 ev<<" Longitud de onda de envio, Lambda "<< gatemsg->getLambdagate()<<endl; 00056 ev<<" Tipo "<<gatemsg->getKind()<<endl; 00057 ev<<" Tiempo iniciar Tx "<<gatemsg->getGrant_IniTime()<<endl; 00058 ev<<" "<<endl; 00059 */ 00060 send(msg, "olttxOut"); // ENVIAMOS LOS PAQUETES GATE HACIA EL WDMSPLITTER DEL OLT 00061 } 00062 break; 00063 00064 case 1: 00065 // LLEGA UN PAQUETE ETHERNET CON IDENTIFICADOR = 1 00067 send(msg, "olttxOut"); // ENVIAMOS LOS PAQUETES ETHERNET HACIA LA CAPA MAC DEL OLT 00068 break; 00069 00070 default: 00071 delete msg; 00072 break; 00073 } 00074 }