דוגמאות קוד עיקריות

דוגמאות הקוד של 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.tag
  • persist.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(). לדוגמה, שם קובץ ההפעלה.