#include <Socket.h>
#include <barriere.h>
#include <clavier.h>

int main() 
{         
  Socket barriere("172.20.3.73", 5588);
  const int codeSecret = 7485;
  bool valide = false;

  // descendre la barrière au départ si elle n'est pas en bas
  if (!isInFDCL(barriere)) setCommandeSensDescente(barriere);
  
  while (true) 
  {   
    // Message d'invite
    clear(barriere);
    affiche(barriere, 0, 0, "Bienvenue...");
 
    // contrôler la présence d'un véhicule en entrée
    while (!isBoucleAmont(barriere));
    
     // solliciter la saisie du code
    affiche(barriere, "Bonjour", "Code ? ");

    // récupérer le bon code secret
    do {
      valide = codeBon(barriere, codeSecret);
      // si le code est incorrect, avertir l'automobiliste
      if (!valide) affiche(barriere, "Code incorrect", "Code ? ");      
    }
    while (!valide);

    // afficher un message précisant la bonne valeur du code
    affiche(barriere, "Code bon", "Entrez..."); 
    
    // lever la barrière pour permettre l'entrée du véhicule
    setCommandeSensMontee(barriere);
    
    // attendre que le véhicule pénètre complètement dans le parking
    while (!(isBoucleAval(barriere) && isBoucleAmont(barriere))); 
    while (isBoucleAval(barriere));
    
    // descendre la barrière une fois que le véhicule est bien entré
    setCommandeSensDescente(barriere);   
  }
 
  return 0;
}