Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

mimo::Decoder Class Reference

Abstract base class for a MIMO symbol decoder. More...

#include <mimo-decoder.h>

Inheritance diagram for mimo::Decoder:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 Decoder (int deviceID, simth::DeviceSystemIntf *system, const simth::PropertyList &pl)
virtual ~Decoder ()
virtual void updateInputLengths ()
virtual void updateOutputLengths ()
virtual void process ()
virtual int getDataLength (int codedLength) const =0
virtual int getCodeLength (int rawLength) const =0
virtual void Decode (const CVectorSeq &input_vectors, const MatrixFreqSignal &channel_estimation, simth::ModSeq &output_symbols, simth::ModSeq *output_softout)=0
virtual void print (std::ostream &os) const

Protected Attributes

unsigned nr_rx
 Number of receive antennas.
unsigned nr_tx
 Number of transmit antennas.

Detailed Description

Abstract base class for a MIMO symbol decoder.

Abstract base class which provides an interface for particularly derived coder classes.

Supposedly it should be easier for a programmer to simply derive from this class and only implement the three virtual functions, without the need to touch the process() function and the surrounding mechanisms. Of course, if a programmer feels it would be easier for him to actually write a simth::Device with his own process(), then he should simply go ahead and ignore this abstract class.


Constructor & Destructor Documentation

mimo::Decoder::Decoder int  deviceID,
simth::DeviceSystemIntf system,
const simth::PropertyList pl
 

Constructor. All parameters shall be passed through the given simth::PropertyList.

virtual mimo::Decoder::~Decoder  )  [virtual]
 

Default destructor.


Member Function Documentation

virtual void mimo::Decoder::updateInputLengths  )  [virtual]
 

Implementation of methods of simth::Device.

Implements simth::Device.

Reimplemented in mimo::STBCAlamoutiDec, mimo::AntennaSelDec, and mimo::RotAlamoutiDec.

virtual void mimo::Decoder::updateOutputLengths  )  [virtual]
 

Implementation of methods of simth::Device.

Implements simth::Device.

Reimplemented in mimo::STBCAlamoutiDec, and mimo::RotAlamoutiDec.

virtual void mimo::Decoder::process  )  [virtual]
 

Implementation of methods of simth::Device.

Implements simth::Device.

Reimplemented in mimo::AntennaSelDec, and mimo::PCSDecoder.

virtual int mimo::Decoder::getDataLength int  codedLength  )  const [pure virtual]
 

This method has to be implemented in a derived class.

Returns the length of an uncoded input sequence for the given length of the coded output sequence.

If the coded length does fit (codedLength codedBitsPerStep() == 0) the function the function returns the length of a data sequence which is encoded by the coder from a coded sequence of the given length. In general the function returns the maximal length of a data sequence whose encoded length is smaller or equal code_length.

Parameters:
codedLength length of the coded input sequence
Returns:
required length of the output sequence

Implemented in mimo::SpatialMuxDecZF, mimo::STBCAlamoutiDec, mimo::SVDDec, mimo::AntennaSelDec, mimo::RotAlamoutiDec, mimo::LsdDecoder, and mimo::PCSDecoder.

virtual int mimo::Decoder::getCodeLength int  rawLength  )  const [pure virtual]
 

This method has to be implemented in a derived class.

Returns the length of a coded output sequence for a given length of the uncoded input sequence.

If the data length does not fit (dataLength dataBitsPerStep() != 0) an FitErr exception is thrown, which should be caught in the scope calling the function.

Parameters:
rawLength length of the data sequence
Returns:
allocated length of the coded sequence

Implemented in mimo::SpatialMuxDecZF, mimo::STBCAlamoutiDec, mimo::SVDDec, mimo::AntennaSelDec, mimo::RotAlamoutiDec, mimo::LsdDecoder, and mimo::PCSDecoder.

virtual void mimo::Decoder::Decode const CVectorSeq input_vectors,
const MatrixFreqSignal channel_estimation,
simth::ModSeq output_symbols,
simth::ModSeq output_softout
[pure virtual]
 

Encodes the given sequence of symbols into the given output sequence of vectors.

This is the main method that has to be implemented in a derived class.

Parameters:
input_vectors The received signal vectors
channel_estimation The channel matrix estimates, one for each received vector.
output_symbols The sequence of resulting output symbols
output_softout May be Null. The sequence of resulting softout reliability measures, one for each resulting output symbols. If this is Null, your implementation may not touch this. If this is non-Null, then either you have to calculate the softout values, or you have to fill this sequence with zeros. WATCH OUT: This output should contain the square root of the softout reliability information, but as complex numbers (Since 2004-11-02). The reason for this is that the Simthetic Demodulator devices expect a channel estimation input and use its squared magnitude as reliability information -- so by providing the expected values at this output interface, we can directly connect this output interface to the channel estimation input interface of the demodulator device here in simthetic.

Implemented in mimo::SpatialMuxDecZF, mimo::SpatialMuxDecMMSE, mimo::STBCAlamoutiDec, mimo::SVDDec, mimo::AntennaSelDec, mimo::RotAlamoutiDec, mimo::LsdDecoder, and mimo::PCSDecoder.

virtual void mimo::Decoder::print std::ostream &  os  )  const [virtual]
 

Print information about this block -- for debugging.

Reimplemented from simth::Device.


Member Data Documentation

unsigned mimo::Decoder::nr_rx [protected]
 

Number of receive antennas.

unsigned mimo::Decoder::nr_tx [protected]
 

Number of transmit antennas.


Generated on Tue Aug 9 14:43:54 2005 for mimolib by  doxygen 1.4.1