הגדרת מקורות הזמן ב-AAOS

התכונה הזו מאפשרת לשותפים לבחור איך לסנכרן את השעון, בין אם ממערכת ההפעלה של Android Automotive‏ (AAOS) או ממערכות הרכב ל-Android. כדי להבטיח הטמעות איכותיות, אפשר להגדיר את AAOS כך שישתמש באחד משני מאפייני VHAL החדשים שמתוארים בהמשך כדי להפיץ את הערכים בצורה יעילה. השתמש ב:

  • ANDROID_EPOCH_TIME כדי להשתמש ב-Android כמקור המידע האמין לגבי זמן. VHAL תומך בנכס לכתיבה בלבד הזה, שמעביר שינויים בזמן מ-Android למערכות רכב אחרות, כמו יחידות הבקרה האלקטרוניות (ECU) ומודול הבקרה של המרכב (BCM).
  • EXTERNAL_CAR_TIME כדי לא להשתמש ב-Android כמקור המידע האמין של הזמן. במקרה כזה, VHAL תומך בנכס EXTERNAL_CAR_TIME לקריאה בלבד, שמעביר ל-Android שינויים בזמן ממערכות רכב אחרות (כמו ECU ו-BCM).

ב-AAOS יש גם את TimeDetectorStrategy, שאפשר להגדיר אותו כדי לתת עדיפות למקורות זמן שונים ב-Android.

Android הוא המקור האמין לנתוני הזמן

כשמשתמשים ב-Android כמקור הזמן, יצרני ציוד מקורי יכולים לסנכרן מערכות אחרות ברכב (כולל יחידות בקרה אלקטרוניות ו-BCM) עם הזמן ב-Android.

לשם כך, ההטמעה של VHAL חייבת לתמוך בנכס ANDROID_EPOCH_TIME לכתיבה בלבד. מערכת Android מפרסמת עדכון לנכס על ידי קריאת שעון המערכת, גם בזמן האתחול וגם בכל פעם שמקור הזמן ב-Android משתנה.

Android הוא לא מקור האמת לגבי הזמן

כש-Android לא משמש כמקור הזמן, אפשר לסנכרן את הזמן ב-Android כדי שיהיה מקור האמת לזמן (לדוגמה, באמצעות ECU או BCM). במקרה כזה, הטמעת VHAL חייבת לתמוך בנכס EXTERNAL_CAR_TIME לקריאה בלבד ולפרסם עדכונים בנכס הזה בכל פעם שמקור הזמן משתנה או שהשעון מכוונן מחדש.

יצרני ציוד מקורי (OEM) צריכים גם לוודא את הפרטים הבאים:

  • הערכים של config_autoTimeSourcesPriority נכללים ב-core/res/res/values/config.xml.
  • המאפיין config_enableExternalCarTimeToExternalTimeSuggestion בהגדרות השכבה העליונה של CarServices‏ packages/services/Car/service/res/values/config.xml מוגדר לערך true.
  • לזמן external יש את העדיפות המתאימה בהגדרה של TimeDetectorStrategy. למידע נוסף, ראו זיהוי זמן של GNSS. לדוגמה:
    <!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list take precedence over lower ones.
    See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
         <string-array name="config_autoTimeSourcesPriority">
            <item>external</item>
            <item>gnss</item>
            <item>network</item>
            <item>telephony</item>
        </string-array>

פרטי הטמעה פנימיים של Android

התהליך הבא מתרחש כשיש תמיכה במאפיין VHAL‏ ANDROID_EPOCH_TIME:

  1. TimeHalService (ב-CarServices) מקבל שידור ממערכת Android עבור Intent.ACTION_TIME_CHANGED.
  2. TimeHalService מפרסם עדכון לנכס VHAL‏ ANDROID_EPOCH_TIME.
  3. ה-VHAL יכול להעביר את ערך הזמן שהתקבל ליחידות ECU ו/או BCM שונות.

התהליך הבא מתרחש כשיש תמיכה במאפיין VHAL‏ EXTERNAL_CAR_TIME:

  1. VHAL מעדכן את המאפיין EXTERNAL_CAR_TIME.
  2. TimeHalService (ב-CarServices) קורא את הנכס דרך מינוי.
  3. TimeHalService יוצר ושולח ExternalTimeSuggestion אל TimeManager.
  4. TimeManager מעביר את ההצעה אל TimeDetectorService.
  5. TimeDetectorService משתמש ב-TimeDetectorStrategy כדי לבחור שעה חדשה למערכת.