NIST servery
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Neděle Leden 4 20:32:01 CET 2015
Jestli jsem pochopil spravne, ten textovy retezec nema jednotny format a
servery ho muzou formatovat ruzne? To je pak dost naprd...
Ten prevod sec->datetime neni moc slozity, uz jsem to v MCU resil, v
rychlosti vybrano snad podstatne (asi vytezeno z knihoven C)
Akorat je to zalozeno na bazi 1970, ne 1900, pokud je algoritmus pro
prestupne roky stejny od r. 1900, nemel by byt problem.
#define YEAR0 1900
#define EPOCH_YR 1970
#define SECS_DAY (24L * 60L * 60L)
#define LEAPYEAR(year) (!((year) % 4) && (((year) % 100) ||
!((year) % 400)))
#define YEARSIZE(year) (LEAPYEAR(year) ? 366 : 365)
#define FIRSTSUNDAY(timp) (((timp)->tm_yday - (timp)->tm_wday +
420) % 7)
#define FIRSTDAYOF(timp) (((timp)->tm_wday - (timp)->tm_yday +
420) % 7)
const int _ytab[2][12] = {
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
struct tm *gmtime_r(const time_t *timer, struct tm *tmbuf) {
time_t time = *timer;
unsigned long dayclock, dayno;
int year = EPOCH_YR;
dayclock = (unsigned long) time % SECS_DAY;
dayno = (unsigned long) time / SECS_DAY;
tmbuf->tm_sec = dayclock % 60;
tmbuf->tm_min = (dayclock % 3600) / 60;
tmbuf->tm_hour = dayclock / 3600;
tmbuf->tm_wday = (dayno + 4) % 7; // Day 0 was a thursday
while (dayno >= (unsigned long) YEARSIZE(year)) {
dayno -= YEARSIZE(year);
year++;
}
tmbuf->tm_year = year - YEAR0;
tmbuf->tm_yday = dayno;
tmbuf->tm_mon = 0;
while (dayno >= (unsigned long) _ytab[LEAPYEAR(year)][tmbuf->tm_mon]) {
dayno -= _ytab[LEAPYEAR(year)][tmbuf->tm_mon];
tmbuf->tm_mon++;
}
tmbuf->tm_mday = dayno + 1;
tmbuf->tm_isdst = 0;
tmbuf->tm_gmtoff = 0;
tmbuf->tm_zone = "UTC";
return tmbuf;
}
Dne 4. 1. 2015 v 19:59 Petr Zapadlo napsal(a):
> Zdravím,
>
> i tuhle možnost jsem zvažoval. Sice jednoduše dostanu udaj ale ten je
> mi v jednočipu více méně nanic, protože k převodu na aktuální datum a
> čas potřebuju netriviální tabulku. (přestupné roky, připadné sekundy
> atd.)
>
> To parsování je proti tomu procházka růžovým sadem.
>
> Petr
>
> Dne 4.1.2015 v 19:24 Jaroslav Buchta napsal(a):
>> Tohle je zajimava stranka http://www.kloth.net/software/timesrv1.php
>> Pro MCU mi prijde nejjednodussi RFC-868, funguje na UDP, RFC-867 se
>> mi pres UDP nepovedlo zprovoznit...
>> Nemusi se nic parsovat. Zas ale ten finalni rok 2036... ;-)
>>
>> Dne 4. 1. 2015 v 19:11 Petr Zapadlo napsal(a):
>>> To co jsem posílal, není odpověď zobrazená ntp klientem.
>>> Bavíme se zde o protokolu daytime, který používá TCP/13 (možná i UDP
>>> z hlavy nevím). A pro použití v jednočipech je rozhodně přívětivější
>>> než implementace NTP.
>>>
>>> To co jsem posílal je odpovědˇna:
>>>
>>> petrz na xxxx$ telnet pi 13
>>> Trying 192.168.1.56...
>>> Connected to raspberry.zapadlo.local.
>>> Escape character is '^]'.
>>> 04 JAN 2015 18:44:37 CET
>>> Connection closed by foreign host
>>>
>>>
>>> Petr
>>>
>>>
>>>> Toto je odpověď přežvýkaná ntp klientem, který může zobrazit
>>>> informace na rozdíl od nižších vrstev, které jsou striktně svázány
>>>> definicemi, jak chce.
>>>> NTP protokol má svá striktní pravidla (RFC), která jsou opravdu
>>>> dodržována všemi servery :-)
>>>> Bližší viz odkaz v minulém příspěvku, popřípadě další...
>>>> https://tools.ietf.org/html/rfc958
>>>> http://www.meinbergglobal.com/english/info/ntp-packet.htm
>>>>
>>>> NTP běží na portu 123 (UDP), ne na 13.
>>>> --
>>>>
>>>> Rtep
>>>>
>>>>
>>>> Dne 4.1.2015 v 18:47 Petr Zapadlo napsal(a):
>>>>> taky to právě řeším, ale podle mého, každý server odpovídá jak se
>>>>> mu zachce:
>>>>> Odpvěď z mého raspberryho:
>>>>>
>>>>> 04 JAN 2015 18:44:37 CET
>>>>>
>>>>
>>>> _______________________________________________
>>>> HW-list mailing list - sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>> ---
>> This email has been checked for viruses by Avast antivirus software.
>> http://www.avast.com
>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com
Další informace o konferenci Hw-list