![](/media/cache/profiles/4b0986230d9d7aded7f0c24033d221d4.jpg.50x50_q85.jpg)
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/ComSpi.cpp
- Revision:
- 17:095f670f9c14
- Parent:
- 16:5ea4337d785f
- Child:
- 18:3f113f8441b2
diff -r 5ea4337d785f -r 095f670f9c14 source/ComSpi.cpp --- a/source/ComSpi.cpp Thu Apr 23 00:53:11 2015 +0000 +++ b/source/ComSpi.cpp Thu Apr 23 14:44:08 2015 +0000 @@ -68,7 +68,7 @@ if(m_demuxPos & 8) pinDemuxD=1; //0b1000 else pinDemuxD=0; //wait(1); - // pinDemuxEnable=1; + // pinDemuxEnable=1; //wait(1); } } @@ -105,27 +105,27 @@ unsigned char spiCurrentState; int ComSpi::write(int value) { - DigitalOut pinDemuxEnable(m_demuxEnable); + DigitalOut pinDemuxEnable(m_demuxEnable); //DigitalOut pinDemuxEnable(m_demuxEnable,0); int a; - pinDemuxEnable=1; - /* switch(spiCurrentState) + pinDemuxEnable=1; + /* switch(spiCurrentState) { - case 0: - a= SPI::write(0x12); - spiCurrentState++; - break; - default: - a= SPI::write(0xF5); - spiCurrentState =0; - break; + case 0: + a= SPI::write(0x12); + spiCurrentState++; + break; + default: + a= SPI::write(0xF5); + spiCurrentState =0; + break; }*/ - wait_us(5); + wait_us(5); a= SPI::write(value); wait_us(5); - pinDemuxEnable=0; - sneekpeek.append(1,value); - wait_us(1000); + pinDemuxEnable=0; + sneekpeek.append(1,value); + wait_us(1000); return a; } @@ -164,8 +164,8 @@ // PFB // debug(DEBUG_SEND, "\n\r -Debut PFB. "); - // if(flag != 0) - // { + // if(flag != 0) + // { switch(flag->size()) { case 1: if(flag->at(0) == 0) formatedDataSend.append(1,0<<6); //0 byte @@ -217,7 +217,7 @@ debug(DEBUG_SEND, "\n\r -Fin NDB. "); settingMaster = formatedDataSend[formatedDataSend.length()-1]; - + // flag // debug(DEBUG_SEND, "\n\r -Debut flag. "); if(flag->size() != 0) { @@ -229,7 +229,7 @@ //ici tu envoi deja ton premier stuf - debug(DEBUG_SLIM, "\n\r -settingMaster : %X , %i, %X ",settingMaster, (2+(settingMaster>>6)),formatedDataSend[(2+(settingMaster>>6))] ); +//debug(DEBUG_SLIM, "\n\r -settingMaster : %X , %i, %X ",settingMaster, (2+(settingMaster>>6)),formatedDataSend[(2+(settingMaster>>6))] ); @@ -257,13 +257,13 @@ if(formatedDataReceive[0] == SYNC) { debug(DEBUG_COMPACT, "\n\r -Receve transmission. "); //!!!!!!!! Problem ici write dans un mais pas lautre - wait_us(3000); + 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: "); - + // 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) { @@ -298,20 +298,25 @@ counterTotale = ((2+(settingMaster>>6))+1); counterTotale = counterTotale+(settingSlave>>6)+abs((settingMaster & 0x0F) - (settingSlave & 0x0F)); - debug( "\n\r -size : %02X",counterTotale); - + //debug( "\n\r -size : %02X",counterTotale); + 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); + //formatedDataSend.append(1,1<<6); //1 byte flag + //formatedDataSend.append(settingSlave & 0x0F,0); //chek pour comment avoir un address + if(formatedDataSend.size()<counterTotale) { + formatedDataSend.append(counterTotale+1-formatedDataSend.size(),0); + } } //verifier si la fonction fait ce quil edt suposer - for(int i = ((2+(settingMaster>>6))+1); i < formatedDataSend.length()-1; ++i) { + + for(int i = ((2+(settingMaster>>6))+1); i < formatedDataSend.length()-1; ++i) { //on envoi le reste des data 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); @@ -350,12 +355,12 @@ } //counterTotale = 2+(bufferReceive[2]>>6)+1; //counterTotale = counterTotale+(bufferSend[counterTotale]>>6)+abs((bufferReceive[2] & 0x5F) - (bufferSend[counterTotale] & 0x5F)); - // if(retryLoop == 0) { - debug( "\n\r -size : %02X , %02X",formatedDataSend.size(),counterTotale); - // if(formatedDataSend.size()<counterTotale){ - // formatedDataSend.append(counterTotale-formatedDataSend.size(),0); - //} - //} + if(retryLoop == 0) { + debug( "\n\r -size : %02X , %02X",formatedDataSend.size(),counterTotale); + if(formatedDataSend.size()<counterTotale) { + formatedDataSend.append(counterTotale+1-formatedDataSend.size(),0); + } + } @@ -363,32 +368,32 @@ // DATA // unsigned short templateValue=0; if(retryLoop == 0) { - // CRC // - 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]); + // CRC // + debug(DEBUG_SEND, "\n\r -Debut CRC16. "); + //CRC16* templateCRC; + //templateCRC = new CRC16(); + //!!!utiliser string cest plus simple + - // 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); + //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 @@ -399,34 +404,32 @@ // 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)))) - { + ((templateValue&0xFF)==(formatedDataReceive.at( formatedDataReceive.length()-1)))) { result=true; - } - else - { - result=false; - } + } 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; + // 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|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 -Send : "); + for (unsigned i=0; i<sneekpeek.length(); i++) debug(DEBUG_SEND|DEBUG_COMPACT|DEBUG_SLIM, "%02X,",sneekpeek.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)); - + /*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 // @@ -508,7 +511,7 @@ // - + if(result) { // Traitement de l'information // @@ -518,13 +521,12 @@ // flag // flag->clear(); - if((settingSlave>>6) != 0) - { - //string str = formatedDataReceive.substr( ((2+(settingMaster>>6))+1+1),(settingSlave>>6)); - flag->append(formatedDataReceive.substr( ((2+(settingMaster>>6))+1+1),(settingSlave>>6)));// = &str; - - //debug(DEBUG_SLIM, "\n\r -flag get: "); - //for (unsigned i=0; i<str.length(); i++) debug(DEBUG_SLIM, "%02X,",str.at(i)); + if((settingSlave>>6) != 0) { + //string str = formatedDataReceive.substr( ((2+(settingMaster>>6))+1+1),(settingSlave>>6)); + flag->append(formatedDataReceive.substr( ((2+(settingMaster>>6))+1+1),(settingSlave>>6)));// = &str; + + //debug(DEBUG_SLIM, "\n\r -flag get: "); + //for (unsigned i=0; i<str.length(); i++) debug(DEBUG_SLIM, "%02X,",str.at(i)); } //twoBytesArray=formatedDataReceive[2]; //!!!!! wtf is that cest claire que sa pete la com @@ -552,50 +554,49 @@ it++; break;*/ - /*default: - formatedDataSend.append(1,0<<6); - break;*/ - // } + /*default: + formatedDataSend.append(1,0<<6); + break;*/ + // } // ACK/NAK // // NDB // data->clear(); - if((settingSlave&0x0F) != 0) - { - //string str = formatedDataReceive.substr( ((2+(settingMaster>>6))+1+(settingSlave>>6)+1),(settingSlave&0x0F)); - data->append(formatedDataReceive.substr( ((2+(settingMaster>>6))+1+(settingSlave>>6)+1),(settingSlave&0x0F))); - - //debug(DEBUG_SLIM, "\n\r -data get: "); - //for (unsigned i=0; i<str.length(); i++) debug(DEBUG_SLIM, "%02X,",str.at(i)); + if((settingSlave&0x0F) != 0) { + //string str = formatedDataReceive.substr( ((2+(settingMaster>>6))+1+(settingSlave>>6)+1),(settingSlave&0x0F)); + data->append(formatedDataReceive.substr( ((2+(settingMaster>>6))+1+(settingSlave>>6)+1),(settingSlave&0x0F))); + + //debug(DEBUG_SLIM, "\n\r -data get: "); + //for (unsigned i=0; i<str.length(); i++) debug(DEBUG_SLIM, "%02X,",str.at(i)); } //!!!!! same shit faut rebild la chose en bas - /* switch(settingSlave&0xFF) { - case 1: - data->append(1,*it); - it++; - break; + /* switch(settingSlave&0xFF) { + case 1: + data->append(1,*it); + it++; + break; - case 2: - data->append(1,*it); - it++; - data->append(1,*it); - it++; - break; + case 2: + data->append(1,*it); + it++; + data->append(1,*it); + it++; + break; - case 3: - data->append(1,*it); - it++; - data->append(1,*it); - it++; - data->append(1,*it); - it++; - break;*/ + case 3: + data->append(1,*it); + it++; + data->append(1,*it); + it++; + data->append(1,*it); + it++; + break;*/ - /*default: + /*default: - break;*/ + break;*/ //} }