OMNET++ WIMAX PROJECTS

OMNET++ WIMAX PROJECTS provide a WiMAX Subscriber Unit which connects to metropolitan WiMAX network and provides Wi-Fi within the home/ business for local devices. WiMAX is a long range system, covering many kilometers, that uses licensed/unlicensed spectrum to deliver connection to a network and Internet.

Applications of WIMAX:

  • Mulit-player interactive gaming.
  • Providing a source of internet connectivity as part of a business continuity plan.
  • Providing a wireless alternative to cable and DSL for “last mile” broadband access.
  • Media content downloads.
  • VOIP and Video conference.
  • Providing data and telecommunication services.
  • Connecting Wi-Fi hotspots with other parts of the Int.
  • Web browsing and instant messaging.

Wimax system requirements:

  • TDD smart antenna.
  • Supporting various QoS.
  • Supporting mobility.
  • Flexible resource allocation from multiple subscribers.
  • High spectrum efficiency.
  • Supporting wide coverage.
  • Handheld support.

Specifications of WIMAX:

  • 16a.
  • 16b.
  • 16c.
  • 16e
Architecture of WIMAX
Architecture of WIMAX

 

Research challenges on WIMAX:

  • Increasing network speed.
  • To provide more flexibility and security.
  • Design wimax2.
  • Main goal of wimax2 is to get 100 mbits/s for mobile devices and 1 gbits/s for fixed type of wimax devices.

Sample Source Code for OMNET++ Wimax Projects:

#include <math.h>
#define NEDC_VERSION 0x0303
#if (NEDC_VERSION!=OMNETPP_VERSION)
# error Version mismatch! Probably this file was generated by an earlier version of nedc: 'make clean' should help.
#endif
#ifdef _MSC_VER
#  pragma warning(disable:4101)
#endif
#ifdef __BORLANDC__
#  pragma warn -waus
#  pragma warn -wuse
#endif
static cModuleType *_getModuleType(const char *modname)
{
    cModuleType *modtype = findModuleType(modname);
    if (!modtype)
        throw new cRuntimeError("Module type definition %s not found (Define_Module() missing from C++ code?)", modname);
    return modtype;
}

static void _checkModuleVectorSize(int vectorsize, const char *mod)
{
    if (vectorsize<0) throw new cRuntimeError("Negative module vector size %s[%d]", mod, vectorsize); } static void _readModuleParameters(cModule *mod) { int n = mod->params();
    for (int k=0; k<n; k++) if (mod->par(k).isInput())
            mod->par(k).read();
}

static int _checkModuleIndex(int index, int vectorsize, const char *modname)
{
    if (index<0 || index>=vectorsize)
        throw new cRuntimeError("Submodule index %s[%d] out of range, sizeof(%s) is %d", modname, index, modname, vectorsize);
    return index;
}

static cGate *_checkGate(cModule *mod, const char *gatename)
{
    cGate *g = mod->gate(gatename);
    if (!g)
        throw new cRuntimeError("%s has no gate named %s",mod->fullPath().c_str(), gatename);
    return g;
}

static cGate *_checkGate(cModule *mod, const char *gatename, int gateindex)
{
    cGate *g = mod->gate(gatename, gateindex);
    if (!g)
        throw new cRuntimeError("%s has no gate %s[%d]",mod->fullPath().c_str(), gatename, gateindex);
    return g;
}

static cGate *_getFirstUnusedParentModGate(cModule *mod, const char *gatename)
{
    int baseId = mod->findGate(gatename);
    if (baseId<0) throw new cRuntimeError("%s has no %s[] gate",mod->fullPath().c_str(), gatename);
    int n = mod->gate(baseId)->size();
    for (int i=0; i<n; i++) if (!mod->gate(baseId+i)->isConnectedInside())
            return mod->gate(baseId+i);
    throw new cRuntimeError("%s[] gates are all connected, no gate left for `++' operator",mod->fullPath().c_str(), gatename);
}

static cGate *_getFirstUnusedSubmodGate(cModule *mod, const char *gatename)
{
    int baseId = mod->findGate(gatename);
    if (baseId<0) throw new cRuntimeError("%s has no %s[] gate",mod->fullPath().c_str(), gatename);
    int n = mod->gate(baseId)->size();
    for (int i=0; i<n; i++) if (!mod->gate(baseId+i)->isConnectedOutside())
            return mod->gate(baseId+i);
    int newBaseId = mod->setGateSize(gatename,n+1);
    return mod->gate(newBaseId+n);
}

static cFunctionType *_getFunction(const char *funcname, int argcount)
{
    cFunctionType *functype = findFunction(funcname,argcount);
    if (!functype)
        throw new cRuntimeError("Function %s with %d args not found", funcname, argcount);
    return functype;
}

static cChannel *_createChannel(const char *channeltypename)
{
    cChannelType *channeltype = findChannelType(channeltypename);
    if (!channeltype)
        throw new cRuntimeError("Channel type %s not found", channeltypename);
    cChannel *channel = channeltype->create("channel");
    return channel;
}

static cChannel *_createNonTypedBasicChannel(double delay, double error, double datarate)
{
    cBasicChannel *channel = new cBasicChannel("channel");
    if (delay!=0) channel->setDelay(delay);
    if (error!=0) channel->setError(error);
    if (datarate!=0) channel->setDatarate(datarate);
    return channel;
}

static cXMLElement *_getXMLDocument(const char *fname, const char *pathexpr=NULL)
{
    cXMLElement *node = ev.getXMLDocument(fname, pathexpr);
    if (!node)
        throw new cRuntimeError(!pathexpr ? "xmldoc(\"%s\"): element not found" : "xmldoc(\"%s\", \"%s\"): element not found",fname,pathexpr);
    return node;
}

ModuleInterface(SubscriberStation)
    // gates:
    Gate(trafficin, GateDir_Input)
    Gate(in[], GateDir_Input)
    Gate(out[], GateDir_Output)
EndInterface

Register_ModuleInterface(SubscriberStation)