long temps = 0;


//Configuration du serveur
void udp_listen()
{
  Serial.printf("Server UDP %s Listening on IP : %s", SERVER_HOST_NAME, WiFi.localIP().toString().c_str());

  //Activation de l'évènement : Je reçoit une trame UDP
  udp.onPacket([](AsyncUDPPacket packet)
  {
    int len = packet.length();
    if(len > 8) len = 8; //protection

    float delai = (float)(millis() - temps);
    temps = millis();

    //Données reçues (log)
    Serial.printf("\nData from %s (%2.0f Hz) : ", packet.remoteIP().toString().c_str(), 1000.0/delai );
    Serial.write(packet.data(), len);
    //udp_log(&packet); //activez ceci si vous voulez un log détaillé et envoyer une réponse au client
    
    //Envoi des données à l'écran
    tft_mouse((char*)packet.data(), packet.length());
  });
}


//Log UDP, non activé par défaut, voir fonction précédente
void udp_log(AsyncUDPPacket* packet)
{
  //Lecture complète de la trame UDP reçue
  Serial.print(" UDP Packet Type: ");
  Serial.print(packet->isBroadcast()?"Broadcast":packet->isMulticast()?"Multicast":"Unicast");
  Serial.print(", From: ");
  Serial.print(packet->remoteIP());
  Serial.print(":");
  Serial.print(packet->remotePort());
  Serial.print(", To: ");
  Serial.print(packet->localIP());
  Serial.print(":");
  Serial.print(packet->localPort());
  Serial.print(", Length: ");
  Serial.print(packet->length());
  Serial.print(", Data: ");
  Serial.write(packet->data(), packet->length());
  Serial.println();
  
  //Réponse au client
  packet->printf("Got %u bytes of data", packet->length());
}
