OMNET++ PROJECT EXAMPLE Heterogeneous network is a radio access network that comprises layers of different-sized cells ranging from big (macrocells) to small (picocells and femtocells). Networks consisting of different data-link protocol segments use bridges to connect two segments that have different data link protocols.
Features of heterogeneous network:
- Dual connectivity between the macro cell and small cells.
- Combined with carrier aggregation.
- Interference management for neighbor TDD cells.
- Mobility planning within hyper-dense environment.

Research concepts in heterogeneous network:
- Power control mechanism in heterogeneous network.
- Scheduling strategies.
- Future generation heterogeneous network.
- Beamforming for the common control channel in heterogeneous network.
- Cooperative communication.
Sample code for heterogeneous network:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | void HetroNet::updateDisplayString() { char buf[80] = "" ; if (numForwarded>0) sprintf(buf+strlen(buf), "fwd:%d " , numForwarded); if (numLocalDeliver>0) sprintf(buf+strlen(buf), "up:%d " , numLocalDeliver); if (numMulticast>0) sprintf(buf+strlen(buf), "mcast:%d " , numMulticast); if (numDropped>0) sprintf(buf+strlen(buf), "DROP:%d " , numDropped); if (numUnroutable>0) sprintf(buf+strlen(buf), "UNROUTABLE:%d " , numUnroutable); getDisplayString().setTagArg( "t" , 0, buf); } void HetroNet::handleMessage(cMessage *msg) { if (msg->getKind() == IP_C_REGISTER_PROTOCOL) { IPRegisterProtocolCommand * command = check_and_cast<IPRegisterProtocolCommand *>(msg->getControlInfo()); mapping.addProtocolMapping(command->getProtocol(), msg->getArrivalGate()->getIndex()); if (command->getProtocol() == IP_PROT_MANET) { int gateindex = mapping.getOutputGateForProtocol(IP_PROT_MANET); cGate *manetgate = gate( "transportOut" , gateindex)->getPathEndGate(); cModule *destmod = manetgate->getOwnerModule(); cProperties *props = destmod->getProperties(); isDsr = props && props->getAsBool( "isDsr" ); } delete msg; } else if (!msg->isSelfMessage() && msg->getArrivalGate()->isName( "arpIn" )) endService(PK(msg)); else QueueBase::handleMessage(msg); } void HetroNet::endService(cPacket *packet) { if (!isUp) { EV << "IPv4 is down -- discarding message\n" ; delete packet; return ; } if (mayHaveListeners(iPv4PromiscousPacket)) emit(iPv4PromiscousPacket, packet); if (packet->getArrivalGate()->isName( "transportIn" )) //TODO packet->getArrivalGate()->getBaseId() == transportInGateBaseId { handlePacketFromHL(packet); } |