HAL ভার্সন বন্ধ হয়ে যাওয়া

Android-এর L রিলিজ ভার্সনে, আমরা কিছু সেন্সর HAL ভার্সনের জন্য সহায়তা বন্ধ করে দিচ্ছি। শুধুমাত্র SENSORS_DEVICE_API_VERSION_1_0 ও SENSORS_DEVICE_API_VERSION_1_3 ভার্সন কাজ করে।

পরবর্তী রিলিজে, আমরা 1_0-এর জন্য সহায়তাও বন্ধ করে দিতে পারি।

1_0-তে ব্যাচিংয়ের কোনও ধারণা নেই। সম্ভব হলে, 1_0 ব্যবহার করা সব ডিভাইসকে 1_3 ভার্সনে আপগ্রেড করতে হবে।

1_1 এবং 1_2-এ ব্যাচিং কনসেপ্টের সংজ্ঞা ঠিকভাবে দেওয়া নেই এবং এগুলি আর কাজ করে না

বর্তমানে 1_1 বা 1_2 ব্যবহার করা সব ডিভাইসকে অবশ্যই 1_3-তে আপগ্রেড করতে হবে।

1_3-এ, আমরা ব্যাচিংয়ের ধারণাটি সহজ করেছি এবং আমরা ওয়েক-আপ সেন্সর চালু করেছি।

1_3 ভার্সনে আপগ্রেড করতে, নিচে তালিকাভুক্ত পরিবর্তনগুলি অনুসরণ করুন।

ব্যাচ ফাংশন প্রয়োগ করা

আপনি ব্যাচিং প্রয়োগ না করলেও (আপনার হার্ডওয়্যারে FIFO নেই), আপনাকে অবশ্যই batch ফাংশন প্রয়োগ করতে হবে। batch কোনও নির্দিষ্ট সেন্সরের জন্য স্যাম্পলিং পিরিয়ড ও সর্বাধিক রিপোর্টিং ল্যাটেন্সি সেট করতে ব্যবহার করা হয়। এটি setDelay-এর পরিবর্তে ব্যবহার করা হয়। setDelay-কে আর কল করা হবে না।

আপনি ব্যাচিং প্রয়োগ না করলে, batch এর মাধ্যমে প্রদান করা sampling_period_ns প্যারামিটার সহ আপনার বর্তমান setDelay ফাংশন কল করে প্রয়োগ করতে পারবেন।

ফ্লাশ ফাংশন প্রয়োগ করুন

এমনকি আপনি ব্যাচিং প্রয়োগ না করলেও, আপনাকে অবশ্যই flush ফাংশন প্রয়োগ করতে হবে।

আপনি ব্যাচিং প্রয়োগ না করলে, flush-কে একটি META_DATA_FLUSH_COMPLETE ইভেন্ট তৈরি করতে হবে এবং ০ (সফল) রিটার্ন করতে হবে।

আপনার sensors_poll_device_t.common.version পরিবর্তন করুন

your_poll_device.common.version = SENSORS_DEVICE_API_VERSION_1_3

আপনার সেন্সরের সংজ্ঞায় নতুন ফিল্ড যোগ করুন

প্রতিটি সেন্সর সংজ্ঞায়িত করার সময়, সাধারণ sensor_t ফিল্ড ছাড়াও:

.name =       "My magnetic field Sensor",
.vendor =     "My company",
.version
=    1,
.handle =     mag_handle,
.type =       SENSOR_TYPE_MAGNETIC_FIELD,
.maxRange =   200.0f,
.resolution = CONVERT_M,
.power =      5.0f,
.minDelay =
 16667,

এছাড়াও, আপনাকে 1_0 ও 1_3-এর মধ্যে নতুন ফিল্ড সেট করতে হবে:

.fifoReservedEventCount = 0,
.fifoMaxEventCount =   0,
.stringType =         0,
.requiredPermission = 0,
.maxDelay =      200000
.flags =
SENSOR_FLAG_CONTINUOUS_MODE,

fifoReservedEventCount: ব্যাচিং প্রয়োগ না করলে, এটি ০ হিসেবে সেট করুন।

fifoMaxEventCount: ব্যাচিং প্রয়োগ না করলে, এটি ০ হিসেবে সেট করুন

stringType: সমস্ত অফিসিয়াল Android সেন্সরের জন্য ০ হিসেবে সেট করুন (যেগুলি sensors.h-এ সংজ্ঞায়িত করা আছে), কারণ এই ভ্যালু ফ্রেমওয়ার্কের মাধ্যমে ওভাররাইট করা হবে। নন-অফিসিয়াল সেন্সরের জন্য, এটি কীভাবে সেট করতে হয় সেই বিষয়ে বিস্তারিত জানতে sensor_t দেখুন।

requiredPermission: আপনার সেন্সর অ্যাক্সেস করার জন্য অ্যাপ্লিকেশনকে এই অনুমতি নিতে হবে। সাধারণত, আপনার সব সেন্সরের জন্য এটি ০ হিসেবে সেট করতে পারবেন, কিন্তু HEART_RATE ধরনের সেন্সরকে এটি SENSOR_PERMISSION_BODY_SENSORS. হিসেবে সেট করতে হবে

maxDelay: এই ভ্যালু গুরুত্বপূর্ণ এবং সেন্সর ও তার ড্রাইভারের ক্ষমতা অনুযায়ী আপনাকে এটি সেট করতে হবে।

এই ভ্যালু শুধুমাত্র একটানা ও পরিবর্তন-সাপেক্ষ সেন্সরের জন্য নির্দিষ্ট করা হয়। এটি হল দুটি সেন্সর ইভেন্টের মধ্যে বিলম্ব যা এই সেন্সর দ্বারা সমর্থিত সর্বনিম্ন ফ্রিকোয়েন্সির সাথে সম্পর্কিত। batch ফাংশনের মাধ্যমে কম ফ্রিকোয়েন্সি অনুরোধ করা হলে, ইভেন্টগুলি পরিবর্তে এই ফ্রিকোয়েন্সিতে জেনারেট করা হবে। ফ্রেমওয়ার্ক বা অ্যাপ্লিকেশন এটি ব্যবহার করে অনুমান করতে পারে যে কখন ব্যাচ FIFO পূর্ণ হতে পারে। এই ভ্যালু সঠিকভাবে সেট করা না থাকলে, CTS কাজ করবে না। ওয়ান-শট ও বিশেষ রিপোর্টিং মোড সেন্সরের জন্য, maxDelay-কে 0 হিসেবে সেট করুন।

কন্টিনিউয়াস সেন্সরের জন্য, মাইক্রোসেকেন্ডে অনুমোদিত সর্বাধিক স্যাম্পেলিং পিরিয়ড সেট করুন।

period_ns, maxDelay ও minDelay-এর জন্য নিম্নলিখিত বিষয়গুলি প্রযোজ্য:

  • period_ns হল ন্যানোসেকেন্ডে, যেখানে maxDelay/minDelay হল মাইক্রোসেকেন্ডে।
  • maxDelay-কে সবসময় ৩২-বিট সাইনড ইন্টিজারের মধ্যে ফিট হতে হবে। এটি বাইনারি কম্প্যাটিবিলিটির কারণে শুধুমাত্র ৬৪-বিট আর্কিটেকচারে ৬৪-বিট হিসেবে ঘোষণা করা হয়।

ফ্ল্যাগ: এই ফিল্ডটি সেন্সরের রিপোর্টিং মোড এবং সেন্সরটি ওয়েক-আপ সেন্সর কিনা তা নির্ধারণ করে।

আপনি ব্যাচিং প্রয়োগ না করে, শুধু 1.0 থেকে 1.3-এ আপডেট করলে, এটি এভাবে সেট করুন:

ওয়ান-শট সেন্সরের জন্য SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE

কন্টিনিউয়াস সেন্সরের জন্য SENSOR_FLAG_CONTINUOUS_MODE প্রক্সিমিটি ছাড়া অন-চেঞ্জ সেন্সরের জন্য SENSOR_FLAG_ON_CHANGE_MODE টিল্ট ডিটেক্টর ছাড়া বিশেষ রিপোর্টিং মোড সহ সেন্সরের জন্য SENSOR_FLAG_SPECIAL_REPORTING_MODE।

প্রক্সিমিটি সেন্সর ও Android-এর অফিসিয়াল টিল্ট ডিটেক্টর সেন্সরের জন্য SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ON_CHANGE_MODE।

1_1 বা 1_2 থেকে আপগ্রেড করার সময় মনে রাখার বিষয়

  • batch ফাংশন এখন প্রায় সবসময় কাজ করে, এমনকি ব্যাচিং কাজ করে না এমন সেন্সরের ক্ষেত্রেও, টাইমআউট আর্গুমেন্টের ভ্যালু যাই হোক না কেন। শুধুমাত্র ইন্টার্নাল সমস্যা, খারাপ sensor_handle, বা নেগেটিভ sampling_period_ns বা নেগেটিভ max_report_latency_ns-এর ক্ষেত্রে batch ফাংশন কাজ নাও করতে পারে।
  • কোনও সেন্সর ব্যাচিং সমর্থন করে কিনা তা নির্ধারণ করা হয় যে এটির fifoMaxEventCount ০-এর বেশি আছে কিনা তার উপর ভিত্তি করে। (আগের ভার্সনে, এটি batch()-এর রিটার্ন ভ্যালুর উপর ভিত্তি করে ছিল।)
  • ব্যাচিং কাজ করে এমন সেন্সর সবসময় আগের ভার্সনে "ব্যাচ মোড" নামে পরিচিত মোডে থাকে: max_report_latency_ns প্যারামিটার ০ হলেও, সেন্সরকে ব্যাচ করতে হবে, অর্থাৎ SoC সাসপেন্ড মোডে গেলে ইভেন্টগুলিকে FIFO-তে স্টোর করতে হবে।
  • batch ফাংশনের flags প্যারামিটার আর ব্যবহার করা হয় না। DRY_RUN ও WAKE_UPON_FIFO_FULL দুটিই বন্ধ করে দেওয়া হয়েছে এবং batch ফাংশনে কখনই পাস করা হবে না।
  • ব্যাচ টাইমআউট আর্গুমেন্টকে এখন max_report_latency আর্গুমেন্ট হিসেবে উল্লেখ করা হয়।