From 3eb2f57103c88a69136b55b2cd66e78fbc8249e5 Mon Sep 17 00:00:00 2001 From: xamidev Date: Fri, 7 Nov 2025 19:37:55 +0100 Subject: [PATCH] small fix --- README.md | 2 ++ igc.c | 12 ++++++++++++ igc.h | 20 +++++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 868d624..f21fb5e 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Work in progress. +Goals are: parsing an IGC file containing flight data, giving analytics about the flight, and if I really have time to kill, making some kind of (3D??) view of the flight.. + # License GNU GPL v3 diff --git a/igc.c b/igc.c index 1ddae71..f4e7f77 100644 --- a/igc.c +++ b/igc.c @@ -55,6 +55,14 @@ struct IGC_DataPoint* parse_datapoint(char* line) return dp; } +void parse_header_record(char* line) +{ + if (strncmp(line, "HFDTEDATE", 9) == 0) + { + + } +} + void parse_igc_file(FILE* fp) { size_t len = 0; @@ -69,7 +77,11 @@ void parse_igc_file(FILE* fp) // Doubly linked list of points (so theyre joined in chronological order; opens possibilities for analysis later) // append_datapoint(dp); break; + case HEADER: + parse_header_record(line); + break; default: + printf("Unrecognized record type '%c'\n", line[0]); break; } } diff --git a/igc.h b/igc.h index 3994a40..87759b6 100644 --- a/igc.h +++ b/igc.h @@ -17,7 +17,7 @@ void parse_igc_file(FILE* fp); enum IGC_RecordType { MANUFACTURER = 'A', - METADATA = 'H', + HEADER = 'H', EXTENSION = 'I', J_EXTENSION = 'J', DECLARATION = 'C', @@ -46,6 +46,24 @@ struct Coord int sec; }; +struct IGC_Header +{ + int day; + int month; + 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}; +} + struct IGC_DataPoint { // timestamp