From a8e25e107bfd486b945f656d5358b63259799909 Mon Sep 17 00:00:00 2001 From: dufourj Date: Wed, 11 Jan 2006 16:22:49 +0000 Subject: Correction des syncs --- 2005/i/robert/src/es/es.cc | 20 +++++++++++++++----- 2005/i/robert/src/es/es.hh | 8 +++++++- 2005/i/robert/src/es/test_es.cc | 9 ++++----- 3 files changed, 26 insertions(+), 11 deletions(-) (limited to '2005/i/robert/src/es') diff --git a/2005/i/robert/src/es/es.cc b/2005/i/robert/src/es/es.cc index d1e8e76..9c32e9b 100644 --- a/2005/i/robert/src/es/es.cc +++ b/2005/i/robert/src/es/es.cc @@ -66,7 +66,16 @@ bool Es::ascIsIdle(void) bool Es::obsTropPres(void) { - if(distGauche_ > teleSeuil_ || distDroite_ > teleSeuil_) + if (distGauche_ > teleSeuil_ || distDroite_ > teleSeuil_ + || obsBasTropPres ()) + return true; + else + return false; +} +bool +Es::obsBasTropPres (void) +{ + if (distBas_ > teleSeuilBas_) return true; else return false; @@ -89,9 +98,10 @@ void Es::ventouses(void) proto_.send('v',"b",pVentouses_); } -void Es::wait(int timeout) +bool +Es::wait(int timeout /*-1*/) { - proto_.wait(timeout); + return proto_.wait(timeout); } /// Récupère le File Descriptor @@ -114,6 +124,7 @@ void Es::loadConfig(const Config & config) pStatTele_ = config.get("es.pStatTele"); teleSeuil_ = config.get("es.teleSeuil"); + teleSeuilBas_ = config.get ("es.teleSeuilBas"); } void Es::receive(char command, const Proto::Frame & frame) @@ -137,8 +148,7 @@ void Es::receive(char command, const Proto::Frame & frame) ascFailure_ = true; break; case 'C': // retour télémètre - proto_.decode(frame,"ww", distGauche_, distDroite_); -// log_("Télémètre") << "Valeur gauche" << distGauche_ << "Valeur Droite" << distDroite_; + proto_.decode(frame,"www", distGauche_, distDroite_, distBas_); break; } diff --git a/2005/i/robert/src/es/es.hh b/2005/i/robert/src/es/es.hh index bccfcf6..df5aaec 100644 --- a/2005/i/robert/src/es/es.hh +++ b/2005/i/robert/src/es/es.hh @@ -59,6 +59,10 @@ class Es : public Proto::Receiver int distDroite_; /// Seuil du télémètre int teleSeuil_; + /// Distance du télémêtre du bas (quille dans l'ascenceur) + int distBas_; + /// Seuil du télémêtre du bas + int teleSeuilBas_; /// Système de log Log log_; @@ -75,6 +79,8 @@ class Es : public Proto::Receiver bool ascIsIdle(void); /// Renvoie si l'obstacle le plus proche est trop proche bool obsTropPres(void); + /// Renvoie la présence d'un obstacle devant le capteur du bas + bool obsBasTropPres (void); /// Fait monter l'ascenceur void monterAsc(void); /// Fait descendre l'ascenceur @@ -82,7 +88,7 @@ class Es : public Proto::Receiver /// Désactive les ventouses pour X secondes XXX vérifier la durées arg/config void ventouses(void); /// On attend ... - void wait(int timeout); + bool wait(int timeout = -1); /// Récupère le File Descriptor int getFd(void); /// Charge les paramètre du fichier de config diff --git a/2005/i/robert/src/es/test_es.cc b/2005/i/robert/src/es/test_es.cc index 630edc6..7e49762 100644 --- a/2005/i/robert/src/es/test_es.cc +++ b/2005/i/robert/src/es/test_es.cc @@ -93,10 +93,10 @@ main (int argc, char **argv) std::cout << "Le prochain obstacle est " << (es.obsTropPres() ? "TROP PRES." : "LOIN.") << std::endl; break; } - do - { - es.sync(); - }while(!es.ascIsIdle()); + + while (!es.wait (-1) || !es.ascIsIdle()) + ; + break; } case 'w': @@ -110,7 +110,6 @@ main (int argc, char **argv) { es.wait (stop - t); t = Timer::getProgramTime (); - es.sync(); } break; } -- cgit v1.2.3