HAL সংস্করণ অবচয়

অ্যান্ড্রয়েডের এল রিলিজে, আমরা কিছু সেন্সর 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 আর বলা হবে না।

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

ফ্লাশ ফাংশন বাস্তবায়ন করুন

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

আপনি যদি ব্যাচিং বাস্তবায়ন না করেন, flush অবশ্যই একটি META_DATA_FLUSH_COMPLETE ইভেন্ট তৈরি করতে হবে এবং 0 (সফলতা) প্রদান করতে হবে।

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

your_poll_device.common.version = SENSORS_DEVICE_API_VERSION_1_3

আপনার সেন্সরের সংজ্ঞায় নতুন ক্ষেত্র যোগ করুন

প্রতিটি সেন্সর সংজ্ঞায়িত করার সময়, স্বাভাবিক সেন্সর_টি ক্ষেত্রগুলি ছাড়াও:

.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 : ব্যাচিং বাস্তবায়ন না করলে, এটিকে 0 এ সেট করুন।

fifoMaxEventCount : ব্যাচিং বাস্তবায়ন না করলে, এটিকে 0 এ সেট করুন

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

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

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

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

ক্রমাগত সেন্সরগুলির জন্য, এটিকে মাইক্রোসেকেন্ডে অনুমোদিত সর্বাধিক নমুনা সময়সীমাতে সেট করুন৷

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

  • period_ns ন্যানোসেকেন্ডে যেখানে maxDelay / minDelay মাইক্রোসেকেন্ডে।
  • maxDelay সর্বদা একটি 32-বিট স্বাক্ষরিত পূর্ণসংখ্যার মধ্যে ফিট করা উচিত। এটি শুধুমাত্র বাইনারি সামঞ্জস্যতার কারণে 64-বিট আর্কিটেকচারে 64-বিট হিসাবে ঘোষণা করা হয়।

পতাকা : এই ক্ষেত্রটি সেন্সরের রিপোর্টিং মোড এবং সেন্সরটি একটি জেগে ওঠা সেন্সর কিনা তা নির্ধারণ করে।

আপনি যদি ব্যাচিং বাস্তবায়ন না করেন, এবং শুধুমাত্র 1.0 থেকে 1.3 এ চলে যাচ্ছেন, তাহলে এটি সেট করুন:

SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE এক-শট সেন্সরের জন্য SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE

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

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

1_1 বা 1_2 থেকে আপগ্রেড করার সময় নোট

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