Re: příjem NTP ESP8266/32

Miroslav Mraz mrazik na volny.cz
Neděle Červenec 24 15:13:29 CEST 2022


Tak jsem si s tím chvíli hrál, ono se to může někdy hodit. Kontrola 
délky přijatého paketu je sice fajn, ale zdaleka nestačí.
https://labs.apnic.net/?p=462
Je potřeba ještě (nejméně) kontrolovat hlavičku - v poli LI nesmí být 
nastavena hodnota 3. Normálně se v bytu 0. vrací 0x24, při chybě 0xE4.
Dále hodnota Stratum nesmí být 0. Pokud přijde divný paket, má správnou 
délku, ale data jsou zřejmě nulová, protože se mi nastaví datum na 7. 
února 2036. Pokud si tam dopíšete ještě ty 2 kontroly hlavičky, pak už 
by to mělo fungovat správně. A skutečně se počet sekund v paketu počítá 
od roku 1900. To musel vymyslet blbec. Bacha ty vícebytové proměnné jsou 
ve velkém indiánu (což je pro síťové aplikace obvyklé), v knihovně je to 
celkem správně.

if (((packetBuffer[0] >> 6) & 3) == 3) return false;
if   (packetBuffer[1] == 0)            return false;

// zde by měla být data validní

Mrazík

On 24. 07. 22 10:21, Petr Zapadlo wrote:
> Zdravím,
> 
> odečítá se od 1970 (unix time stamp), samotného mě přkvapilo jak málo se 
> z toho paketu vlastně využije. Ale přesnostně mi to bohatě stačí (ani 
> minuta není pro mě kritická míra). Podívám se co dalšího by v tom paketu 
> bylo ještě využitelného - minimálně kontrola Stratum by stála za úvahu.
> 
> Zatím jsem udělal to, že jsem dopsal důslednou kontrolu délek paketu a 
> jeho čtení. Tak uvidím co to bude dělat, problém je v tom, že mi bude 
> dost dlouho trvat než ověřím, že to skutečně bylo řešení.
> 
> Petr
> 
>


Další informace o konferenci Hw-list