הפניה ל-Struct של GnssClock
#include <
gps.h
>
שדות נתונים |
|
size_t | size |
GnssClockFlags | דגלים |
int16_t | leap_second |
int64_t | time_ns |
כפול | time_uncertainty_ns |
int64_t | full_bias_ns |
כפול | bias_ns |
כפול | bias_uncertainty_ns |
כפול | drift_nsps |
כפול | drift_uncertainty_nsps |
uint32_t | hw_clock_discontinuity_count |
תיאור מפורט
מסמכי תיעוד של שדה
double bias_ns |
double bias_uncertainty_ns |
double drift_nsps |
הסטייה של השעון בננו-שניות (לשנייה).
ערך חיובי מציין שהתדירות גבוהה מהתדירות המנומקת, ושהערך של (full_bias_ns + bias_ns) הולך ונעשה חיובי יותר עם הזמן.
הערך מכיל את 'התנודות הלא ידועות'. אם הנתונים זמינים, השדה 'flags' חייב להכיל את הערך GNSS_CLOCK_HAS_DRIFT.
הערך הזה חובה אם למכשיר המקלט יש זמן GNSS משוער
double drift_uncertainty_nsps |
אי-ודאות של 1-Sigma שמשויכת לסטייה של השעון בננו-שניות (לשנייה). אי-הוודאות מיוצגת כערך מוחלט (חד-צדדי).
אם הנתונים זמינים, השדה 'flags' חייב להכיל את הערך GNSS_CLOCK_HAS_DRIFT_UNCERTAINTY. אם מערכת ה-GPS חישבה את מיקום המכשיר, השדה הזה הוא חובה וצריך לאכלס אותו.
הדגלים GnssClockFlags |
int64_t full_bias_ns |
ההפרש בין שעון החומרה (שדה 'time') בתוך מקלט ה-GPS לבין השעה האמיתית ב-GPS מאז 0000Z, 6 בינואר 1980, בננו-שניות.
סימן הערך מוגדר לפי המשוואה הבאה: הערכה המקומית של שעון ה-GPS = time_ns - (full_bias_ns + bias_ns)
הערך הזה חובה אם למכשיר המקבל יש שעון GPS משוער. אם הזמן המחושב הוא של קבוצת כוכבים שאינה GPS, צריך להחיל את הפרש הזמן של קבוצת הכוכבים הזו ל-GPS כדי למלא את הערך הזה. הערכת השגיאה של הסכום של הערך הזה ושל bias_ns היא bias_uncertainty_ns, והמבצע הקורא אחראי לשימוש בערפל הנתונים הזה (הוא יכול להיות גדול מאוד לפני שהפתרון של שעון ה-GPS יתקבל). אם הנתונים זמינים, השדה 'flags' חייב להכיל את הערך GNSS_CLOCK_HAS_FULL_BIAS.
uint32_t hw_clock_discontinuity_count |
השדה הזה הוא חובה אם יש הפסקות בשעון החומרה.
'הפסקה' מיועדת למקרה של מעבר ממקור שעון אחד למקור אחר. בדרך כלל, לא אמורים להיות הפסקות בתנודות של מתנד קריסטל יחיד (XO) שפועל במצב חופשי, וניתן להגדיר את הערך הזה ולהשאיר אותו ב-0.
עם זאת, אם הערך של time_ns (שעון החומרה) נגזר ממקורות מורכבים, שהפעולה שלהם לא חלקה כמו של XO טיפוסי, או אם הוא נעצר ומופעל מחדש בדרך אחרת, הערך הזה יגדל בכל פעם שמתרחשת הפסקה. (לדוגמה, הערך הזה עשוי להתחיל באפס בהפעלה של המכשיר ולהתווסף בכל פעם שיש שינוי ברצף של השעון. במקרה הלא סביר שבו הערך הזה מגיע לסולם המלא, נדרש rollover (לא clamping), כך שהערך הזה ימשיך להשתנות במהלך אירועי הפסקות הבאים).
המספר הזה נשאר זהה בין דוחות GnssClock , ולכן אפשר להניח בבטחה שהערך של time_ns פועל באופן רציף, למשל נגזר משעון יחיד באיכות גבוהה (כמו XO או טוב יותר, שמשמש בדרך כלל במהלך דגימת אותות GNSS רציפה).
במיוחד בתקופות שבהן יש מעט אותות GNSS זמינים, צפוי שהשעון של החומרה יהיה ללא הפסקות למשך זמן רב ככל האפשר, כדי למנוע צורך בשימוש (בזבוז) במדידה של GNSS כדי לפתור מחדש באופן מלא את הטיה וההטיה של שעון ה-GPS, כשמשתמשים במדדים הנלווים, מדוחות GnssData רצופים.
int16_t leap_second |
int64_t time_ns |
הערך של השעון הפנימי של מקלט ה-GNSS. זהו הערך של שעון החומרה המקומי.
בשעון החומרה המקומי, הערך הזה צפוי לעלות באופן מונוטוני כל עוד שעון החומרה נשאר פועל. (במקרה של שעון חומרה שלא פועל באופן רציף, אפשר לעיין בשדה hw_clock_discontinuity_count). כדי לחשב את האומדן של מקלט ה-GPS לגבי זמן ה-GPS, מחסרים מהערך הזה את הסכום של full_bias_ns ו-bias_ns (כשהערך זמין).
השעון הזה של GPS צפוי להיות האומדן הטוב ביותר של שעון ה-GPS הנוכחי שיכול להגיע למקלט ה-GNSS.
אפשר לספק דיוק ברמת הננו-שנייה באמצעות השדה bias_ns. הערך מכיל את 'אי-הוודאות בזמן'.
השדה הזה הוא חובה.
double time_uncertainty_ns |
חוסר הוודאות של 1-Sigma שמשויך לשעון בנאונואניות. אי-הוודאות מיוצגת כערך מוחלט (חד-צדדי).
אם הנתונים זמינים, השדה 'flags' חייב לכלול את הערך GNSS_CLOCK_HAS_TIME_UNCERTAINTY. הערך הזה הוא אפס בפועל (זהו השעון המקומי של ההפניה, שעל פיו נמדדים כל שאר הזמנים והאי-ודאות בזמנים). (לכן אפשר לא לספק את השדה הזה, בהתאם לסימון GNSS_CLOCK_HAS_TIME_UNCERTAINTY, או לספק אותו ולהגדיר אותו כ-0).
התיעוד של המבנה הזה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ gps.h