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
Committer:
salco
Date:
Sun Sep 13 06:56:09 2015 +0000
Revision:
36:474d4795aafa
Parent:
18:3f113f8441b2
Mise a jours du labyrinthe et augmentation du debogage graphique.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
salco 36:474d4795aafa 1 /**
salco 36:474d4795aafa 2 * MemRegistre.cpp
salco 36:474d4795aafa 3 * @author Alexandre Salconi-Denis
salco 36:474d4795aafa 4 * @version 3.01
salco 36:474d4795aafa 5 * @date 06 mars 2014
salco 6:a7777c2a7e1e 6 * Created on: Mar 10, 2015
salco 6:a7777c2a7e1e 7 * Author: salco
salco 6:a7777c2a7e1e 8 */
salco 36:474d4795aafa 9
salco 7:dcfd81d7f93f 10 #include "MemRegistre.h"
salco 6:a7777c2a7e1e 11
salco 7:dcfd81d7f93f 12 MemRegistre::MemRegistre()
salco 6:a7777c2a7e1e 13 {
salco 9:7295385f02b2 14 m_positionActioneur = m_moduleActioneur.begin();
salco 9:7295385f02b2 15 m_positionCapteur = m_moduleCapteur.begin();
salco 9:7295385f02b2 16 m_positionMemoire = m_moduleMemoire.begin();
salco 6:a7777c2a7e1e 17 }
salco 7:dcfd81d7f93f 18 MemRegistre::~MemRegistre()
salco 6:a7777c2a7e1e 19 {
salco 6:a7777c2a7e1e 20 }
salco 9:7295385f02b2 21
salco 14:ca1a9230ba7f 22 unsigned char MemRegistre::getAdressDispo(const unsigned char &startValue)
salco 9:7295385f02b2 23 {
salco 18:3f113f8441b2 24 debug(DEBUG_GETADDR,"\n\rGetAddrDispo::Debut");
salco 14:ca1a9230ba7f 25 //list<Module>::iterator it1;
salco 14:ca1a9230ba7f 26 unsigned char addrDispo=(startValue==0)?1:startValue;
salco 18:3f113f8441b2 27 debug(DEBUG_GETADDR,"\n\r addrDispo: %02X",addrDispo);
salco 9:7295385f02b2 28 //Module templateModule;
salco 14:ca1a9230ba7f 29 for(bool addrFind=false; (addrDispo!=0)&&(!addrFind); addrDispo++) {
salco 14:ca1a9230ba7f 30 /* addrFind=true;
salco 14:ca1a9230ba7f 31 for (list<Module>::iterator it=m_moduleActioneur.begin(); it != m_moduleActioneur.end(); ++it)
salco 14:ca1a9230ba7f 32 if(it->regA == addrDispo) addrFind = false;
salco 9:7295385f02b2 33
salco 14:ca1a9230ba7f 34 for (std::list<Module>::iterator it=m_moduleCapteur.begin(); it != m_moduleCapteur.end(); ++it)
salco 14:ca1a9230ba7f 35 if(it->regA == addrDispo) addrFind = false;
salco 10:7e6aeaebe1a2 36
salco 14:ca1a9230ba7f 37 for (std::list<Module>::iterator it=m_moduleMemoire.begin(); it != m_moduleMemoire.end(); ++it)
salco 14:ca1a9230ba7f 38 if(it->regA == addrDispo) addrFind = false;*/
salco 14:ca1a9230ba7f 39 addrFind = !isAdresseValide(addrDispo);
salco 18:3f113f8441b2 40 debug(DEBUG_GETADDR,"\n\r is %02X valide %i",addrDispo,addrFind);
salco 9:7295385f02b2 41 if((addrDispo==255) && (!addrFind))addrDispo=0; //les 255 adresses son utiliser // bravo le robot doit etre under heavy load.
salco 9:7295385f02b2 42 }
salco 18:3f113f8441b2 43 if(addrDispo != 0)
salco 18:3f113f8441b2 44 addrDispo--;//patch vue quil fait un ++ a la fin de la boucle pour rien
salco 18:3f113f8441b2 45 //else
salco 18:3f113f8441b2 46 // addrDispo=0;
salco 18:3f113f8441b2 47
salco 18:3f113f8441b2 48 debug(DEBUG_GETADDR,"\n\rGetAddrDispo::Fin");
salco 9:7295385f02b2 49 return addrDispo;
salco 9:7295385f02b2 50 }
salco 14:ca1a9230ba7f 51 bool MemRegistre::isAdresseValide(const char &adresse, Module &m )
salco 14:ca1a9230ba7f 52 {
salco 18:3f113f8441b2 53 debug(DEBUG_ISVALIDE,"\n\risAdresseValide::Debut");
salco 14:ca1a9230ba7f 54 list<Module>::iterator it1;
salco 14:ca1a9230ba7f 55 bool addrFind=false;
salco 14:ca1a9230ba7f 56 //Module templateModule;
salco 14:ca1a9230ba7f 57 //for(unsigned char addrDispo=1; (addrDispo!=0)&&(!addrFind); addrDispo++) {
salco 14:ca1a9230ba7f 58
salco 18:3f113f8441b2 59 debug(DEBUG_ISVALIDE,"\n\r -search in: Actioneur");
salco 14:ca1a9230ba7f 60 for (list<Module>::iterator it=m_moduleActioneur.begin(); it != m_moduleActioneur.end(); ++it) {
salco 18:3f113f8441b2 61 debug(DEBUG_ISVALIDE,"\n\r -if( %02X == %02X )",it->regA,adresse);
salco 14:ca1a9230ba7f 62 if(it->regA == adresse) {
salco 14:ca1a9230ba7f 63 addrFind = true;
salco 14:ca1a9230ba7f 64 m.regA=it->regA;
salco 14:ca1a9230ba7f 65 m.regB=it->regB;
salco 14:ca1a9230ba7f 66 m.regC=it->regC;
salco 14:ca1a9230ba7f 67 m.regD=it->regD;
salco 14:ca1a9230ba7f 68 }
salco 14:ca1a9230ba7f 69 }
salco 18:3f113f8441b2 70 debug(DEBUG_ISVALIDE,"\n\r -search in: Capteur");
salco 14:ca1a9230ba7f 71 for (std::list<Module>::iterator it=m_moduleCapteur.begin(); it != m_moduleCapteur.end(); ++it) {
salco 18:3f113f8441b2 72 debug(DEBUG_ISVALIDE,"\n\r -if( %02X == %02X )",it->regA,adresse);
salco 14:ca1a9230ba7f 73 if(it->regA == adresse) {
salco 14:ca1a9230ba7f 74 addrFind = true;
salco 14:ca1a9230ba7f 75 m.regA=it->regA;
salco 14:ca1a9230ba7f 76 m.regB=it->regB;
salco 14:ca1a9230ba7f 77 m.regC=it->regC;
salco 14:ca1a9230ba7f 78 m.regD=it->regD;
salco 14:ca1a9230ba7f 79 }
salco 14:ca1a9230ba7f 80 }
salco 18:3f113f8441b2 81 debug(DEBUG_ISVALIDE,"\n\r -search in: Memoire");
salco 14:ca1a9230ba7f 82 for (std::list<Module>::iterator it=m_moduleMemoire.begin(); it != m_moduleMemoire.end(); ++it) {
salco 18:3f113f8441b2 83 debug(DEBUG_ISVALIDE,"\n\r -if( %02X == %02X )",it->regA,adresse);
salco 14:ca1a9230ba7f 84 if(it->regA == adresse) {
salco 14:ca1a9230ba7f 85 addrFind = true;
salco 14:ca1a9230ba7f 86 m.regA=it->regA;
salco 14:ca1a9230ba7f 87 m.regB=it->regB;
salco 14:ca1a9230ba7f 88 m.regC=it->regC;
salco 14:ca1a9230ba7f 89 m.regD=it->regD;
salco 14:ca1a9230ba7f 90 }
salco 14:ca1a9230ba7f 91 }
salco 14:ca1a9230ba7f 92
salco 14:ca1a9230ba7f 93 // if((addrDispo==255) && (!addrFind))addrDispo=0; //les 255 adresses son utiliser // bravo le robot doit etre under heavy load.
salco 14:ca1a9230ba7f 94 // }
salco 18:3f113f8441b2 95 debug(DEBUG_ISVALIDE,"\n\risAdresseValide::Fin");
salco 14:ca1a9230ba7f 96 return addrFind;
salco 14:ca1a9230ba7f 97 }
salco 14:ca1a9230ba7f 98 bool MemRegistre::isAdresseValide(const char &adresse)
salco 14:ca1a9230ba7f 99 {
salco 14:ca1a9230ba7f 100 Module dummy;
salco 14:ca1a9230ba7f 101 return isAdresseValide(adresse,dummy);
salco 14:ca1a9230ba7f 102 }
salco 14:ca1a9230ba7f 103
salco 7:dcfd81d7f93f 104 Module MemRegistre::firstActioneur(void)
salco 6:a7777c2a7e1e 105 {
salco 9:7295385f02b2 106 m_positionActioneur =m_moduleActioneur.begin();
salco 9:7295385f02b2 107 return *m_positionActioneur;//m_moduleActioneur.begin();
salco 6:a7777c2a7e1e 108 }
salco 7:dcfd81d7f93f 109 Module MemRegistre::nextActioneur(void)
salco 6:a7777c2a7e1e 110 {
salco 9:7295385f02b2 111 if(m_moduleActioneur.end()!= m_positionActioneur)
salco 6:a7777c2a7e1e 112 m_positionActioneur++;
salco 6:a7777c2a7e1e 113
salco 9:7295385f02b2 114 return *m_positionActioneur;//return m_moduleActioneur[m_positionActioneur];
salco 6:a7777c2a7e1e 115 }
salco 6:a7777c2a7e1e 116
salco 7:dcfd81d7f93f 117 Module MemRegistre::firstCapteur(void)
salco 6:a7777c2a7e1e 118 {
salco 9:7295385f02b2 119 m_positionCapteur =m_moduleCapteur.begin();
salco 9:7295385f02b2 120 return *m_positionCapteur;//return m_moduleCapteur[m_positionCapteur];
salco 6:a7777c2a7e1e 121 }
salco 7:dcfd81d7f93f 122 Module MemRegistre::nextCapteur(void)
salco 6:a7777c2a7e1e 123 {
salco 9:7295385f02b2 124 if(m_moduleCapteur.end()!= m_positionCapteur)
salco 6:a7777c2a7e1e 125 m_positionCapteur++;
salco 6:a7777c2a7e1e 126
salco 9:7295385f02b2 127 return *m_positionCapteur;//return m_moduleActioneur[m_positionCapteur];
salco 6:a7777c2a7e1e 128 }
salco 7:dcfd81d7f93f 129 Module MemRegistre::firstMemoire(void)
salco 6:a7777c2a7e1e 130 {
salco 9:7295385f02b2 131 m_positionMemoire =m_moduleMemoire.begin();
salco 9:7295385f02b2 132 return *m_positionMemoire;//return m_moduleMemoire[m_positionMemoire];
salco 6:a7777c2a7e1e 133 }
salco 7:dcfd81d7f93f 134 Module MemRegistre::nextMemoire(void)
salco 6:a7777c2a7e1e 135 {
salco 9:7295385f02b2 136 if(m_moduleMemoire.end()!= m_positionMemoire)
salco 6:a7777c2a7e1e 137 m_positionMemoire++;
salco 6:a7777c2a7e1e 138
salco 9:7295385f02b2 139 return *m_positionMemoire;//return m_moduleActioneur[m_positionMemoire];
salco 6:a7777c2a7e1e 140 }