1 /***********************************************************************
5 ** This file is part of libkfrgcs.
7 ************************************************************************
9 ** Copyright (c): 2002 by Garrecht Ingenieurgesellschaft
11 ** This file is distributed under the terms of the General Public
12 ** Licence. See the file COPYING for more information.
16 ***********************************************************************/
19 #include "Util/StringUtil.hpp"
27 byte_bas64(const uint8_t *b
)
29 static constexpr char base64tab
[] =
30 "0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ`abcdefghijklmnopqrstuvwxyz";
31 static char bas64ar
[5];
32 bas64ar
[0] = base64tab
[ b
[0] >> 2 ];
33 bas64ar
[1] = base64tab
[ ((b
[0] & 0x03) << 4) | (b
[1] >> 4) ];
34 bas64ar
[2] = base64tab
[ ((b
[1] & 0x0f) << 2) | (b
[2] >> 6) ];
35 bas64ar
[3] = base64tab
[ b
[2] & 0x3f ];
42 GRECORD::GRECORD(FILE *ausgabedatei
) {
47 ausgabe
= ausgabedatei
;
51 GRECORD::update(uint8_t b
)
56 strcat(grecord
,byte_bas64(ba
));
61 fprintf(ausgabe
,"G%s\n",grecord
);
67 void GRECORD::finish(void) {
69 strcat(grecord
,byte_bas64(ba
));
70 fprintf(ausgabe
,"G%s\n",grecord
);
76 - Binärblock beim Logger anfordern und im Speicher ablegen
77 * - Binärblock ins IGC-Format konvertieren
78 * - IGC-Datei abspeichern
79 - Binärblock im radix-64-Format als G-Records an IGC-Datei anhängen
82 - IGC-Datei laden und ohne die nicht vom Logger stammenden Datensätze
83 und Whitespaces in temp1.igc abspeichern
84 - G-Records aus IGC-Datei laden von radix-64 in Binärblock umwandeln
85 * - Binärblock ins IGC-Format konvertieren
86 * und speichern in Datei temp2.igc
88 Dateien temp1 und temp2 vergleichen
91 * kann für DATA- und VALI-Programm genutzt werden
95 Benötigte Funktionen: (D=für DATA, V=für VALI, P=schon programmiert)
97 x x - Verzeichnis der Flüge auslesen
98 x x - Binärblock(Flug) vom Logger lesen
99 xx - Binärblock ins IGC-Format konvertieren dabei IGC-Datei abspeichern
100 x - Dateiname nach IGC-Vorschrift generieren
102 x - Signatur in Binärblock überprüfen
103 x x - Binärblock in GR64 konvertieren und anhängen
104 x - GR64 laden, in Binärblock umwandeln und im Speicher ablegen
105 - IGC-Datei laden und alle nicht vom Logger stammenden Datensätze
106 ausfiltern, die Datei dann wieder als temp-Datei abspeichern
111 print_g_record(FILE *datei
, const uint8_t *puffer
, size_t puflen
)
114 for (size_t i
= 0; i
< puflen
; ++i
)
115 g1
.update(puffer
[i
]);