এমুলেটরে VHAL সম্পত্তির বিবরণ প্রসারিত করুন

অ্যান্ড্রয়েড অটোমোটিভ OS (AAOS) এ সাধারণ VHAL বৈশিষ্ট্য রয়েছে যা একটি এমুলেটরের VHAL উইন্ডোতে দেখা যেতে পারে। ফলস্বরূপ, আপনি নাম, বর্ণনা এবং মানগুলির অর্থ সহ VHAL সম্পর্কে প্রচুর তথ্য দেখতে পারেন। তথ্য VHAL বৈশিষ্ট্যের মেটাডেটা থেকে বের করা হয়, যা QEMU এমুলেটরে হার্ড-কোড করা হয়।

যখন আপনি আপনার ডিভাইসে একচেটিয়া ব্যবহারের জন্য আপনার নিজস্ব VHAL বৈশিষ্ট্যগুলি যোগ করেন, VHAL উইন্ডোতে VHAL মেটাডেটা দেখার জন্য আপনাকে কোডটি সংশোধন করতে হবে এবং একটি কাস্টমাইজড QEMU এমুলেটর তৈরি করতে হবে৷ এটিকে ঘিরে কাজ করার জন্য, আপনি JSON ফর্ম্যাটে আপনার নিজের বিবরণ লিখতে পারেন এবং সেগুলি আপনার সিস্টেমের ছবিতে লিখতে পারেন।

ওভারভিউ

এই পৃষ্ঠায় আপনি কীভাবে একটি AAOS এমুলেটরে VHAL বৈশিষ্ট্যের বিবরণ প্রসারিত করতে পারেন তার বিশদ বিবরণ দেয়।

VHAL বৈশিষ্ট্য প্রসারিত করতে JSON মেটাডেটা তৈরি করুন

এমুলেটর অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইস (AVD) পাথে -types-meta.json দিয়ে শেষ হওয়া সমস্ত ফাইলে অতিরিক্ত মেটাডেটা খোঁজে। JSON ফাইলগুলি নীচে দেখানো হিসাবে Enum অবজেক্টগুলির একটি অ্যারে নিয়ে গঠিত বলে আশা করা হচ্ছে।

এনাম বস্তু

VehicleProperty নামের Enum বস্তুটি একটি বিশেষ ক্ষেত্রে যা আপনি এটিকে একটি মূল হিসাবে বিবেচনা করতে পারেন। এর বিষয়বস্তু গাড়ির বৈশিষ্ট্য মানচিত্রে যোগ করা হয়। অন্যান্য Enums ( VehicleProperty ব্যতীত অন্য একটি নাম সহ ) কাস্টম মানগুলির নামের মানচিত্র সংজ্ঞায়িত করে৷

Enum: {
  "name" : String,
  "values" : Array of { ValueObject }
}  

ValueObject

ValueObject: {
  "name" : String,
  "value" : Integer,
  "data_enum" : String, VehicleProperty only, optional,
}

VehicleProperty এর জন্য, Enum নাম বর্ণনা করে যে কীভাবে এই সম্পত্তিটি এমুলেটরের VHAL উইন্ডোতে প্রদর্শিত হয়। মান হল ValueObject দ্বারা বর্ণিত সম্পত্তির property_iddata_enum ValueObject অন্য Enum সাথে সংযুক্ত করে। এই অ্যাসোসিয়েশনটি মানুষের পঠনযোগ্য স্ট্রিং-এ একটি মান ম্যাপ করতে ব্যবহৃত হয় এবং VehicleProperty জন্য Enum এ শুধুমাত্র ValueObjects জন্য বিদ্যমান। VehicleProperty একটি উদাহরণ নীচে দেখানো হয়েছে:

[
  {
      "name": "VehicleProperty",
      "values": [
          {
              "name": "CURRENT_GEAR",
              "value": 289408001
          }
      ]
  }
]

এই উদাহরণে, 289408001 value সহ একটি property_id CURRENT_GEAR এর name হিসাবে দেওয়া হয়েছে। এমুলেটরে, এই সম্পত্তিটি ইতিমধ্যে একটি নাম হিসাবে হার্ড-কোড করা হয়েছে, বর্তমান গিয়ার । (আপনি এই দৃশ্যটি পুনরুত্পাদন করতে পারবেন না কারণ এই পৃষ্ঠাটি প্রদর্শনের উদ্দেশ্যে সমস্ত হার্ড-কোডেড বৈশিষ্ট্যগুলি সরানোর পরে রচিত হয়েছিল৷)

চিত্র 1. যানবাহন সম্পত্তি নাম এবং মান সহ সংজ্ঞায়িত।

এমুলেটরের VHAL বৈশিষ্ট্য ট্যাবে, নামটি আশানুরূপ CURRENT_GEAR পড়ার জন্য রিফ্রেশ করা হয়েছে।

ডেটা_এনাম

উপরের উদাহরণে, গিয়ার P এ সেট করা হলে প্রদর্শিত মান 4 হয়।

চিত্র 2. মান 4 হিসাবে প্রদর্শিত।

উদ্দেশ্য হিসাবে, এমুলেটরের ভিএইচএএল বৈশিষ্ট্য ট্যাবে, নামটি CURRENT_GEAR হিসাবে প্রদর্শিত হবে। এটি বিদ্যমান এমুলেটরের বিপরীতে, যেখানে এটি P হিসাবে প্রদর্শিত হয়।

enum VehicleGear {
  GEAR_UNKNOWN = 0x0000,
  GEAR_NEUTRAL = 0x0001,
  GEAR_REVERSE = 0x0002,
  GEAR_PARK = 0x0004,
  GEAR_DRIVE = 0x0008,
  GEAR_1 = 0x0010,
  GEAR_2 = 0x0020,
  GEAR_3 = 0x0040,
  GEAR_4 = 0x0080,
  GEAR_5 = 0x0100,
  GEAR_6 = 0x0200,
  GEAR_7 = 0x0400,
  GEAR_8 = 0x0800,
  GEAR_9 = 0x1000,
}

আরও জানতে, এআইডিএল সংজ্ঞা দেখুন।

AIDL-এ যেমন সংজ্ঞায়িত করা হয়েছে, পার্ক গিয়ারের মান হল 4 , যার মানে আপনাকে মান 4কে P- তে অনুবাদ করতে হবে। এটি হল যখন আপনি data_enum ব্যবহার করেন, যা অন্য Enum এ একটি মানুষের পঠনযোগ্য স্ট্রিং-এর সাথে এই সম্পত্তির মান ম্যাপ করে। এমুলেটর সম্পত্তি মান অনুবাদ করতে এই মানচিত্র ব্যবহার করে. যেমন:

[
    {
        "name": "VehicleProperty",
        "values": [
            {
                "name": "CURRENT_GEAR",
                "value": 289408001,
                "data_enum": "VehicleGear"
            }
        ]
    },
    {
        "name": "VehicleGear",
        "values": [
            {
                "name": "GEAR_UNKNOWN",
                "value": 0
            },
            {
                "name": "GEAR_PARK",
                "value": 4
            }
        ]
    }

]

"data_enum": "VehicleGear" যোগ করুন, তাই এমুলেটর সম্পত্তির মান অনুবাদ করতে VehicleGear নামে একটি Enum ব্যবহার করে। VehicleGear নামের আরেকটি Enum যোগ করুন যার মানটি ValueObject এর একটি অ্যারে, যেখানে সম্পত্তির মান (মান সহ) একটি নাম হিসাবে প্রদর্শিত হবে।

চিত্র 3. মান GEAR_PARK হিসাবে প্রদর্শিত।

এমুলেটরের জন্য VHAL বৈশিষ্ট্য ট্যাবে, নামটি CURRENT_GEAR পড়ার জন্য রিফ্রেশ করা হয়েছে, যেমনটি প্রত্যাশিত। 4 এর সম্পত্তির মান GEAR_PARK হিসাবে প্রদর্শিত হয়।

VHAL বৈশিষ্ট্য প্রসারিত করতে JSON মেটাডেটা ব্যবহার করুন

আপনার VHAL বৈশিষ্ট্যগুলিকে প্রসারিত করতে JSON মেটাডেটা ব্যবহার করতে, AIDL-এর তথ্য থেকে বর্ধিত সম্পত্তি JSON তৈরি করতে এই পাইথন স্ক্রিপ্টটি চালান (অ্যান্ড্রয়েড উত্সে রয়েছে)৷

ফলস্বরূপ JSON-এ কিছু অপ্রয়োজনীয় মান রয়েছে, যেমন change_mode , access , এবং unit । যদিও এই তথ্যটি VHAL সম্পত্তির অংশ, এই JSON মানগুলি এমুলেটরের VHAL সম্পত্তি উইন্ডোতে যা প্রদর্শিত হবে তা প্রভাবিত করে না।

সিস্টেম ইমেজে JSON মেটাডেটা যোগ করুন

মনে রাখবেন যে একটি ফাইলের নাম অবশ্যই -types-meta.json দিয়ে শেষ হতে হবে। যদি না হয়, ফাইল উপেক্ষা করা হয়.

একটি বিল্ড লক্ষ্য যোগ করুন

PRODUCT_COPY_FILE-types-meta.json ফাইল যোগ করুন। যেমন:

PRODUCT_COPY_FILES += \
    device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json

এই কোডটি ফাইলটিকে out/target/product/{your_target_path}/ এ কপি করে, এটি আপনার তৈরি টার্গেট আউটপুটের মূল।