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:
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);
}