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@41:0b5c14dda54a, 2017-01-31 (annotated)
- Committer:
- salco
- Date:
- Tue Jan 31 13:15:42 2017 +0000
- Revision:
- 41:0b5c14dda54a
- Parent:
- 36:474d4795aafa
Tentative de modifier les commit inutile sur debug.h
Who changed what in which revision?
User | Revision | Line number | New 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 | } |