Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ GPSD, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΌ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ ΠΈΠ· GPS-ΡΡΡΡΠΎΠΉΡΡΠ², Π²ΡΡΠ²Π»Π΅Π½Π° ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ 24 ΠΎΠΊΡΡΠ±ΡΡ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° 1024 Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄, Ρ.Π΅. Π²ΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΠΌΠ°ΡΡ 2002 Π³ΠΎΠ΄Π°. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π²ΡΠΏΡΡΠΊΠ°Ρ Ρ 3.20 ΠΏΠΎ 3.22 Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈ ΡΡΡΡΠ°Π½Π΅Π½Π° Π² Π²ΡΠΏΡΡΠΊΠ΅ GPSD 3.23. ΠΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠΈΡΡΠ΅ΠΌ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ GPSD, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΠΈΠ»ΠΈ Π±ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌ ΠΊ ΡΠ±ΠΎΡ.
ΠΡΡΠ΅ΠΊΡ ΠΎΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ ΡΠ±ΠΎΡΠΌ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ GPSD, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠΎΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ NTP-ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ, Kerberos ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ°, Ρ ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ), Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΈ Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡΡΠΈΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅Π°Π½ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ). GPSD ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΆΠ΅ Π½Π΅ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ.
ΠΡΠΎΡΠΎΠΊΠΎΠ» GPS ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΡΡΡΠΈΠΊΠ° Π½Π΅Π΄Π΅Π»Ρ, ΠΎΡΡΡΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°ΡΠΈΠ½Π°Ρ Ρ 5 ΡΠ½Π²Π°ΡΡ 1980 Π³ΠΎΠ΄Π°. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ Π²Π΅ΡΠ°Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π΄Π°Π½Π½ΡΠΉ ΡΡΡΡΡΠΈΠΊ ΠΎΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ΅Π³ΠΎ 10 Π±ΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΠΆΠ΄ΡΠ΅ 1023 Π½Π΅Π΄Π΅Π»Ρ (19.7 Π»Π΅Ρ). ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π² 1999 Π³ΠΎΠ΄Ρ, Π²ΡΠΎΡΠΎΠ΅ Π² 2019, Π° ΡΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ Π² 2038 Π³ΠΎΠ΄Ρ. ΠΠ°Π½Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ ΠΈ Π΄Π»Ρ Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ½ Π½ΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ GPS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (CNAV), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π»Ρ ΡΡΡΡΡΠΈΠΊΠ° ΠΎΡΠ²ΠΎΠ΄ΠΈΡΡΡ 13 Π±ΠΈΡ (Ρ.Π΅. ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² 2137 Π³ΠΎΠ΄Ρ).
Π GPSD Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ΅ΠΊΡΠ½Π΄Ρ (Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Ρ ΡΠ΅Π»ΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°Π»ΠΎΠ½Π½ΡΡ
ΠΌΠΈΡΠΎΠ²ΡΡ
Π°ΡΠΎΠΌΠ½ΡΡ
ΡΠ°ΡΠΎΠ² Ρ Π°ΡΡΡΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΠ΅ΠΌΠ»ΠΈ) Π±ΡΠ»Π° Π΄ΠΎΠΏΡΡΠ΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ 24 ΠΎΠΊΡΡΠ±ΡΡ 2021 Π³ΠΎΠ΄Π° ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ 1024 ΠΈΠ· ΡΡΡΡΡΠΈΠΊΠ° ΡΠΈΡΠ»Π° Π½Π΅Π΄Π΅Π»Ρ. ΠΠΎ Π·Π°Π΄ΡΠΌΠΊΠ΅ Π°Π²ΡΠΎΡΠ° ΠΊΠΎΠ΄Π° ΡΠ΄Π²ΠΈΠ³ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ 31 Π΄Π΅ΠΊΠ°Π±ΡΡ 2022 Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠΎΠΉ Π΄Π°ΡΡ Π² ΡΠΈΡΠ»ΠΎ Π½Π΅Π΄Π΅Π»Ρ Π±ΡΠ» Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅ Π²Π΅ΡΠ½ΠΎ ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ΅ Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π΅Π΄Π΅Π»Ρ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°Π»ΠΎ ΠΏΠΎΠ΄ ΠΎΠΊΡΡΠ±ΡΡ 2021 Π³ΠΎΠ΄Π° (ΡΠΊΠ°Π·Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 2180 Π²ΠΌΠ΅ΡΡΠΎ 2600). /* sanity check week number, GPS epoch, against leap seconds * Does not work well with regressions because the leap_sconds * could be from the receiver, or from BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* assume leap second = 19 by 31 Dec 2022 * so week > 2180 is way in the future, do not allow it */ week -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, «GPS week confusion. Adjusted week %u for leap %d\n», week, session->context->leap_seconds); }
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru