The ChannelControl module controls and maintains all potential connections between the hosts. An OMNeT++ connection link in the MF does not automatically indicate that the corresponding hosts are able to exchange data and communicate with each other. The ChannelControl module only connects all hosts that possibly interfere with each other. A communication link is probably easiest defined by its complement: All hosts that are not connected definitely do not interfere with each other. Following this concept a host will receive every data packet that its transceiver is potentially able to sense. The physical layer then has to decide dependent on the received signal strength whether the data packet will be processed or whether it will be treated as noise. For further details on the connection management please refer to Section 7.2.
The internal structure of a mobile host is shown in Figure 2. Apart from the standard ISO/OSI layers there is also a Mobility module and a module called Blackboard. The Mobility module provides a geographical position of the host and handles its movement. Section 7.1 contains a detailed description of the mobility architecture. The Blackboard module is used for cross layer communication. It provides information relevant to more than one layer like the actual energy status of the host, the display appearance or the status of the radio. All other modules implement the corresponding ISO/OSI layer functionality. Details on the implementation of these modules can be found in Section 4.
While the core MF does not provide any protocol implementations we also plan to provide a library of standard modules for the lower layers of the ISO/OSI protocol stack. Thus the MF will eventually enable simulation of various kinds of wireless mobile networks ``out of the box''.
There are several ways to use the Mobility Framework. Which one is best suited depends on the purpose you want to use the MF for. Once you successfully compiled the MF you can just use the created library within your own simulation or you should take a look at the example networks in the networks/ and core/basicNetworks directories if you want to create a new simulation based on the Mobility Framework. Please note that you need to add the lib directory to your LD_LIBRARY_PATH or copy the library to a location where the linker can find it in order to work with the MF.
We provide example networks for many different scenarios so it is very likely that you will find a setup similar to your needs. The networks and the protocol implementations used are very well documented in the API documentation (doc/api/index.html) so you should take a look there as well.
The template/ folder contains templates for the derivation or creation of your own modules. You can copy the corresponding files you need, adapt them to your needs and of course fill them with your code. Copy the Makefile.gen file as well and change the MOBFW variable within Makefile.gen to point to your mobility-fw folder and you can easily create a Makefile for your files (just type opp_makemake -f Makefile.gen).
Please note that the mobilityfw library does not contain any modules from the development/ folder. Those implementations are to be considered experimental so we did not include them into the library. So if you want to enhance one of the protocol implementations or use them as a base for you own implementation you would have to copy the corresponding files as well. An alternative would be to do your work within the development/ directory structure. You will have to run make makefiles in the corresponding directories to ``register'' your newly created classes with the Makefiles.
We explicitly encourage the use and improvement of those protocol implementations under development. The more feedback and bug-fixes we get the sooner those protocols will reach a ``stable'' status and can be included into the library. Additionally many of them already reached a decent state and only need some more testing so please also report if you use those implementations and do not experience problems. Please refer to the corresponding API documentation and contact the individual authors for questions, feedback and bug reports.
Here is a list of all different directories including a brief description of the content to help you find certain files.
|bitmaps/||icons for network graphics|
|core/||the core of the framework|
|basicMessages/||the basic message classes|
|basicModules/||all basic module classes|
|basicNetworks/||2 basic sample networks|
|development/||experimental protocol implementations|
|applLayer/||application layer modules|
|messages/||all .msg files|
|netwLayer/||network layer modules|
|nic/||network interface modules|
|macLayer/||MAC layer modules|
|phyLayer/||physical layer modules|
|snrEval/||snr evaluation modules|
|doc/||manual, API, neddoc...|
|include/||header and .ned includes|
|lib/||dir of the libmobilityfw.so|
|protocols/||tested protocol implementations|
|template/||templates to create own modules|
|testSuite/||regression test suite|