Index: ossiedev/branches/hvolos/components/MIMODec/MIMODec.cpp
===================================================================
--- ossiedev/branches/hvolos/components/MIMODec/MIMODec.cpp	(revision 9492)
+++ ossiedev/branches/hvolos/components/MIMODec/MIMODec.cpp	(revision 9519)
@@ -18,5 +18,5 @@
     Mr=1;
     Nt=1;
-    MIMOmethod="STBC";
+    MIMOmethod=0;
     Modmethod="BPSK";
 
@@ -99,6 +99,17 @@
         if (strcmp(props[i].id, "DCE:74a38a7c-3b3e-11de-b7e0-0000e80014f9") == 0) {
             const char * prop_str;
+            //string prop_str;
             props[i].value >>= prop_str;
-            MIMOmethod=prop_str;
+            //prop_str=prop_char;
+
+            if (strcmp(prop_str,"MRC")) {
+                MIMOmethod=0;
+
+            } else if (strcmp(prop_str,"STBC")) {
+                MIMOmethod=1;
+
+            } else if (strcmp(prop_str,"VBLAST")) {
+                MIMOmethod=2;
+            };
         }
 
@@ -128,6 +139,7 @@
 
     while (1) {
-        Mr=4;
-        Nt=2;
+        //Mr=4;
+        //Nt=2;
+
         NH=Mr*Nt;
         dataIn->getData(I_in, Q_in);
@@ -143,42 +155,75 @@
 
         cx_mat H(Mr,Nt);
+        MIMOmethod=0;
+        std::cout<<Mr<<"X"<<Nt<<" M:"<< MIMOmethod<<" DL:"<<Data_length<<std::endl;
         for (int i=0;i<Mr;i++) {
             for (int j=0;j<Nt;j++) {
                 H(i,j)=cx_double((*I_in)[i*Mr+j],(*Q_in)[i*Mr+j])/10000.0;
-                //std::cout<<"Iin:"<<(*I_in)[i*2+j];
+                //std::cout<<"Iin:"<<(*I_in)[i*2+j]<<"  ";
+                std::cout<<"H("<<i<<","<<j<<")="<<H(i,j)<<"  ";
             }
         }
-        //std::cout<<std::endl;
-
-        /*Alamouti
-        for i=1:2:length(RX_symbols1),
-          r1=RX_symbols1(i);
-          r2=RX_symbols1(i+1);
-          RX_symbols(i)=r1*conj(H(1,1))+conj(r2)*H(1,2);
-          RX_symbols(i+1)=r1*conj(H(1,2))-conj(r2)*H(1,1);
-        end;
-        */
+        std::cout<<std::endl;
 
         cx_double r1;
         cx_double r2;
         cx_mat rx_symbols(((Data_length-NH)/Mr),1);
-        short int j=0;
-        //std::cout<<"Decode"<<std::endl;
-        //std::cout<<"Hdec="<<H;
-
-        for (short int i=NH; i<Data_length;i+=2*Mr) {
-            rx_symbols(j,0)=0;
-            rx_symbols(j+1,0)=0;
-
-            for (short int k=0;k<Mr;k++) {
-                r1=cx_double((*I_in)[i+k],(*Q_in)[i+k]);
-                r2=cx_double((*I_in)[i+Mr+k],(*Q_in)[i+Mr+k]);
-                rx_symbols(j,0)+=r1*conj(H(k,0))+conj(r2)*H(k,1);
-                rx_symbols(j+1,0)+=r1*conj(H(k,1))-conj(r2)*H(k,0);
-
+         short int j=0;
+
+        switch (MIMOmethod) {
+        case 0:
+            j=0;
+
+            for (short int i=NH; i<Data_length;i+=Mr) {
+                rx_symbols(j,0)=0;
+
+                for (short int k=0;k<Mr;k++) {
+                    r1=cx_double((*I_in)[i+k],(*Q_in)[i+k]);
+                    rx_symbols(j,0)+=r1*conj(H(k,0));
+                    std::cout<<i<<","<<j<<","<<k<<std::endl;
+                }
+
+                j+=1;
             }
 
-            j+=2;
-        }
+            break;
+        case 1:
+            //std::cout<<std::endl;
+
+            /*Alamouti
+            for i=1:2:length(RX_symbols1),
+              r1=RX_symbols1(i);
+              r2=RX_symbols1(i+1);
+              RX_symbols(i)=r1*conj(H(1,1))+conj(r2)*H(1,2);
+              RX_symbols(i+1)=r1*conj(H(1,2))-conj(r2)*H(1,1);
+            end;
+            */
+
+
+
+            j=0;
+            //std::cout<<"Decode"<<std::endl;
+            //std::cout<<"Hdec="<<H;
+
+            for (short int i=NH; i<Data_length;i+=2*Mr) {
+                rx_symbols(j,0)=0;
+                rx_symbols(j+1,0)=0;
+
+                for (short int k=0;k<Mr;k++) {
+                    r1=cx_double((*I_in)[i+k],(*Q_in)[i+k]);
+                    r2=cx_double((*I_in)[i+Mr+k],(*Q_in)[i+Mr+k]);
+                    rx_symbols(j,0)+=r1*conj(H(k,0))+conj(r2)*H(k,1);
+                    rx_symbols(j+1,0)+=r1*conj(H(k,1))-conj(r2)*H(k,0);
+
+                }
+
+                j+=2;
+            }
+
+            break;
+        case 2:
+            break;
+        }
+
         double scale=1;
         for (short int i=0; i<((Data_length-NH)/Mr);i++) {
