এই ডকুমেন্টটি আপনাকে একটি SOME/IP ম্যাপিং ফাইল লেখার পদ্ধতি সম্পর্কে নির্দেশনা দেয়। একটি SOME/IP ম্যাপিং ফাইল নির্ধারণ করে যে, কীভাবে SDV সার্ভিসগুলো SOME/IP সার্ভিসে ম্যাপ করা হয় এবং এর বিপরীতটিও ঘটে, যা SDV এবং নন-SDV ECU-গুলোর মধ্যে যোগাযোগ সহজতর করে।
আপনার .vsidl ফাইলের VsidlEntry মেসেজের অন্তর্ভুক্ত some_ip_mapping ফিল্ডটিতে SOME/IP ম্যাপিংয়ের তথ্য থাকে। some_ip_mapping ফিল্ডটি আপনাকে SDV সার্ভিস ডেফিনিশন থেকে আলাদাভাবে SOME/IP ম্যাপিং নির্ধারণ করার সুযোগ দেয়।
SomeIp Mapping প্রোটোটিতে SOME/IP ব্রোকারের SDV এবং SOME/IP ECU-গুলির মধ্যে রূপান্তরের জন্য প্রয়োজনীয় সমস্ত তথ্য থাকে। এই প্রোটোটি একটি SOME/IP সার্ভিসকে SDV ইকোসিস্টেমে অথবা SDV সার্ভিস ইউনিটগুলিকে AUTOSAR ইকোসিস্টেমে ম্যাপ করতে পারে।
মূল ধারণা
আপনার ম্যাপিং ফাইল লেখার আগে, এই মূল শনাক্তকারী এবং ধারণাগুলো বুঝে নিন:
এসডিভি ফুললি কোয়ালিফাইড ইনস্ট্যান্স নেম (FQIN): এই অনন্য স্ট্রিংটি এসডিভি সার্ভিস ইনস্ট্যান্সগুলোকে শনাক্ত করে। এটি ভিএম নেম, প্যাকেজ নেম, সার্ভিস নেম এবং ইনস্ট্যান্স নেম দিয়ে গঠিত।
SDV টাইপ: এই নামটি একটি SDV মেসেজ পেলোডের ডেটা ফরম্যাটের জন্য একটি অনন্য শনাক্তকারী এবং এটি একটি প্রোটো মেসেজের অনুরূপ।
SOME/IP
ServiceIdentifier(SOME/IP SID): সার্ভিস আইডি (uint16), ইনস্ট্যান্স আইডি (uint16), মেজর ভার্সন (uint8), এবং মাইনর ভার্সন (uint32)-এর সমন্বয়ে SOME/IP সার্ভিসগুলোকে অনন্যভাবে শনাক্ত করে।SDV RPC: SDV পরিষেবা দ্বারা প্রদত্ত মেথডসমূহ, যা
method name(স্ট্রিং), ধারণকারীTypeএবং একটিchannelনাম দ্বারা চিহ্নিত করা হয়।SDV পাব/সাব: SDV পরিষেবা দ্বারা প্রকাশিত বা সাবস্ক্রাইব করা বিষয়সমূহ, যা একটি
TypeএবংTopicনাম দ্বারা চিহ্নিত করা হয়।SOME/IP RPC: সার্ভিস আইডি, ইনস্ট্যান্স আইডি এবং মেথড আইডি (
uint16) দ্বারা শনাক্ত করা হয়।SOME/IP ইভেন্ট: Pub/Sub-এর জন্য SOME/IP পরিষেবা দ্বারা প্রকাশিত এবং পরিষেবা আইডি, ইনস্ট্যান্স আইডি, ইভেন্ট আইডি (
uint16) দ্বারা চিহ্নিত, এবং একটি ইভেন্ট-গ্রুপের (uint16) অন্তর্গত।SOME/IP ব্রোকার: SDV-এর একটি সংযোগকারী উপাদান যা SDV এবং SOME/IP পরিষেবাগুলির মধ্যে যোগাযোগ সক্ষম করার জন্য SOME/IP ম্যাপিং ফাইলটি ব্যবহার করে।
ফাইলের কাঠামো এবং অবস্থান
আপনার .vsidl ফাইলের VsidlEntry মেসেজের মধ্যে SOME/IP ম্যাপিং তথ্যটি some_ip_mapping নামক একটি পুনরাবৃত্ত ফিল্ড হিসেবে অন্তর্ভুক্ত থাকে। এর ফলে SDV সার্ভিস ডেফিনিশন থেকে SOME/IP ম্যাপিংগুলোকে আলাদাভাবে সংজ্ঞায়িত করা যায়, যা আপনাকে একটি নির্দিষ্ট ফাইলে ম্যাপিংগুলো পরিচালনা করতে সক্ষম করে।
// The root message for VSIDL files.
message VsidlEntry {
// Required. Package name for entities mentioned in the file.
string package = 1;
// List of SDV service bundles defined in the file.
repeated ServiceBundle sdv_service_bundle = 2;
// Enables custom extensions beyond the standard VSIDL model.
repeated google.xml.Any extension = 3;
// SOMEIP mapping rules.
repeated sdv.someip.v1.SomeIpMapping some_ip_mapping = 4;
// VHAL mapping rules.
repeated VhalMapping vhal_mapping = 5;
}
একটি ম্যাপিং ফাইল তৈরি করুন
একটি SOME/IP ম্যাপিং ফাইলে সাধারণত এমন সংজ্ঞা থাকে যা SDV ইকোসিস্টেম এবং SOME/IP নেটওয়ার্ক প্রোটোকলের মধ্যে অনুবাদ করে। আপনি দুটি প্রধান উপায়ে ম্যাপিং সংজ্ঞায়িত করতে পারেন:
-
sdv_type_mapping: একটি SDV টাইপকে (যেমন একটি RPC ইন্টারফেস বা একটি পাবলিকেশন টপিক) একটি SOME/IP সার্ভিসের সাথে ম্যাপ করে। -
someip_service_mapping: একটি র SOME/IP সার্ভিসকে (এবং এর ইনস্ট্যান্স, ইভেন্ট বা মেথডসমূহকে) SDV পাব/সাব টপিক অথবা RPC চ্যানেলের সাথে ম্যাপ করে।
একটি একক ম্যাপিং ফাইলে এক বা একাধিক SomeIpMapping সংজ্ঞা থাকে।
এসডিভি টাইপ ম্যাপিং
sdv_type_mapping হলো বিদ্যমান SDV টাইপগুলোর জন্য, যেগুলোকে আপনি SOME/IP নেটওয়ার্কে প্রকাশ করতে চান।
এসডিভি টাইপ ম্যাপিং কাঠামো
আপনাকে নির্দিষ্ট করে বলতে হবে:
-
unit_type: যে SDV টাইপটি ম্যাপ করা হচ্ছে (package_nameএবংtype_nameদ্বারা চিহ্নিত)। -
someip_service_id: ১৬-বিটের SOME/IP সার্ভিস আইডি। -
version_majorএবংversion_minor: SOME/IP পরিষেবার ভার্সনিং। service_oriented_mapping: নির্দিষ্ট ম্যাপিং আচরণ সংজ্ঞায়িত করে (হয় একটি RPC ইন্টারফেসের জন্য অথবা একটি পাবলিকেশনের জন্য)।
প্রকাশনা ম্যাপিং উদাহরণ
আপনার SDV টাইপ যদি একটি টপিক (পাবলিকেশন) হয়, তাহলে publication_mapping ব্যবহার করুন। এটি ডেটার কাঠামো ( type_definition ) এবং SOME/IP ইভেন্ট আইডি বা ইভেন্টগ্রুপ আইডি-কে ম্যাপ করে, এবং এরপর নির্দিষ্ট SDV টপিকগুলোকে SOME/IP ইনস্ট্যান্সের সাথে ম্যাপ করে।
sdv_type_mapping {
unit_type {
package_name: "com.android.sdv.samples"
type_name: "SpeedData"
}
someip_service_id: 0x1001
version_major: 1
version_minor: 0
service_oriented_mapping {
publication_mapping {
offered_topic {
simple_mapping {
group_id: 1
event_id: 0x8001
}
# type_definition defines the structural mapping to SOME/IP payloads
type_definition {
# ... (SomeIpStruct definition) ...
}
}
# Maps the SDV topic name to a specific SOME/IP instance
topic_mapping {
topic: "vehicle_speed_topic"
instance_id: 0x0001
}
}
}
}
RPC ইন্টারফেস ম্যাপিং উদাহরণ
আপনার SDV টাইপ যদি একটি RPC ইন্টারফেস হয়, তাহলে rpc_interface_mapping ব্যবহার করুন। SDV প্রসিডিউরের নামগুলোকে SOME/IP method_id ইনস্ট্যান্সের সাথে ম্যাপ করুন এবং SDV চ্যানেলগুলোকে SOME/IP ইনস্ট্যান্সের সাথে লিঙ্ক করুন।
sdv_type_mapping {
unit_type {
package_name: "com.android.sdv.samples"
type_name: "DoorControl"
}
someip_service_id: 0x2001
version_major: 1
version_minor: 0
service_oriented_mapping {
rpc_interface_mapping {
offered_interface {
method {
procedure: "LockDoors"
method_id: 0x0001
# request_payload_mapping and response_payload_mapping can be defined here
}
}
rpc_channel_mapping {
channel: "front_doors"
instance_id: 0x0001
}
}
}
}
SOME/IP পরিষেবা ম্যাপিং
someip_service_mapping নির্ধারণ করে যে, নেটওয়ার্কে আবিষ্কৃত বা অফার করা একটি নির্দিষ্ট SOME/IP সার্ভিস কীভাবে SDV টপিক এবং চ্যানেলের সাথে ম্যাপ হবে। এটি ইভেন্ট এবং RPC-এর জটিল প্যারামিটারযুক্ত ম্যাপিংয়ের সুযোগ দেয়।
SOME/IP পরিষেবা ম্যাপিং কাঠামো
-
someip_service_id,version_major,version_minor: SOME/IP সার্ভিসটি শনাক্ত করুন। sd_behavior(ঐচ্ছিক): সার্ভিস ডিসকভারি আচরণ নির্ধারণ করে (EXACT_OR_ANY_MINOR_VERSIONঅথবাMINIMUM_MINOR_VERSION)instance: নির্দিষ্ট SOME/IPinstance_idইনস্ট্যান্সগুলোর জন্য SDV সার্ভিস ইউনিট এবং টপিকগুলোকে প্যারামিটারাইজ করে।instance_impl: ইনস্ট্যান্সটির বাস্তবায়ন বর্ণনা করে, যা ইভেন্ট বা মেথডগুলোকে প্যারামিটারাইজড সার্ভিস ইউনিটের সাথে ম্যাপ করে।
ইভেন্ট ম্যাপিং উদাহরণ
এই উদাহরণটি একটি SOME/IP ইভেন্টকে একটি SDV টপিকে ম্যাপ করে। এটি ID 1-কে speed_sensor_unit লিটারেল স্ট্রিং-এর সাথে ম্যাপ করতে instance ব্যবহার করে।
someip_service_mapping {
someip_service_id: 0x1001
version_major: 1
version_minor: 0
# Parameterize instances
instance {
instance_id: 0x0001
sdv_service_unit_parameterization {
key: 1
value: "speed_sensor_unit"
}
sdv_topic_parameterization {
key: 1
value {
topic: "speed_topic"
capacity: 10
}
}
}
# Description of all instances
instance_impl {
offered_event {
group_id: 1
event_id: 0x8001
simple_event {
sdv_unit_type {
package_name: "com.android.sdv.samples"
type_name: "SpeedData"
}
# Refers to key 1 in sdv_service_unit_parameterization. If unspecified,
# service unit name will be automatically generated by the broker
service_unit: 1
topic: 1 # Refers to key 1 in sdv_topic_parameterization
message_translation_mode: REFLECTION
type_definition {
# ... (SomeIpStruct definition) ...
}
}
}
}
}
আরপিসি ম্যাপিং উদাহরণ
এই উদাহরণটি একটি SOME/IP RPC সার্ভিসকে একটি SDV RPC ইন্টারফেসের সাথে ম্যাপ করে। ইভেন্ট ম্যাপিংয়ের মতোই, সার্ভিসটি সার্ভিস ইউনিটের নাম প্যারামিটারাইজ করার জন্য `instance` ব্যবহার করে। এটি SDV-তে থাকা RPC চ্যানেলের নামের সাথে সঙ্গতিপূর্ণ। এরপর instance_impl ব্লকটি SOME/IP method_id কে SDV প্রসিডিউরের নামের সাথে লিঙ্ক করার জন্য offered_interface এর একটি ইনস্ট্যান্স সংজ্ঞায়িত করে:
someip_service_mapping {
someip_service_id: 0x2001
version_major: 1
version_minor: 0
# Parameterize instances
instance {
instance_id: 0x0001
sdv_service_unit_parameterization {
key: 1
value: "door_control_unit"
}
}
instance_impl {
offered_interface {
sdv_unit_type {
package_name: "com.android.sdv.samples"
type_name: "DoorControl"
}
# Refers to key 1 in sdv_service_unit_parameterization. This corresponds
# to the RPC channel name in SDV.
service_unit: 1
method {
procedure: "LockDoors"
method_id: 0x0001
# request_payload_mapping and response_payload_mapping can be defined here
}
}
}
}
উন্নত বৈশিষ্ট্য
এই বিভাগে SOME/IP ম্যাপিং দ্বারা সমর্থিত উন্নত বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে।
দলগত অনুষ্ঠান
group_event একটি একক SOME/IP ইভেন্টকে বিভক্ত করে একই সাথে একাধিক SDV টপিকে ম্যাপ করার সুযোগ দেয়। এটি করা হয় একাধিক event_part এন্ট্রি নির্দিষ্ট করে এবং field_name_mapping ব্যবহার করে আগত SOME/IP পেলোড ফিল্ডের নামগুলোকে SDV পেলোড ফিল্ডের নামের সাথে ম্যাপ করার মাধ্যমে:
offered_event {
group_id: 1
event_id: 0x8002
group_event {
type_definition {
# Definition of the complete SOME/IP payload
}
event_part {
sdv_unit_type {
package_name: "com.android.sdv.samples"
type_name: "PartAData"
}
service_unit: 1
topic: 1
field_name_mapping {
key: "someip_field_a"
value: "sdv_field_a"
}
}
event_part {
sdv_unit_type {
package_name: "com.android.sdv.samples"
type_name: "PartBData"
}
service_unit: 2
topic: 2
field_name_mapping {
key: "someip_field_b"
value: "sdv_field_b"
}
}
}
}
ফায়ার অ্যান্ড ফরগেট ম্যাপিং
SOME/IP ফায়ার অ্যান্ড ফরগেট (F&F) মেথডগুলোর SDV RPC ইন্টারফেসে কোনো সরাসরি সমতুল্য নেই। এর পরিবর্তে, publication_mapping ব্যবহার করে একটি SDV টপিককে (পাবলিকেশন) F&F মেথডের সাথে ম্যাপ করার মাধ্যমে এগুলোকে আহ্বান করা হয়। যখন সংশ্লিষ্ট SDV টপিকে ডেটা পাবলিশ করা হয়, তখন ব্রোকার সেটিকে একটি SOME/IP F&F মেথড কলে রূপান্তরিত করে।
এটি কনফিগার করতে, আপনাকে অবশ্যই offered_topic ব্লকের মধ্যে someip_ff_methods: true সেট করতে হবে এবং আপনার topic_mapping ভিতরে গন্তব্য fire_and_forget_method রাউটিংয়ের বিবরণ প্রদান করতে হবে।
sdv_type_mapping {
unit_type {
package_name: "com.android.sdv.sample.someip"
type_name: "CounterLoad"
}
someip_service_id: 0x13
version_major: 1
version_minor: 0
service_oriented_mapping {
publication_mapping {
offered_topic {
type_definition {
# ... (SomeIpStruct definition) ...
}
someip_ff_methods: true
}
topic_mapping {
topic: "counter-load-start-counter"
instance_id: 0x1
fire_and_forget_method {
service_id: 0x3700
instance_id: 0x1000
version_major: 1
version_minor: 0
method_id: 0x1000
}
}
}
}
}