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/MemRegistre.cpp@18:3f113f8441b2, 2015-04-23 (annotated)
- 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?
User | Revision | Line number | New 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 | } |