#pragma once
#include <Arduino.h>

/*
 ===========================================================
    MODULE PhiGPS - VERSION v5.3 CORRECTED
    GPS avec parsing NMEA + compte satellites + TIMEOUT
    
    FIX: Reset automatique si pas de données pendant 2s
    → Force animation de recherche (4 points tournants)
 ===========================================================
*/

// TIMEOUT: Si pas de données NMEA pendant 2 secondes
// GPS considéré déconnecté → satellites = 0 → animation de recherche
#define GPS_TIMEOUT_MS 2000  // 2 secondes

class PhiGPS {
public:
    PhiGPS();
    bool begin();
    void update();
    
    float lat() const { return _lat; }
    float lon() const { return _lon; }
    float alt() const { return _alt; }
    bool hasFix() const { return _fix; }
    
    // Nombre satellites + qualité signal
    int satellites() const { return _sats; }
    float signalQuality() const { 
        return _sats > 0 ? constrain(_sats / 12.0f, 0.0f, 1.0f) : 0.0f; 
    }
    
    // NOUVEAU: Vérifier si données sont fraîches
    bool isDataFresh() const { 
        return (millis() - _lastUpdate) < GPS_TIMEOUT_MS; 
    }
    
private:
    float _lat, _lon, _alt;
    bool _fix;
    int _sats;  // Reset à 0 si timeout
    char _buf[100];
    uint8_t _idx;
    
    uint32_t _lastUpdate;  //NOUVEAU: Timestamp dernière donnée NMEA
    
    void _parseGGA(char* str);
};