پشته SOME/IP منطق انتقال سطح پایین SOME/IP را از طریق رابط زبان تعریف رابط اندروید (AIDL) مدیریت میکند. این پشته رویدادهای SOME/IP و فراخوانیهای رویه از راه دور (RPC) را ارسال و دریافت میکند. این سند مفاهیم زیر را شرح میدهد:
پیادهسازی مرجع: SDV یک پیادهسازی نمونه مرجع غیر تولیدی برای پشته SOME/IP ارائه میدهد.
رابط برنامهنویسی کاربردی (API) بایندر: رابط
ISomeIpStackمتدهایی را برای تعامل با یک نمونه از پشته SOME/IP تعریف میکند.SELinux: یک پیکربندی نمونه SELinux برای پشته مرجع، امکان ارتباط بایندر و دسترسی جزئی به سیستم فایل را فراهم میکند.
در حالی که این پشته قالب سیمی SOME/IP را میخواند، محموله را به صورت حبابهای دودویی مات رها میکند و محموله را به کارگزار SOME/IP ارسال میکند.
استاندارد SOME/IP هیچ تعریفی از پشته یا لایه API پشته ارائه نمیدهد. SDV یک API AIDL ارائه میدهد که در چارچوب تعاریف آشنای استاندارد عمل میکند و برای تطبیق با پشتههای موجود به حداقل کد نیاز دارد.
این API به شما امکان میدهد پیادهسازیهای مختلف پشته را انتخاب کنید و ادغام پشته با سایر اجزای سیستم را ساده میکند.
پیادهسازی مرجع
SDV یک پیادهسازی نمونه مرجع غیرتولیدی برای پشته SOME/IP ارائه میدهد و شامل یک پوشش نازک روی کتابخانه متنباز COVESA vsomeip است. سیستم پشته مرجع را فقط برای اهداف sdv_core_cf و sdv_core_arm64 مستقر میکند و init.rc آن را روی ماشین مجازی با CID=3 شروع میکند.
on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
start sdv_someip_stack_agent
پیکربندی استقرار در محیط عملیاتی را برای پشته تعریفشده توسط OEM خود تعریف کنید. برای کسب اطلاعات بیشتر، به «ادغام SOME/IP با SDV» مراجعه کنید.
پیکربندی
پشته مرجع، پیکربندی کتابخانه vSomeIP را اعلام میکند. برای شرح ساختار پیکربندی به ساختار فایل پیکربندی مراجعه کنید. به عنوان بخشی از پیکربندی، پارامترهای SOME/IP SD، مانند آدرس چندپخشی و پورت مورد استفاده توسط پشته را مشخص میکنیم.
رابط برنامهنویسی کاربردی (API)
رابط ISomeIpStack در core_services/some_ip/aidl/google/sdv/someip تعریف شده است. رابط ISomeIpStack متدهایی را برای تعامل با یک نمونه پشته SOME/IP تعریف میکند و ویژگیهای ضروری این موارد را فراهم میکند.
در دسترس بودن خدمات
register_availability_callbackیک فراخوانی برای تغییرات در دسترس بودن سرویس ثبت میکند.monitor_serviceبه پشته دستور میدهد تا در دسترس بودن یک سرویس خاص را رصد کند.unregister_availability_callbackفراخوانی مربوط به دسترسی را از حالت ثبت خارج میکند.on_sdv_service_availabilityنشان دهنده تغییر در دسترس پذیری سرویس SDV است.
فراخوانیهای رویه از راه دور (RPC)
شما میتوانید یک درخواست RPC با استفاده از دستور زیر ارسال کنید:
-
rpc_transactبرای انتظار پاسخ -
rpc_onewayبرای منتظر نماندن برای پاسخ
برای مدیریت درخواستهای RPC:
register_rpc_request_callbackیک فراخوانی برای درخواستهای RPC ورودی ثبت میکند.unregister_rpc_request_callbackفراخوانی درخواست RPC را از حالت ثبت خارج میکند.
اطلاع رسانی رویداد
register_event_notification_callbackیک فراخوانی برای اعلانهای رویداد مشترک ثبت میکند.unregister_event_notification_callbackفراخوانی اعلان رویداد را از حالت ثبت خارج میکند.on_sdv_topic_availabilityنشان دهنده تغییر در دسترس بودن موضوع SDV است.subscribeشدن در یک رویداد خاص از یک گروه رویداد.unsubscribeلغو اشتراک از یک رویداد خاص.publishرویدادی با بار داده شده را منتشر میکند.
SELinux
پوشه device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ شامل یک نمونه پیکربندی SELinux برای پشته مرجع است:
sdv_someip_stack_default.teنوعsdv_someip_stack_defaultرا تعریف کرده و آن را به ویژگیها و زمینهها نگاشت میکند.file_contextsپوشههای باینری و دادهای را به contextهای مناسب نگاشت میکند.
این پیکربندی، ارتباط Binder بین استک و واسط را فعال میکند و امکان دسترسی به ویژگیهای شبکه و دسترسی جزئی به سیستم فایل دستگاه را فراهم میکند.