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
source/CtrlBridge.cpp@28:ac5c6350ed9a, 2015-07-28 (annotated)
- Committer:
- salco
- Date:
- Tue Jul 28 01:22:16 2015 +0000
- Revision:
- 28:ac5c6350ed9a
- Parent:
- 27:ea60d12dccdf
- Child:
- 39:34d7802e8d15
tsest
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
salco | 8:e017e3d527d7 | 1 | |
salco | 8:e017e3d527d7 | 2 | #include "CtrlBridge.h" |
salco | 8:e017e3d527d7 | 3 | |
salco | 8:e017e3d527d7 | 4 | CtrlBridge *CtrlBridge::uniqueInstance; |
salco | 8:e017e3d527d7 | 5 | |
salco | 8:e017e3d527d7 | 6 | /** |
salco | 8:e017e3d527d7 | 7 | * @brief Constructeur priver appler par la fonction getInstance() |
salco | 8:e017e3d527d7 | 8 | */ |
salco | 9:7295385f02b2 | 9 | CtrlBridge::CtrlBridge() |
salco | 11:496453b45e25 | 10 | : m_Memory(), ssc32(PA_9, PA_10), |
salco | 9:7295385f02b2 | 11 | spiLowSpeed (SPI_LOW_MOSI, SPI_LOW_MISO, SPI_LOW_SCK, SPI_LOW_DEMUXA, SPI_LOW_DEMUXB, SPI_LOW_DEMUXC, SPI_LOW_DEMUXD, SPI_LOW_CS), |
salco | 11:496453b45e25 | 12 | spiHighSpeed(SPI_HIGH_MOSI, SPI_HIGH_MISO, SPI_HIGH_SCK, SPI_HIGH_DEMUXA, SPI_HIGH_DEMUXB, SPI_HIGH_DEMUXC, SPI_HIGH_DEMUXD, SPI_HIGH_CS), |
salco | 11:496453b45e25 | 13 | pc(SERIAL_TX, SERIAL_RX) |
salco | 8:e017e3d527d7 | 14 | { |
salco | 9:7295385f02b2 | 15 | //faire en sorte d'init SPI speed ici |
salco | 9:7295385f02b2 | 16 | m_regPortUse=0; |
salco | 9:7295385f02b2 | 17 | m_regPortLost=0; |
salco | 15:91b3c572d9df | 18 | spiLowSpeed.format(8,0); |
salco | 27:ea60d12dccdf | 19 | spiLowSpeed.frequency(10000/**/); |
salco | 8:e017e3d527d7 | 20 | } |
salco | 8:e017e3d527d7 | 21 | |
salco | 8:e017e3d527d7 | 22 | CtrlBridge::~CtrlBridge() |
salco | 8:e017e3d527d7 | 23 | { |
salco | 9:7295385f02b2 | 24 | } |
salco | 9:7295385f02b2 | 25 | |
salco | 8:e017e3d527d7 | 26 | /** |
salco | 8:e017e3d527d7 | 27 | * @brief Methode permetant une seul instance de la classe |
salco | 8:e017e3d527d7 | 28 | * @return Retourne l'unique instance de la classe |
salco | 8:e017e3d527d7 | 29 | */ |
salco | 8:e017e3d527d7 | 30 | CtrlBridge *CtrlBridge::getInstance() |
salco | 8:e017e3d527d7 | 31 | { |
salco | 9:7295385f02b2 | 32 | if(!uniqueInstance) { |
salco | 8:e017e3d527d7 | 33 | uniqueInstance = new CtrlBridge(); |
salco | 8:e017e3d527d7 | 34 | } |
salco | 8:e017e3d527d7 | 35 | return uniqueInstance; |
salco | 8:e017e3d527d7 | 36 | } |
salco | 8:e017e3d527d7 | 37 | |
salco | 8:e017e3d527d7 | 38 | bool CtrlBridge::initCom(void) |
salco | 8:e017e3d527d7 | 39 | { |
salco | 9:7295385f02b2 | 40 | //char positionInitial; |
salco | 9:7295385f02b2 | 41 | bool portUse; |
salco | 14:ca1a9230ba7f | 42 | unsigned char adresse; |
salco | 10:7e6aeaebe1a2 | 43 | string flag; |
salco | 10:7e6aeaebe1a2 | 44 | string data; |
salco | 10:7e6aeaebe1a2 | 45 | Module* templateModule ; |
salco | 10:7e6aeaebe1a2 | 46 | templateModule= new Module; |
salco | 14:ca1a9230ba7f | 47 | |
salco | 14:ca1a9230ba7f | 48 | debug(DEBUG_INITMODULE, "\n\rInit::debut"); |
salco | 11:496453b45e25 | 49 | //flag.clear(); |
salco | 11:496453b45e25 | 50 | //flag.append(1,Request_Init_Info); |
salco | 9:7295385f02b2 | 51 | //positionInitial = spiLowSpeed.next_demux(); |
salco | 9:7295385f02b2 | 52 | for(char i=0; i != 15; i++) { |
salco | 11:496453b45e25 | 53 | debug(DEBUG_INITMODULE, "\n\r -Debut de boucle :%d ", i); |
salco | 14:ca1a9230ba7f | 54 | //flag = Request_Init_Info; |
salco | 14:ca1a9230ba7f | 55 | //portUse = spiLowSpeed.send(i,0,&flag,&data); |
salco | 14:ca1a9230ba7f | 56 | //if( portUse ) { |
salco | 14:ca1a9230ba7f | 57 | // m_regPortUse|=(1<< i); |
salco | 10:7e6aeaebe1a2 | 58 | |
salco | 14:ca1a9230ba7f | 59 | do { |
salco | 28:ac5c6350ed9a | 60 | debug(DEBUG_INITMODULE," IN"); |
salco | 14:ca1a9230ba7f | 61 | flag = Request_Init_Info; |
salco | 15:91b3c572d9df | 62 | adresse = m_Memory.getAdressDispo(0x80);//80 parce que cest le conecteur droit |
salco | 18:3f113f8441b2 | 63 | debug(DEBUG_INITMODULE, "\n\r -addresse use :%d", adresse); |
salco | 14:ca1a9230ba7f | 64 | data.clear(); |
salco | 15:91b3c572d9df | 65 | data.append(4,1); |
salco | 14:ca1a9230ba7f | 66 | portUse = spiLowSpeed.send(i,adresse,&flag,&data); |
salco | 16:5ea4337d785f | 67 | debug(DEBUG_INITMODULE, "\n\r -Port use result :%d", portUse); |
salco | 16:5ea4337d785f | 68 | |
salco | 17:095f670f9c14 | 69 | if((flag.empty()) && (data.empty()))// data vide |
salco | 17:095f670f9c14 | 70 | portUse=false; |
salco | 17:095f670f9c14 | 71 | |
salco | 14:ca1a9230ba7f | 72 | if( portUse ) { |
salco | 16:5ea4337d785f | 73 | debug(DEBUG_INITMODULE, "\n\r -flag get: "); |
salco | 16:5ea4337d785f | 74 | for (unsigned j=0; j<flag.length(); j++) debug(DEBUG_INITMODULE, "%02X,",flag.at(j)); |
salco | 16:5ea4337d785f | 75 | debug(DEBUG_INITMODULE, "\n\r -data get: "); |
salco | 16:5ea4337d785f | 76 | for (unsigned j=0; j<data.length(); j++) debug(DEBUG_INITMODULE, "%02X,",data.at(j)); |
salco | 16:5ea4337d785f | 77 | |
salco | 17:095f670f9c14 | 78 | |
salco | 14:ca1a9230ba7f | 79 | m_regPortUse|=(1<< i); |
salco | 16:5ea4337d785f | 80 | debug(DEBUG_INITMODULE, "\n\r -Port use :%d", m_regPortUse); |
salco | 16:5ea4337d785f | 81 | |
salco | 14:ca1a9230ba7f | 82 | templateModule->regA = adresse; |
salco | 16:5ea4337d785f | 83 | debug(DEBUG_INITMODULE, "\n\r -Adrr use :%d", adresse); |
salco | 16:5ea4337d785f | 84 | |
salco | 10:7e6aeaebe1a2 | 85 | templateModule->regB = (spiLowSpeed.get_demux()<<4)+(data[0]&0x0F); |
salco | 16:5ea4337d785f | 86 | templateModule->regB |= data[0]; |
salco | 16:5ea4337d785f | 87 | debug(DEBUG_INITMODULE, "\n\r -regB use :%02X", templateModule->regB); |
salco | 16:5ea4337d785f | 88 | |
salco | 10:7e6aeaebe1a2 | 89 | templateModule->regC = data[1]; |
salco | 16:5ea4337d785f | 90 | debug(DEBUG_INITMODULE, "\n\r -regC use :%02X", templateModule->regC); |
salco | 16:5ea4337d785f | 91 | |
salco | 10:7e6aeaebe1a2 | 92 | templateModule->regD = data[2]; |
salco | 16:5ea4337d785f | 93 | debug(DEBUG_INITMODULE, "\n\r -regD use :%02X", templateModule->regD); |
salco | 16:5ea4337d785f | 94 | |
salco | 10:7e6aeaebe1a2 | 95 | switch(templateModule->regD >>6) { |
salco | 10:7e6aeaebe1a2 | 96 | case 1://Capteur |
salco | 16:5ea4337d785f | 97 | debug(DEBUG_INITMODULE, "\n\r -Add Capteur"); |
salco | 10:7e6aeaebe1a2 | 98 | m_Memory.addCapteur(*templateModule); |
salco | 10:7e6aeaebe1a2 | 99 | break; |
salco | 10:7e6aeaebe1a2 | 100 | |
salco | 10:7e6aeaebe1a2 | 101 | case 2://Actionneur |
salco | 16:5ea4337d785f | 102 | debug(DEBUG_INITMODULE, "\n\r -Add Actionneur"); |
salco | 10:7e6aeaebe1a2 | 103 | m_Memory.addActioneur(*templateModule); |
salco | 10:7e6aeaebe1a2 | 104 | break; |
salco | 10:7e6aeaebe1a2 | 105 | |
salco | 10:7e6aeaebe1a2 | 106 | |
salco | 10:7e6aeaebe1a2 | 107 | case 3://Memoire |
salco | 16:5ea4337d785f | 108 | debug(DEBUG_INITMODULE, "\n\r -Add Memoire"); |
salco | 10:7e6aeaebe1a2 | 109 | m_Memory.addMemoire(*templateModule); |
salco | 10:7e6aeaebe1a2 | 110 | break; |
salco | 14:ca1a9230ba7f | 111 | |
salco | 14:ca1a9230ba7f | 112 | default: |
salco | 10:7e6aeaebe1a2 | 113 | break; |
salco | 10:7e6aeaebe1a2 | 114 | } |
salco | 10:7e6aeaebe1a2 | 115 | |
salco | 16:5ea4337d785f | 116 | if(flag[0] == SLAVE_NO_MORE_EMPTY_ADDR_MODULE) |
salco | 10:7e6aeaebe1a2 | 117 | portUse=false; |
salco | 14:ca1a9230ba7f | 118 | |
salco | 14:ca1a9230ba7f | 119 | } |
salco | 28:ac5c6350ed9a | 120 | debug(DEBUG_INITMODULE," OUT"); |
salco | 14:ca1a9230ba7f | 121 | } while(portUse); |
salco | 13:51bbdc349f20 | 122 | debug(DEBUG_INITMODULE, "\n\r -Fin de boucle :%d", i); |
salco | 9:7295385f02b2 | 123 | } |
salco | 9:7295385f02b2 | 124 | |
salco | 10:7e6aeaebe1a2 | 125 | if(templateModule) |
salco | 14:ca1a9230ba7f | 126 | delete templateModule; |
salco | 14:ca1a9230ba7f | 127 | |
salco | 12:bf44013497c8 | 128 | debug(DEBUG_INITMODULE, "\n\rInit::Fin"); |
salco | 8:e017e3d527d7 | 129 | return true; |
salco | 14:ca1a9230ba7f | 130 | } |
salco | 14:ca1a9230ba7f | 131 | |
salco | 14:ca1a9230ba7f | 132 | bool CtrlBridge::tryComPort(char portID) |
salco | 14:ca1a9230ba7f | 133 | { |
salco | 14:ca1a9230ba7f | 134 | if(portID <= (char)-1)portID=0; |
salco | 14:ca1a9230ba7f | 135 | if(portID > 15)portID=15; |
salco | 14:ca1a9230ba7f | 136 | string flag; |
salco | 14:ca1a9230ba7f | 137 | flag.clear(); |
salco | 14:ca1a9230ba7f | 138 | string data; |
salco | 14:ca1a9230ba7f | 139 | data.clear(); |
salco | 14:ca1a9230ba7f | 140 | return spiLowSpeed.send(portID,0,&flag,&data); |
salco | 14:ca1a9230ba7f | 141 | } |
salco | 14:ca1a9230ba7f | 142 | |
salco | 15:91b3c572d9df | 143 | bool CtrlBridge::send( const unsigned char &adresse,string &flag, string &data) |
salco | 14:ca1a9230ba7f | 144 | { |
salco | 16:5ea4337d785f | 145 | debug(DEBUF_SEND, "\n\rSend::Debut"); |
salco | 14:ca1a9230ba7f | 146 | bool result = false; |
salco | 14:ca1a9230ba7f | 147 | Module moduleRequested; |
salco | 14:ca1a9230ba7f | 148 | if(m_Memory.isAdresseValide(adresse,moduleRequested)) { |
salco | 14:ca1a9230ba7f | 149 | |
salco | 16:5ea4337d785f | 150 | if(adresse&0x80) |
salco | 27:ea60d12dccdf | 151 | { |
salco | 27:ea60d12dccdf | 152 | debug(DEBUF_SEND, "\n\rPointeur SPI: %d",&spiLowSpeed); |
salco | 27:ea60d12dccdf | 153 | //debug(DEBUF_SEND, "\n\rPointeur SPI: %p",spiLowSpeed); |
salco | 16:5ea4337d785f | 154 | result = spiLowSpeed.send(moduleRequested.regB>>4,adresse,&flag,&data); |
salco | 27:ea60d12dccdf | 155 | } |
salco | 16:5ea4337d785f | 156 | else |
salco | 16:5ea4337d785f | 157 | result = spiHighSpeed.send(moduleRequested.regB>>4,adresse,&flag,&data); |
salco | 16:5ea4337d785f | 158 | //result = true; |
salco | 14:ca1a9230ba7f | 159 | } |
salco | 16:5ea4337d785f | 160 | debug(DEBUF_SEND, "\n\rSend::Fin"); |
salco | 14:ca1a9230ba7f | 161 | return result; |
salco | 14:ca1a9230ba7f | 162 | } |
salco | 14:ca1a9230ba7f | 163 | |
salco | 14:ca1a9230ba7f | 164 | string CtrlBridge::findModule(const char &peripheriqueID, const char &type, const char &sousType, const char &posSpatial) |
salco | 14:ca1a9230ba7f | 165 | { |
salco | 14:ca1a9230ba7f | 166 | debug(DEBUF_FINDMODULE, "\n\rFindModule::Debut"); |
salco | 14:ca1a9230ba7f | 167 | string result; |
salco | 14:ca1a9230ba7f | 168 | int maxSize; |
salco | 14:ca1a9230ba7f | 169 | Module moduleScan; |
salco | 14:ca1a9230ba7f | 170 | bool goodModule; |
salco | 16:5ea4337d785f | 171 | |
salco | 16:5ea4337d785f | 172 | debug(DEBUF_FINDMODULE, "\n\r -peripheriqueID: %02X",peripheriqueID); |
salco | 16:5ea4337d785f | 173 | debug(DEBUF_FINDMODULE, "\n\r -type: %02X",type); |
salco | 16:5ea4337d785f | 174 | debug(DEBUF_FINDMODULE, "\n\r -sousType: %02X",sousType); |
salco | 16:5ea4337d785f | 175 | debug(DEBUF_FINDMODULE, "\n\r -posSpatial: %02X",posSpatial); |
salco | 14:ca1a9230ba7f | 176 | |
salco | 14:ca1a9230ba7f | 177 | debug(DEBUF_FINDMODULE, "\n\r -Debut scan Actioneur"); |
salco | 14:ca1a9230ba7f | 178 | maxSize = m_Memory.getSizeActioneur(); |
salco | 27:ea60d12dccdf | 179 | debug(DEBUF_FINDMODULE, "\n\r -MaxSize: %02d",maxSize); |
salco | 14:ca1a9230ba7f | 180 | goodModule = true; |
salco | 14:ca1a9230ba7f | 181 | moduleScan= m_Memory.firstActioneur(); |
salco | 14:ca1a9230ba7f | 182 | |
salco | 14:ca1a9230ba7f | 183 | for(int i=0; i < maxSize; i++) { |
salco | 27:ea60d12dccdf | 184 | if((peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)){ |
salco | 27:ea60d12dccdf | 185 | goodModule =false; |
salco | 27:ea60d12dccdf | 186 | debug(DEBUF_FINDMODULE, "\n\r -peripheriqueID: %02d == moduleScan.regB>>4: %02d",peripheriqueID,moduleScan.regB>>4); |
salco | 27:ea60d12dccdf | 187 | } |
salco | 27:ea60d12dccdf | 188 | else if((type != 0) && (type != moduleScan.regD>>6)){ |
salco | 27:ea60d12dccdf | 189 | goodModule =false; |
salco | 27:ea60d12dccdf | 190 | debug(DEBUF_FINDMODULE, "\n\r -type: %02d == moduleScan.regD>>6: %02d",type,moduleScan.regD>>6); |
salco | 27:ea60d12dccdf | 191 | } |
salco | 27:ea60d12dccdf | 192 | else if((sousType != 0) && (sousType != (moduleScan.regD & 0x3F))){ |
salco | 27:ea60d12dccdf | 193 | goodModule =false; |
salco | 27:ea60d12dccdf | 194 | debug(DEBUF_FINDMODULE, "\n\r -sousType: %02d == (moduleScan.regD & 0x3F): %02d",sousType,(moduleScan.regD & 0x3F)); |
salco | 27:ea60d12dccdf | 195 | } |
salco | 27:ea60d12dccdf | 196 | else if((posSpatial != 0) && (posSpatial != (moduleScan.regC & 0x3F))){ |
salco | 27:ea60d12dccdf | 197 | goodModule =false; |
salco | 27:ea60d12dccdf | 198 | debug(DEBUF_FINDMODULE, "\n\r -posSpatial: %02d == (moduleScan.regC & 0x3F): %02d",posSpatial,(moduleScan.regC & 0x3F)); |
salco | 27:ea60d12dccdf | 199 | } |
salco | 14:ca1a9230ba7f | 200 | |
salco | 16:5ea4337d785f | 201 | if(goodModule){ |
salco | 14:ca1a9230ba7f | 202 | result.append(1,moduleScan.regA); |
salco | 16:5ea4337d785f | 203 | debug(DEBUF_FINDMODULE, "\n\r -Find one!"); |
salco | 16:5ea4337d785f | 204 | } |
salco | 14:ca1a9230ba7f | 205 | if((goodModule)&&(peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)) goodModule =false; |
salco | 14:ca1a9230ba7f | 206 | |
salco | 14:ca1a9230ba7f | 207 | moduleScan= m_Memory.nextActioneur(); |
salco | 14:ca1a9230ba7f | 208 | } |
salco | 14:ca1a9230ba7f | 209 | debug(DEBUF_FINDMODULE, "\n\r -Fin scan Actioneur"); |
salco | 16:5ea4337d785f | 210 | //debug(DEBUF_FINDMODULE, "\n\r -Result size: %0i",result.size()); |
salco | 14:ca1a9230ba7f | 211 | debug(DEBUF_FINDMODULE, "\n\r -Debut scan Capteur"); |
salco | 14:ca1a9230ba7f | 212 | |
salco | 14:ca1a9230ba7f | 213 | maxSize = m_Memory.getSizeCapteur(); |
salco | 27:ea60d12dccdf | 214 | debug(DEBUF_FINDMODULE, "\n\r -MaxSize: %02d",maxSize); |
salco | 27:ea60d12dccdf | 215 | |
salco | 14:ca1a9230ba7f | 216 | moduleScan= m_Memory.firstCapteur(); |
salco | 14:ca1a9230ba7f | 217 | |
salco | 14:ca1a9230ba7f | 218 | for(int i=0; i < maxSize; i++) { |
salco | 27:ea60d12dccdf | 219 | goodModule = true; |
salco | 27:ea60d12dccdf | 220 | debug(DEBUF_FINDMODULE, "\n\r -adresse: %02x",moduleScan.regA); |
salco | 27:ea60d12dccdf | 221 | debug(DEBUF_FINDMODULE, "\n\r -peripheriqueID: %02d == moduleScan.regB>>4: %02d",peripheriqueID,moduleScan.regB>>4); |
salco | 27:ea60d12dccdf | 222 | debug(DEBUF_FINDMODULE, "\n\r -type: %02d == moduleScan.regD>>6: %02d",type,moduleScan.regD>>6); |
salco | 27:ea60d12dccdf | 223 | debug(DEBUF_FINDMODULE, "\n\r -sousType: %02d == (moduleScan.regD & 0x3F): %02d",sousType,(moduleScan.regD & 0x3F)); |
salco | 27:ea60d12dccdf | 224 | debug(DEBUF_FINDMODULE, "\n\r -posSpatial: %02d == (moduleScan.regC & 0x3F): %02d",posSpatial,(moduleScan.regC & 0x3F)); |
salco | 27:ea60d12dccdf | 225 | |
salco | 27:ea60d12dccdf | 226 | if((peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)){ |
salco | 27:ea60d12dccdf | 227 | goodModule =false; |
salco | 27:ea60d12dccdf | 228 | debug(DEBUF_FINDMODULE, "\n\r -false"); |
salco | 27:ea60d12dccdf | 229 | } |
salco | 27:ea60d12dccdf | 230 | else if((type != 0) && (type != moduleScan.regD>>6)){ |
salco | 27:ea60d12dccdf | 231 | goodModule =false; |
salco | 27:ea60d12dccdf | 232 | debug(DEBUF_FINDMODULE, "\n\r -false"); |
salco | 27:ea60d12dccdf | 233 | } |
salco | 27:ea60d12dccdf | 234 | else if((sousType != 0) && (sousType != (moduleScan.regD & 0x3F))){ |
salco | 27:ea60d12dccdf | 235 | goodModule =false; |
salco | 27:ea60d12dccdf | 236 | debug(DEBUF_FINDMODULE, "\n\r -false"); |
salco | 27:ea60d12dccdf | 237 | } |
salco | 27:ea60d12dccdf | 238 | else if((posSpatial != 0) && (posSpatial != (moduleScan.regC & 0x3F))){ |
salco | 27:ea60d12dccdf | 239 | goodModule =false; |
salco | 27:ea60d12dccdf | 240 | debug(DEBUF_FINDMODULE, "\n\r -false"); |
salco | 27:ea60d12dccdf | 241 | } |
salco | 14:ca1a9230ba7f | 242 | |
salco | 16:5ea4337d785f | 243 | if(goodModule){ |
salco | 14:ca1a9230ba7f | 244 | result.append(1,moduleScan.regA); |
salco | 16:5ea4337d785f | 245 | debug(DEBUF_FINDMODULE, "\n\r -Find one!"); |
salco | 16:5ea4337d785f | 246 | } |
salco | 14:ca1a9230ba7f | 247 | if((goodModule)&&(peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)) goodModule =false; |
salco | 14:ca1a9230ba7f | 248 | |
salco | 14:ca1a9230ba7f | 249 | moduleScan= m_Memory.nextCapteur(); |
salco | 14:ca1a9230ba7f | 250 | } |
salco | 14:ca1a9230ba7f | 251 | debug(DEBUF_FINDMODULE, "\n\r -Fin scan Capteur"); |
salco | 16:5ea4337d785f | 252 | //debug(DEBUF_FINDMODULE, "\n\r -Result size: %0i",result.size()); |
salco | 14:ca1a9230ba7f | 253 | debug(DEBUF_FINDMODULE, "\n\r -Debut scan Memoire"); |
salco | 14:ca1a9230ba7f | 254 | |
salco | 14:ca1a9230ba7f | 255 | maxSize = m_Memory.getSizeMemoire(); |
salco | 27:ea60d12dccdf | 256 | debug(DEBUF_FINDMODULE, "\n\r -MaxSize: %02d",maxSize); |
salco | 14:ca1a9230ba7f | 257 | goodModule = true; |
salco | 14:ca1a9230ba7f | 258 | moduleScan= m_Memory.firstMemoire(); |
salco | 14:ca1a9230ba7f | 259 | |
salco | 14:ca1a9230ba7f | 260 | for(int i=0; i < maxSize; i++) { |
salco | 27:ea60d12dccdf | 261 | if((peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)){ |
salco | 27:ea60d12dccdf | 262 | goodModule =false; |
salco | 27:ea60d12dccdf | 263 | debug(DEBUF_FINDMODULE, "\n\r -peripheriqueID: %02d == moduleScan.regB>>4: %02d",peripheriqueID,moduleScan.regB>>4); |
salco | 27:ea60d12dccdf | 264 | } |
salco | 27:ea60d12dccdf | 265 | else if((type != 0) && (type != moduleScan.regD>>6)){ |
salco | 27:ea60d12dccdf | 266 | goodModule =false; |
salco | 27:ea60d12dccdf | 267 | debug(DEBUF_FINDMODULE, "\n\r -type: %02d == moduleScan.regD>>6: %02d",type,moduleScan.regD>>6); |
salco | 27:ea60d12dccdf | 268 | } |
salco | 27:ea60d12dccdf | 269 | else if((sousType != 0) && (sousType != (moduleScan.regD & 0x3F))){ |
salco | 27:ea60d12dccdf | 270 | goodModule =false; |
salco | 27:ea60d12dccdf | 271 | debug(DEBUF_FINDMODULE, "\n\r -sousType: %02d == (moduleScan.regD & 0x3F): %02d",sousType,(moduleScan.regD & 0x3F)); |
salco | 27:ea60d12dccdf | 272 | } |
salco | 27:ea60d12dccdf | 273 | else if((posSpatial != 0) && (posSpatial != (moduleScan.regC & 0x3F))){ |
salco | 27:ea60d12dccdf | 274 | goodModule =false; |
salco | 27:ea60d12dccdf | 275 | debug(DEBUF_FINDMODULE, "\n\r -posSpatial: %02d == (moduleScan.regC & 0x3F): %02d",posSpatial,(moduleScan.regC & 0x3F)); |
salco | 27:ea60d12dccdf | 276 | } |
salco | 14:ca1a9230ba7f | 277 | |
salco | 16:5ea4337d785f | 278 | if(goodModule){ |
salco | 14:ca1a9230ba7f | 279 | result.append(1,moduleScan.regA); |
salco | 16:5ea4337d785f | 280 | debug(DEBUF_FINDMODULE, "\n\r -Find one!"); |
salco | 16:5ea4337d785f | 281 | } |
salco | 14:ca1a9230ba7f | 282 | if((goodModule)&&(peripheriqueID != 0) && (peripheriqueID != moduleScan.regB>>4)) goodModule =false; |
salco | 14:ca1a9230ba7f | 283 | |
salco | 14:ca1a9230ba7f | 284 | moduleScan= m_Memory.nextMemoire(); |
salco | 14:ca1a9230ba7f | 285 | } |
salco | 14:ca1a9230ba7f | 286 | debug(DEBUF_FINDMODULE, "\n\r -Fin scan Memoire"); |
salco | 16:5ea4337d785f | 287 | // debug(DEBUF_FINDMODULE, "\n\r -Result size: %0i",result.size()); |
salco | 14:ca1a9230ba7f | 288 | debug(DEBUF_FINDMODULE, "\n\rFindModule::Fin"); |
salco | 14:ca1a9230ba7f | 289 | return result; |
salco | 14:ca1a9230ba7f | 290 | } |
salco | 14:ca1a9230ba7f | 291 | |
salco | 14:ca1a9230ba7f | 292 | int CtrlBridge::size(const char &peripheriqueID, const char &type, const char &sousType, const char &posSpatial) |
salco | 14:ca1a9230ba7f | 293 | { |
salco | 14:ca1a9230ba7f | 294 | int result; |
salco | 14:ca1a9230ba7f | 295 | string templateString; |
salco | 14:ca1a9230ba7f | 296 | |
salco | 14:ca1a9230ba7f | 297 | templateString = findModule(peripheriqueID,type,sousType,posSpatial); |
salco | 14:ca1a9230ba7f | 298 | result = templateString.size()-1;//pas sure si on met -1 |
salco | 14:ca1a9230ba7f | 299 | return result; |
salco | 9:7295385f02b2 | 300 | } |