From 72218747dfc1adb5b150e0c92484caeb51fb835c Mon Sep 17 00:00:00 2001 From: haller Date: Wed, 4 May 2005 09:13:27 +0000 Subject: Recodage du sync --- 2005/i/robert/src/motor/motor.cc | 44 ++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 17 deletions(-) (limited to '2005/i/robert/src') diff --git a/2005/i/robert/src/motor/motor.cc b/2005/i/robert/src/motor/motor.cc index 5152dc5..c640085 100644 --- a/2005/i/robert/src/motor/motor.cc +++ b/2005/i/robert/src/motor/motor.cc @@ -119,41 +119,51 @@ void Motor::rotation(double newA) bool Motor::sync(void) { log_("sync") << "Entré dans sync" << ""; - if(asserv_.sync()) + + // On regarde si toutes les commandes ont été envoyées et aquittées + if (asserv_.sync()) { log_("sync") << "Toutes les commandes ont été envoyés et aquitté" << ""; - if(doneDone_) + + if(doneDone_) // Si on a reçu des F depuis le dernier sync { - if(!f0Sended_) + log_("sync") << "On a des F" << ""; + if(!f0Sended_) // Si on avait pas envoyé de f0 { - log_("sync") << "On envoie un F0" << ""; + log_("sync") << "On envoie le F0" << ""; asserv_.finishAck(); f0Sended_ = true; + } + else // Si l'AVR vient d'aquitter le F0 + { + log_("sync") << "On a déjà envoyé le F0, on s'en fout" << ""; doneDone_ = false; } - else + } + else // Si on a pas reçu de F + { + log_("sync") << "On a pas reçu de F" << ""; + if(f0Sended_) // On peut envoyer une nouvelle commande { - if(doneDone_) - f0Sended_ = false; + log_("sync") << "Pret pour un nouveau travail" << ""; + if(fOrdre_.empty()) //Si la pile est vide + { + log_("sync") << "On repasse en Idle" << ""; + idle_ = true; // Les moteurs sont idle + } else { - doneDone_ = f0Sended_ = false; - if (fOrdre_.empty()) - { - idle_ = true; - log_("sync") << "Rien à foutre" << "Idle"; - } - else - { - log_("sync") << "Execution de la prochaine instruction de la pile" << ""; + log_("sync") << "Prochaine commande de la pile" << ""; if(fOrdre_.front().ordre_) // Linear Move linearMove(fOrdre_.front().arg_); else rotation(fOrdre_.front().arg_); fOrdre_.pop(); - } } + f0Sended_ = false; } + else + log_("sync") << "Le Robot est en activité/pause, on y touche pas" << ""; } return true; } -- cgit v1.2.3