דוגמאות הקוד של SDV Core Services ב-/system/software_defined_vehicle/samples מאפשרות לכם להתחיל ליצור את השירותים שלכם. כל דוגמה מכילה קובץ README שמתאר את התרחיש לדוגמה.
סקירה כללית של ספריית הדוגמאות
בטבלה הבאה מפורטות ספריות הדוגמאות להפניה ב-system/software_defined_vehicle/samples והמדריכים המתאימים להן:
| ספרייה לדוגמה | תיאור | מדריך למסמכים |
|---|---|---|
system/software_defined_vehicle/samples/quickstart |
דוגמה לחבילת שירות מקצה לקצה ב-Rust שמדגימה פרסום, מינוי ו-RPC של VSIDL בין חבילות Manager ו-Monitor.
|
התחלה מהירה: יצירה והפעלה של חבילות שירות של SDV |
system/software_defined_vehicle/samples/vsidl |
עיינו בקטלוג VSIDL, בהגדרות protobuf ובתבניות ההטמעה של חבילת השירות. | הטמעת לוגיקה עסקית |
system/software_defined_vehicle/samples/concal |
דוגמה ללקוח לקריאה ולעדכון של פרמטרים להגדרה ולכיול של הרכב. | הגדרה וכיול |
system/software_defined_vehicle/samples/health |
דוגמאות לחבילת שירות עם מעקב אחרי תקינות ומעקב אחרי איכות השירות (QoS). | מעקב אחר בריאות |
system/software_defined_vehicle/samples/oem_partition_update_client |
שירות לדוגמה שמשתמש בארגז sdv_oem_updater כדי להפעיל
עדכונים של מחיצות /oem_ab ולהחזיר אותם למצב הקודם.
|
עדכוני מחיצות AB של OEM |
system/software_defined_vehicle/samples/sdv_gateway |
אפליקציות IVI לדוגמה ב-Native וב-Java (NativeSdvGatewayTestApp ו-SdvCarMonitorTestApp) שמתקשרות עם שירותי SDV Core דרך SDV Gateway.
|
שימוש בשער SDV ב-IVI |
system/software_defined_vehicle/samples/telemetry |
מקור נתוני טלמטריה במכשיר ודוגמאות לסימולטור. | מקורות נתונים |
שימוש ב-Logging API
למידע נוסף על ההוראות שסופקו, אפשר לעיין במאמרים הבאים:
דוגמה ליומן בסיסי
logging.cpp מציג כתיבה למאגרי הנתונים main, system ו-radio.
במאמר הצגת מאגרי נתונים חלופיים של מאגרים מופיע תיאור קצר של מאגרי הנתונים הזמינים של מאגרים.
כדי להריץ את הדוגמה בלי היומנים המותנים, כמו
ALOGI_IF:logging_sdv_sampleכדי להריץ את הדוגמה ולהדפיס את היומנים המותנים, כמו
ALOGI_IF:LOGIF=1 logging_sdv_sample
דוגמה לרישום מובנה ביומן
קובץ לדוגמה: structured_logging.cpp
כדי להריץ את הדוגמה, שכותבת יומנים למאגר הנתונים הזמני של היומן
events:structured_logging_sdv_sample
מאגרי הנתונים הזמניים של היומנים event, security ו-stats מכילים נתונים מובְנים ולא טקסט חופשי.
נתונים מובְנים מתועדים באמצעות ה-API של רשימת האירועים, שתמיד מתועד עם העדיפות INFO ומזהה התג המספרי.
אפשר להגדיר קובץ .logtags עם מאפיין logtags ב-Android.bp..
אם הוא מסופק, logcat משתמש בו כדי להפיק את שם התג ממזהה התג המספרי. אחר כך אפשר להשתמש בשם התג כדי לסנן יומנים מובְנים. לפרטים ולתיאור של פורמט הקובץ, אפשר לעיין בתגובה בקובץ logcat event.logtags.
במהלך תהליך ה-build, כל קובצי ה-logtags מוזגו והועברו לקובץ /system/etc/event-log-tags בקובץ האימג' של מערכת Android.
הכנת דוגמה לסינון של יומן זמנים
קובץ לדוגמה: compile_time_log_filtering.cpp
הדוגמה הזו מכילה פקודות מאקרו שאפשר לשנות כדי להסיר חלק מהיומנים מקובץ ההפעלה. פרטים נוספים זמינים בקוד המקור.
דוגמה לסינון יומנים: log_filtering.cpp
כדי להריץ את הדוגמה, מגדירים את עדיפות היומן המינימלית ל-
WARN:LOGLEVEL=WARN log_filtering_sdv_sample
סינון היומנים מושפע ממאפייני המערכת. בכל היומנים עם
log.tag.<tag>persist.log.tag.<tag>
לכל היומנים במערכת:
log.tagpersist.log.tag
כדי לבחור את רמת היומן הרצויה, שנבדקת לפי הסדר, אפשר להגדיר כל ערך ל-V, D, I, W או E.
רמת הרישום ביומן שמוגדרת בפועל היא הרמה שמוגדרת במאפיין המערכת הראשון שיש לו ערך. היא יכולה להיות נמוכה או גבוהה יותר מרמת הרישום ביומן שמוגדרת על ידי האפליקציה באמצעות קריאה ל-__android_log_set_minimum_priority. אם אף אחד מהמאפיינים לא מוגדר, הרמה שמוגדרת באמצעות __android_log_set_minimum_priority חלה.
לפרטים נוספים, קראו את הסקירה הכללית על מערכת הרישום ביומן.
מריצים את הדוגמה ומגדירים את תג היומן שמוגדר כברירת מחדל ל-
example_tag:LOGTAG=example_tag log_filtering_sdv_sample
הדוגמה מכילה גם הגדרת מאקרו LOG_TAG מסומנת כהערה, שבה אפשר להשתמש כדי להגדיר את תג היומן לכל הודעות היומן. התג שמוגדר בדרך הזו מבטל את התג שמוגדר בזמן הריצה באמצעות __android_log_set_default_tag.
אם המאקרו LOG_TAG לא מוגדר והאפליקציה לא קוראת ל-__android_log_set_default_tag, התג שמוגדר כברירת מחדל הוא התוצאה של getprogname(). לדוגמה, שם קובץ ההפעלה.