-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Since Veins 2.1-bis, Veins builds on MiXiM.
Its README and CHANGELOG files are preserved below.
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------


MiXiM http://mixim.sourceforge.net/
-----------------------------------
-----------------------------------


Contents
========
 - Purpose and History
 - Copyright
 - Authors and Maintainers
 - Installation
 - Documentation
 - Release notes


Purpose and History
===================
MiXiM (mixed simulator) is a simulator for wireless and mobile networks using 
the OMNeT++ simulation engine.
MiXiM is available at http://mixim.sourceforge.net/

MiXiM is a simulation framework for the OMNeT++ simulation engine to support 
modeling and simulation of wireless and mobile networks.


The initial MiXiM version has been a merger of the following 4 simulation 
frameworks:
- ChSim
  http://www.cs.uni-paderborn.de/en/fachgebiete/research-group-computer-networks/projects/chsim.html
  (c) by Universitaet Paderborn
- Mac Simulator
  http://www.consensus.tudelft.nl/software.html
  (c) by Technische Universiteit Delft
- Mobility Framework
  http://mobility-fw.sourceforge.net/
  (c) by Technische Universitaet Berlin, Telecommunication Networks Group
- Positif Framework
  http://www.consensus.tudelft.nl/software.html
  (c) by Technische Universiteit Delft

Meanwhile many other models and projects have been integrated into MiXiM, the 
most important being:

- EnergyFramework (since MiXiM v1.1)
  http://www.sics.se/nets/software
  (c) Swedish Institute of Computer Science (SICS)
  written by Laura Marie Feeney (lmfeeney@sics.se)
  
- CSMA module (since MiXiM v1.2)
  (c) by Jerome Rousselot (jerome.rousselot@csem.ch)
  
- IEEE 802.15.4 and IEEE 802.15.4A modules (since MiXiM v1.2)
  (c) by Jerome Rousselot (jerome.rousselot@csem.ch)
 
- B-MAC layer (since MiXiM v2.1)
  http://linux3.dti.supsi.ch/~afoerste/downloads.html
  (c) by Anna Foerster (anna.foerster@ieee.org)
  
- L-MAC layer (since MiXiM v2.1)
  http://linux3.dti.supsi.ch/~afoerste/downloads.html
  (c) by Anna Foerster (anna.foerster@ieee.org)
  and ported to MiXiM by Theodoros Kapourniotis (kapourniotis@gmail.com)
  
- MoBAN - Mobility Model for Body Area Networks (since MiXiM v2.1)
  http://www.es.ele.tue.nl/nes/content/models.php
  (c) by Majid Nabi (m.nabi@tue.nl)
  
- Flooding network layer (since MiXiM v2.1)
  (c) by Daniel Willkomm (willkomm@tkn.tu-berlin.de)
  and ported to MiXiM by Theodoros Kapourniotis (kapourniotis@gmail.com)
  
- WiseRoute network layer (since MiXiM v2.1)
  (c) by Damien Piguet, Jerome Rousselot (jerome.rousselot@csem.ch)
  and ported to MiXiM by Theodoros Kapourniotis (kapourniotis@gmail.com)
   
- ProbabilityBroadcast network layer modules (since MiXiM v2.1)
  (c) by Jerome Rousselot (jerome.rousselot@csem.ch)
  
- Analogue Models: BreakpointPathlossModel and PERModel (since MiXiM v2.1)
  (c) by Jerome Rousselot (jerome.rousselot@csem.ch)



MiXiM further includes the "Mixnet" (since MiXiM v2.0) project which provides 
compatibility modules and documentation for using MiXiM together with the INET 
framework. 
For details on Mixnet and INET please take a look at the README file in MiXiM's 
"inet" folder.


Copyright
=========
Copyright (C) 2007
- Technische Universitaet Berlin (TUB), Germany
  Telecommunication Networks Group
- Technische Universiteit Delft (TUD), Netherlands
- Universitaet Paderborn (UPB), Germany

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

    The TUB, TUD, and UPB do not provide any warranty for MiXiM --
    you did not pay for it! Further details can be found in the file
    COPYING.

    As a good practice, you should acknowledge the work done in MiXiM
    just as you do if you cite a scientific work.


Authors and Maintainers
=======================
The main authors of MiXiM are (in alphabetic order)
- Andreas Koepke, TUB (koepke@tkn.tu-berlin.de)
- Hermann S. Lichte, UPB (hermann.lichte@uni-paderborn.de)
- Tom Parker, TUD (t.e.v.parker@tudelft.nl)
- Jerome Rousselot, CSEM SA (jerome.rousselot@csem.ch)
- Michael Swigulski, TUB (swigulski@tkn.tu-berlin.de)
- Stefan Valentin, UPB (stefan.valentin@upb.de)
- Otto Visser, TUD (o.w.visser@tudelft.nl)
- Karl Wessel, TUB (wessel@tkn.tu-berlin.de)
- Daniel Willkomm, TUB (willkomm@tkn.tu-berlin.de)

From 2007 (MiXiM v0.1) until 2011 (MiXiM v2.1) MiXiM has been officially 
maintained and developed by the Telecommunication Networks Group of the 
Technische Universitaet Berlin (TUB), in particular by
- Michael Swigulski, TUB (swigulski@tkn.tu-berlin.de)
- Karl Wessel, TUB (wessel@tkn.tu-berlin.de)
- Daniel Willkomm, TUB (willkomm@tkn.tu-berlin.de)

From 2011 (MiXiM v2.1) until 2012 (MiXiM v2.2 and INET integration) MiXiM 
has been officially maintained by the Fraunhofer-Institute for Integrated 
Circuits, Design Automation Division Dresden of the Fraunhofer-Gesellschaft,
in particular by
- Michael Lindig, Fraunhofer-IIS/EAS (michael.lindig@eas.iis.fraunhofer.de.de)


Contributors
============
There have been many contributors adding code, bug reports and bug-fixes to 
MiXiM. Specifically we would like to mention:
- Laura Marie Feeney     
- Anna Foerster           
- Theodoros Kapourniotis 
- Michael Lindig
- Majid Nabi             
- Jerome Rousselot       


Installation
============
For installation instructions please see the INSTALL file


How to start
============
A step-by-step guide on how to start with MiXiM can be found in MiXiM's wiki at:
http://sourceforge.net/apps/trac/mixim/wiki/StepByStep

MiXiM contains wizards for the project-creation-wizard in the OMNeT++ IDE.
These are:
* a wizard to create a basic MiXiM-network by configuring the hosts from
predefines application layers, NIC protocols and mobility modules as well as 
choosing the playground topology.
* a wizard to create a simple MiXiM-network. The hosts contain an analogue model
which can be basically configured in the wizard. This network is useful to 
implement and test a new analogue model.

To create a new project using MiXiM's wizards please go to:
"File -> New -> OMNeT++ Project...", name your project, and in the next step
select the wizard to be used. It will present the configuration options
during the next step(s). When the creation process has finished, the new 
MiXiM-network is ready to be built and run.


Documentation
==============
All documentation can be found in the doc directory. If you still have questions 
after reading these, check out the website at http://mixim.sourceforge.net. 

To send any kind of feedback, bug reports, feature requests etc. please use the 
OMNeT++ mailing list omnetpp-l@omnetpp.org.
You have to subscribe to it first,
see http://www.omnetpp.org/external/maillist.php for details.


Release Notes
=============

See following site for notes on what changed with each release (beginning 
with 1.2):

http://sourceforge.net/apps/trac/mixim/wiki/WhatChanged


Changelog
=========

v2.2
+ It is mainly a maintenance release whith focus on INET integration.
+ adjusted the OMNeT++ 4.2 API changes
+ modified deciders filterSignal method, parameters now are AirFrame pointer and
  the senders and receivers positions
+ completly removed BaseUtility and Blackboard; MiXiM uses now the OMNNeT++
  signaling handling (registerSignal, subscribe, emit, ...)
  receiveBBItem(...) methods should be replaced by receiveSignal(...).
+ Introduced new 2 types for MACAddress and NetwAddress, see SimpleAddress.h
  This should solve some problems with inproper handling of same address type
  for different layers.
+ Added some value tests for infinity in mapping interpolation. (David Eckhoff)
  Merge thermalNoise into attenuattion map for excluded AirFrame.
+ Ned INic definition was renamed to IWirelessNicUpperCtl (like INET IWirelessNic plus
  upper control gates)
+ Add sendReply switch to BurstApplLayer, to disable send reply for 
  BROADCAST_MESSAGE's.
+ Renamed introduced timing info methods in Signal ( getSignalLength() ->
  getDuration(); getSignalStart() -> getReceptionStart(); getSignalStart() + 
  getSignalLength() -> getReceptionEnd() )
+ Signal now contains infos about the sending/receiption module/gate (getSendingModule;
  getReceiptionModule). The info will be extracted/saved from AirFrame in BasePhyLayer at
  receiving.
+ Changed [Lower/Upper]Gate to [Lower/Upper]Layer.
+ handleAirFrame method gots an AirFrame as parameter, instead of cMessage.
+ renamed BasePhyLayer::sendControlMsg to BasePhyLayer::sendControlMsgToMac
+ refactored the NED files to simplify the usage and to make it more generic

v2.1
+ added LMAC layer implementation written by Anna Förster and ported to MiXiM
  by Theodoros Kapourniotis
+ added WiseRoute and Flooding network layer modules ported for MiXiM by
  Theodoros Kapourniotis
+ added modules from MoBAN project from Majid Nabi, Marc Geilen and Twan Basten
+ added BMAC layer implementation written by Anna Förster
+ new probabilistic broadcast routing modules
+ new packet error rate analogue model (PERModel) 
+ new BreakPointPathloss analogue model
+ added several more modules to choose from in "Basic MiXiM network" wizzard
+ introduced "debugEV" which together with a modules "debug" parameter enables 
  per module debugging for end user modules
+ added preconfigured hosts for 802.11 and 802.15.4 protocol respectively
+ added support for phy protocol ids to identify the protocol used for a
  transmission
+ added multi channel support to BasePhyLayer
+ added Nic80211MultiChannel which extends the Nic80211 with multi channel 
  support
+ added parameter "scaleNodeByDepth" to BaseMobility to disable scaling of nodes
  when tkenv and 3d is used
+ added more modulation models to Decider802154Narrow
+ changed BaseMobilities updatePosition function to support scaled play grounds
  (when the playground size does not match the size of the drawn playground)
+ added option to display maximum interference distance of nodes in tkenv
* changed unit of acceleration in ned files from "mps2" to "mpss" since omnet
  can't handle numbers at the end
* fixed SensorApplLayer to find world utility module and network layer address
  more robust
* corrected evaluation of Decider802154Narrow's frame RSSI value
* removed "centerFrequency" and "defaultChannel" parameter from Mac80211 module,
  they are replaced by BasePhyLayers "initialRadioChannel" parameter
* organized inter-module dependent initialisation code
* fixed CSMA802154 module to correctly use csma802154 class instead of only csma
* fixed problem where airframes arrived at different order in tkenv and cmdenv
* fixed problem with NicEntryDebug when a Nic unregisters and then registers
  itself again with ConnectionManager
* changed Mac80211 to wait for end of transmission instead of end of a timer
  to start a new cycle after sending a CTS
* typedef of ChannelInfo::AirFrameVector changed from vector to list
* fixed csma's exponential slot interval from [1,2^BE] to [0,2^BE]
* fixed a bug in SimpleBattery where the capacity wasn't updated if publishing
  was disabled
* fixed a bug in Mac80211 where duplicate packets where not detected when the
  duplicate was sent because of bit errors in the corresponding ACK
* fixed a bug in BaseConnectionManager with playgrounds where one dimension was
  larger than the maximum interference distance and the other was smaller
* fixed a bug in csma's nbRxCounter
* fixed a bug in csma's backoff algorithm

v2.0
+ introduced Mixnet - compatibility modules for using MiXiM NICs within INET 
  networks
+ divided BaseArps addressing and ARP functionality into two separate interfaces
  to become more compatible with real ARPs which do not implement addressing
* fixed use of wrong connection manager in MAC layer when using multiple 
  connection managers (thanks to "David" from the omnetpp list for reporting)
* fixed a problem with ChannelInfo where it throw away channel information 
  although it was still needed to answer a ChannelSenseRequest
* fixed not canceled CCA timer on backoff (bug tracker id: 3083767)

v1.2
+ added port of 802154 narrowband phy and mac layer of mobility-fw2 for omnet 4
  from JÃ©rÃ´me Rousselot
+ added global blackboard functionality to BaseWorldUtility
+ introduced "csma" module which implements a generic CSMA mac protocol and will
  replace CSMAMacLayer in the future
+ added depth dependent scaled display of hosts when GUI and 3-D is used
+ made members of Move protected, added functions for member access
  - 'setDirectionByVector' replaces the direct access to the member 'direction'
  - 'setDirectionByTarget' replaces the method 'setDirection'
+ BaseMobilitys host coordinates can be set to random values indepentently now
+ gave networks of examples more meaningfull and consistent names (same as the
  example)
+ renamed executeables for examples from "MiXiM" to <example name>
+ divided MacControlInfo into MacToNetwControlInfo and NetwToMacControlInfo
+ added a wizard to create a basic MiXiM-network as well as a wizard for
  creating your own AnalogueModel
+ added, updated or extended documentation for Radio, RSAM, ChannelInfo,
  MiXiM-basics, mobility, border-handling and CSMA MAC-Layer 
+ changed scheduling priority of AirFrames to slightly higher than normal to
  ensure channel consistency
+ added utility-method 'addDiscontinuity' to MappingUtils which provides a
  workaround to represent discontinuities in mappings by defining two entries as
  close as possible to each other
+ changed default signal created by BaseMacLayer's 'createSignal'-method to use
  a rectangular function for TX-power
+ changed BaseDeciders handling of ChannelSenseRequests for better support of
  rssi based idle/busy state
+ removed ModuleAccess and BaseArpAccess and replaced calls to them by using
  class FindModule
+ changed SNRThresholdDecider to evaluate the received energy level to decide
  whether the channel is idle or busy (before the channel was only busy if the
  decider actually received, meaning decoded, a signal)
* fixed memory leak when propagation delay is simulated
* fixed a bug in the calculated receiving power of a signal which caused it to
  be greater zero before and after its signal in certain cases
* fixed wrong calculation of position on "WRAP" border handling in BaseMobility
* fixed missing connections when the cells from ConnectionManager do not cover
  the playground size exactly
* fixed increasing heap memory usage while hosts sending AirFrames but wheren't
  receiving any. This was caused by RSAM tracking every radio state although
  there wheren't any Signals on the channel to attenuate.

v1.1
+ added port of EnergyFramework written by Laura Marie Feeney
+ added "headerLength" parameter to physical layer and fixed wrong MacPkt length
  in Mac80211
* fixed wrong initialization order of static time and frequency Dimension
  members by introducing time-/frequency_static() wrapper methods

v1.0
- first release
