vehicle_hw_device স্ট্রাকট রেফারেন্স
#include < vehicle.h >
ডেটা ক্ষেত্র | |
struct hw_device_t | সাধারণ |
int(* | init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
int(* | মুক্তি )(struct vehicle_hw_device *ডিভাইস) |
vehicle_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *device, int *num_properties) |
int(* | পান )(struct vehicle_hw_device *device, vehicle_prop_value_t *ডেটা) |
অকার্যকর(* | release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *ডেটা) |
int(* | সেট )(struct vehicle_hw_device *device, const vehicle_prop_value_t *ডেটা) |
int(* | সদস্যতা নিন )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t জোন) |
int(* | সদস্যতা ত্যাগ করুন )(struct vehicle_hw_device *device, int32_t prop) |
int(* | ডাম্প )(struct vehicle_hw_device *device, int fd) |
বিস্তারিত বিবরণ
ফিল্ড ডকুমেন্টেশন
struct hw_device_t common |
int(* ডাম্প)(struct vehicle_hw_device *ডিভাইস, int fd) |
গাড়ির হ্যালের জন্য ডিবাগিং অবস্থা মুদ্রণ করুন। এটি গাড়ি নেটওয়ার্ক পরিষেবা দ্বারা কল করা হবে এবং পরিষেবার ডাম্পের মধ্যে অন্তর্ভুক্ত করা হবে৷
পাস-ইন ফাইল বর্ণনাকারী dprintf() বা write() ব্যবহার করে ডিবাগিং টেক্সট লিখতে ব্যবহার করা যেতে পারে। পাঠ্যটি শুধুমাত্র ASCII এনকোডিং-এ হওয়া উচিত।
কর্মক্ষমতা প্রয়োজনীয়তা:
এটি অবশ্যই একটি নন-ব্লকিং কল হতে হবে। HAL এই কল থেকে 1ms এর মধ্যে ফিরতে হবে, এই কল থেকে 10ms এর মধ্যে ফিরতে হবে। এই কলটি অবশ্যই অচলাবস্থা এড়াতে হবে, কারণ এটি অপারেশনের যেকোনো সময়ে কল করা যেতে পারে। ব্যবহৃত যেকোন সিঙ্ক্রোনাইজেশন প্রাইমিটিভস (যেমন মিউটেক্স লক বা সেমাফোরস) একটি সময়সীমার সাথে অর্জিত হওয়া উচিত।
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *ডেটা) |
অবিলম্বে একটি যানবাহন সম্পত্তি মূল্য পান. তথ্য সঠিকভাবে বরাদ্দ করা উচিত। API-এর কলার ডাটা ফিল্ডের মালিক। কলার ডেটা->প্রপ, ডেটা-> ভ্যালু_টাইপ, এবং ঐচ্ছিকভাবে জোনযুক্ত সম্পত্তির জন্য জোন মান সেট করবে। কিন্তু ফিরে আসার সময় HAL বাস্তবায়নের জন্য সমস্ত এন্ট্রি সঠিকভাবে পূরণ করতে হবে। পয়েন্টার টাইপের জন্য, এইচএএল বাস্তবায়নের প্রয়োজনীয় মেমরি বরাদ্দ করা উচিত এবং রিলিজ_মেমরি_ফ্রম_গেট কল করার জন্য কলার দায়ী, যা এইচএএলকে বরাদ্দ করা মেমরি প্রকাশ করতে দেয়। VEHICLE_PROP_CHANGE_MODE_STATIC ধরনের সম্পত্তির জন্য, get সবসময় একই মান ফেরত দিতে হবে। VEHICLE_PROP_CHANGE_MODE_ON_CHANGE ধরনের প্রপার্টির জন্য, এটির সর্বশেষ মান প্রদান করা উচিত। যদি এখনও কোনও ডেটা উপলব্ধ না থাকে, যা প্রাথমিক পর্যায়ে ঘটতে পারে, এই কলটি -EAGAIN এর ত্রুটি কোড সহ অবিলম্বে ফিরে আসা উচিত।
int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties) |
সমস্ত উপলব্ধ বৈশিষ্ট্য গণনা. তালিকাটি "তালিকা" এ ফিরে এসেছে।
- পরামিতি
num_properties রিটিউন করা অ্যারেতে থাকা বৈশিষ্ট্যের সংখ্যা।
- রিটার্নস
- এই গাড়ি দ্বারা সমর্থিত সম্পত্তি কনফিগারের অ্যারে। নোট করুন যে প্রত্যাবর্তিত ডেটা হল const এবং কলার এটি সংশোধন করতে পারে না। HAL বাস্তবায়নের এই মেমরিটি রাখা উচিত যতক্ষণ না HAL রিলিজ না হয় যাতে এটি আবার কপি না হয়।
int(* প্রকাশ)(struct vehicle_hw_device *ডিভাইস) |
কল বন্ধ করার আগে ব্যবহারকারীর নিবন্ধিত কলব্যাক ফাংশনগুলি ধ্বংস করা উচিত। যদি রিলিজ() এর আগে সমস্ত প্রপার্টিতে আনসাবস্ক্রাইব() কল করা না হয় তাহলে রিলিজ() প্রপার্টি নিজেই আনসাবস্ক্রাইব করবে।
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *ডেটা) |
পূর্ববর্তী কল কলে ডেটাতে বরাদ্দ করা মেমরি রিলিজ। বাইট বা স্ট্রিংয়ের জন্য কল পেতে যানবাহন হ্যাল থেকে প্রয়োজনীয় মেমরি বরাদ্দ করা জড়িত। নিরাপদ থাকার জন্য, যানবাহন হ্যাল দ্বারা বরাদ্দ করা মেমরি যানবাহন হ্যাল দ্বারা প্রকাশ করা উচিত এবং যানবাহন নেটওয়ার্ক পরিষেবা এটিকে কল করবে যখন যানবাহন হ্যালের ডেটা আর প্রয়োজন হবে না। যানবাহন হ্যাল বাস্তবায়নের জন্য শুধুমাত্র vehicle_prop_value_t-এর সদস্যদের ছেড়ে দেওয়া উচিত যেমন data->str_value.data বা data->bytes_value.data কিন্তু ডেটা নিজেই নয় কারণ ডেটা নিজেই যানবাহন নেটওয়ার্ক পরিষেবা থেকে বরাদ্দ করা হয়। একবার মেমরি মুক্ত হয়ে গেলে, সংশ্লিষ্ট পয়েন্টারটি NULL bu যানবাহনে সেট করা উচিত।
int(* সেট)(struct vehicle_hw_device *device, const vehicle_prop_value_t *ডেটা) |
একটি গাড়ির সম্পত্তি মান সেট করুন। ডেটা সঠিকভাবে বরাদ্দ করা উচিত এবং NULL নয়। API-এর কলার ডাটা ফিল্ডের মালিক। সেট অপারেশনের জন্য ডেটার টাইমস্ট্যাম্প উপেক্ষা করা হবে। কিছু বৈশিষ্ট্য সেট করার জন্য প্রাথমিক অবস্থা উপলব্ধ থাকা প্রয়োজন। গাড়ির হালের উপর নির্ভর করে, এই ধরনের প্রাথমিক তথ্য শুরু হওয়ার পরে অল্প সময়ের জন্য উপলব্ধ নাও হতে পারে। এই ধরনের ক্ষেত্রে, সেট কল ফিরে আসতে পারে - EAGAIN যেমন get call. আলাদা পাওয়ার কন্ট্রোল সহ একটি সম্পত্তির জন্য, সম্পত্তি চালু না থাকলে সেট ব্যর্থ হতে পারে। এই ধরনের ক্ষেত্রে, hal-এর ফিরে আসা উচিত - ESHUTDOWN ত্রুটি।
int(* সদস্যতা নিন)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t জোন) |
ইভেন্ট সদস্যতা. তালিকা_সম্পত্তির আউটপুটের উপর নির্ভর করে যদি প্রপার্টি হয়: ক) অন-চেঞ্জ: স্যাম্পল_রেট 0 এ সেট করা উচিত। খ) ফ্রিকোয়েন্সি সমর্থন করে: স্যাম্পল_রেট min_sample_rate থেকে max_sample_rate সেট করা উচিত। অন-চেঞ্জ ধরনের বৈশিষ্ট্যের জন্য, গাড়ির নেটওয়ার্ক পরিষেবা প্রাথমিক অবস্থা পরীক্ষা করার জন্য আরেকটি কল করবে। এই কারণে, যানবাহন হ্যাল বাস্তবায়নের জন্য বৈশিষ্ট্যগুলির পরিবর্তনের ধরণের জন্য প্রাথমিক অবস্থা পাঠাতে হবে না।
- পরামিতি
যন্ত্র প্রপ নমুনা হার অঞ্চল জোনযুক্ত সম্পত্তির জন্য সমস্ত সদস্যতা নেওয়া অঞ্চল। অ-জোনযুক্ত সম্পত্তির জন্য উপেক্ষা করা যেতে পারে। 0 মানে কোন জোনের পরিবর্তে সমস্ত জোন সমর্থিত।
int(* আনসাবস্ক্রাইব)(struct vehicle_hw_device *ডিভাইস, int32_t প্রপ) |
এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল:
- hardware/libhardware/include/hardware/ vehicle.h