#ifndef gps_h
#define gps_h

/**
 * Define NMEA frame types
 */
typedef enum NMEA_TYPE NMEA_TYPE;
enum NMEA_TYPE { GGA=125,NONE }; // TODO : other frame type

/**
 * Define compass N,S,E,W
 */
typedef enum COMPASS COMPASS;
enum COMPASS { NORTH=78, SOUTH=83, EAST=69, WEST=87};

/**
 * Define GPS state
 */
typedef enum GPS_STATE GPS_STATE;
enum GPS_STATE { FIXED_GPS=1, FIXED_DGPS=2, UNFIXED=0};

/**
 * Define NMEA GGA FRAME
 */
struct NMEA_GGA {
	short hour;
	short min;
	short sec;
	short ms;

	short latDeg;
	short latMin;
	float latSec;
	COMPASS latDir;

	short lonDeg;
	short lonMin;
	float lonSec;
	COMPASS lonDir;

	short sats;
	GPS_STATE state;

	// TODO : Finish Frame

};

/**
 * Fetch the last NMEA_GGA frame
 */
struct NMEA_GGA getNMEA_GGAFrame();

#endif