Header parsing

This commit is contained in:
2025-11-07 21:07:16 +01:00
parent 3eb2f57103
commit fa1a02371c
4 changed files with 88 additions and 19 deletions

33
igc.h
View File

@@ -9,11 +9,10 @@
#ifndef IGC_H
#define IGC_H
#define SMALL_NAME_MAX 32
#define NAME_MAX 256
#define TMP_SIZE 8
void parse_igc_file(FILE* fp);
enum IGC_RecordType
{
MANUFACTURER = 'A',
@@ -27,7 +26,7 @@ enum IGC_RecordType
PILOT_EVENT = 'E',
GEN_PURPOSE_PLACEHOLDER = 'K',
COMMENT = 'L',
SEC_KEY = 'G'
SEC_KEY = 'G',
};
enum Cardinals
@@ -53,16 +52,18 @@ struct IGC_Header
int year;
// Not exhaustive
char pilot_name[NAME_MAX] = {0};
char crew2_name[NAME_MAX] = {0};
char aircraft_name[NAME_MAX] = {0};
char aircraft_registration_no[NAME_MAX] = {0};
char gps_datum[NAME_MAX] = {0};
char firmware_ver[NAME_MAX] = {0};
char hardware_ver[NAME_MAX] = {0};
char frtype[NAME_MAX] = {0};
char press_alt_sensor[NAME_MAX] = {0};
}
char pilot_name[NAME_MAX];
char crew2_name[NAME_MAX];
char aircraft_name[NAME_MAX];
char aircraft_registration_no[NAME_MAX];
char gps_datum[NAME_MAX];
// (not too important; ignored for now, may be part of "verbose" setting later)
char firmware_ver[NAME_MAX];
char hardware_ver[NAME_MAX];
char frtype[NAME_MAX];
char press_alt_sensor[NAME_MAX];
};
struct IGC_DataPoint
{
@@ -80,4 +81,10 @@ struct IGC_DataPoint
int gps_alt;
};
void parse_igc_file(FILE* fp);
struct IGC_DataPoint* parse_datapoint(char* line);
void show_datapoint(struct IGC_DataPoint* dp);
void show_header_info(struct IGC_Header* hdr);
struct IGC_Header* parse_header_record(struct IGC_Header* hdr, char* line);
#endif