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:
16:5ea4337d785f
Parent:
15:91b3c572d9df
Child:
17:095f670f9c14
--- a/source/CtrlBridge.cpp	Wed Apr 22 19:27:44 2015 +0000
+++ b/source/CtrlBridge.cpp	Thu Apr 23 00:53:11 2015 +0000
@@ -62,26 +62,44 @@
             data.clear();
             data.append(4,1);
             portUse = spiLowSpeed.send(i,adresse,&flag,&data);
-
+            debug(DEBUG_INITMODULE, "\n\r    -Port use result :%d", portUse);
+            
             if( portUse ) {
+                 debug(DEBUG_INITMODULE,         "\n\r         -flag get: ");
+                 for (unsigned j=0; j<flag.length(); j++) debug(DEBUG_INITMODULE, "%02X,",flag.at(j));
+                 debug(DEBUG_INITMODULE,         "\n\r         -data get: ");
+                 for (unsigned j=0; j<data.length(); j++) debug(DEBUG_INITMODULE, "%02X,",data.at(j));
+                
                 m_regPortUse|=(1<< i);
-
+                debug(DEBUG_INITMODULE, "\n\r      -Port use :%d", m_regPortUse);
+                
                 templateModule->regA = adresse;
+                debug(DEBUG_INITMODULE, "\n\r      -Adrr use :%d", adresse);
+                
                 templateModule->regB = (spiLowSpeed.get_demux()<<4)+(data[0]&0x0F);
+                templateModule->regB |=  data[0];
+                debug(DEBUG_INITMODULE, "\n\r      -regB use :%02X", templateModule->regB);
+                
                 templateModule->regC = data[1];
+                debug(DEBUG_INITMODULE, "\n\r      -regC use :%02X", templateModule->regC);
+                
                 templateModule->regD = data[2];
-
+                debug(DEBUG_INITMODULE, "\n\r      -regD use :%02X", templateModule->regD);
+    
                 switch(templateModule->regD >>6) {
                     case 1://Capteur
+                        debug(DEBUG_INITMODULE, "\n\r        -Add Capteur");
                         m_Memory.addCapteur(*templateModule);
                         break;
 
                     case 2://Actionneur
+                        debug(DEBUG_INITMODULE, "\n\r        -Add Actionneur");
                         m_Memory.addActioneur(*templateModule);
                         break;
 
 
                     case 3://Memoire
+                        debug(DEBUG_INITMODULE, "\n\r        -Add Memoire");
                         m_Memory.addMemoire(*templateModule);
                         break;
 
@@ -89,7 +107,7 @@
                         break;
                 }
 
-                if(flag[0] != CONTIEN_AUTRE_MODULE)
+                if(flag[0] == SLAVE_NO_MORE_EMPTY_ADDR_MODULE)
                     portUse=false;
 
             }
@@ -117,15 +135,18 @@
 
 bool CtrlBridge::send( const unsigned char &adresse,string &flag, string &data)
 {
+    debug(DEBUF_SEND, "\n\rSend::Debut");
     bool result = false;
     Module moduleRequested;
     if(m_Memory.isAdresseValide(adresse,moduleRequested)) {
 
-        if(adresse&0x80)spiLowSpeed.send(moduleRequested.regB>>4,adresse,&flag,&data);
-        else spiHighSpeed.send(moduleRequested.regB>>4,adresse,&flag,&data);
-        result = true;
+        if(adresse&0x80)
+            result = spiLowSpeed.send(moduleRequested.regB>>4,adresse,&flag,&data);
+        else
+            result = spiHighSpeed.send(moduleRequested.regB>>4,adresse,&flag,&data);
+        //result = true;
     }
-
+    debug(DEBUF_SEND, "\n\rSend::Fin");
     return result;
 }
 
@@ -136,6 +157,11 @@
     int maxSize;
     Module moduleScan;
     bool goodModule;
+    
+    debug(DEBUF_FINDMODULE, "\n\r  -peripheriqueID: %02X",peripheriqueID);
+    debug(DEBUF_FINDMODULE, "\n\r  -type:           %02X",type);
+    debug(DEBUF_FINDMODULE, "\n\r  -sousType:       %02X",sousType);
+    debug(DEBUF_FINDMODULE, "\n\r  -posSpatial:     %02X",posSpatial);
 
     debug(DEBUF_FINDMODULE, "\n\r -Debut scan Actioneur");
     maxSize = m_Memory.getSizeActioneur();
@@ -148,14 +174,16 @@
         else if((sousType != 0) && (sousType != (moduleScan.regD & 0x3F))) goodModule =false;
         else if((posSpatial != 0) && (sousType != (moduleScan.regC & 0x3F))) goodModule =false;
 
-        if(goodModule)
+        if(goodModule){
             result.append(1,moduleScan.regA);
+            debug(DEBUF_FINDMODULE, "\n\r  -Find one!");
+            }
         if((goodModule)&&(peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)) goodModule =false;
 
         moduleScan= m_Memory.nextActioneur();
     }
     debug(DEBUF_FINDMODULE, "\n\r -Fin scan Actioneur");
-    debug(DEBUF_FINDMODULE, "\n\r -Result size: %i",result.size());
+    //debug(DEBUF_FINDMODULE, "\n\r -Result size: %0i",result.size());
     debug(DEBUF_FINDMODULE, "\n\r -Debut scan Capteur");
 
     maxSize = m_Memory.getSizeCapteur();
@@ -168,14 +196,16 @@
         else if((sousType != 0) && (sousType != (moduleScan.regD & 0x3F))) goodModule =false;
         else if((posSpatial != 0) && (sousType != (moduleScan.regC & 0x3F))) goodModule =false;
 
-        if(goodModule)
+        if(goodModule){
             result.append(1,moduleScan.regA);
+            debug(DEBUF_FINDMODULE, "\n\r  -Find one!");
+            }
         if((goodModule)&&(peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)) goodModule =false;
 
         moduleScan= m_Memory.nextCapteur();
     }
     debug(DEBUF_FINDMODULE, "\n\r -Fin scan Capteur");
-    debug(DEBUF_FINDMODULE, "\n\r -Result size: %i",result.size());
+    //debug(DEBUF_FINDMODULE, "\n\r -Result size: %0i",result.size());
     debug(DEBUF_FINDMODULE, "\n\r -Debut scan Memoire");
 
     maxSize = m_Memory.getSizeMemoire();
@@ -188,14 +218,16 @@
         else if((sousType != 0) && (sousType != (moduleScan.regD & 0x3F))) goodModule =false;
         else if((posSpatial != 0) && (sousType != (moduleScan.regC & 0x3F))) goodModule =false;
 
-        if(goodModule)
+        if(goodModule){
             result.append(1,moduleScan.regA);
+            debug(DEBUF_FINDMODULE, "\n\r  -Find one!");
+            }
         if((goodModule)&&(peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)) goodModule =false;
 
         moduleScan= m_Memory.nextMemoire();
     }
     debug(DEBUF_FINDMODULE, "\n\r -Fin scan Memoire");
-    debug(DEBUF_FINDMODULE, "\n\r -Result size: %i",result.size());
+   // debug(DEBUF_FINDMODULE, "\n\r -Result size: %0i",result.size());
     debug(DEBUF_FINDMODULE, "\n\rFindModule::Fin");
     return result;
 }