כברירת מחדל, רוב שירותי הרכב הם חובה ומופעלים תמיד. עם זאת, אפשר להגדיר קבוצת משנה של שירותים לרכב כאופציונליים, כי יכול להיות שחלק מהתכונות לא נתמכות בכל רכב.
רשימה של תכונות אופציונליות
בטבלה שבהמשך מפורטות התכונות האופציונליות של אמצעי הבקרה ברכב שאפשר להפעיל ולהשבית.
| התכונה 'אמצעי בקרה של הרכב' | ערך מחרוזת |
|---|---|
| שירות EVS לרכב | car_evs_service |
| שירות ניסיוני של מגן מקשים לרכב | experimental_car_keyguard_service |
| שירות ניווט ברכב | car_navigation_service |
| שירות חיבור לנוסעי הרכב | car_occupant_connection_service |
| שירות גישה מרחוק לרכב | car_remote_access_service |
| שירות מכשיר לשליטה מרחוק ברכב | car_remote_device_service |
| שירות טלמטריה של המכונית | car_telemetry_service |
| שירות הודעות למשתמשי רכב | com.android.car.user.CarUserNoticeService |
| שירות ביתי באשכול | cluster_home_service |
| שירות אבחון | diagnostic |
| שירות המודעות לתפוסה (Occupant Awareness) | occupant_awareness |
| שירות ניטור אחסון | storage_monitoring |
| שירות מפות לרכב | vehicle_map_service |
הפעלה והשבתה של תכונות השליטה ברכב
יש שתי דרכים לשלוט בתמיכה בתכונות ב-builds: באמצעות שכבות-על של משאבים בזמן ריצה (RRO) או באמצעות שכבת הפשטת החומרה של הרכב (VHAL).
שימוש ב-RRO
משתמשים בהגדרת המשאב שנקראת config_allowed_optional_car_features, שבה מפורטות כל התכונות האופציונליות שאפשר להפעיל. כשמפעילים רכב בפעם הראשונה, מציינים תכונות רכב אופציונליות אפשריות ומפעילים אותן אם הן לא ברשימת החסימה של VHAL.
מידע נוסף על RROs זמין במאמר בנושא שינוי הערך של משאבי אפליקציה בזמן הריצה.
שימוש ב-VHAL
שכבת ההפשטה של חומרת הרכב (VHAL) שולטת בתכונות על ידי שימוש ברשימת חסימה להשבתה של תכונות אופציונליות ספציפיות. המאפיין VHAL שנקרא
DISABLED_OPTIONAL_FEATURES מפרט את התכונות האופציונליות בשכבת העל שצריך להשבית. אם המאפיין הזה לא קיים, כל התכונות האופציונליות מ-RROs מופעלות. מידע נוסף על VHAL זמין בסקירה הכללית על VHAL.
שימוש בפקודות Shell לניפוי באגים
דרך שלישית לקבוע אילו תכונות אופציונליות להפעיל או להשבית היא באמצעות זוג פקודות של מעטפת, שזמינות רק בגרסאות user-debug ומיועדות לשימוש על ידי מפתחים. הטבלה שבקטע רשימת תכונות אופציונליות מכילה את הערכים שבהם צריך להשתמש במקום <FEATURE_STRING_VALUE>.
כדי להפעיל תכונה:
adb root; adb shell cmd car_service enable-feature <FEATURE_STRING_VALUE>; adb reboot
כדי להשבית תכונה:
adb root; adb shell cmd car_service disable-feature <FEATURE_STRING_VALUE>; adb reboot
איך קובעים אילו תכונות מופעלות
כשמנסים לפתור בעיות שקשורות לתכונות ספציפיות, כדאי לדעת אילו תכונות מופעלות ולמה. כדי ליצור קובץ dump של מידע על feature-related, מריצים את הפקודה:
adb shell dumpsys car_service --services CarFeatureController
הפקודה הזו מציגה את סוגי המידע שמופיעים בהמשך.
| ערך | תיאור |
|---|---|
mEnabledFeatures |
התכונות שמופעלות כרגע. |
mDefaultEnabledFeaturesFromConfig |
תכונות אופציונליות שמפורטות ב-config_allowed_optional_car_features. |
mDisabledFeaturesFromVhal |
תכונות שצוינו על ידי VHAL להשבתה במאפיין VHAL,
DISABLED_OPTIONAL_FEATURES. |
mPendingEnabledFeatures |
התכונות שיופעלו אחרי הפעלה מחדש. |
mPendingDisabledFeatures |
תכונות שיושבתו אחרי הפעלה מחדש. |