Da ich aus dem vom NTP Server gelieferten Zeitstempel mehr als nur die
Uhrzeit rausholen will, habe ich ein paar Zeilen Programmcode
zusammengestrickt welche diese 32Bit Zahl in ein für Menschen
verständliches Format umwandeln.
Als Vorlage setze ich auf die Funktionen gmtime und localtime der
Standardbibliothek auf.
Die zwei wichtigsten Funktionen und die Unterschiede zu ihren "Eltern".
Da in der AVR-LibC keine entsprechende Struktur definiert ist habe ich
diese selbst definiert.
1 | struct tm *gmntptime(unsigned long ntptime);
|
Liefert einen Zeiger auf eine statische struct tm zurück.
In der Struktur stehen nach dem Aufruf das Datum und die Uhrzeit im
UTC-Format.
Im Unterschied zur Vorlage "gmtime(time_t *t)" wird kein Zeiger auf den
Zeitstempel übergeben, sondern der Wert.
1 | struct tm *localntptime(unsigned long ntptime);
|
Liefert einen Zeiger auf eine statische struct tm zurück.
In der Struktur stehen nach dem Aufruf das Datum und die Uhrzeit der
Lokalen Zeitzone. Sommer/Winterzeitumschaltung wird berücksichtigt,
wobei das Verhalten and den Umschalttagen rund um die Umschaltzeitpunkte
noch nicht genauer untersucht worden ist.
Im Unterschied zur Vorlage "localtime(time_t *t)" wird kein Zeiger auf
den Zeitstempel übergeben, sondern der Wert.
Nochmaliger Hinweis:
gmntptime und localntptime liefern beide IMMER einen Zeiger auf den
gleichen Speicherbereich zurück.
A C H T U N G :
In ntp.c muss in der Funktion ntp_get() die Zeile
ntp->rx_timestamp += GMT_TIME_CORRECTION; // UTC +1h
auskommentert werden !!!
Viel Spass.