66 lines
885 B
C
66 lines
885 B
C
/*
|
|
* IGC parser
|
|
* @brief parse IGC file, get all data points, compute average horizontal/vertical speed, print to STDOUT
|
|
*
|
|
* @author xamidev <xamidev@riseup.net>
|
|
* @license GNU GPL v3
|
|
*/
|
|
|
|
#ifndef IGC_H
|
|
#define IGC_H
|
|
|
|
#define NAME_MAX 256
|
|
#define TMP_SIZE 8
|
|
|
|
void parse_igc_file(FILE* fp);
|
|
|
|
enum IGC_RecordType
|
|
{
|
|
MANUFACTURER = 'A',
|
|
METADATA = 'H',
|
|
EXTENSION = 'I',
|
|
J_EXTENSION = 'J',
|
|
DECLARATION = 'C',
|
|
SATELLITES = 'F',
|
|
DATAPOINT = 'B',
|
|
DIFFERENTIAL_GPS = 'D',
|
|
PILOT_EVENT = 'E',
|
|
GEN_PURPOSE_PLACEHOLDER = 'K',
|
|
COMMENT = 'L',
|
|
SEC_KEY = 'G'
|
|
};
|
|
|
|
enum Cardinals
|
|
{
|
|
NORTH = 'N',
|
|
SOUTH = 'S',
|
|
EAST = 'E',
|
|
WEST = 'W'
|
|
};
|
|
|
|
struct Coord
|
|
{
|
|
char cardinal;
|
|
int deg;
|
|
int min;
|
|
int sec;
|
|
};
|
|
|
|
struct IGC_DataPoint
|
|
{
|
|
// timestamp
|
|
int hour;
|
|
int minute;
|
|
int second;
|
|
|
|
// coordinates
|
|
struct Coord lat;
|
|
struct Coord lon;
|
|
|
|
// altitude
|
|
int baro_alt;
|
|
int gps_alt;
|
|
};
|
|
|
|
#endif
|