Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MemRegistre.cpp
00001 /** 00002 * MemRegistre.cpp 00003 * @author Alexandre Salconi-Denis 00004 * @version 3.01 00005 * @date 06 mars 2014 00006 * Created on: Mar 10, 2015 00007 * Author: salco 00008 */ 00009 00010 #include "MemRegistre.h" 00011 00012 MemRegistre::MemRegistre() 00013 { 00014 m_positionActioneur = m_moduleActioneur.begin(); 00015 m_positionCapteur = m_moduleCapteur.begin(); 00016 m_positionMemoire = m_moduleMemoire.begin(); 00017 } 00018 MemRegistre::~MemRegistre() 00019 { 00020 } 00021 00022 unsigned char MemRegistre::getAdressDispo(const unsigned char &startValue) 00023 { 00024 debug(DEBUG_GETADDR,"\n\rGetAddrDispo::Debut"); 00025 //list<Module>::iterator it1; 00026 unsigned char addrDispo=(startValue==0)?1:startValue; 00027 debug(DEBUG_GETADDR,"\n\r addrDispo: %02X",addrDispo); 00028 //Module templateModule; 00029 for(bool addrFind=false; (addrDispo!=0)&&(!addrFind); addrDispo++) { 00030 /* addrFind=true; 00031 for (list<Module>::iterator it=m_moduleActioneur.begin(); it != m_moduleActioneur.end(); ++it) 00032 if(it->regA == addrDispo) addrFind = false; 00033 00034 for (std::list<Module>::iterator it=m_moduleCapteur.begin(); it != m_moduleCapteur.end(); ++it) 00035 if(it->regA == addrDispo) addrFind = false; 00036 00037 for (std::list<Module>::iterator it=m_moduleMemoire.begin(); it != m_moduleMemoire.end(); ++it) 00038 if(it->regA == addrDispo) addrFind = false;*/ 00039 addrFind = !isAdresseValide(addrDispo); 00040 debug(DEBUG_GETADDR,"\n\r is %02X valide %i",addrDispo,addrFind); 00041 if((addrDispo==255) && (!addrFind))addrDispo=0; //les 255 adresses son utiliser // bravo le robot doit etre under heavy load. 00042 } 00043 if(addrDispo != 0) 00044 addrDispo--;//patch vue quil fait un ++ a la fin de la boucle pour rien 00045 //else 00046 // addrDispo=0; 00047 00048 debug(DEBUG_GETADDR,"\n\rGetAddrDispo::Fin"); 00049 return addrDispo; 00050 } 00051 bool MemRegistre::isAdresseValide(const char &adresse, Module &m ) 00052 { 00053 debug(DEBUG_ISVALIDE,"\n\risAdresseValide::Debut"); 00054 list<Module>::iterator it1; 00055 bool addrFind=false; 00056 //Module templateModule; 00057 //for(unsigned char addrDispo=1; (addrDispo!=0)&&(!addrFind); addrDispo++) { 00058 00059 debug(DEBUG_ISVALIDE,"\n\r -search in: Actioneur"); 00060 for (list<Module>::iterator it=m_moduleActioneur.begin(); it != m_moduleActioneur.end(); ++it) { 00061 debug(DEBUG_ISVALIDE,"\n\r -if( %02X == %02X )",it->regA,adresse); 00062 if(it->regA == adresse) { 00063 addrFind = true; 00064 m.regA=it->regA; 00065 m.regB=it->regB; 00066 m.regC=it->regC; 00067 m.regD=it->regD; 00068 } 00069 } 00070 debug(DEBUG_ISVALIDE,"\n\r -search in: Capteur"); 00071 for (std::list<Module>::iterator it=m_moduleCapteur.begin(); it != m_moduleCapteur.end(); ++it) { 00072 debug(DEBUG_ISVALIDE,"\n\r -if( %02X == %02X )",it->regA,adresse); 00073 if(it->regA == adresse) { 00074 addrFind = true; 00075 m.regA=it->regA; 00076 m.regB=it->regB; 00077 m.regC=it->regC; 00078 m.regD=it->regD; 00079 } 00080 } 00081 debug(DEBUG_ISVALIDE,"\n\r -search in: Memoire"); 00082 for (std::list<Module>::iterator it=m_moduleMemoire.begin(); it != m_moduleMemoire.end(); ++it) { 00083 debug(DEBUG_ISVALIDE,"\n\r -if( %02X == %02X )",it->regA,adresse); 00084 if(it->regA == adresse) { 00085 addrFind = true; 00086 m.regA=it->regA; 00087 m.regB=it->regB; 00088 m.regC=it->regC; 00089 m.regD=it->regD; 00090 } 00091 } 00092 00093 // if((addrDispo==255) && (!addrFind))addrDispo=0; //les 255 adresses son utiliser // bravo le robot doit etre under heavy load. 00094 // } 00095 debug(DEBUG_ISVALIDE,"\n\risAdresseValide::Fin"); 00096 return addrFind; 00097 } 00098 bool MemRegistre::isAdresseValide(const char &adresse) 00099 { 00100 Module dummy; 00101 return isAdresseValide(adresse,dummy); 00102 } 00103 00104 Module MemRegistre::firstActioneur(void) 00105 { 00106 m_positionActioneur =m_moduleActioneur.begin(); 00107 return *m_positionActioneur;//m_moduleActioneur.begin(); 00108 } 00109 Module MemRegistre::nextActioneur(void) 00110 { 00111 if(m_moduleActioneur.end()!= m_positionActioneur) 00112 m_positionActioneur++; 00113 00114 return *m_positionActioneur;//return m_moduleActioneur[m_positionActioneur]; 00115 } 00116 00117 Module MemRegistre::firstCapteur(void) 00118 { 00119 m_positionCapteur =m_moduleCapteur.begin(); 00120 return *m_positionCapteur;//return m_moduleCapteur[m_positionCapteur]; 00121 } 00122 Module MemRegistre::nextCapteur(void) 00123 { 00124 if(m_moduleCapteur.end()!= m_positionCapteur) 00125 m_positionCapteur++; 00126 00127 return *m_positionCapteur;//return m_moduleActioneur[m_positionCapteur]; 00128 } 00129 Module MemRegistre::firstMemoire(void) 00130 { 00131 m_positionMemoire =m_moduleMemoire.begin(); 00132 return *m_positionMemoire;//return m_moduleMemoire[m_positionMemoire]; 00133 } 00134 Module MemRegistre::nextMemoire(void) 00135 { 00136 if(m_moduleMemoire.end()!= m_positionMemoire) 00137 m_positionMemoire++; 00138 00139 return *m_positionMemoire;//return m_moduleActioneur[m_positionMemoire]; 00140 }
Generated on Tue Jul 12 2022 19:04:22 by
1.7.2