#pragma once #include #include #include "settings.h" // A lightweight struct to hold location information. // TinyGPS++ actually uses a *ton* of RAM so we can't keep the instance around as a global variable struct GPSLocation { float lat; float lng; #ifdef SD_DEBUG_ENABLED char time[20]; #endif }; /** * Initialises the connection to the GPS device. */ void gps_begin(); /** * Fetches new data from the GPS module. * May take a moment, as the GPS device needs time to acquire a satellite fix. */ GPSLocation gps_fetch(); /** * Ends the connection to the GPS device and puts it to sleep in order to save * power. * Note that the GPS device is connected directly to the power management * system and so doesn't get turned off after each measurement, as it takes * ~30s to reacquire a lock when it first starts up - hence why we put it to * sleep instead. */ void gps_end();