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