Alexandre Salconi-Denis
/
ProjetOctopode
Programme de contrôle de l'octopode 4DOF, Theraphosa-Salconi.
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
Diff: source/CtrlBridge.cpp
- 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; }