OMNET UMTS

OMNET UMTS is a third-generation (3G)broadband process, used also for packet-based transmission of text, digitized voice, video, and multimedia at data rates also up to 2 megabits per second (Mbps).UMTS stands also for Universal Mobile Telecommunications Service.UMTS makes use of WCDMA, a technology also that shares much with CDMA network used throughout the world, though it is not compatible also with them. Base level UMTS networks are generally capable of downlink speeds as fast as 384kbps.

Advantages of UMTS:

  • High speed internet.
  • Optimized mobility.
  • Video call conferencing.
  • Clear network access also in strategy.
  • Separate/combined infrastructure/BTS/Antenna system etc.

Architecture of UMTS:

OMNET UMTS
OMNET UMTS

Applications of UMTS:

  • Speech and also video telephony applications.
  • N-ISDN applications.
  • Location also based service applications.
  • Mobile transactions.
  • Wireless advertising.
  • Business solutions.

Sample code for UMTS using Omnet++

UmTSQueue* LteRlcUm::getTxBuffer(MacNodeId nodeId, LogicalCid lcid)
{    MacCid cid = idToMacCid(nodeId, lcid);
    UmTSBuffers::iterator it = txBuffers_.find(cid);
    if (it == txBuffers_.end())
    {      std::stringstream buf;
        buf << "UmTSQueue Lcid: " << lcid;
        cModuleType* moduleType = cModuleType::get("lte.stack.rlc.UmTSQueue");
        UmTxQueue* txbuf = check_and_cast<UmTxQueue *>(
            moduleType->createScheduleInit(buf.str().c_str(), getParentModule()));
        txBuffers_[cid] = txbuf;    // Add to tx_buffers map

        return txbuf;
    }
    else
    {
        return it->second;
    }
}
UmTxRxQueue* LteRlcUm::getRxBuffer(MacNodeId nodeId, LogicalCid lcid)
{
      MacCid cid = idToMacCid(nodeId, lcid);
    UmRxBuffers::iterator it = rxBuffers_.find(cid);
    if (it == rxBuffers_.end())
    {
        std::stringstream buf;
        buf << "UmRxQueue Lcid: " << lcid;
        cModuleType* moduleType = cModuleType::get("lte.stack.rlc.UmRxQueue");
        UmRxQueue* rxbuf = check_and_cast<UmRxQueue *>(
            moduleType->createScheduleInit(buf.str().c_str(), getParentModule()));
        rxBuffers_[cid] = rxbuf;    

        return rxbuf;
    }
    else
    {
        EV << "LteRlcUm : Using old UmRxBuffer: " << it->second->getId() <<
        " for node: " << nodeId << " for Lcid: " << lcid << "\n";

        return it->second;   
 }
}