عيّنات التعليمات البرمجية الأساسية

تتيح لك عينات التعليمات البرمجية لخدمات SDV Core في /system/software_defined_vehicle/samples بدء إنشاء خدماتك. يحتوي كل نموذج على ملف README يصف حالة الاستخدام.

نظرة عامة على دليل النماذج

يسرد الجدول التالي أدلة النماذج المرجعية في system/software_defined_vehicle/samples وأدلة المستندات المقابلة لها:

دليل العيّنات الوصف دليل المستندات
system/software_defined_vehicle/samples/quickstart نموذج لحزمة خدمات Rust شاملة يعرض نشر VSIDL والاشتراك وRPC بين حزمتَي 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 من المصنّع الأصلي للجهاز
system/software_defined_vehicle/samples/sdv_gateway نماذج تطبيقات IVI الأصلية وتطبيقات Java (NativeSdvGatewayTestApp وSdvCarMonitorTestApp) التي تتواصل مع خدمات SDV Core من خلال SDV Gateway استخدام SDV Gateway على نظام المعلومات والترفيه داخل المركبة (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 على بيانات منظَّمة بدلاً من النص الحر.

يتم تسجيل البيانات المنظَّمة باستخدام واجهة برمجة التطبيقات لقائمة الأحداث، والتي يتم تسجيلها دائمًا باستخدام الأولوية INFO ورقم تعريف العلامة الرقمي.

يمكن تحديد ملف .logtags باستخدام سمة logtags في Android.bp.. عند توفيره، يستخدمه logcat لاستخراج اسم العلامة من رقم تعريف العلامة الرقمي. يمكن بعد ذلك استخدام اسم العلامة لفلترة السجلّات المنظَّمة. للحصول على التفاصيل ووصف لتنسيق الملف، يُرجى الاطّلاع على التعليق في ملف logcat event.logtags.

أثناء عملية الإنشاء، يتم دمج جميع ملفات 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(). على سبيل المثال، اسم الملف القابل للتنفيذ.