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:
Thu Apr 23 19:28:42 2015 +0000
Revision:
18:3f113f8441b2
Parent:
14:ca1a9230ba7f
Child:
36:474d4795aafa
communication fonctionelle je suis rendu a faire des teste avec les task, la communication est plutot basic pour le moment.

Who changed what in which revision?

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