Hallo,
ja sie wird bei Aufruf solange ausgeführt, bis die verstrichene Zeit seit Aufruf größer der Intervallzeit ist.
Das ist irreführend und bestimmt nicht so gedacht. Entnehme ich dem Variablennamen.
Wenn es wirklich nach jeden Intervall einmalig aufgerufen bzw. abgearbeitet werden soll, dann eher so.
Das letzte if und bool kann man einsparen.
void GeoLoc checkGPS ()
{
static unsigned long last_ms = 0;
const unsigned int GPS_UPDATE_INTERVAL = 5000;
if ( (millis() - last_ms < GPS_UPDATE_INTERVAL) return; // Zeit noch nicht erreicht, Abbruch
last_ms += GPS_UPDATE_INTERVAL;
Serial.println("checkGPS()");
if (feedgps()) {
return gpsdump(gps);
}
}