Programme de contrôle de l'octopode 4DOF, Theraphosa-Salconi.

Dependencies:   debug mbed

CtrlBridge

  • fonction quelquonque pour communiquer avec les module
  • fonction quelquonque pour faire des recherche dans les module dispo
  • autre fonction pour jouer avec MemRegistre

Version 1.2.0

  • Ajout d'un mode de simulation pour tester le code avec seulement un contrôleur stm32
Revision:
15:91b3c572d9df
Parent:
14:ca1a9230ba7f
Child:
16:5ea4337d785f
--- a/source/ComSpi.cpp	Mon Mar 23 22:41:31 2015 +0000
+++ b/source/ComSpi.cpp	Wed Apr 22 19:27:44 2015 +0000
@@ -8,6 +8,30 @@
     //m_regPortLost=0;
     m_demuxPos=0;
     demuxIsUse=false;
+    chainedListFirst = 0;
+    chainedListLast = 0;
+    flagSPI.getBytes = 0;
+    //result = 0;
+    counterData = 0;
+    counterTotale = 0;
+    /*for(int i=0;i<MAXTABLE;i++)
+    {
+        bufferSend[i] = 0;
+        bufferReceive[i] = 0;
+    }
+    bufferSend[0] = SYNC;*/
+}
+
+struct module_t* ComSpi::createModule(void) {
+    if(chainedListFirst == 0) {
+        chainedListFirst = new module_t ;
+        chainedListLast = chainedListFirst;
+    } else {
+        chainedListLast->next = new module_t;
+        chainedListLast = chainedListLast->next;
+    }
+    chainedListLast->next = 0;
+    return chainedListLast;
 }
 
 ComSpi::ComSpi(PinName mosi, PinName miso, PinName sclk, PinName demuxA, PinName demuxB, PinName demuxC, PinName demuxD, PinName demuxEnable)
@@ -15,10 +39,12 @@
 {
     m_demuxPos=0;
     demuxIsUse=true;
+    format(8,0);//16,0); //recente modification
 }
 
 ComSpi::~ComSpi()
 {
+    //pt deleter les pointeur mais sa ser pas vrm a grand chause
     //if(m_com)
     // delete(m_com);
 }
@@ -29,10 +55,10 @@
         DigitalOut pinDemuxB(m_demuxB);
         DigitalOut pinDemuxC(m_demuxC);
         DigitalOut pinDemuxD(m_demuxD);
-        DigitalOut pinDemuxEnable(m_demuxEnable);
-
+        DigitalOut pinDemuxEnable(m_demuxEnable);//,1);
+//wait(1);
         pinDemuxEnable=0;
-
+//wait(1);
         if(m_demuxPos & 1) pinDemuxA=1; //0b0001
         else pinDemuxA=0;
         if(m_demuxPos & 2) pinDemuxB=1; //0b0010
@@ -41,16 +67,11 @@
         else pinDemuxC=0;
         if(m_demuxPos & 8) pinDemuxD=1; //0b1000
         else pinDemuxD=0;
-
-        pinDemuxEnable=1;
+//wait(1);
+       // pinDemuxEnable=1;
+        //wait(1);
     }
 }
-int ComSpi::write(int value)
-{
-    int a;
-    a= SPI::write(value);
-    return a;
-}
 char ComSpi::next_demux(void)
 {
     char result = (char)-1;
@@ -74,7 +95,6 @@
     }
     return result;
 }
-
 char ComSpi::get_demux(void)
 {
     char result = (char)-1;
@@ -82,58 +102,92 @@
         result=m_demuxPos;
     return   result ;
 }
+unsigned char spiCurrentState;
+int ComSpi::write(int value)
+{
+     DigitalOut pinDemuxEnable(m_demuxEnable);
+    //DigitalOut pinDemuxEnable(m_demuxEnable,0);
+    int a;
+     pinDemuxEnable=1;
+     /*   switch(spiCurrentState)
+    {
+        case 0:
+        a= SPI::write(0x12);
+        spiCurrentState++;
+        break;
+        default:
+        a= SPI::write(0xF5);
+        spiCurrentState =0;
+        break;
+    }*/
+     wait_us(5);
+    a= SPI::write(value);
+    wait_us(5);
+     pinDemuxEnable=0;
+     sneekpeek.append(1,value);
+     wait_us(1000);
+    return a;
+}
+
 
 bool ComSpi::send(char portID,unsigned char adresseModule,string *flag,string *data)
 {
     bool result=false;
     string formatedDataSend;
-    string formatedDataReceive;
-    //int valueReceive=0;
-    //int CRC
+    string formatedDataReceive;//DEBUG_COMPACT
+    char settingMaster = 0;
+    char settingSlave = 0;
 
-    debug(DEBUG_SEND, "\n\r   -Debut du send. ");
+    debug(DEBUG_SEND| DEBUG_COMPACT, "\n\r   -Debut du send. ");
 
     debug(DEBUG_SEND, "\n\r    -Debut set demux. ");
-    if(portID > 0xFF) { //(char)-1) {
-        m_demuxPos = portID;
-        change_demux();
-    }
+
+    if(portID < 1) portID = 0;
+    else if(portID > 16) portID = 16;
+    debug(DEBUG_SEND, "\n\r     -Change PORT. ");
+    m_demuxPos = portID;
+    change_demux();
+
     debug(DEBUG_SEND, "\n\r    -Fin set demux. ");
 
     // Sync //
     debug(DEBUG_SEND, "\n\r    -Debut Sync. ");
     formatedDataSend.append(1,SYNC);
+    debug(DEBUG_COMPACT, "\n\r    -SYNC ADDED: %02X ",formatedDataSend[0]);
     debug(DEBUG_SEND, "\n\r    -Fin Sync. ");
 
     // Address //
     debug(DEBUG_SEND, "\n\r    -Debut Address. ");
     formatedDataSend.append(1,adresseModule);
+    debug(DEBUG_COMPACT, "\n\r    -ADDR ADDED: %02X, %02X ",formatedDataSend[0],formatedDataSend[1]);
     debug(DEBUG_SEND, "\n\r    -Fin Address. ");
 
     // PFB //
     debug(DEBUG_SEND, "\n\r    -Debut PFB. ");
     switch(flag->size()) {
         case 1:
-            formatedDataSend.append(1,1<<6);
+            formatedDataSend.append(1,1<<6); //1 byte
             break;
 
         case 2:
-            formatedDataSend.append(1,2<<6);
+            formatedDataSend.append(1,2<<6); //2 byte
             break;
 
         case 3:
-            formatedDataSend.append(1,3<<6);
+            formatedDataSend.append(1,3<<6); //3 byte
             break;
 
         default:
-            formatedDataSend.append(1,0<<6);
+            formatedDataSend.append(1,0<<6); //0 byte
             break;
     }
+    debug(DEBUG_COMPACT, "\n\r    -PFB ADDED: %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2]);
     debug(DEBUG_SEND, "\n\r    -Fin PFB. ");
 
     // gestion ACK/NAK
     debug(DEBUG_SEND, "\n\r    -Debut ACK/NAK. ");
     formatedDataSend.at(formatedDataSend.length()-1) |= (NOACK << 4);
+    debug(DEBUG_COMPACT, "\n\r    -ACK ADDED: %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2]);
     debug(DEBUG_SEND, "\n\r    -Fin ACK/NAK. ");
 
     // NDB //
@@ -155,101 +209,310 @@
             formatedDataSend.at(formatedDataSend.length()-1) |= 0;
             break;
     }
+    //debug(DEBUG_COMPACT, "\n\r    -NDB ADDED: %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2]);
     debug(DEBUG_SEND, "\n\r    -Fin NDB. ");
 
+    settingMaster = formatedDataSend[formatedDataSend.length()-1];
+   
     // flag //
     debug(DEBUG_SEND, "\n\r    -Debut flag. ");
     if(flag->size() != 0) {
         formatedDataSend.append(*flag);
+        //debug(DEBUG_COMPACT, "\n\r    -FLAG ADDED: %02X, %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2],formatedDataSend[3]);
     }
     debug(DEBUG_SEND, "\n\r    -Fin flag. ");
 
-    // data //
-    debug(DEBUG_SEND, "\n\r    -Debut data. ");
-    if(data->size() != 0) {
-        formatedDataSend.append(*flag);
-    }
-    debug(DEBUG_SEND, "\n\r    -Fin data. ");
+//ici tu envoi deja ton premier stuf
+
+
+ debug(DEBUG_SLIM, "\n\r    -settingMaster : %X , %i, %X ",settingMaster, (2+(settingMaster>>6)),formatedDataSend[(2+(settingMaster>>6))] );
+
+
+
+    for(int retryLoop=0; (retryLoop<3) && (!result); retryLoop++) {
 
-    // CRC //
-    debug(DEBUG_SEND, "\n\r    -Debut CRC16. ");
-    CRC16* templateCRC;
-    templateCRC = new CRC16();
-    unsigned short templateValue;
-    char templateTable[34];
-    for (unsigned i=0; i<34; ++i) templateTable[i]=0;
-    for (unsigned i=0; i<formatedDataSend.length(); ++i) templateTable[i]=formatedDataSend[i];
-    debug(DEBUG_SEND, "\n\r     - envoi au crc: %i,%i,%i,%i,%i,%i ",templateTable[0],templateTable[1],templateTable[2],templateTable[3],templateTable[4],templateTable[5],templateTable[6]);
+        debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r      -Tentative: %d \n\r",retryLoop);
+        formatedDataReceive.clear();
+        settingSlave =0;
+        counterTotale =0;
+        sneekpeek.clear();
+        //Send Data
+//        debug(DEBUG_SEND, "\n\r    -Debut Send Data. ");
+//        debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r     -Send: ");
+//        for (unsigned i=0; i<formatedDataSend.length(); ++i) debug(DEBUG_SEND |DEBUG_COMPACT, "%02X,",formatedDataSend.at(i));
 
-    templateValue = templateCRC->calculateCRC16(templateTable,formatedDataSend.size()-1); //atention pt un probleme de sortie du range
-
-    formatedDataSend.append(1,templateValue>>8);
-    formatedDataSend.append(1,templateValue & 0xFF);
+        //int twoBytesArray;
+        //twoBytesArray = (formatedDataSend[0]<<8)|(formatedDataSend[1]);
+        //twoBytesArray=write(twoBytesArray);
 
-    if(templateCRC)
-        delete templateCRC;
-
-    debug(DEBUG_SEND, "\n\r    -Fin CRC16. ");
+        for(int i = 0; (i < formatedDataSend.length()) && (i<=(2+(settingMaster>>6))); ++i) {
+            formatedDataReceive.append(1,write(formatedDataSend[i]));//debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -A:%i ",i);
+            debug(DEBUG_SEND |DEBUG_COMPACT, " %02X,",formatedDataSend.at(i));
+        }
 
-    //Send Data
-    debug(DEBUG_SEND, "\n\r    -Debut Send Data. ");
-    debug(DEBUG_SEND, "\n\r     -Send: ");
-    for (unsigned i=0; i<formatedDataSend.length(); ++i) debug(DEBUG_SEND, "%i,",formatedDataSend.at(i));
-
-    int twoBytesArray;
-    twoBytesArray = (formatedDataSend[0]<<8)+formatedDataSend[1];
-
-    for(int i=0; (i<3) && (!result); i++) {
-        debug(DEBUG_SEND, "\n\r      -Tentative: %d",i);
-
-        twoBytesArray=write(twoBytesArray);
+        if(formatedDataReceive[0] == SYNC) {
+            debug(DEBUG_COMPACT, "\n\r    -Receve transmission. ");
+            //!!!!!!!! Problem ici write dans un mais pas lautre
+             wait_us(3000);
+            if(retryLoop == 0) {
+                formatedDataSend.append(1,0);//2,0); cest une patch tempo parce que je trouve pas ou il manque la donner
+                }
+            formatedDataReceive.append(1,write(0));
+           // debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -B: ");
+            
+            settingSlave = formatedDataReceive[formatedDataReceive.length()-1];
+            debug(DEBUG_COMPACT, "\n\r       -settingSlave %02X",settingSlave);
+            if(retryLoop == 0) {
+                /*switch(formatedDataReceive[formatedDataSend.length()-1] >> 6) {
+                    case 1:
+                        formatedDataSend.append(1,0); //1 byte
+                        break;
 
-        if(twoBytesArray>>8 == SYNC) {// twoBytesArray ==(Sync)//+(PFB+ACK+NDB))
-            // Envoie le reste si liker si liker //
-            debug(DEBUG_SEND, "\n\r    -Debut Traitement de l'information. ");
-            debug(DEBUG_SEND, "\n\r     -Receive: ");
+                    case 2:
+                        formatedDataSend.append(2,0); //2 byte
+                        break;
 
-            formatedDataReceive.clear();
-            formatedDataReceive.append(1,twoBytesArray>>8);
-            formatedDataReceive.append(1,twoBytesArray & 0xFF);
+                    case 3:
+                        formatedDataSend.append(3,0); //3 byte
+                        break;
 
-            for (unsigned i=2; i<formatedDataSend.length(); ++i) {
-                twoBytesArray = formatedDataSend[i];
-                i++;
-                if(i<formatedDataSend.length())
-                    twoBytesArray = (twoBytesArray<<8) + formatedDataSend[i];
+                        //default:
+                        //    formatedDataSend.append(1,0<<6); //0 byte
+                        //    break;
+                }*/
+                formatedDataSend.append(settingSlave>>6,0);
+            }
 
-                twoBytesArray=write(twoBytesArray);
-                formatedDataReceive.append(1,twoBytesArray>>8);
-                formatedDataReceive.append(1,twoBytesArray&0xFF);
+            int bufferFlag = 0;
+
+            for(int i = (settingMaster>>6); i != 0; i--) { //ici on remplie le buffer des data du flag
+                // je considere avec erreur que il nexiste pas de flag plus grand que 2 bytes (facilite le code de depart)
+                //!!! Pt metre fonct stein qui tronc de debut a fin pour remplacer les linge dessous.
+                bufferFlag = bufferFlag<<8;
+                bufferFlag += formatedDataSend[2+i];
             }
 
+            counterTotale = ((2+(settingMaster>>6))+1);
+            counterTotale = counterTotale+(settingSlave>>6)+abs((settingMaster & 0x0F) - (settingSlave & 0x0F));
+
+            switch(bufferFlag) { //plus facile pour savoir ce que tu doit tatenre a recevoire
+                case 1://Request Init Info
+                    if(retryLoop == 0) {
+                        
+                        formatedDataSend.append(settingSlave & 0x0F,0);
+                        //chek pour comment avoir un address
+                    }
+                    //verifier si la fonction fait ce quil edt suposer
+                    for(int i = ((2+(settingMaster>>6))+1); i < formatedDataSend.length()-1; ++i) {
+                        formatedDataReceive.append(1,write(formatedDataSend[i]));
+                        //debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -C:%i ",i);
+                    }
+                    //templatePtr =searchAddr(0);
+                    // 1 byte flag + 3 byte de data
+                    //bufferSend[4] = (1<<6) + 3;//[2+(bufferReceive[2]>>6)+1] = (1<<6);
+
+
+                    //if((templatePtr->next)==0)
+                    //    bufferSend[5] = 0b101;//bufferReceive[2+(bufferReceive[2]>>6)+1+bufferReceive[2+(bufferReceive[2]>>6)+1]] = 0b101;
+                    //else
+                    //    bufferSend[5] = 0b10;
+
+                    //bufferSend[6] = templatePtr->basicInfo.osnapRegisterB.getByte;
+                    //bufferSend[7] = templatePtr->basicInfo.osnapRegisterC.getByte;
+                    //bufferSend[8] = templatePtr->basicInfo.osnapRegisterD.getByte;
+                    break;
+
+                case 2: //Slave contient un/des autre(s) module(s) sans adresses
+                    break;
+
+                case 3: //Flag Critique
+                    break;
+
+                case 4: //Flag Alerte
+                    break;
+
+                case 5: //Slave ne contient plus de module sans adresse
+                    break;
+
+                case 6: //Master request address update
+                    break;
+
+                default: //Get update (normale)
+
+                    break;
+            }
+            //counterTotale = 2+(bufferReceive[2]>>6)+1;
+            //counterTotale = counterTotale+(bufferSend[counterTotale]>>6)+abs((bufferReceive[2] & 0x5F) - (bufferSend[counterTotale] & 0x5F));
+
+ 
+
+
+
+
+            // Envoie le reste si liker //
+            // DATA //
+            unsigned short templateValue=0;
+            if(retryLoop == 0) {
             // CRC //
-            unsigned short templateValue=1;
-            templateValue=formatedDataReceive.at(formatedDataReceive.length()-2) << 8;
-            templateValue|=formatedDataReceive.at(formatedDataReceive.length()-1);
+            debug(DEBUG_SEND, "\n\r    -Debut CRC16. ");
+            //CRC16* templateCRC;
+            //templateCRC = new CRC16();
+            //!!!utiliser string cest plus simple
+            
+            
+            //char templateTable[formatedDataSend.length()+1];
+            //for (unsigned i=0; i<formatedDataSend.length()+1; ++i) templateTable[i]=0;
+            //for (unsigned i=0; i<formatedDataSend.length(); ++i) templateTable[i]=formatedDataSend[i];
+            //debug(DEBUG_SEND, "\n\r     - envoi au crc: %02X,%02X,%02X,%02X,%02X,%02X ",templateTable[0],templateTable[1],templateTable[2],templateTable[3],templateTable[4],templateTable[5],templateTable[6]);
+
+           // templateValue = /*templateCRC->*/calculateCRC16(templateTable,formatedDataSend.size()-1); //atention pt un probleme de sortie du range
+            //templateValue = /*templateCRC->calculateCRC16*/CRC16_BUYPASS(formatedDataSend.c_str(),formatedDataSend.size()); //atention pt un probleme de sortie du range
+            templateValue =CRC16_BUYPASS(sneekpeek.c_str(),sneekpeek.size()); //patch
+            
+            formatedDataSend.append(1,templateValue>>8);
+            formatedDataSend.append(1,templateValue & 0xFF);
+            }
+            formatedDataReceive.append(1,write(formatedDataSend[formatedDataSend.size()-2]));//templateValue>>8));
+            //debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -D: ");
+            formatedDataReceive.append(1,write(formatedDataSend[formatedDataSend.size()-1]));//(templateValue & 0xFF));
+            //debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r -E: ");
+            
+            
+             
+            ///////////////////////
+
+            //avant faut calculer les dernier byte grace a la version 2.0
+            /*for(int i = 0; i < formatedDataSend.length(); ++i) {
+                formatedDataReceive.append(1,write(formatedDataSend[i]));
+            }*/
 
-            for (unsigned i=0; i<formatedDataReceive.length()-2; ++i) {
-                templateValue-=formatedDataReceive[i];
-            }
-            debug(DEBUG_SEND, "\n\r    -CRC==0? value: %i. ", templateValue);
-            (templateValue==0)? result=true:result=false;
+            // verification du CRC slave
+            // CRC //
+            templateValue = CRC16_BUYPASS(formatedDataReceive.c_str(),formatedDataReceive.size()-2);// utiliser les data de setting slave
+            
+            if(((templateValue>>8)==(formatedDataReceive.at( formatedDataReceive.length()-2))) &&
+                 ((templateValue&0xFF)==(formatedDataReceive.at( formatedDataReceive.length()-1))))
+            {
+                result=true;
+                }
+                else
+                {
+                    result=false;
+                    }
+            //templateValue=((formatedDataReceive.at( formatedDataReceive.length()-2)) << 8);
+            //templateValue|=formatedDataReceive.at(formatedDataReceive.length()-1);
+
+           // for (unsigned i=0; i<formatedDataReceive.length()-2; ++i) {
+           //     templateValue-=formatedDataReceive[i];
+           // }
+           // debug(DEBUG_SEND, "\n\r    -CRC==0? value: %i. ", templateValue);
+           // (templateValue==0)? result=true:result=false;
         }
-    }
-    debug(DEBUG_SEND, "\n\r    -Fin Send Data. ");
+                debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r     -Send   : ");
+        for (unsigned i=0; i<formatedDataSend.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",formatedDataSend.at(i));
+        debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM,         "\n\r     -Reveive: ");
+        for (unsigned i=0; i<formatedDataReceive.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",formatedDataReceive.at(i));
+        debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM,         "\n\r     -Sneekpe: ");
+        /*for (unsigned i=0; i<sneekpeek.length(); i++)*/ debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%04X,",CRC16_BUYPASS(formatedDataReceive.c_str(),formatedDataReceive.size()-2));//sneekpeek.at(i));
+                                                          debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r-Sneekpe: %04X,",CRC16_BUYPASS(formatedDataSend.c_str(),formatedDataSend.size()-2));//sneekpeek.at(i));
+                                                          debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "\n\r-Sneekpe: %04X,",CRC16_BUYPASS(sneekpeek.c_str(),sneekpeek.size()-2));//sneekpeek.at(i));
+                                                          
+    }//templateValue = /*templateCRC->*/calculateCRC16(formatedDataSend.c_str(),formatedDataSend.size()-1);sneekpeek
+///////////////////////
+//    // old //
+//
+//    // data //
+//    debug(DEBUG_SEND, "\n\r    -Debut data. ");
+//    if(data->size() != 0) {
+//        formatedDataSend.append(*data);
+//        debug(DEBUG_COMPACT, "\n\r    -DATA ADDED: %02X, %02X, %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2],formatedDataSend[3],formatedDataSend[4]);
+//    }
+//    debug(DEBUG_SEND, "\n\r    -Fin data. ");
+//
+//    // CRC //
+//    debug(DEBUG_SEND, "\n\r    -Debut CRC16. ");
+//    //CRC16* templateCRC;
+//    //templateCRC = new CRC16();
+//    unsigned short templateValue;
+//    char templateTable[34];
+//    for (unsigned i=0; i<34; ++i) templateTable[i]=0;
+//    for (unsigned i=0; i<formatedDataSend.length(); ++i) templateTable[i]=formatedDataSend[i];
+//    debug(DEBUG_SEND, "\n\r     - envoi au crc: %02X,%02X,%02X,%02X,%02X,%02X ",templateTable[0],templateTable[1],templateTable[2],templateTable[3],templateTable[4],templateTable[5],templateTable[6]);
+//
+//    templateValue = /*templateCRC->*/calculateCRC16(templateTable,formatedDataSend.size()-1); //atention pt un probleme de sortie du range
+//
+//    formatedDataSend.append(1,templateValue>>8);
+//    formatedDataSend.append(1,templateValue & 0xFF);
+//
+//    // if(templateCRC)
+//    //    delete templateCRC;
+//    debug(DEBUG_COMPACT, "\n\r    -DATA ADDED: %02X, %02X, %02X, %02X, %02X, %02X, %02X ",formatedDataSend[0],formatedDataSend[1],formatedDataSend[2],formatedDataSend[3],formatedDataSend[4],formatedDataSend[5],formatedDataSend[6]);
+//    debug(DEBUG_SEND, "\n\r    -Fin CRC16. ");
+//
+//    //Send Data
+//    debug(DEBUG_SEND, "\n\r    -Debut Send Data. ");
+//    debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r     -Send: ");
+//    for (unsigned i=0; i<formatedDataSend.length(); ++i) debug(DEBUG_SEND |DEBUG_COMPACT, "%02X,",formatedDataSend.at(i));
+//
+//    int twoBytesArray;
+//   twoBytesArray = (formatedDataSend[0]<<8)|(formatedDataSend[1]);
+//
+//    for(int i=0; (i<3) && (!result); i++) {
+//        debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r      -Tentative: %d",i);
+//
+//        twoBytesArray=write(twoBytesArray);
+//
+//        if(twoBytesArray>>8 == SYNC) {// twoBytesArray ==(Sync)//+(PFB+ACK+NDB))
+//            // Envoie le reste si liker si liker //
+//            debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r    -Debut Traitement de l'information. ");
+//            debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r     -Receive: %02X",twoBytesArray);
+//
+//            formatedDataReceive.clear();
+//            formatedDataReceive.append(1,twoBytesArray>>8);
+//            formatedDataReceive.append(1,twoBytesArray & 0xFF);
+//
+//    for (unsigned i=2; i<formatedDataSend.length(); ++i) {
+//        twoBytesArray = formatedDataSend[i];
+//        i++;
+//        if(i<formatedDataSend.length())
+//            twoBytesArray = (twoBytesArray<<8) + formatedDataSend[i];
+//
+//        twoBytesArray=write(twoBytesArray);
+//        formatedDataReceive.append(1,twoBytesArray>>8);
+//        formatedDataReceive.append(1,twoBytesArray&0xFF);
+//    }
+//
+//    // CRC //
+//    unsigned short templateValue=1;
+//    templateValue=formatedDataReceive.at(formatedDataReceive.length()-2) << 8;
+//    templateValue|=formatedDataReceive.at(formatedDataReceive.length()-1);
+//
+//    for (unsigned i=0; i<formatedDataReceive.length()-2; ++i) {
+//        templateValue-=formatedDataReceive[i];
+//    }
+//    debug(DEBUG_SEND, "\n\r    -CRC==0? value: %i. ", templateValue);
+//    (templateValue==0)? result=true:result=false;
+//}
+//}
+//debug(DEBUG_SEND, "\n\r    -Fin Send Data. ");
+//
+
+
+        
 
     if(result) {
         // Traitement de l'information //
         debug(DEBUG_SEND, "\n\r    -Debut Traitement de l'information. ");
         debug(DEBUG_SEND, "\n\r     -Receive: ");
-        for (unsigned i=0; i<formatedDataReceive.length(); ++i)debug(DEBUG_SEND, "%i,",formatedDataReceive.at(i));
+        for (unsigned i=0; i<formatedDataReceive.length(); ++i)debug(DEBUG_SEND|DEBUG_COMPACT, "%02X,",formatedDataReceive.at(i));
 
         // flag //
         flag->clear();
-        twoBytesArray=formatedDataReceive[2];
+        //twoBytesArray=formatedDataReceive[2];
+        //!!!!! wtf is that cest claire que sa pete la com
         string::iterator it=formatedDataReceive.begin()+3;
 
-        switch(twoBytesArray>>6) {
+        switch(settingSlave>>6) {
             case 1:
                 flag->append(1,*it);
                 it++;
@@ -281,7 +544,8 @@
 
         // NDB //
         data->clear();
-        switch(twoBytesArray&0xFF) {
+        //!!!!! same shit faut rebild la chose en bas
+        switch(settingSlave&0xFF) {
             case 1:
                 data->append(1,*it);
                 it++;
@@ -310,6 +574,6 @@
     }
 
     debug(DEBUG_SEND, "\n\r    -Fin Traitement de l'information. ");
-    debug(DEBUG_SEND, "\n\r   -Fin du send. ");
+    debug(DEBUG_SEND|DEBUG_COMPACT, "\n\r   -Fin du send. ");
     return result;
 }
\ No newline at end of file