একটি SOME/IP টাইপের সংজ্ঞা লিখুন

VSIDL-এ স্কেলেবল সার্ভিস-ওরিয়েন্টেড মিডলওয়্যার ওভার আইপি (SOME/IP) ম্যাপিং সংজ্ঞায়িত করার সময়, আপনাকে প্রতিটি SOME/IP মেসেজের ওয়্যার ফরম্যাট সিরিয়ালাইজেশন এবং পেলোড এনকোডিং বর্ণনা করতে হয়। SomeIpType এবং SomeIpStruct ডেফিনিশন ব্যবহার করে, আপনি প্রিমিটিভ, স্ট্রিং, অ্যারে এবং নেস্টেড স্ট্রাক্ট মডেল করতে পারেন যা AUTOSAR ARXML ( SOMEIP-TRANSFORMATION-PROPS ) এবং SOME/IP স্ট্যাক পেলোড এনকোডিং নিয়ম (COVESA vsomeip সহ) মেনে চলে।

এই পৃষ্ঠায় SomeIpStruct টাইপ ডেফিনিশন কীভাবে লিখতে হয় তার উপর আলোকপাত করা হয়েছে, যা ইভেন্ট এবং মেথড ম্যাপিংয়ের জন্য type_definition ব্লকে ব্যবহৃত হয়।

SomeIpStruct বার্তা

একটি SomeIpStruct মেসেজ একাধিক ফিল্ড সমন্বিত একটি স্ট্রাকচার্ড SOME/IP পেলোডকে উপস্থাপন করে। এখানে সংজ্ঞায়িত কাঠামোটি SOME/IP ব্রোকার দ্বারা কাঁচা SOME/IP বাইট এবং একটি SDV প্রোটোবাফ মেসেজের ফিল্ডগুলির মধ্যে অনুবাদ করার জন্য ব্যবহৃত হয়।

একটি স্ট্রাক্ট সংজ্ঞায়িত করার সময়, আপনাকে দুটি প্রধান প্রপার্টি কনফিগার করতে হয়:

  • length_field_size (ঐচ্ছিক): সিরিয়ালাইজড পেলোডে স্ট্রাক্টের আগে থাকা লেংথ ফিল্ডের আকার (বাইটে) নির্দিষ্ট করে। LengthFieldSize enum থেকে ব্যবহৃত মানগুলির মধ্যে রয়েছে 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 }
    }
  }
}

AUTOSAR ARXML এবং vsomeip পেলোড এনকোডিং ম্যাপ করুন

বাহ্যিক AUTOSAR ইলেকট্রনিক কন্ট্রোল ইউনিট (ECU) বা COVESA vsomeip মতো SOME/IP স্ট্যাকের সাথে AAOS SDV ইন্টিগ্রেট করার সময়, নিশ্চিত করুন যে আপনার VSIDL type_definition আপনার সিস্টেমের ARXML ( SOMEIP-TRANSFORMATION-PROPS এবং SOMEIP-DATA-PROTOTYPE-TRANSFORMATION-PROPS ) বা vsomeip কনফিগারেশনে সংজ্ঞায়িত ওয়্যার সিরিয়ালাইজেশন প্যারামিটারগুলির সাথে মেলে।

AUTOSAR ARXML এবং vsomeip প্যারামিটার VSIDL SomeIpType সমতুল্য ওয়্যার সিরিয়ালাইজেশন এবং পেলোড এনকোডিং নিয়ম
sizeOfStructLengthField ( 0 , 1 , 2 , 4 বাইট) SomeIpStruct.length_field_size ( ZERO , ONE , TWO , FOUR ) সিরিয়ালাইজড স্ট্রাক্ট পেলোডের আগে একটি সুস্পষ্ট বাইট-দৈর্ঘ্যের প্রিফিক্স যুক্ত করে। দৈর্ঘ্য প্রিফিক্সবিহীন ফিক্সড-লেআউট স্ট্রাক্টগুলোর জন্য এর ZERO সেট করুন।
sizeOfArrayLengthField ( 0 , 1 , 2 , 4 বাইট) SomeIpArray.length_field_size ( ZERO , ONE , TWO , FOUR ) অথবা fixed_length ডাইনামিক অ্যারের জন্য একটি লেংথ ফিল্ড প্রিফিক্স ( ONE , TWO বা FOUR বাইট) প্রয়োজন হয়, যা সিরিয়ালাইজড অ্যারে এলিমেন্টগুলোর বাইট দৈর্ঘ্য নির্দেশ করে।
sizeOfStringLengthField এবং এনকোডিং ( UTF-8 , UTF-16LE , UTF-16BE ) SomeIpString.string_encoding এবং length_field_size অথবা fixed_length পরিবর্তনশীল-দৈর্ঘ্য এবং নির্দিষ্ট-দৈর্ঘ্যের স্ট্রিংয়ের জন্য AUTOSAR স্ট্রিং সিরিয়ালাইজেশন নিয়ম (বাইট অর্ডার মার্ক এবং নাল-টার্মিনেশন হ্যান্ডলিং সহ) মেনে চলে।
আদিম মূল টাইপ ( uint8 , uint16 , uint32 , float32 , boolean ) SomeIpPrimitive ( UINT8 , UINT16 , UINT32 , INT32 , FLOAT32 , BOOL ) টার্গেট প্রোটোবাফ ফিল্ডের সাথে মিলিয়ে প্রিমিটিভ ভ্যালুগুলোকে নেটওয়ার্ক বাইট অর্ডারে (SOME/IP স্পেসিফিকেশন অনুযায়ী ডিফল্টভাবে বিগ-এন্ডিয়ান) এনকোড করে।