VSIDL-এ স্কেলেবল সার্ভিস-ওরিয়েন্টেড মিডলওয়্যার ওভার আইপি (SOME/IP) ম্যাপিং সংজ্ঞায়িত করার সময়, আপনাকে SOME/IP পেলোডের গঠন বর্ণনা করতে হয়। এই গঠনটি বর্ণনা করার জন্য আপনাকে SomeIpType মেসেজটি ব্যবহার করতে হয়, যা দিয়ে প্রিমিটিভ, স্ট্রিং, অ্যারে এবং জটিল স্ট্রাকচার মডেল করা যায়।
এই পৃষ্ঠায় SomeIpStruct টাইপ ডেফিনিশন কীভাবে লিখতে হয় তার উপর আলোকপাত করা হয়েছে, যা ইভেন্ট এবং মেথড ম্যাপিংয়ের জন্য type_definition ব্লকে ব্যবহৃত হয়।
SomeIpStruct বার্তা
একটি SomeIpStruct মেসেজ একাধিক ফিল্ড সমন্বিত একটি স্ট্রাকচার্ড SOME/IP পেলোডকে উপস্থাপন করে। এখানে সংজ্ঞায়িত কাঠামোটি SOME/IP ব্রোকার দ্বারা কাঁচা SOME/IP বাইট এবং একটি SDV প্রোটোবাফ মেসেজের ফিল্ডগুলির মধ্যে অনুবাদ করার জন্য ব্যবহৃত হয়।
একটি স্ট্রাক্ট সংজ্ঞায়িত করার সময়, আপনাকে দুটি প্রধান প্রপার্টি কনফিগার করতে হয়:
-
length_field_size(ঐচ্ছিক): সিরিয়ালাইজড পেলোডে স্ট্রাক্টের আগে থাকা লেংথ ফিল্ডের আকার (বাইটে) নির্দিষ্ট করে।LengthFieldSizeenum থেকে ব্যবহৃত মানগুলির মধ্যে রয়েছেZERO(কোনো লেংথ ফিল্ড নেই),ONE,TWOএবংFOUR। -
field(পুনরাবৃত্তি): struct-টি গঠনকারী ফিল্ডগুলোর তালিকা।
স্ট্রাক্ট ফিল্ডগুলি সংজ্ঞায়িত করুন
SomeIpStruct ভেতরের প্রতিটি ফিল্ডের জন্য প্রয়োজন:
-
field_name: ফিল্ডের নাম। সঠিক বার্তা অনুবাদ নিশ্চিত করার জন্য, এই নামটি অবশ্যই SDV প্রোটোবাফ বার্তায় সংজ্ঞায়িত সংশ্লিষ্ট ফিল্ডের নামের সাথে হুবহু মিলতে হবে। -
field_type: ফিল্ডটির SOME/IP ডেটা টাইপ (SomeIpType)। এটি একটি প্রিমিটিভ, স্ট্রিং, অ্যারে বা অন্য কোনো নেস্টেড স্ট্রাক্ট হতে পারে।
কিছুআইপিটাইপ ফিল্ডের প্রকার লিখুন
field_type ব্লকটি নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে নির্দিষ্ট ডেটা টাইপ কনফিগার করে:
- প্রিমিটিভ টাইপ:
UINT8,UINT32,INT32,FLOAT32এবংBOOLমতো ভ্যালুগুলোর সাথেsomeip_primitiveব্যবহার করুন। - স্ট্রিং:
someip_stringব্যবহার করুন এবং এনকোডিং (যেমন,UTF_8,UTF_16_LE) ও দৈর্ঘ্যের তথ্য (fixed_lengthঅথবাlength_field_size) উল্লেখ করুন। - অ্যারে:
someip_arrayব্যবহার করুন এবংarray_type(যা আরেকটি রিকার্সিভSomeIpType) সংজ্ঞায়িত করুন, সাথে দৈর্ঘ্যের তথ্যও (fixed_lengthবাlength_field_size) দিন। - নেস্টেড স্ট্রাক্ট: অন্য একটি স্ট্রাক্ট ডেফিনিশনকে রিকার্সিভলি এমবেড করতে
someip_structব্যবহার করুন।
উদাহরণ: একটি struct টাইপের সংজ্ঞা লিখুন।
type_definition ব্লকের ভিতরে কিভাবে একটি SomeIpStruct লিখতে হয় তার একটি বাস্তব উদাহরণ এখানে দেওয়া হলো। এই পেলোডটিতে interval নামের একটি ৮-বিটের আনসাইনড ইন্টিজার এবং counter নামের একটি ৩২-বিটের আনসাইনড ইন্টিজার রয়েছে:
type_definition {
# No length field precedes this struct
length_field_size: ZERO
# First field: interval
field {
field_name: "interval"
field_type {
someip_primitive: UINT8
}
}
# Second field: counter
field {
field_name: "counter"
field_type {
someip_primitive: UINT32
}
}
}
জটিল প্রকার যোগ করুন
struct-এর ভিতরে একটি পরিবর্তনশীল দৈর্ঘ্যের স্ট্রিং ফিল্ড এবং একটি অ্যারে অন্তর্ভুক্ত করতে, ফিল্ডগুলি এইভাবে যোগ করুন:
field {
field_name: "status_message"
field_type {
someip_string {
string_encoding: UTF_8
length_field_size: FOUR
}
}
}
field {
field_name: "measurements"
field_type {
someip_array {
length_field_size: FOUR
array_type { someip_primitive: FLOAT32 }
}
}
}