OVERVIEW OF SOFTWARE
--------------------
The model of the network is simple.  A transmitter takes input bits and
outputs a complex-valued signal.  The channel model combines the desired
signal with that produced by an interference transmitter and adds
(possibly) distortion to the combined signal.  The channel outputs this noisy
signal, which is then input to the desired receiver, which uses the same
technology (Bluetooth, IEEE 802.11b, etc.) as the desired transmitter.  The
receiver outputs a string of bits, which is compared to the input bits,
accounting for the delay characteristics of the transmitter and receiver.

The software is structured as follows.  The three network component abstract
base classes are: Transmitter, Receiver, and Channel.  Each one of these
has one public member function that implements its primary function.
1. Transmitter::transmit() takes an array of bits as an input and outputs a
signal, which is an array of complex-valued samples from the modulated signal.
2. Channel::process() takes two signals as input, one desired and one
interference, adds them together, and may add other distortion.
3. Receiver::receive() takes a signal as input and outputs an array of bits.

The following types are used for Bits (an array of bits) and Signal (an
array of complex-valued samples):
typedef valarray<bool> Bits;
typedef complex<double> Sample;
typedef valarray<Sample> Signal;

The valarray<> class is part of the Standard C++ Library.

The particular technologies implemented are as follows.
1. Bluetooth: BluetoothTransmitter and BluetoothReceiver classes.
2. IEEE802.11b: IEEE802_11bTransmitter and IEEE802_11bReceiver classes.
   These classes implement both the 1 Mb/s and 11 Mb/s (CCK) bitrates.

BUILD INSTRUCTIONS
------------------
1. Unix: 'cd' to the 'unix' directory and type 'make'.  This will build the
executable file 'btint' and copy it to the 'bin' directory.

NOTES:
-- We used g++ version 2.95.3 on Linux.  Other compilers may have trouble
   with the valarray<> Standard C++ Library class.  In particular, we
   compiled the program under Solaris using g++ 2.95.2, but the valarray
   class did not work properly.  We could not get the valarray class to
   compile under Solaris using Sun's CC compiler.

2. Windows: launch Developer's Studio.  Open file 'btint.dsw' in the 'win32'
directory. Click 'Build' under the 'Build' menu.  This will build the
executable file 'btint.exe'and copy it to the 'bin' directory.

RUNNING THE SCRIPTS
-------------------
In the 'bin' directory, we have two Python scripts.  'trials.py' runs three
cases:
I. Bluetooth transmitter/receiver with IEEE 802.11b (1 Mb/s)  interference
II. IEEE 802.11b (1 Mb/s) transmitter/receiver with Bluetooth interference
III. IEEE 802.11b (11 Mb/s) transmitter/receiver with Bluetooth interference
over a range of carrier-to-interference (CIR) ratios and frequency differences.

'tests.py' runs a subset of the above and can be used to check that the
program is running properly.

You need to have Python installed on your system.  Many Unix (incl. Linux)
systems have it installed already.  If you do not, you may download and
install it from either www.python.org or www.activestate.com.

CHECKING THE RESULTS
--------------------
In the 'results' directory, we have files with output from 'tests.py' and
'trials.py' to compare to your results.  See the README file in the 'results'
directory for more information.
