एचएएल संस्करण का बहिष्कार

एंड्रॉइड के एल रिलीज़ में, हम कुछ सेंसर एचएएल संस्करणों के लिए समर्थन रोक रहे हैं। एकमात्र समर्थित संस्करण 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 में अपग्रेड करने के लिए, नीचे सूचीबद्ध परिवर्तनों का पालन करें।

बैच फ़ंक्शन लागू करें

भले ही आप बैचिंग लागू नहीं करते हैं (आपके हार्डवेयर में कोई फीफो नहीं है), आपको 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 पर सेट करें

स्ट्रिंग टाइप : सभी आधिकारिक एंड्रॉइड सेंसर (जो सेंसर.एच में परिभाषित हैं) के लिए 0 पर सेट करें, क्योंकि यह मान फ्रेमवर्क द्वारा अधिलेखित कर दिया जाएगा। गैर-आधिकारिक सेंसर के लिए, इसे सेट करने के तरीके के विवरण के लिए Sensor_t देखें।

आवश्यक अनुमति : यह वह अनुमति है जो एप्लिकेशन को आपके सेंसर तक पहुंच प्राप्त करने के लिए आवश्यक होगी। आप आमतौर पर अपने सभी सेंसर के लिए इसे 0 पर सेट कर सकते हैं, लेकिन HEART_RATE प्रकार वाले सेंसर को इसे SENSOR_PERMISSION_BODY_SENSORS.

अधिकतम विलंब : यह मान महत्वपूर्ण है और आपको इसे सेंसर और उसके ड्राइवर की क्षमताओं के अनुसार सेट करने की आवश्यकता होगी।

यह मान केवल निरंतर और ऑन-चेंज सेंसर के लिए परिभाषित किया गया है। यह सबसे कम आवृत्ति के अनुरूप दो सेंसर घटनाओं के बीच की देरी है जिसे यह सेंसर समर्थन करता है। जब batch फ़ंक्शन के माध्यम से कम आवृत्तियों का अनुरोध किया जाता है, तो इसके बजाय इस आवृत्ति पर ईवेंट उत्पन्न होंगे। इसका उपयोग फ्रेमवर्क या एप्लिकेशन द्वारा यह अनुमान लगाने के लिए किया जा सकता है कि बैच FIFO कब भरा हो सकता है। यदि यह मान ठीक से सेट नहीं किया गया है, तो सीटीएस विफल हो जाएगा। वन-शॉट और विशेष रिपोर्टिंग मोड सेंसर के लिए, 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 निकटता सेंसर और एंड्रॉइड आधिकारिक झुकाव डिटेक्टर सेंसर के लिए 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 तर्क के रूप में जाना जाता है।