00001
00002
00003
00004
00005
00006 #ifndef MIMO_LSD_ENCODER_H
00007 #define MIMO_LSD_ENCODER_H
00008
00009
00010 #include <mimo-encoder.h>
00011
00012 namespace mimo
00013 {
00014
00015
00016
00017
00018 class LsdEncoder : public mimo::Encoder
00019 {
00020 public:
00021 LsdEncoder(int deviceID, simth::DeviceSystemIntf* system,
00022 const simth::PropertyList& pl);
00023
00024 virtual ~LsdEncoder();
00025
00026 virtual int getDataLength(int codedLength) const;
00027 virtual int getCodeLength(int rawLength) const;
00028
00029 virtual void Encode(const simth::ModSeq& modulation_symbols,
00030 CVectorSeq& output_vectors);
00031
00035 static void calcCodeMatrix(unsigned M, int xcc,
00036 unsigned nu, unsigned ns, unsigned nc,
00037 CMatrixSeq& codeMatrices);
00038
00039
00043 static void calcOuterCodeMatrix(unsigned ni, double acc,
00044 unsigned nc,
00045 CMatrix& outerCodeMatrix);
00046
00047 };
00048
00049
00050 }
00051
00052 #endif // MIMO_LSD_ENCODER_H
00053
00054
00055