বেসিক SOME/IP ট্রান্সলেশনটি AUTOSAR পরিষেবাগুলির সাথে ইন্টিগ্রেশনের জন্য একটি আপডেটেবল সমাধান প্রদানের উদ্দেশ্যে ডিজাইন করা হয়েছিল। ব্রোকারের জন্য প্রধান চ্যালেঞ্জ ছিল এমন সব মেসেজ এবং RPC কল অনুবাদ করা, যা কম্পাইলেশনের সময় জানা ছিল না। এর সমাধান করতে, রানটাইম আপডেটগুলি SDV পরিষেবাগুলির ডায়নামিক সংযোজন বা আপডেট ধরে নেয়, ঠিক যেমনভাবে নতুন ইউনিট টাইপ চালু করা হয়।
এই ডাইনামিক ট্রান্সলেশনের সমাধানটি রানটাইম টাইপ ইনফরমেশন (RTTI)-এর উপর ভিত্তি করে তৈরি। ব্রোকারটি ইনস্টল করা সমস্ত সার্ভিস বান্ডেল থেকে কনফিগারেশন গ্রহণ করে এবং সেই কনফিগারেশনের ডেটা স্কিম ব্যবহার করে রিফ্লেকশন-ভিত্তিক ট্রান্সলেশন সম্পাদন করে।
RTTI-ভিত্তিক অনুবাদ নমনীয়তা প্রদান করলেও, এটি প্রি-কম্পাইলড পদ্ধতির তুলনায় স্বভাবতই ধীরগতির। অধিক লোডযুক্ত ডেটা পাথ অপ্টিমাইজ করতে, এমন একটি কৌশল ব্যবহার করুন যা অনুবাদকে এড়িয়ে যায়।
বৃহৎ এবং ঘন ঘন বার্তা গ্রহণকে সমর্থন করার জন্য, SDV আপনাকে অনুবাদ এড়িয়ে যেতে এবং SOME/IP ফরম্যাটের বাইটগুলিকে গ্রাহক পরিষেবা বান্ডেলে ফরোয়ার্ড করতে দেয়।
সার্ভিস বান্ডেলটি SOME/IP ফরম্যাটের পেলোড পরিচালনা করে, যা হয় পেলোডটি গ্রহণ করতে পারে অথবা সেটিকে প্রোটোবাফে অনুবাদ করতে পারে।
অনুবাদ এড়িয়ে যেতে একটি SOME/IP ম্যাপিং ফাইলে ইভেন্টের জন্য message_translation_mode: INTERPRET_AS_BYTES নির্দিষ্ট করুন। samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl এ একটি উদাহরণ দেখুন।
অনুবাদ পদ্ধতির সুবিধা-অসুবিধা
অনুবাদ পদ্ধতি বেছে নেওয়ার সময় এই সুবিধা-অসুবিধাগুলো বিবেচনা করুন:
সিস্টেমের সাথে মিথস্ক্রিয়া: মূল ফরম্যাটের বিবরণ না জেনে অন্যান্য SDV পরিষেবাগুলো SOME/IP ফরম্যাটে পাঠানো বাইটগুলো ব্যাখ্যা করতে পারে না। উদাহরণস্বরূপ, SDV টেলিমেট্রি এই ধরনের বার্তাগুলোর স্বতন্ত্র ফিল্ডগুলো প্রসেস করতে পারে না।
অতিরিক্ত প্রচেষ্টা: SOME/IP ফরম্যাটে কাঁচা পেলোড অনুবাদ করার জন্য সার্ভিস বান্ডেল ডেভেলপারের পক্ষ থেকে অতিরিক্ত প্রচেষ্টার প্রয়োজন হয়।
লাইব্রেরি জেনারেটর
SDV, SOME/IP ফরম্যাট অনুবাদের জন্য একটি স্বয়ংক্রিয় জেনারেটর প্রদান করে। এই জেনারেটরটি রিফ্লেকশন ছাড়াই সরাসরি অনুবাদের জন্য উপলব্ধ মেসেজ ডেফিনিশন এবং ম্যাপিংয়ের উপর ভিত্তি করে লাইব্রেরি তৈরি করে। যে সার্ভিস বান্ডেলগুলো ফরওয়ার্ড করা SOME/IP বাইট ব্যবহার করে, তারা এই জেনারেট করা লাইব্রেরিগুলো ব্যবহার করতে পারে।
সুপারিশ: জেনারেটরটি কেবল তখনই ব্যবহার করুন, যখন আপনার OEM এমন পারফরম্যান্স-সংক্রান্ত গুরুত্বপূর্ণ ইভেন্ট শনাক্ত করে যা আপনার প্রোজেক্টের পারফরম্যান্সের প্রয়োজনীয়তার মধ্যে অনুবাদ করা সম্ভব নয়। এই ধরনের ক্ষেত্রে, আপনার OEM-এর কাছে RTTI-ভিত্তিক অনুবাদের জন্য ব্যবহৃত প্রোটোবাফ ডেফিনিশন এবং SOME/IP ম্যাপিং উভয়ই আগে থেকেই থাকা উচিত। এই একই কনফিগারেশন জেনারেটরের জন্য ইনপুট হিসেবে কাজ করতে পারে। আরও বিস্তারিত জানতে, core_services/tools/someip_translation_generator/ ডিরেক্টরিতে থাকা README.md ফাইলটি দেখুন।