summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2005/i/robert/src/motor/motor.cc44
1 files changed, 27 insertions, 17 deletions
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;
}