HAL মডিউল রূপান্তর

আপনি hardware/libhardware/include/hardware হেডার রূপান্তর করে পূর্ব-বিদ্যমান HAL মডিউলগুলিকে HIDL HAL মডিউলগুলিতে আপডেট করতে পারেন।

c2hal ব্যবহার করে

c2hal টুল বেশিরভাগ রূপান্তর কাজ পরিচালনা করে, প্রয়োজনীয় ম্যানুয়াল পরিবর্তনের সংখ্যা হ্রাস করে। উদাহরণস্বরূপ, NFC HAL-এর জন্য একটি HIDL .hal ফাইল তৈরি করতে:

make c2hal
c2hal -r android.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport -p android.hardware.nfc@1.0 hardware/libhardware/include/hardware/nfc.h

এই কমান্ডগুলি hardware/interfaces/nfc/1.0/ এ ফাইল যোগ করে। $ANDROID_BUILD_TOP ডিরেক্টরি থেকে hardware/interfaces/update-makefiles.sh চালানোর ফলে HAL-এ প্রয়োজনীয় মেকফাইল যোগ হবে। এখান থেকে, আপনি HAL কে সম্পূর্ণরূপে রূপান্তর করতে ম্যানুয়াল পরিবর্তন করতে পারেন।

c2hal কার্যক্রম

আপনি যখন c2hal চালান, তখন হেডার ফাইলের সবকিছু .hal ফাইলে স্থানান্তরিত হয়।

c2hal প্রদত্ত হেডার ফাইলে ফাংশন পয়েন্টার ধারণ করে এমন স্ট্রাকট সনাক্ত করে এবং প্রতিটি স্ট্রাকটকে একটি পৃথক ইন্টারফেস ফাইলে রূপান্তর করে। উদাহরণস্বরূপ, alloc_device_t IAllocDevice HAL মডিউলে রূপান্তরিত হয় ( IAllocDevice.hal ফাইলে)।

অন্যান্য সমস্ত ডেটা প্রকারগুলি একটি types.hal ফাইলে অনুলিপি করা হয়। পাউন্ড-সংজ্ঞায়িতগুলি enums-এ স্থানান্তরিত হয়, এবং আইটেমগুলি HIDL-এর অংশ নয় বা রূপান্তরযোগ্য নয় (যেমন স্ট্যাটিক-ফাংশন ঘোষণা) " NOTE " লেখার সাথে চিহ্নিত মন্তব্যগুলিতে অনুলিপি করা হয়৷

ম্যানুয়াল কার্যক্রম

c2hal টুলটি কিছু নির্দিষ্ট নির্মাণের সম্মুখীন হলে কি করতে হবে তা জানে না। উদাহরণস্বরূপ, এইচআইডিএলের কাঁচা পয়েন্টারের কোন ধারণা নেই; এই কারণে, যখন c2hal হেডার ফাইলগুলিতে একটি পয়েন্টারের মুখোমুখি হয়, তখন এটি বুঝতে পারে না যে পয়েন্টারটিকে একটি অ্যারে হিসাবে ব্যাখ্যা করা উচিত নাকি অন্য বস্তুর রেফারেন্স হিসাবে। অকার্যকর পয়েন্টারগুলিও একইভাবে অস্বচ্ছ।

HIDL-এ স্থানান্তরের সময় int reserved[7] এর মতো ক্ষেত্র অবশ্যই ম্যানুয়ালি অপসারণ করতে হবে। আইটেম যেমন রিটার্ন মানের নাম আরো অর্থপূর্ণ কিছু আপডেট করা উচিত; উদাহরণস্বরূপ, পদ্ধতির রিটার্ন প্যারামিটারকে রূপান্তর করা হচ্ছে যেমন NFC-তে write অটোজেনারেটেড int32_t write_ret থেকে Status status (যেখানে Status হল একটি নতুন enum যাতে NFC স্ট্যাটাস রয়েছে)।

HAL বাস্তবায়ন

আপনার HAL-এর প্রতিনিধিত্ব করার জন্য আপনি .hal ফাইল তৈরি করার পরে, আপনাকে অবশ্যই মেকফাইলগুলি (মেক বা সুং) তৈরি করতে হবে যা C++ এবং জাভাতে ভাষা সমর্থন তৈরি করে (যদি না HAL জাভাতে অসমর্থিত বৈশিষ্ট্য ব্যবহার করে)। ./hardware/interfaces/update-makefiles.sh স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে hardware/interfaces ডিরেক্টরিতে অবস্থিত HAL-এর জন্য মেকফাইল তৈরি করতে পারে (অন্যান্য অবস্থানে HAL-এর জন্য, স্ক্রিপ্ট আপডেট করুন)।

যখন মেকফাইলগুলি আপ টু ডেট হয়, আপনি হেডার ফাইল তৈরি করতে এবং পদ্ধতিগুলি প্রয়োগ করতে প্রস্তুত৷ জেনারেট করা ইন্টারফেস বাস্তবায়নের বিস্তারিত জানার জন্য, HIDL C++ (C++ বাস্তবায়নের জন্য) অথবা HIDL Java (জাভা বাস্তবায়নের জন্য) দেখুন।