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
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)