কনটেক্সট হাব রানটাইম এনভায়রনমেন্ট (CHRE)

স্মার্টফোনগুলিতে বেশ কয়েকটি প্রসেসর থাকে, প্রতিটি বিভিন্ন কাজ সম্পাদনের জন্য অপ্টিমাইজ করা হয়। যাইহোক, অ্যান্ড্রয়েড শুধুমাত্র একটি প্রসেসরে চলে: অ্যাপ্লিকেশন প্রসেসর (এপি)। গেমিংয়ের মতো স্ক্রিন-অন ব্যবহারের ক্ষেত্রে দুর্দান্ত পারফরম্যান্স সরবরাহ করার জন্য AP টিউন করা হয়েছে, তবে এটি এমন বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য খুব বেশি ক্ষুধার্ত যেগুলির জন্য ঘন ঘন, সংক্ষিপ্ত বিস্ফোরণের প্রয়োজন হয়, এমনকি যখন স্ক্রীন বন্ধ থাকে তখনও। ছোট প্রসেসরগুলি এই কাজের চাপগুলিকে আরও দক্ষতার সাথে পরিচালনা করতে সক্ষম হয়, ব্যাটারির জীবনকে উল্লেখযোগ্যভাবে প্রভাবিত না করেই তাদের কাজগুলি সম্পূর্ণ করে৷ যাইহোক, এই কম-পাওয়ার প্রসেসরগুলিতে সফ্টওয়্যার পরিবেশগুলি আরও সীমিত এবং ব্যাপকভাবে পরিবর্তিত হতে পারে, ক্রস-প্ল্যাটফর্ম বিকাশকে কঠিন করে তোলে।

কনটেক্সট হাব রানটাইম এনভায়রনমেন্ট (CHRE) একটি সাধারণ, প্রমিত, এমবেডেড-বান্ধব API সহ একটি কম-পাওয়ার প্রসেসরে অ্যাপ্লিকেশন চালানোর জন্য একটি সাধারণ প্ল্যাটফর্ম প্রদান করে। CHRE ডিভাইস OEM এবং তাদের বিশ্বস্ত অংশীদারদের AP থেকে প্রসেসিং অফলোড করা, ব্যাটারি বাঁচাতে এবং ব্যবহারকারীর অভিজ্ঞতার বিভিন্ন ক্ষেত্র উন্নত করতে এবং সর্বদা চালু, প্রাসঙ্গিকভাবে সচেতন বৈশিষ্ট্যগুলির একটি শ্রেণী সক্ষম করে, বিশেষ করে যেগুলি পরিবেষ্টিত সেন্সিং থেকে মেশিন লার্নিং প্রয়োগের সাথে জড়িত।

মূল ধারণা

CHRE হল একটি সফ্টওয়্যার পরিবেশ যেখানে ছোট নেটিভ অ্যাপস, নামক ন্যানোঅ্যাপস , একটি কম-পাওয়ার প্রসেসরে কার্যকর করে এবং সাধারণ CHRE API-এর মাধ্যমে অন্তর্নিহিত সিস্টেমের সাথে যোগাযোগ করে। CHRE API-এর যথাযথ বাস্তবায়ন ত্বরান্বিত করার জন্য, CHRE-এর একটি ক্রস-প্ল্যাটফর্ম রেফারেন্স বাস্তবায়ন AOSP-তে অন্তর্ভুক্ত করা হয়েছে। রেফারেন্স বাস্তবায়ন প্ল্যাটফর্ম বিমূর্ত স্তর (PALs) একটি সিরিজের মাধ্যমে অন্তর্নিহিত হার্ডওয়্যার এবং সফ্টওয়্যার সাধারণ কোড এবং বিমূর্ততা অন্তর্ভুক্ত করে। ন্যানোঅ্যাপগুলি প্রায় সবসময়ই অ্যান্ড্রয়েডে চলমান এক বা একাধিক ক্লায়েন্ট অ্যাপের সাথে সংযুক্ত থাকে, যা সীমিত-অ্যাক্সেস ContextHubManager সিস্টেম API-এর মাধ্যমে CHRE এবং ন্যানোঅ্যাপের সাথে ইন্টারঅ্যাক্ট করে।

উচ্চ স্তরে, সামগ্রিকভাবে CHRE এবং অ্যান্ড্রয়েডের আর্কিটেকচারের মধ্যে সমান্তরাল টানা যেতে পারে। যাইহোক, কয়েকটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:

  • CHRE শুধুমাত্র নেটিভ কোডে (C বা C++) বিকশিত ন্যানোঅ্যাপ চালানো সমর্থন করে; জাভা সমর্থিত নয়।
  • সম্পদের সীমাবদ্ধতা এবং নিরাপত্তা সীমাবদ্ধতার কারণে, CHRE নির্বিচারে তৃতীয় পক্ষের অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলির দ্বারা ব্যবহারের জন্য উন্মুক্ত নয়৷ শুধুমাত্র সিস্টেম-বিশ্বস্ত অ্যাপই এটি অ্যাক্সেস করতে পারে।

এছাড়াও CHRE ধারণা এবং একটি সেন্সর হাবের মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য তৈরি করতে হবে। যদিও সেন্সর হাব এবং CHRE বাস্তবায়নের জন্য একই হার্ডওয়্যার ব্যবহার করা সাধারণ, CHRE নিজেই Android সেন্সর HAL-এর জন্য প্রয়োজনীয় সেন্সর ক্ষমতা প্রদান করে না। CHRE কনটেক্সট হাব HAL-এর সাথে আবদ্ধ, এবং এটি AP-কে জড়িত না করেই সেন্সর ডেটা গ্রহণ করার জন্য একটি ডিভাইস-নির্দিষ্ট সেন্সর ফ্রেমওয়ার্কের ক্লায়েন্ট হিসাবে কাজ করে।

CHRE ফ্রেমওয়ার্ক আর্কিটেকচার

চিত্র 1. CHRE ফ্রেমওয়ার্ক আর্কিটেকচার

প্রসঙ্গ হাব HAL

কনটেক্সট হাব হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) হল অ্যান্ড্রয়েড ফ্রেমওয়ার্ক এবং ডিভাইসের CHRE বাস্তবায়নের মধ্যে ইন্টারফেস, hardware/interfaces/contexthub -এ সংজ্ঞায়িত করা হয়েছে। কনটেক্সট হাব HAL সেই APIগুলিকে সংজ্ঞায়িত করে যার মাধ্যমে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক উপলব্ধ প্রসঙ্গ হাব এবং তাদের ন্যানোঅ্যাপগুলি আবিষ্কার করে, মেসেজ পাস করার মাধ্যমে সেই ন্যানোঅ্যাপগুলির সাথে ইন্টারঅ্যাক্ট করে এবং ন্যানোঅ্যাপগুলিকে লোড এবং আনলোড করার অনুমতি দেয়৷ কনটেক্সট হাব HAL-এর একটি রেফারেন্স বাস্তবায়ন যা CHRE এর রেফারেন্স বাস্তবায়নের সাথে কাজ করে system/chre/host এ উপলব্ধ।

এই ডকুমেন্টেশন এবং HAL সংজ্ঞার মধ্যে বিরোধের ক্ষেত্রে, HAL সংজ্ঞা প্রাধান্য পায়।

সূচনা

যখন অ্যান্ড্রয়েড বুট আপ হয়, কনটেক্সটহাবসার্ভিস ডিভাইসে কোনো কনটেক্সট হাব উপলব্ধ আছে কিনা তা নির্ধারণ করতে getHubs() HAL ফাংশনকে আহ্বান করে। এটি একটি ব্লকিং, এক-কালীন কল, তাই বুটকে বিলম্বিত এড়াতে এটিকে দ্রুত শেষ করতে হবে এবং এটিকে অবশ্যই একটি সঠিক ফলাফল দিতে হবে, কারণ পরবর্তীতে নতুন প্রসঙ্গ হাব চালু করা যাবে না।

ন্যানোঅ্যাপস লোড এবং আনলোড করুন

একটি কনটেক্সট হাব ন্যানোঅ্যাপগুলির একটি সেট অন্তর্ভুক্ত করতে পারে যা ডিভাইসের ছবিতে অন্তর্ভুক্ত থাকে এবং যখন CHRE শুরু হয় তখন লোড হয়৷ এগুলি প্রিলোডেড ন্যানোঅ্যাপস হিসাবে পরিচিত, এবং queryApps() এর প্রথম সম্ভাব্য প্রতিক্রিয়াতে অন্তর্ভুক্ত করা উচিত।

কনটেক্সট হাব এইচএএল loadNanoApp() এবং unloadNanoApp() ফাংশনের মাধ্যমে রানটাইমে গতিশীলভাবে ন্যানোঅ্যাপগুলি লোড এবং আনলোড করা সমর্থন করে। ডিভাইসের CHRE হার্ডওয়্যার এবং সফ্টওয়্যার বাস্তবায়নের জন্য নির্দিষ্ট একটি বাইনারি বিন্যাসে HAL-কে Nanoapps প্রদান করা হয়।

যদি একটি ন্যানোঅ্যাপ লোড করার জন্য বাস্তবায়নের সাথে এটিকে ননভোলাটাইল মেমরিতে লেখার সাথে জড়িত থাকে, যেমন CHRE চালিত প্রসেসরের সাথে সংযুক্ত ফ্ল্যাশ স্টোরেজ, তাহলে CHRE বাস্তবায়নকে অবশ্যই প্রতিবন্ধী অবস্থায় এই গতিশীল ন্যানোঅ্যাপগুলির সাথে বুট আপ করতে হবে। এর মানে হল যে এইচএএল-এর মাধ্যমে একটি enableNanoapp() অনুরোধ না পাওয়া পর্যন্ত ন্যানোঅ্যাপের কোডের কোনোটিই কার্যকর করা হয় না। প্রিলোড করা ন্যানোঅ্যাপগুলি সক্রিয় অবস্থায় আরম্ভ করতে পারে।

কনটেক্সট হাব রিস্টার্ট হয়

যদিও স্বাভাবিক অপারেশন চলাকালীন CHRE পুনরায় চালু হবে বলে আশা করা হয় না, এটি অপ্রত্যাশিত অবস্থা থেকে পুনরুদ্ধার করা প্রয়োজন হতে পারে যেমন একটি আনম্যাপ করা মেমরি ঠিকানা অ্যাক্সেস করার চেষ্টা করা। এই পরিস্থিতিতে, CHRE স্বাধীনভাবে Android থেকে পুনরায় আরম্ভ করে। HAL RESTARTED ইভেন্টের মাধ্যমে অ্যান্ড্রয়েডকে এটি সম্পর্কে অবহিত করে, যা CHRE-কে পুনরায় চালু করার পরেই এটি পাঠাতে হবে যাতে এটি নতুন অনুরোধ গ্রহণ করতে পারে, যেমন queryApps()

CHRE সিস্টেম ওভারভিউ

CHRE একটি ইভেন্ট-চালিত আর্কিটেকচারের চারপাশে ডিজাইন করা হয়েছে, যেখানে গণনার প্রাথমিক ইউনিট হল একটি ইভেন্ট যা ন্যানোঅ্যাপের ইভেন্ট হ্যান্ডলিং এন্ট্রি পয়েন্টে পাস করা হয়। যদিও CHRE ফ্রেমওয়ার্ক মাল্টিথ্রেড করা যেতে পারে, একটি প্রদত্ত ন্যানোঅ্যাপ সমান্তরালভাবে একাধিক থ্রেড থেকে চালানো হয় না। CHRE ফ্রেমওয়ার্ক একটি প্রদত্ত ন্যানোঅ্যাপের সাথে তিনটি ন্যানোঅ্যাপ এন্ট্রি পয়েন্টের একটির মাধ্যমে ইন্টারঅ্যাক্ট করে ( nanoappStart() , nanoappHandleEvent() , এবং nanoappEnd() ) অথবা একটি পূর্ববর্তী CHRE API কলে প্রদত্ত একটি কলব্যাকের মাধ্যমে, এবং nanoapps CHRE ফ্রেমওয়ার্ক এবং অন্তর্নিহিত এপিআই সিস্টেমের মাধ্যমে ইন্টারঅ্যাক্ট করে। CHRE API সেন্সর, GNSS, Wi-Fi, WWAN এবং অডিও সহ প্রাসঙ্গিক সংকেতগুলি অ্যাক্সেস করার জন্য মৌলিক ক্ষমতাগুলির একটি সেটের পাশাপাশি সুবিধা প্রদান করে এবং এটি বিক্রেতা-নির্দিষ্ট ন্যানোঅ্যাপগুলির দ্বারা ব্যবহারের জন্য অতিরিক্ত বিক্রেতা-নির্দিষ্ট ক্ষমতাগুলির সাথে প্রসারিত করা যেতে পারে।

সিস্টেম তৈরি করুন

যদিও কনটেক্সট হাব HAL এবং অন্যান্য প্রয়োজনীয় AP-সাইড উপাদানগুলি অ্যান্ড্রয়েডের পাশাপাশি তৈরি করা হয়েছে, CHRE-এর মধ্যে চলে এমন কোডগুলির প্রয়োজনীয়তা থাকতে পারে যা এটিকে Android বিল্ড সিস্টেমের সাথে বেমানান করে তোলে, যেমন একটি বিশেষ টুলচেনের প্রয়োজন। অতএব, AOSP-এ CHRE প্রকল্পটি ন্যানোঅ্যাপস কম্পাইল করার জন্য GNU Make-এর উপর ভিত্তি করে একটি সরলীকৃত বিল্ড সিস্টেম প্রদান করে এবং, ঐচ্ছিকভাবে, CHRE ফ্রেমওয়ার্ককে লাইব্রেরিতে তৈরি করে যা সিস্টেমের সাথে একীভূত করা যায়। CHRE-এর জন্য সমর্থন যোগ করা ডিভাইস নির্মাতাদের তাদের লক্ষ্য ডিভাইসগুলির জন্য বিল্ড সিস্টেম সমর্থনকে AOSP-তে একীভূত করা উচিত।

CHRE API C99 ভাষার স্ট্যান্ডার্ডে লেখা হয়েছে, এবং রেফারেন্স বাস্তবায়ন রিসোর্স-সীমিত অ্যাপের জন্য উপযুক্ত C++11-এর একটি সীমাবদ্ধ উপসেট ব্যবহার করে।

CHRE API

CHRE API হল C হেডার ফাইলের একটি সংগ্রহ যা একটি ন্যানোঅ্যাপ এবং সিস্টেমের মধ্যে সফ্টওয়্যার ইন্টারফেসকে সংজ্ঞায়িত করে। এটি CHRE সমর্থন করে এমন সমস্ত ডিভাইসে ন্যানোঅ্যাপস কোডকে সামঞ্জস্যপূর্ণ করার জন্য ডিজাইন করা হয়েছে, যার অর্থ হল একটি নতুন ডিভাইসের ধরন সমর্থন করার জন্য একটি ন্যানোঅ্যাপের সোর্স কোড পরিবর্তন করার প্রয়োজন নেই, যদিও এটি লক্ষ্য ডিভাইসের প্রসেসর নির্দেশ সেট বা অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) এর জন্য বিশেষভাবে পুনরায় কম্পাইল করা প্রয়োজন হতে পারে। CHRE আর্কিটেকচার এবং API ডিজাইন এছাড়াও নিশ্চিত করে যে ন্যানোঅ্যাপগুলি CHRE API-এর বিভিন্ন সংস্করণে বাইনারি সামঞ্জস্যপূর্ণ, যার মানে হল যে একটি ন্যানোঅ্যাপকে এমন একটি সিস্টেমে চালানোর জন্য পুনরায় কম্পাইল করার প্রয়োজন নেই যা ন্যানোঅ্যাপের বিরুদ্ধে কম্পাইল করা লক্ষ্য API-এর তুলনায় CHRE API-এর একটি ভিন্ন সংস্করণ প্রয়োগ করে। অন্য কথায়, যদি একটি ন্যানোঅ্যাপ বাইনারি এমন একটি ডিভাইসে চলে যা CHRE API v1.3 সমর্থন করে এবং সেই ডিভাইসটি CHRE API v1.4 সমর্থন করার জন্য আপগ্রেড করা হয়, একই ন্যানোঅ্যাপ বাইনারি কাজ করতে থাকে। একইভাবে, ন্যানোঅ্যাপ CHRE API v1.2-এ চলতে পারে এবং রানটাইমে নির্ধারণ করতে পারে যে এটির ব্যবহার অর্জনের জন্য API v1.3 থেকে সক্ষমতার প্রয়োজন আছে কিনা বা এটি কাজ করতে পারে কিনা, সম্ভাব্যভাবে আকর্ষণীয় বৈশিষ্ট্যের অবনতি সহ।

CHRE API-এর নতুন সংস্করণগুলি অ্যান্ড্রয়েডের সাথে প্রকাশ করা হয়েছে, যদিও CHRE বাস্তবায়নটি বিক্রেতা বাস্তবায়নের অংশ হিসাবে, একটি ডিভাইসে সমর্থিত CHRE API সংস্করণটি একটি Android সংস্করণের সাথে লিঙ্ক করা আবশ্যক নয়৷

সংস্করণ সারাংশ

অ্যান্ড্রয়েড HIDL ভার্সনিং স্কিমের মতো, CHRE API শব্দার্থিক সংস্করণ অনুসরণ করে। প্রধান সংস্করণটি বাইনারি সামঞ্জস্য নির্দেশ করে, যখন পশ্চাদগামী-সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি চালু করা হয় তখন ছোট সংস্করণটি বৃদ্ধি পায়। CHRE API-এ সোর্স কোডের টীকা অন্তর্ভুক্ত রয়েছে তা শনাক্ত করার জন্য যে কোন সংস্করণটি একটি ফাংশন বা প্যারামিটার চালু করেছে, উদাহরণস্বরূপ @since v1.1

CHRE বাস্তবায়ন chreGetVersion() এর মাধ্যমে একটি প্ল্যাটফর্ম-নির্দিষ্ট প্যাচ সংস্করণও প্রকাশ করে, যা ইঙ্গিত করে যে কখন বাগ সংশোধন বা ছোটখাট আপডেট বাস্তবায়নে করা হয়।

সংস্করণ 1.0 (Android 7)

সেন্সর এবং মূল ন্যানোঅ্যাপ ক্ষমতাগুলির জন্য সমর্থন অন্তর্ভুক্ত করে, যেমন ইভেন্ট এবং টাইমার।

সংস্করণ 1.1 (Android 8)

GNSS অবস্থান এবং কাঁচা পরিমাপ, Wi-Fi স্ক্যানিং, এবং মোবাইল নেটওয়ার্ক তথ্য, ন্যানোঅ্যাপ-টু-ন্যানোঅ্যাপ যোগাযোগ সক্ষম করার জন্য সাধারণ পরিমার্জন সহ, এবং অন্যান্য উন্নতির মাধ্যমে অবস্থান ক্ষমতার পরিচয় দেয়৷

সংস্করণ 1.2 (Android 9)

একটি কম-পাওয়ার মাইক্রোফোন, Wi-Fi RTT রেঞ্জিং, AP জেগে ওঠা এবং ঘুমের বিজ্ঞপ্তি এবং অন্যান্য উন্নতি থেকে ডেটার জন্য সমর্থন যোগ করে।

সংস্করণ 1.3 (Android 10)

সেন্সর ক্রমাঙ্কন ডেটা সম্পর্কিত ক্ষমতা বাড়ায়, চাহিদা অনুযায়ী ব্যাচড সেন্সর ডেটা ফ্লাশ করার জন্য সমর্থন যোগ করে, সেন্সরের ধরন সনাক্ত করার ধাপটি সংজ্ঞায়িত করে এবং অতিরিক্ত নির্ভুলতা ক্ষেত্রগুলির সাথে GNSS অবস্থান ইভেন্টগুলি প্রসারিত করে।

সংস্করণ 1.4 (Android 11)

5G সেল তথ্য, ন্যানোঅ্যাপ ডিবাগ ডাম্প এবং অন্যান্য উন্নতির জন্য সমর্থন যোগ করে।

বাধ্যতামূলক সিস্টেম বৈশিষ্ট্য

সেন্সরগুলির মতো প্রাসঙ্গিক সংকেতের উত্সগুলিকে ঐচ্ছিক বৈশিষ্ট্যের ক্ষেত্রগুলিতে শ্রেণীবদ্ধ করা হলেও, সমস্ত CHRE বাস্তবায়নের জন্য কয়েকটি মূল ফাংশন প্রয়োজন৷ এর মধ্যে রয়েছে মূল সিস্টেম এপিআই, যেমন টাইমার সেট করা, অ্যাপ্লিকেশন প্রসেসরে ক্লায়েন্টদের বার্তা পাঠানো এবং গ্রহণ করা, লগিং করা এবং অন্যান্য। সম্পূর্ণ বিবরণের জন্য, API শিরোনাম দেখুন।

CHRE API-তে কোডকৃত মূল সিস্টেম বৈশিষ্ট্যগুলি ছাড়াও, প্রসঙ্গ হাব HAL স্তরে নির্দিষ্ট করা বাধ্যতামূলক CHRE সিস্টেম-স্তরের বৈশিষ্ট্যগুলিও রয়েছে৷ এর মধ্যে সবচেয়ে উল্লেখযোগ্য হল ন্যানোঅ্যাপগুলিকে গতিশীলভাবে লোড এবং আনলোড করার ক্ষমতা।

C/C++ স্ট্যান্ডার্ড লাইব্রেরি

মেমরির ব্যবহার এবং সিস্টেমের জটিলতা কমাতে, CHRE বাস্তবায়নের জন্য শুধুমাত্র স্ট্যান্ডার্ড C এবং C++ লাইব্রেরির একটি উপসেট এবং রানটাইম সমর্থনের প্রয়োজন ভাষার বৈশিষ্ট্যগুলিকে সমর্থন করতে হবে। এই নীতিগুলি অনুসরণ করে, কিছু বৈশিষ্ট্যগুলি তাদের মেমরি এবং ব্যাপক OS-স্তরের নির্ভরতার কারণে স্পষ্টভাবে বাদ দেওয়া হয়েছে এবং অন্যগুলি কারণ সেগুলি আরও উপযুক্ত CHRE-নির্দিষ্ট API দ্বারা প্রতিস্থাপিত হয়েছে৷ যদিও একটি সম্পূর্ণ তালিকা বোঝানো হয়নি, নিম্নলিখিত ক্ষমতাগুলি ন্যানোঅ্যাপগুলিতে উপলব্ধ করার উদ্দেশ্যে নয়:

  • C++ ব্যতিক্রম এবং রানটাইম টাইপ তথ্য (RTTI)
  • স্ট্যান্ডার্ড লাইব্রেরি মাল্টিথ্রেডিং সমর্থন, C++11 হেডার সহ <thread> , <mutex> , <atomic> , <future>
  • C এবং C++ স্ট্যান্ডার্ড ইনপুট/আউটপুট লাইব্রেরি
  • C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL)
  • C++ স্ট্যান্ডার্ড রেগুলার এক্সপ্রেশন লাইব্রেরি
  • স্ট্যান্ডার্ড ফাংশনগুলির মাধ্যমে গতিশীল মেমরি বরাদ্দকরণ (উদাহরণস্বরূপ, malloc , calloc , realloc , free , operator new ), এবং অন্যান্য স্ট্যান্ডার্ড লাইব্রেরি ফাংশন যা সহজাতভাবে গতিশীল বরাদ্দ ব্যবহার করে, যেমন std::unique_ptr
  • স্থানীয়করণ এবং ইউনিকোড অক্ষর সমর্থন
  • তারিখ এবং সময় লাইব্রেরি
  • ফাংশন যা স্বাভাবিক প্রোগ্রাম প্রবাহ পরিবর্তন করে, যার মধ্যে রয়েছে <setjmp.h> , <signal.h> , abort , std::terminate
  • system , getenv সহ হোস্ট পরিবেশে প্রবেশ করা
  • POSIX এবং অন্যান্য লাইব্রেরিগুলি C99 বা C++11 ভাষার মানদণ্ডে অন্তর্ভুক্ত নয়

অনেক ক্ষেত্রে, CHRE API ফাংশন এবং ইউটিলিটি লাইব্রেরি থেকে সমতুল্য ক্ষমতা পাওয়া যায়। উদাহরণস্বরূপ, অ্যান্ড্রয়েড লগক্যাট সিস্টেমকে লক্ষ্য করে ডিবাগ লগিংয়ের জন্য chreLog ব্যবহার করা যেতে পারে, যেখানে একটি আরও ঐতিহ্যগত প্রোগ্রাম printf বা std::cout ব্যবহার করতে পারে।

বিপরীতে, কিছু স্ট্যান্ডার্ড লাইব্রেরি ক্ষমতা প্রয়োজন। একটি ন্যানোঅ্যাপ বাইনারিতে অন্তর্ভুক্তির জন্য স্ট্যাটিক লাইব্রেরির মাধ্যমে বা ন্যানোঅ্যাপ এবং সিস্টেমের মধ্যে গতিশীল সংযোগের মাধ্যমে এগুলি প্রকাশ করা প্ল্যাটফর্ম বাস্তবায়নের উপর নির্ভর করে। এটি অন্তর্ভুক্ত, কিন্তু সীমাবদ্ধ নয়:

  • স্ট্রিং এবং অ্যারে ইউটিলিটি: memcmp , memcpy , memmove , memset , strlen
  • গণিত লাইব্রেরি: সাধারণত ব্যবহৃত একক-নির্ভুল ফ্লোটিং-পয়েন্ট ফাংশন:

    • বেসিক অপারেশন: ceilf , fabsf , floorf , fmaxf , fminf , fmodf , roundf , lroundf , remainderf
    • সূচকীয় এবং পাওয়ার ফাংশন: expf , log2f , powf , sqrtf
    • ত্রিকোণমিতিক এবং হাইপারবোলিক ফাংশন: sinf , cosf , tanf , asinf , acosf , atan2f , tanhf

যদিও কিছু অন্তর্নিহিত প্ল্যাটফর্ম অতিরিক্ত ক্ষমতা সমর্থন করে, একটি ন্যানোঅ্যাপ CHRE বাস্তবায়ন জুড়ে পোর্টেবল বলে বিবেচিত হয় না যদি না এটি CHRE API ফাংশন এবং অনুমোদিত স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলির বাহ্যিক নির্ভরতাকে সীমাবদ্ধ না করে।

ঐচ্ছিক বৈশিষ্ট্য

হার্ডওয়্যার এবং সফ্টওয়্যার প্রচারের জন্য, CHRE API-কে বৈশিষ্ট্যযুক্ত এলাকায় ভাগ করা হয়েছে, যেগুলি API দৃষ্টিকোণ থেকে ঐচ্ছিক বলে বিবেচিত হয়। যদিও এই বৈশিষ্ট্যগুলির একটি সামঞ্জস্যপূর্ণ CHRE বাস্তবায়ন সমর্থন করার প্রয়োজন নাও হতে পারে, তবে তাদের একটি নির্দিষ্ট ন্যানোঅ্যাপকে সমর্থন করার প্রয়োজন হতে পারে। এমনকি যদি একটি প্ল্যাটফর্ম API-এর একটি নির্দিষ্ট সেট সমর্থন না করে, সেই ফাংশনগুলিকে উল্লেখ করে এমন ন্যানোঅ্যাপগুলি তৈরি করতে এবং লোড করতে সক্ষম হতে হবে।

সেন্সর

CHRE API অ্যাক্সিলোমিটার, জাইরোস্কোপ, ম্যাগনেটোমিটার, অ্যাম্বিয়েন্ট লাইট সেন্সর এবং প্রক্সিমিটি সহ সেন্সর থেকে ডেটা অনুরোধ করার ক্ষমতা প্রদান করে। এই API গুলিকে Android সেন্সর API-এর মতো একটি বৈশিষ্ট্য সেট প্রদান করার জন্য বোঝানো হয়েছে, যার মধ্যে শক্তি খরচ কমাতে ব্যাচিং সেন্সর নমুনাগুলির জন্য সমর্থন রয়েছে৷ CHRE-এর মধ্যে সেন্সর ডেটা প্রক্রিয়াকরণ AP-তে চলার তুলনায় অনেক কম শক্তি এবং গতি সংকেতগুলির কম লেটেন্সি প্রক্রিয়াকরণ সক্ষম করে।

জিএনএসএস

CHRE একটি গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (GNSS), জিপিএস এবং অন্যান্য স্যাটেলাইট নক্ষত্রমন্ডল সহ অবস্থান ডেটার অনুরোধ করার জন্য API সরবরাহ করে। এর মধ্যে পর্যায়ক্রমিক অবস্থান সংশোধনের জন্য অনুরোধগুলি, সেইসাথে কাঁচা পরিমাপ ডেটা অন্তর্ভুক্ত রয়েছে, যদিও উভয়ই স্বাধীন ক্ষমতা। যেহেতু CHRE-এর GNSS সাবসিস্টেমের সাথে সরাসরি লিঙ্ক রয়েছে, তাই AP-ভিত্তিক GNSS অনুরোধের তুলনায় শক্তি হ্রাস পেয়েছে, কারণ AP একটি অবস্থান সেশনের সমগ্র জীবনচক্রের সময় ঘুমিয়ে থাকতে পারে।

ওয়াই-ফাই

CHRE প্রাথমিকভাবে অবস্থানের উদ্দেশ্যে Wi-Fi চিপের সাথে ইন্টারঅ্যাক্ট করার ক্ষমতা প্রদান করে। যদিও GNSS বহিরঙ্গন অবস্থানের জন্য ভাল কাজ করে, Wi-Fi স্ক্যানের ফলাফলগুলি বাড়ির ভিতরে এবং উন্নত এলাকায় সঠিক অবস্থানের তথ্য প্রদান করতে পারে। একটি স্ক্যানের জন্য AP-কে জাগানোর খরচ এড়ানোর পাশাপাশি, CHRE সংযোগের উদ্দেশ্যে Wi-Fi ফার্মওয়্যার দ্বারা সম্পাদিত Wi-Fi স্ক্যানের ফলাফল শুনতে পারে, যা সাধারণত পাওয়ারের কারণে AP-তে বিতরণ করা হয় না। প্রাসঙ্গিক উদ্দেশ্যে কানেক্টিভিটি স্ক্যান ব্যবহার করা মোট Wi-Fi স্ক্যানের সংখ্যা কমাতে সাহায্য করে, শক্তি সাশ্রয় করে।

CHRE API v1.1-এ Wi-Fi-এর জন্য সমর্থন যোগ করা হয়েছে, যার মধ্যে স্ক্যানের ফলাফল নিরীক্ষণ করার ক্ষমতা এবং চাহিদা অনুযায়ী স্ক্যানগুলি ট্রিগার করা রয়েছে। এই ক্ষমতাগুলিকে v1.2-এ প্রসারিত করা হয়েছিল রাউন্ড-ট্রিপ টাইম (RTT) পরিমাপ করার ক্ষমতা সহ যেগুলি বৈশিষ্ট্যটিকে সমর্থন করে এমন অ্যাক্সেস পয়েন্টগুলির বিরুদ্ধে, যা সঠিক আপেক্ষিক অবস্থান নির্ধারণকে সক্ষম করে।

WWAN

CHRE API পরিবেশনকারী সেল এবং এর প্রতিবেশীদের জন্য কোষ সনাক্তকরণ তথ্য পুনরুদ্ধার করার ক্ষমতা প্রদান করে, যা সাধারণত মোটা দানাযুক্ত অবস্থানের উদ্দেশ্যে ব্যবহৃত হয়।

অডিও

CHRE একটি কম-পাওয়ার মাইক্রোফোন থেকে অডিও ডেটার ব্যাচ প্রক্রিয়া করতে পারে, যা সাধারণত SoundTrigger HAL বাস্তবায়নের জন্য ব্যবহৃত হার্ডওয়্যার ব্যবহার করে। CHRE-তে অডিও ডেটা প্রক্রিয়াকরণ এটিকে অন্যান্য ডেটার সাথে মিশ্রিত করতে সক্ষম করে, যেমন মোশন সেন্সর।

রেফারেন্স বাস্তবায়ন

CHRE ফ্রেমওয়ার্কের জন্য রেফারেন্স কোড system/chre প্রকল্পের AOSP-তে অন্তর্ভুক্ত করা হয়েছে, C++11-এ বাস্তবায়িত। কঠোরভাবে প্রয়োজন না হলেও, এই কোডবেসের উপর ভিত্তি করে সমস্ত CHRE বাস্তবায়নের জন্য সুপারিশ করা হয়, যাতে ধারাবাহিকতা নিশ্চিত করা যায় এবং নতুন ক্ষমতা গ্রহণকে ত্বরান্বিত করা যায়। এই কোডটিকে মূল অ্যান্ড্রয়েড ফ্রেমওয়ার্কের একটি অ্যানালগ হিসাবে দেখা যেতে পারে যে এটি APIগুলির একটি ওপেন-সোর্স বাস্তবায়ন যা অ্যাপগুলি ব্যবহার করে, সামঞ্জস্যের জন্য একটি বেসলাইন এবং মান হিসাবে পরিবেশন করে৷ যদিও এটি কাস্টমাইজ করা যায় এবং বিক্রেতা-নির্দিষ্ট ক্ষমতার সাথে প্রসারিত করা যেতে পারে, সুপারিশ হল সাধারণ কোডটিকে যতটা সম্ভব রেফারেন্সের কাছাকাছি রাখা। অ্যান্ড্রয়েডের HAL-এর মতোই, CHRE রেফারেন্স বাস্তবায়ন বিভিন্ন প্ল্যাটফর্ম বিমূর্ততা ব্যবহার করে যাতে এটিকে ন্যূনতম প্রয়োজনীয়তা পূরণ করে এমন যেকোনো ডিভাইসে মানিয়ে নেওয়া যায়।

প্রযুক্তিগত বিবরণ এবং একটি পোর্টিং গাইডের জন্য, system/chre প্রকল্পে অন্তর্ভুক্ত README দেখুন।

,

স্মার্টফোনগুলিতে বেশ কয়েকটি প্রসেসর থাকে, প্রতিটি বিভিন্ন কাজ সম্পাদনের জন্য অপ্টিমাইজ করা হয়। যাইহোক, অ্যান্ড্রয়েড শুধুমাত্র একটি প্রসেসরে চলে: অ্যাপ্লিকেশন প্রসেসর (এপি)। গেমিংয়ের মতো স্ক্রিন-অন ব্যবহারের ক্ষেত্রে দুর্দান্ত পারফরম্যান্স সরবরাহ করার জন্য AP টিউন করা হয়েছে, তবে এটি এমন বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য খুব বেশি ক্ষুধার্ত যেগুলির জন্য ঘন ঘন, সংক্ষিপ্ত বিস্ফোরণের প্রয়োজন হয়, এমনকি যখন স্ক্রীন বন্ধ থাকে তখনও। ছোট প্রসেসরগুলি এই কাজের চাপগুলিকে আরও দক্ষতার সাথে পরিচালনা করতে সক্ষম হয়, ব্যাটারির জীবনকে উল্লেখযোগ্যভাবে প্রভাবিত না করেই তাদের কাজগুলি সম্পূর্ণ করে৷ যাইহোক, এই কম-পাওয়ার প্রসেসরগুলিতে সফ্টওয়্যার পরিবেশগুলি আরও সীমিত এবং ব্যাপকভাবে পরিবর্তিত হতে পারে, ক্রস-প্ল্যাটফর্ম বিকাশকে কঠিন করে তোলে।

কনটেক্সট হাব রানটাইম এনভায়রনমেন্ট (CHRE) একটি সাধারণ, প্রমিত, এমবেডেড-বান্ধব API সহ একটি কম-পাওয়ার প্রসেসরে অ্যাপ্লিকেশন চালানোর জন্য একটি সাধারণ প্ল্যাটফর্ম প্রদান করে। CHRE ডিভাইস OEM এবং তাদের বিশ্বস্ত অংশীদারদের AP থেকে প্রসেসিং অফলোড করা, ব্যাটারি বাঁচাতে এবং ব্যবহারকারীর অভিজ্ঞতার বিভিন্ন ক্ষেত্র উন্নত করতে এবং সর্বদা চালু, প্রাসঙ্গিকভাবে সচেতন বৈশিষ্ট্যগুলির একটি শ্রেণী সক্ষম করে, বিশেষ করে যেগুলি পরিবেষ্টিত সেন্সিং থেকে মেশিন লার্নিং প্রয়োগের সাথে জড়িত।

মূল ধারণা

CHRE হল একটি সফ্টওয়্যার পরিবেশ যেখানে ছোট নেটিভ অ্যাপস, নামক ন্যানোঅ্যাপস , একটি কম-পাওয়ার প্রসেসরে কার্যকর করে এবং সাধারণ CHRE API-এর মাধ্যমে অন্তর্নিহিত সিস্টেমের সাথে যোগাযোগ করে। CHRE API-এর যথাযথ বাস্তবায়ন ত্বরান্বিত করার জন্য, CHRE-এর একটি ক্রস-প্ল্যাটফর্ম রেফারেন্স বাস্তবায়ন AOSP-তে অন্তর্ভুক্ত করা হয়েছে। রেফারেন্স বাস্তবায়ন প্ল্যাটফর্ম বিমূর্ত স্তর (PALs) একটি সিরিজের মাধ্যমে অন্তর্নিহিত হার্ডওয়্যার এবং সফ্টওয়্যার সাধারণ কোড এবং বিমূর্ততা অন্তর্ভুক্ত করে। ন্যানোঅ্যাপগুলি প্রায় সবসময়ই অ্যান্ড্রয়েডে চলমান এক বা একাধিক ক্লায়েন্ট অ্যাপের সাথে সংযুক্ত থাকে, যা সীমিত-অ্যাক্সেস ContextHubManager সিস্টেম API-এর মাধ্যমে CHRE এবং ন্যানোঅ্যাপের সাথে ইন্টারঅ্যাক্ট করে।

উচ্চ স্তরে, সামগ্রিকভাবে CHRE এবং অ্যান্ড্রয়েডের আর্কিটেকচারের মধ্যে সমান্তরাল টানা যেতে পারে। যাইহোক, কয়েকটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:

  • CHRE শুধুমাত্র নেটিভ কোডে (C বা C++) বিকশিত ন্যানোঅ্যাপ চালানো সমর্থন করে; জাভা সমর্থিত নয়।
  • সম্পদের সীমাবদ্ধতা এবং নিরাপত্তা সীমাবদ্ধতার কারণে, CHRE নির্বিচারে তৃতীয় পক্ষের অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলির দ্বারা ব্যবহারের জন্য উন্মুক্ত নয়৷ শুধুমাত্র সিস্টেম-বিশ্বস্ত অ্যাপই এটি অ্যাক্সেস করতে পারে।

এছাড়াও CHRE ধারণা এবং একটি সেন্সর হাবের মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য তৈরি করতে হবে। যদিও সেন্সর হাব এবং CHRE বাস্তবায়নের জন্য একই হার্ডওয়্যার ব্যবহার করা সাধারণ, CHRE নিজেই Android সেন্সর HAL-এর জন্য প্রয়োজনীয় সেন্সর ক্ষমতা প্রদান করে না। CHRE কনটেক্সট হাব HAL-এর সাথে আবদ্ধ, এবং এটি AP-কে জড়িত না করেই সেন্সর ডেটা গ্রহণ করার জন্য একটি ডিভাইস-নির্দিষ্ট সেন্সর ফ্রেমওয়ার্কের ক্লায়েন্ট হিসাবে কাজ করে।

CHRE ফ্রেমওয়ার্ক আর্কিটেকচার

চিত্র 1. CHRE ফ্রেমওয়ার্ক আর্কিটেকচার

প্রসঙ্গ হাব HAL

কনটেক্সট হাব হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) হল অ্যান্ড্রয়েড ফ্রেমওয়ার্ক এবং ডিভাইসের CHRE বাস্তবায়নের মধ্যে ইন্টারফেস, hardware/interfaces/contexthub -এ সংজ্ঞায়িত করা হয়েছে। কনটেক্সট হাব HAL সেই APIগুলিকে সংজ্ঞায়িত করে যার মাধ্যমে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক উপলব্ধ প্রসঙ্গ হাব এবং তাদের ন্যানোঅ্যাপগুলি আবিষ্কার করে, মেসেজ পাস করার মাধ্যমে সেই ন্যানোঅ্যাপগুলির সাথে ইন্টারঅ্যাক্ট করে এবং ন্যানোঅ্যাপগুলিকে লোড এবং আনলোড করার অনুমতি দেয়৷ কনটেক্সট হাব HAL-এর একটি রেফারেন্স বাস্তবায়ন যা CHRE এর রেফারেন্স বাস্তবায়নের সাথে কাজ করে system/chre/host এ উপলব্ধ।

এই ডকুমেন্টেশন এবং HAL সংজ্ঞার মধ্যে বিরোধের ক্ষেত্রে, HAL সংজ্ঞা প্রাধান্য পায়।

সূচনা

যখন অ্যান্ড্রয়েড বুট আপ হয়, কনটেক্সটহাবসার্ভিস ডিভাইসে কোনো কনটেক্সট হাব উপলব্ধ আছে কিনা তা নির্ধারণ করতে getHubs() HAL ফাংশনকে আহ্বান করে। এটি একটি ব্লকিং, এক-কালীন কল, তাই বুটকে বিলম্বিত এড়াতে এটিকে দ্রুত শেষ করতে হবে এবং এটিকে অবশ্যই একটি সঠিক ফলাফল দিতে হবে, কারণ পরবর্তীতে নতুন প্রসঙ্গ হাব চালু করা যাবে না।

ন্যানোঅ্যাপস লোড এবং আনলোড করুন

একটি কনটেক্সট হাব ন্যানোঅ্যাপগুলির একটি সেট অন্তর্ভুক্ত করতে পারে যা ডিভাইসের ছবিতে অন্তর্ভুক্ত থাকে এবং যখন CHRE শুরু হয় তখন লোড হয়৷ এগুলি প্রিলোডেড ন্যানোঅ্যাপস হিসাবে পরিচিত, এবং queryApps() এর প্রথম সম্ভাব্য প্রতিক্রিয়াতে অন্তর্ভুক্ত করা উচিত।

কনটেক্সট হাব এইচএএল loadNanoApp() এবং unloadNanoApp() ফাংশনের মাধ্যমে রানটাইমে গতিশীলভাবে ন্যানোঅ্যাপগুলি লোড এবং আনলোড করা সমর্থন করে। ডিভাইসের CHRE হার্ডওয়্যার এবং সফ্টওয়্যার বাস্তবায়নের জন্য নির্দিষ্ট একটি বাইনারি বিন্যাসে HAL-কে Nanoapps প্রদান করা হয়।

যদি একটি ন্যানোঅ্যাপ লোড করার জন্য বাস্তবায়নের সাথে এটিকে ননভোলাটাইল মেমরিতে লেখার সাথে জড়িত থাকে, যেমন CHRE চালিত প্রসেসরের সাথে সংযুক্ত ফ্ল্যাশ স্টোরেজ, তাহলে CHRE বাস্তবায়নকে অবশ্যই প্রতিবন্ধী অবস্থায় এই গতিশীল ন্যানোঅ্যাপগুলির সাথে বুট আপ করতে হবে। এর মানে হল যে এইচএএল-এর মাধ্যমে একটি enableNanoapp() অনুরোধ না পাওয়া পর্যন্ত ন্যানোঅ্যাপের কোডের কোনোটিই কার্যকর করা হয় না। প্রিলোড করা ন্যানোঅ্যাপগুলি সক্রিয় অবস্থায় আরম্ভ করতে পারে।

কনটেক্সট হাব রিস্টার্ট হয়

যদিও স্বাভাবিক অপারেশন চলাকালীন CHRE পুনরায় চালু হবে বলে আশা করা হয় না, এটি অপ্রত্যাশিত অবস্থা থেকে পুনরুদ্ধার করা প্রয়োজন হতে পারে যেমন একটি আনম্যাপ করা মেমরি ঠিকানা অ্যাক্সেস করার চেষ্টা করা। এই পরিস্থিতিতে, CHRE স্বাধীনভাবে Android থেকে পুনরায় আরম্ভ করে। HAL RESTARTED ইভেন্টের মাধ্যমে অ্যান্ড্রয়েডকে এটি সম্পর্কে অবহিত করে, যা CHRE-কে পুনরায় চালু করার পরেই এটি পাঠাতে হবে যাতে এটি নতুন অনুরোধ গ্রহণ করতে পারে, যেমন queryApps()

CHRE সিস্টেম ওভারভিউ

CHRE একটি ইভেন্ট-চালিত আর্কিটেকচারের চারপাশে ডিজাইন করা হয়েছে, যেখানে গণনার প্রাথমিক ইউনিট হল একটি ইভেন্ট যা ন্যানোঅ্যাপের ইভেন্ট হ্যান্ডলিং এন্ট্রি পয়েন্টে পাস করা হয়। যদিও CHRE ফ্রেমওয়ার্ক মাল্টিথ্রেড করা যেতে পারে, একটি প্রদত্ত ন্যানোঅ্যাপ সমান্তরালভাবে একাধিক থ্রেড থেকে চালানো হয় না। CHRE ফ্রেমওয়ার্ক একটি প্রদত্ত ন্যানোঅ্যাপের সাথে তিনটি ন্যানোঅ্যাপ এন্ট্রি পয়েন্টের একটির মাধ্যমে ইন্টারঅ্যাক্ট করে ( nanoappStart() , nanoappHandleEvent() , এবং nanoappEnd() ) অথবা একটি পূর্ববর্তী CHRE API কলে প্রদত্ত একটি কলব্যাকের মাধ্যমে, এবং nanoapps CHRE ফ্রেমওয়ার্ক এবং অন্তর্নিহিত এপিআই সিস্টেমের মাধ্যমে ইন্টারঅ্যাক্ট করে। CHRE API সেন্সর, GNSS, Wi-Fi, WWAN এবং অডিও সহ প্রাসঙ্গিক সংকেতগুলি অ্যাক্সেস করার জন্য মৌলিক ক্ষমতাগুলির একটি সেটের পাশাপাশি সুবিধা প্রদান করে এবং এটি বিক্রেতা-নির্দিষ্ট ন্যানোঅ্যাপগুলির দ্বারা ব্যবহারের জন্য অতিরিক্ত বিক্রেতা-নির্দিষ্ট ক্ষমতাগুলির সাথে প্রসারিত করা যেতে পারে।

সিস্টেম তৈরি করুন

যদিও কনটেক্সট হাব HAL এবং অন্যান্য প্রয়োজনীয় AP-সাইড উপাদানগুলি অ্যান্ড্রয়েডের পাশাপাশি তৈরি করা হয়েছে, CHRE-এর মধ্যে চলে এমন কোডগুলির প্রয়োজনীয়তা থাকতে পারে যা এটিকে Android বিল্ড সিস্টেমের সাথে বেমানান করে তোলে, যেমন একটি বিশেষ টুলচেনের প্রয়োজন। অতএব, AOSP-এ CHRE প্রকল্পটি ন্যানোঅ্যাপস কম্পাইল করার জন্য GNU Make-এর উপর ভিত্তি করে একটি সরলীকৃত বিল্ড সিস্টেম প্রদান করে এবং, ঐচ্ছিকভাবে, CHRE ফ্রেমওয়ার্ককে লাইব্রেরিতে তৈরি করে যা সিস্টেমের সাথে একীভূত করা যায়। CHRE-এর জন্য সমর্থন যোগ করা ডিভাইস নির্মাতাদের তাদের লক্ষ্য ডিভাইসগুলির জন্য বিল্ড সিস্টেম সমর্থনকে AOSP-তে একীভূত করা উচিত।

CHRE API C99 ভাষার স্ট্যান্ডার্ডে লেখা হয়েছে, এবং রেফারেন্স বাস্তবায়ন রিসোর্স-সীমিত অ্যাপের জন্য উপযুক্ত C++11-এর একটি সীমাবদ্ধ উপসেট ব্যবহার করে।

CHRE API

CHRE API হল C হেডার ফাইলের একটি সংগ্রহ যা একটি ন্যানোঅ্যাপ এবং সিস্টেমের মধ্যে সফ্টওয়্যার ইন্টারফেসকে সংজ্ঞায়িত করে। এটি CHRE সমর্থন করে এমন সমস্ত ডিভাইসে ন্যানোঅ্যাপস কোডকে সামঞ্জস্যপূর্ণ করার জন্য ডিজাইন করা হয়েছে, যার অর্থ হল একটি নতুন ডিভাইসের ধরন সমর্থন করার জন্য একটি ন্যানোঅ্যাপের সোর্স কোড পরিবর্তন করার প্রয়োজন নেই, যদিও এটি লক্ষ্য ডিভাইসের প্রসেসর নির্দেশ সেট বা অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) এর জন্য বিশেষভাবে পুনরায় কম্পাইল করা প্রয়োজন হতে পারে। CHRE আর্কিটেকচার এবং API ডিজাইন এছাড়াও নিশ্চিত করে যে ন্যানোঅ্যাপগুলি CHRE API-এর বিভিন্ন সংস্করণে বাইনারি সামঞ্জস্যপূর্ণ, যার মানে হল যে একটি ন্যানোঅ্যাপকে এমন একটি সিস্টেমে চালানোর জন্য পুনরায় কম্পাইল করার প্রয়োজন নেই যা ন্যানোঅ্যাপের বিরুদ্ধে কম্পাইল করা লক্ষ্য API-এর তুলনায় CHRE API-এর একটি ভিন্ন সংস্করণ প্রয়োগ করে। অন্য কথায়, যদি একটি ন্যানোঅ্যাপ বাইনারি এমন একটি ডিভাইসে চলে যা CHRE API v1.3 সমর্থন করে এবং সেই ডিভাইসটি CHRE API v1.4 সমর্থন করার জন্য আপগ্রেড করা হয়, একই ন্যানোঅ্যাপ বাইনারি কাজ করতে থাকে। একইভাবে, ন্যানোঅ্যাপ CHRE API v1.2-এ চলতে পারে এবং রানটাইমে নির্ধারণ করতে পারে যে এটির ব্যবহার অর্জনের জন্য API v1.3 থেকে সক্ষমতার প্রয়োজন আছে কিনা বা এটি কাজ করতে পারে কিনা, সম্ভাব্যভাবে আকর্ষণীয় বৈশিষ্ট্যের অবনতি সহ।

CHRE API-এর নতুন সংস্করণগুলি অ্যান্ড্রয়েডের সাথে প্রকাশ করা হয়েছে, যদিও CHRE বাস্তবায়নটি বিক্রেতা বাস্তবায়নের অংশ হিসাবে, একটি ডিভাইসে সমর্থিত CHRE API সংস্করণটি একটি Android সংস্করণের সাথে লিঙ্ক করা আবশ্যক নয়৷

সংস্করণ সারাংশ

অ্যান্ড্রয়েড HIDL ভার্সনিং স্কিমের মতো, CHRE API শব্দার্থিক সংস্করণ অনুসরণ করে। প্রধান সংস্করণটি বাইনারি সামঞ্জস্য নির্দেশ করে, যখন পশ্চাদগামী-সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি চালু করা হয় তখন ছোট সংস্করণটি বৃদ্ধি পায়। CHRE API-এ সোর্স কোডের টীকা অন্তর্ভুক্ত রয়েছে তা শনাক্ত করার জন্য যে কোন সংস্করণটি একটি ফাংশন বা প্যারামিটার চালু করেছে, উদাহরণস্বরূপ @since v1.1

CHRE বাস্তবায়ন chreGetVersion() এর মাধ্যমে একটি প্ল্যাটফর্ম-নির্দিষ্ট প্যাচ সংস্করণও প্রকাশ করে, যা ইঙ্গিত করে যে কখন বাগ সংশোধন বা ছোটখাট আপডেট বাস্তবায়নে করা হয়।

সংস্করণ 1.0 (Android 7)

সেন্সর এবং মূল ন্যানোঅ্যাপ ক্ষমতাগুলির জন্য সমর্থন অন্তর্ভুক্ত করে, যেমন ইভেন্ট এবং টাইমার।

সংস্করণ 1.1 (Android 8)

GNSS অবস্থান এবং কাঁচা পরিমাপ, Wi-Fi স্ক্যানিং, এবং মোবাইল নেটওয়ার্ক তথ্য, ন্যানোঅ্যাপ-টু-ন্যানোঅ্যাপ যোগাযোগ সক্ষম করার জন্য সাধারণ পরিমার্জন সহ, এবং অন্যান্য উন্নতির মাধ্যমে অবস্থান ক্ষমতার পরিচয় দেয়৷

সংস্করণ 1.2 (Android 9)

একটি কম-পাওয়ার মাইক্রোফোন, Wi-Fi RTT রেঞ্জিং, AP জেগে ওঠা এবং ঘুমের বিজ্ঞপ্তি এবং অন্যান্য উন্নতি থেকে ডেটার জন্য সমর্থন যোগ করে।

সংস্করণ 1.3 (Android 10)

সেন্সর ক্রমাঙ্কন ডেটা সম্পর্কিত ক্ষমতা বাড়ায়, চাহিদা অনুযায়ী ব্যাচড সেন্সর ডেটা ফ্লাশ করার জন্য সমর্থন যোগ করে, সেন্সরের ধরন সনাক্ত করার ধাপটি সংজ্ঞায়িত করে এবং অতিরিক্ত নির্ভুলতা ক্ষেত্রগুলির সাথে GNSS অবস্থান ইভেন্টগুলি প্রসারিত করে।

সংস্করণ 1.4 (Android 11)

5G সেল তথ্য, ন্যানোঅ্যাপ ডিবাগ ডাম্প এবং অন্যান্য উন্নতির জন্য সমর্থন যোগ করে।

বাধ্যতামূলক সিস্টেম বৈশিষ্ট্য

সেন্সরগুলির মতো প্রাসঙ্গিক সংকেতের উত্সগুলিকে ঐচ্ছিক বৈশিষ্ট্যের ক্ষেত্রগুলিতে শ্রেণীবদ্ধ করা হলেও, সমস্ত CHRE বাস্তবায়নের জন্য কয়েকটি মূল ফাংশন প্রয়োজন৷ এর মধ্যে রয়েছে মূল সিস্টেম এপিআই, যেমন টাইমার সেট করা, অ্যাপ্লিকেশন প্রসেসরে ক্লায়েন্টদের বার্তা পাঠানো এবং গ্রহণ করা, লগিং করা এবং অন্যান্য। সম্পূর্ণ বিবরণের জন্য, API শিরোনাম দেখুন।

CHRE API-তে কোডকৃত মূল সিস্টেম বৈশিষ্ট্যগুলি ছাড়াও, প্রসঙ্গ হাব HAL স্তরে নির্দিষ্ট করা বাধ্যতামূলক CHRE সিস্টেম-স্তরের বৈশিষ্ট্যগুলিও রয়েছে৷ এর মধ্যে সবচেয়ে উল্লেখযোগ্য হল ন্যানোঅ্যাপগুলিকে গতিশীলভাবে লোড এবং আনলোড করার ক্ষমতা।

C/C++ স্ট্যান্ডার্ড লাইব্রেরি

মেমরির ব্যবহার এবং সিস্টেমের জটিলতা কমাতে, CHRE বাস্তবায়নের জন্য শুধুমাত্র স্ট্যান্ডার্ড C এবং C++ লাইব্রেরির একটি উপসেট এবং রানটাইম সমর্থনের প্রয়োজন ভাষার বৈশিষ্ট্যগুলিকে সমর্থন করতে হবে। এই নীতিগুলি অনুসরণ করে, কিছু বৈশিষ্ট্যগুলি তাদের মেমরি এবং ব্যাপক OS-স্তরের নির্ভরতার কারণে স্পষ্টভাবে বাদ দেওয়া হয়েছে এবং অন্যগুলি কারণ সেগুলি আরও উপযুক্ত CHRE-নির্দিষ্ট API দ্বারা প্রতিস্থাপিত হয়েছে৷ যদিও একটি সম্পূর্ণ তালিকা বোঝানো হয়নি, নিম্নলিখিত ক্ষমতাগুলি ন্যানোঅ্যাপগুলিতে উপলব্ধ করার উদ্দেশ্যে নয়:

  • C++ ব্যতিক্রম এবং রানটাইম টাইপ তথ্য (RTTI)
  • স্ট্যান্ডার্ড লাইব্রেরি মাল্টিথ্রেডিং সমর্থন, C++11 হেডার সহ <thread> , <mutex> , <atomic> , <future>
  • C এবং C++ স্ট্যান্ডার্ড ইনপুট/আউটপুট লাইব্রেরি
  • C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL)
  • C++ স্ট্যান্ডার্ড রেগুলার এক্সপ্রেশন লাইব্রেরি
  • স্ট্যান্ডার্ড ফাংশনগুলির মাধ্যমে গতিশীল মেমরি বরাদ্দকরণ (উদাহরণস্বরূপ, malloc , calloc , realloc , free , operator new ), এবং অন্যান্য স্ট্যান্ডার্ড লাইব্রেরি ফাংশন যা সহজাতভাবে গতিশীল বরাদ্দ ব্যবহার করে, যেমন std::unique_ptr
  • স্থানীয়করণ এবং ইউনিকোড অক্ষর সমর্থন
  • তারিখ এবং সময় লাইব্রেরি
  • ফাংশন যা স্বাভাবিক প্রোগ্রাম প্রবাহ পরিবর্তন করে, যার মধ্যে রয়েছে <setjmp.h> , <signal.h> , abort , std::terminate
  • system , getenv সহ হোস্ট পরিবেশে প্রবেশ করা
  • POSIX এবং অন্যান্য লাইব্রেরিগুলি C99 বা C++11 ভাষার মানদণ্ডে অন্তর্ভুক্ত নয়

অনেক ক্ষেত্রে, CHRE API ফাংশন এবং ইউটিলিটি লাইব্রেরি থেকে সমতুল্য ক্ষমতা পাওয়া যায়। উদাহরণস্বরূপ, অ্যান্ড্রয়েড লগক্যাট সিস্টেমকে লক্ষ্য করে ডিবাগ লগিংয়ের জন্য chreLog ব্যবহার করা যেতে পারে, যেখানে একটি আরও ঐতিহ্যগত প্রোগ্রাম printf বা std::cout ব্যবহার করতে পারে।

বিপরীতে, কিছু স্ট্যান্ডার্ড লাইব্রেরি ক্ষমতা প্রয়োজন। একটি ন্যানোঅ্যাপ বাইনারিতে অন্তর্ভুক্তির জন্য স্ট্যাটিক লাইব্রেরির মাধ্যমে বা ন্যানোঅ্যাপ এবং সিস্টেমের মধ্যে গতিশীল সংযোগের মাধ্যমে এগুলি প্রকাশ করা প্ল্যাটফর্ম বাস্তবায়নের উপর নির্ভর করে। এটি অন্তর্ভুক্ত, কিন্তু সীমাবদ্ধ নয়:

  • স্ট্রিং এবং অ্যারে ইউটিলিটি: memcmp , memcpy , memmove , memset , strlen
  • গণিত লাইব্রেরি: সাধারণত ব্যবহৃত একক-নির্ভুল ফ্লোটিং-পয়েন্ট ফাংশন:

    • বেসিক অপারেশন: ceilf , fabsf , floorf , fmaxf , fminf , fmodf , roundf , lroundf , remainderf
    • সূচকীয় এবং পাওয়ার ফাংশন: expf , log2f , powf , sqrtf
    • ত্রিকোণমিতিক এবং হাইপারবোলিক ফাংশন: sinf , cosf , tanf , asinf , acosf , atan2f , tanhf

যদিও কিছু অন্তর্নিহিত প্ল্যাটফর্ম অতিরিক্ত ক্ষমতা সমর্থন করে, একটি ন্যানোঅ্যাপ CHRE বাস্তবায়ন জুড়ে পোর্টেবল বলে বিবেচিত হয় না যদি না এটি CHRE API ফাংশন এবং অনুমোদিত স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলির বাহ্যিক নির্ভরতাকে সীমাবদ্ধ না করে।

ঐচ্ছিক বৈশিষ্ট্য

হার্ডওয়্যার এবং সফ্টওয়্যার প্রচারের জন্য, CHRE API-কে বৈশিষ্ট্যযুক্ত এলাকায় ভাগ করা হয়েছে, যেগুলি API দৃষ্টিকোণ থেকে ঐচ্ছিক বলে বিবেচিত হয়। যদিও এই বৈশিষ্ট্যগুলির একটি সামঞ্জস্যপূর্ণ CHRE বাস্তবায়ন সমর্থন করার প্রয়োজন নাও হতে পারে, তবে তাদের একটি নির্দিষ্ট ন্যানোঅ্যাপকে সমর্থন করার প্রয়োজন হতে পারে। এমনকি যদি একটি প্ল্যাটফর্ম API-এর একটি নির্দিষ্ট সেট সমর্থন না করে, সেই ফাংশনগুলিকে উল্লেখ করে এমন ন্যানোঅ্যাপগুলি তৈরি করতে এবং লোড করতে সক্ষম হতে হবে।

সেন্সর

CHRE API অ্যাক্সিলোমিটার, জাইরোস্কোপ, ম্যাগনেটোমিটার, অ্যাম্বিয়েন্ট লাইট সেন্সর এবং প্রক্সিমিটি সহ সেন্সর থেকে ডেটা অনুরোধ করার ক্ষমতা প্রদান করে। এই API গুলিকে Android সেন্সর API-এর মতো একটি বৈশিষ্ট্য সেট প্রদান করার জন্য বোঝানো হয়েছে, যার মধ্যে শক্তি খরচ কমাতে ব্যাচিং সেন্সর নমুনাগুলির জন্য সমর্থন রয়েছে৷ CHRE-এর মধ্যে সেন্সর ডেটা প্রক্রিয়াকরণ AP-তে চলার তুলনায় অনেক কম শক্তি এবং গতি সংকেতগুলির কম লেটেন্সি প্রক্রিয়াকরণ সক্ষম করে।

জিএনএসএস

CHRE একটি গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (GNSS), জিপিএস এবং অন্যান্য স্যাটেলাইট নক্ষত্রমন্ডল সহ অবস্থান ডেটার অনুরোধ করার জন্য API সরবরাহ করে। এর মধ্যে পর্যায়ক্রমিক অবস্থান সংশোধনের জন্য অনুরোধগুলি, সেইসাথে কাঁচা পরিমাপ ডেটা অন্তর্ভুক্ত রয়েছে, যদিও উভয়ই স্বাধীন ক্ষমতা। যেহেতু CHRE-এর GNSS সাবসিস্টেমের সাথে সরাসরি লিঙ্ক রয়েছে, তাই AP-ভিত্তিক GNSS অনুরোধের তুলনায় শক্তি হ্রাস পেয়েছে, কারণ AP একটি অবস্থান সেশনের সমগ্র জীবনচক্রের সময় ঘুমিয়ে থাকতে পারে।

ওয়াই-ফাই

CHRE প্রাথমিকভাবে অবস্থানের উদ্দেশ্যে Wi-Fi চিপের সাথে ইন্টারঅ্যাক্ট করার ক্ষমতা প্রদান করে। যদিও GNSS বহিরঙ্গন অবস্থানের জন্য ভাল কাজ করে, Wi-Fi স্ক্যানের ফলাফলগুলি বাড়ির ভিতরে এবং উন্নত এলাকায় সঠিক অবস্থানের তথ্য প্রদান করতে পারে। একটি স্ক্যানের জন্য AP-কে জাগানোর খরচ এড়ানোর পাশাপাশি, CHRE সংযোগের উদ্দেশ্যে Wi-Fi ফার্মওয়্যার দ্বারা সম্পাদিত Wi-Fi স্ক্যানের ফলাফল শুনতে পারে, যা সাধারণত পাওয়ারের কারণে AP-তে বিতরণ করা হয় না। প্রাসঙ্গিক উদ্দেশ্যে কানেক্টিভিটি স্ক্যান ব্যবহার করা মোট Wi-Fi স্ক্যানের সংখ্যা কমাতে সাহায্য করে, শক্তি সাশ্রয় করে।

CHRE API v1.1-এ Wi-Fi-এর জন্য সমর্থন যোগ করা হয়েছে, যার মধ্যে স্ক্যানের ফলাফল নিরীক্ষণ করার ক্ষমতা এবং চাহিদা অনুযায়ী স্ক্যানগুলি ট্রিগার করা রয়েছে। এই ক্ষমতাগুলিকে v1.2-এ প্রসারিত করা হয়েছিল রাউন্ড-ট্রিপ টাইম (RTT) পরিমাপ করার ক্ষমতা সহ যেগুলি বৈশিষ্ট্যটিকে সমর্থন করে এমন অ্যাক্সেস পয়েন্টগুলির বিরুদ্ধে, যা সঠিক আপেক্ষিক অবস্থান নির্ধারণকে সক্ষম করে।

WWAN

সিএইচআরই এপিআই পরিবেশন সেল এবং এর প্রতিবেশীদের জন্য সেল সনাক্তকরণ তথ্য পুনরুদ্ধার করার ক্ষমতা সরবরাহ করে, যা সাধারণত মোটা দানাযুক্ত অবস্থানের উদ্দেশ্যে ব্যবহৃত হয়।

অডিও

CHRE একটি স্বল্প-শক্তি মাইক্রোফোন থেকে অডিও ডেটার ব্যাচগুলি প্রক্রিয়া করতে পারে, যা সাধারণত সাউন্ডট্রিগার এইচএল প্রয়োগ করতে ব্যবহৃত হার্ডওয়্যারকে উপার্জন করে। সিএইচআরইতে অডিও ডেটা প্রক্রিয়াজাতকরণ এটিকে অন্যান্য ডেটা যেমন মোশন সেন্সরগুলির সাথে সংযুক্ত করতে সক্ষম করতে পারে।

রেফারেন্স বাস্তবায়ন

সিএইচআরই কাঠামোর জন্য রেফারেন্স কোডটি সি ++ 11 এ প্রয়োগ করা system/chre প্রকল্পে এওএসপি -তে অন্তর্ভুক্ত রয়েছে। কঠোরভাবে প্রয়োজন না হলেও, ধারাবাহিকতা নিশ্চিত করতে এবং নতুন সক্ষমতা গ্রহণকে ত্বরান্বিত করতে সহায়তা করার জন্য, এই কোডবেসের ভিত্তিতে সমস্ত সিআরআরই বাস্তবায়নগুলির জন্য এটি সুপারিশ করা হয়। এই কোডটি মূল অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অ্যানালগ হিসাবে দেখা যেতে পারে যে এটি এপিআইগুলির একটি ওপেন-সোর্স বাস্তবায়ন যা অ্যাপস ব্যবহার করে, সামঞ্জস্যতার জন্য বেসলাইন এবং স্ট্যান্ডার্ড হিসাবে পরিবেশন করে। যদিও এটি বিক্রেতার-নির্দিষ্ট ক্ষমতাগুলির সাথে কাস্টমাইজ করা এবং প্রসারিত করা যায়, তবে সুপারিশটি হ'ল সাধারণ কোডটি যতটা সম্ভব রেফারেন্সের কাছাকাছি বজায় রাখা। অ্যান্ড্রয়েডের হালালগুলির মতো, সিএইচআরই রেফারেন্স বাস্তবায়ন ন্যূনতম প্রয়োজনীয়তা পূরণ করে যে কোনও ডিভাইসের সাথে মানিয়ে নিতে সক্ষম করতে বিভিন্ন প্ল্যাটফর্ম অ্যাবস্ট্রাকশন ব্যবহার করে।

প্রযুক্তিগত বিশদ এবং একটি পোর্টিং গাইডের জন্য, system/chre প্রকল্পে অন্তর্ভুক্ত রিডমে দেখুন।

,

স্মার্টফোনগুলিতে বেশ কয়েকটি প্রসেসর থাকে, প্রতিটি বিভিন্ন কাজ সম্পাদনের জন্য অনুকূলিত হয়। তবে অ্যান্ড্রয়েড কেবল একটি প্রসেসরে চলে: অ্যাপ্লিকেশন প্রসেসর (এপি)। গেমিংয়ের মতো স্ক্রিন-অন ব্যবহারের ক্ষেত্রে দুর্দান্ত পারফরম্যান্স সরবরাহের জন্য এপিটি সুরযুক্ত, তবে স্ক্রিনটি বন্ধ থাকাকালীন এমনকি ঘন ঘন, সংক্ষিপ্ত বিস্ফোরণগুলির প্রয়োজন এমন বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য এটি খুব বেশি ক্ষুধার্ত। ছোট প্রসেসরগুলি এই কাজের চাপগুলি আরও দক্ষতার সাথে পরিচালনা করতে সক্ষম হয়, ব্যাটারির জীবনকে লক্ষণীয়ভাবে প্রভাবিত না করে তাদের কাজগুলি শেষ করে। যাইহোক, এই নিম্ন-শক্তি প্রসেসরগুলিতে সফ্টওয়্যার পরিবেশগুলি আরও সীমাবদ্ধ এবং ক্রস-প্ল্যাটফর্মের বিকাশকে কঠিন করে তুলতে পারে।

কনটেক্সট হাব রানটাইম এনভায়রনমেন্ট (সিএইচআরই) একটি সাধারণ, মানকযুক্ত, এম্বেডড-বান্ধব এপিআই সহ একটি স্বল্প-শক্তি প্রসেসরে অ্যাপ্লিকেশন চালানোর জন্য একটি সাধারণ প্ল্যাটফর্ম সরবরাহ করে। CHRE ডিভাইস ওএমএস এবং তাদের বিশ্বস্ত অংশীদারদের পক্ষে এপি থেকে প্রসেসিং অফলোড করা, ব্যাটারি সংরক্ষণ এবং ব্যবহারকারীর অভিজ্ঞতার বিভিন্ন ক্ষেত্রের উন্নতি করতে এবং সর্বদা অন, প্রাসঙ্গিকভাবে সচেতন বৈশিষ্ট্যগুলির একটি শ্রেণি সক্ষম করে, বিশেষত যারা পরিবেশন সংবেদনশীলতায় মেশিন লার্নিংয়ের প্রয়োগের সাথে জড়িত তাদেরকে সক্ষম করে তোলে।

মূল ধারণা

CHRE হ'ল সফ্টওয়্যার পরিবেশ যেখানে ন্যানোএপস নামে পরিচিত ছোট নেটিভ অ্যাপ্লিকেশনগুলি একটি নিম্ন-শক্তি প্রসেসরের উপর কার্যকর করে এবং সাধারণ CHRE API এর মাধ্যমে অন্তর্নিহিত সিস্টেমের সাথে যোগাযোগ করে। সিএইচআরই এপিআইগুলির যথাযথ প্রয়োগকে ত্বরান্বিত করতে, সিএইচআরইর একটি ক্রস-প্ল্যাটফর্ম রেফারেন্স বাস্তবায়ন এওএসপি-তে অন্তর্ভুক্ত করা হয়েছে। রেফারেন্স বাস্তবায়নে প্ল্যাটফর্ম বিমূর্ততা স্তরগুলির (পিএলএস) সিরিজের মাধ্যমে অন্তর্নিহিত হার্ডওয়্যার এবং সফ্টওয়্যারগুলিতে সাধারণ কোড এবং বিমূর্ততা অন্তর্ভুক্ত রয়েছে। ন্যানোয়া অ্যাপস প্রায় সর্বদা অ্যান্ড্রয়েডে চলমান এক বা একাধিক ক্লায়েন্ট অ্যাপ্লিকেশনগুলির সাথে আবদ্ধ থাকে, যা সীমাবদ্ধ-অ্যাক্সেস ContextHubManager সিস্টেম এপিআইগুলির মাধ্যমে সিএইচআরই এবং ন্যানোয়া অ্যাপসের সাথে যোগাযোগ করে।

একটি উচ্চ স্তরে, সামগ্রিকভাবে সিএইচআরই এবং অ্যান্ড্রয়েডের আর্কিটেকচারের মধ্যে সমান্তরালগুলি আঁকতে পারে। তবে কয়েকটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:

  • CHRE কেবল নেটিভ কোড (সি বা সি ++) এ বিকাশিত কেবল ন্যানোএপসকে সমর্থন করে; জাভা সমর্থিত নয়।
  • রিসোর্সের সীমাবদ্ধতা এবং সুরক্ষা সীমাবদ্ধতার কারণে, CHRE স্বেচ্ছাসেবী তৃতীয় পক্ষের অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহারের জন্য উন্মুক্ত নয়। কেবল সিস্টেম-বিশ্বাসযুক্ত অ্যাপ্লিকেশনগুলি এটি অ্যাক্সেস করতে পারে।

সিএইচআরই এবং একটি সেন্সর হাবের ধারণাগুলির মধ্যে একটি গুরুত্বপূর্ণ পার্থক্যও রয়েছে। সেন্সর হাব এবং সিআরআর প্রয়োগ করতে একই হার্ডওয়্যারটি ব্যবহার করা সাধারণ হলেও, সিআরই নিজেই অ্যান্ড্রয়েড সেন্সর এইচএল দ্বারা প্রয়োজনীয় সেন্সর ক্ষমতা সরবরাহ করে না। সিএইচআরই প্রসঙ্গ হাব হালের সাথে আবদ্ধ, এবং এটি এপি জড়িত না করে সেন্সর ডেটা পাওয়ার জন্য একটি ডিভাইস-নির্দিষ্ট সেন্সর ফ্রেমওয়ার্কের ক্লায়েন্ট হিসাবে কাজ করে।

Chre ফ্রেমওয়ার্ক আর্কিটেকচার

চিত্র 1। সিএইচআরই ফ্রেমওয়ার্ক আর্কিটেকচার

প্রসঙ্গ হাব হাল

প্রসঙ্গ হাব হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (এইচএল) হ'ল অ্যান্ড্রয়েড ফ্রেমওয়ার্ক এবং ডিভাইসের সিএইচআরই বাস্তবায়নের মধ্যে ইন্টারফেস, hardware/interfaces/contexthub এ সংজ্ঞায়িত। প্রসঙ্গ হাব এইচএল এপিআইগুলিকে সংজ্ঞায়িত করে যার মাধ্যমে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক উপলভ্য প্রসঙ্গ হাবগুলি এবং তাদের ন্যানোএপগুলি আবিষ্কার করে, বার্তা পাসের মাধ্যমে সেই ন্যানোএপিএসের সাথে যোগাযোগ করে এবং ন্যানোপগুলি লোড এবং আনলোড করার অনুমতি দেয়। CHRE এর রেফারেন্স বাস্তবায়নের সাথে কাজ করে এমন প্রসঙ্গ হাব হালের একটি রেফারেন্স বাস্তবায়ন system/chre/host উপলব্ধ।

এই ডকুমেন্টেশন এবং এইচএল সংজ্ঞার মধ্যে দ্বন্দ্বের ক্ষেত্রে, এইচএল সংজ্ঞা প্রাধান্য পায়।

সূচনা

অ্যান্ড্রয়েড বুট আপ করার সময়, কনটেক্সথুবসার্ভিস ডিভাইসে কোনও প্রসঙ্গ হাবগুলি উপলব্ধ কিনা তা নির্ধারণ করার জন্য getHubs() এইচএল ফাংশনটি অনুরোধ করে। এটি একটি ব্লকিং, এককালীন কল, সুতরাং বুট বিলম্ব এড়াতে এটি অবশ্যই দ্রুত সম্পূর্ণ করতে হবে এবং এটি অবশ্যই একটি সঠিক ফলাফল ফিরিয়ে দিতে হবে, কারণ নতুন প্রসঙ্গের কেন্দ্রগুলি পরে চালু করা যায় না।

লোড এবং আনলোড ন্যানোএপস

একটি প্রসঙ্গ হাবের মধ্যে ন্যানোএএপিএসের একটি সেট অন্তর্ভুক্ত থাকতে পারে যা ডিভাইস চিত্রের অন্তর্ভুক্ত থাকে এবং সিআরআর শুরু হওয়ার পরে লোড হয়। এগুলি প্রিলোডেড ন্যানোএপস হিসাবে পরিচিত এবং queryApps() এর প্রথম সম্ভাব্য প্রতিক্রিয়াতে অন্তর্ভুক্ত করা উচিত।

প্রসঙ্গ হাব এইচএএল loadNanoApp() এবং unloadNanoApp() ফাংশনগুলির মাধ্যমে রানটাইমে গতিশীলভাবে ন্যানোএপসগুলি লোডিং এবং আনলোডকে সমর্থন করে। ডিভাইসটির সিএইচআরই হার্ডওয়্যার এবং সফ্টওয়্যার বাস্তবায়নের জন্য নির্দিষ্ট বাইনারি ফর্ম্যাটে এইচএএলকে ন্যানোএপিএস সরবরাহ করা হয়।

যদি কোনও ন্যানোএপ লোড করার বাস্তবায়নে এটি ননভোলেটাইল মেমোরিতে লেখা জড়িত থাকে যেমন প্রসেসরের সাথে সংযুক্ত ফ্ল্যাশ স্টোরেজ যা সিএইচআরই চালায়, তবে সিএইচআরই বাস্তবায়নটি সর্বদা প্রতিবন্ধী অবস্থায় এই গতিশীল ন্যানোইপগুলির সাথে বুট আপ করতে হবে। এর অর্থ হ'ল এইচএএল -এর মাধ্যমে কোনও enableNanoapp() অনুরোধ না পাওয়া পর্যন্ত ন্যানোএপ্পের কোডের কোনওটিই কার্যকর করা হয় না। প্রিলোডেড ন্যানোএপস সক্ষম অবস্থায় আরম্ভ করতে পারে।

প্রসঙ্গ হাব পুনঃসূচনা

যদিও সাধারণ অপারেশন চলাকালীন CHRE পুনরায় চালু হওয়ার আশা করা যায় না, তবে অপ্রত্যাশিত পরিস্থিতি থেকে পুনরুদ্ধার করা প্রয়োজন যেমন একটি আনম্যাপেড মেমরির ঠিকানা অ্যাক্সেস করার চেষ্টা। এই পরিস্থিতিতে, সিএইচআরই অ্যান্ড্রয়েড থেকে স্বাধীনভাবে পুনরায় আরম্ভ করে। এইচএএলটি RESTARTED ইভেন্টের মাধ্যমে এর অ্যান্ড্রয়েডকে অবহিত করে, যা এটি কেবল পাঠানোর পরেই এটি পাঠাতে হবে যে এটি এমন বিন্দুতে পুনরায় সংযুক্ত করার পরে এটি নতুন অনুরোধগুলি যেমন queryApps() গ্রহণ করতে পারে।

Chre সিস্টেম ওভারভিউ

CHRE একটি ইভেন্ট-চালিত আর্কিটেকচারের আশেপাশে ডিজাইন করা হয়েছে, যেখানে গণনার প্রাথমিক ইউনিটটি একটি ইভেন্ট ন্যানোএপ্পের ইভেন্ট হ্যান্ডলিং এন্ট্রি পয়েন্টে পাস করা একটি ইভেন্ট। সিএইচআরই কাঠামোটি মাল্টিথ্রেডেড করা যেতে পারে, তবে একটি প্রদত্ত ন্যানোএপ সমান্তরালে একাধিক থ্রেড থেকে কখনই কার্যকর করা হয় না। সিএইচআরই ফ্রেমওয়ার্কটি তিনটি ন্যানোএপ এন্ট্রি পয়েন্টগুলির মধ্যে একটির মাধ্যমে প্রদত্ত ন্যানোএপের সাথে যোগাযোগ করে ( nanoappStart() , nanoappHandleEvent() , এবং nanoappEnd() ) বা পূর্বের সিআরই এপিআই কলটিতে প্রদত্ত একটি কলব্যাকের মাধ্যমে, এবং ন্যানোএপস সিআরআরইআই এর মাধ্যমে যোগাযোগের মাধ্যমে যোগাযোগ করে। সিএইচআরই এপিআই সেন্সর, জিএনএসএস, ওয়াই-ফাই, ডাব্লুডাব্লুএএন, এবং অডিও সহ প্রাসঙ্গিক সংকেতগুলি অ্যাক্সেসের জন্য বেসিক সক্ষমতার একটি সেট সরবরাহ করে এবং এটি বিক্রেতার নির্দিষ্ট ন্যানোএএপিএস দ্বারা ব্যবহারের জন্য অতিরিক্ত বিক্রেতা-নির্দিষ্ট ক্ষমতা সহ বাড়ানো যেতে পারে।

সিস্টেম তৈরি করুন

প্রসঙ্গ হাব হাল এবং অন্যান্য প্রয়োজনীয় এপি-সাইড উপাদানগুলি অ্যান্ড্রয়েডের পাশাপাশি নির্মিত হলেও, সিএইচআরইর মধ্যে চালিত কোডগুলি এমন প্রয়োজনীয়তা থাকতে পারে যা এটি অ্যান্ড্রয়েড বিল্ড সিস্টেমের সাথে বেমানান করে তোলে যেমন একটি বিশেষায়িত সরঞ্জামচেইনের প্রয়োজনীয়তা। অতএব, এওএসপি -তে সিএইচআরই প্রকল্পটি জিএনইউ মেকের উপর ভিত্তি করে একটি সরলীকৃত বিল্ড সিস্টেম সরবরাহ করে যা ন্যানোএপিএস সংকলন করতে পারে এবং ally চ্ছিকভাবে, সিস্টেমের সাথে সংহত করা যায় এমন লাইব্রেরিতে সিএইচআরই কাঠামো সরবরাহ করে। সিএইচআরইর জন্য সমর্থন যুক্ত করা ডিভাইস নির্মাতারা এওএসপি -তে তাদের টার্গেট ডিভাইসের জন্য বিল্ড সিস্টেম সমর্থনকে সংহত করতে হবে।

সিএইচআরই এপিআই সি 99 ভাষা স্ট্যান্ডার্ডে লেখা হয় এবং রেফারেন্স বাস্তবায়নে সি ++ 11 এর একটি সীমাবদ্ধ উপসেট ব্যবহার করা হয় রিসোর্স-সীমাবদ্ধ অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত।

Chre api

সিএইচআরই এপিআই হ'ল সি শিরোনাম ফাইলগুলির একটি সংগ্রহ যা একটি ন্যানোএপ এবং সিস্টেমের মধ্যে সফ্টওয়্যার ইন্টারফেসকে সংজ্ঞায়িত করে। এটি CHRE সমর্থন করে এমন সমস্ত ডিভাইসগুলিতে ন্যানোএপস কোডকে সামঞ্জস্যপূর্ণ করার জন্য ডিজাইন করা হয়েছে, যার অর্থ একটি নতুন ডিভাইসের প্রকার সমর্থন করার জন্য একটি ন্যানোএপ্পের উত্স কোডটি সংশোধন করার দরকার নেই, যদিও এটি লক্ষ্য ডিভাইসের প্রসেসরের নির্দেশিকা সেট বা অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (এবিআই) এর জন্য বিশেষভাবে পুনরায় সংমিশ্রিত করার প্রয়োজন হতে পারে। সিআরআর আর্কিটেকচার এবং এপিআই ডিজাইনটিও নিশ্চিত করে যে ন্যানোএপসগুলি সিআরআর এপিআইয়ের বিভিন্ন সংস্করণ জুড়ে বাইনারি সামঞ্জস্যপূর্ণ, যার অর্থ ন্যানোএপ্পের বিপরীতে সংকলন করা হয়েছে এমন লক্ষ্য হিসাবে তুলনা করে এমন একটি সিস্টেমে চালানোর জন্য একটি ন্যানোএপপিকে পুনরায় সংযুক্ত করার দরকার নেই। অন্য কথায়, যদি কোনও ন্যানোএপ বাইনারি কোনও ডিভাইসে চালিত হয় যা CHRE API V1.3 সমর্থন করে এবং সেই ডিভাইসটি CHRE API V1.4 সমর্থন করার জন্য আপগ্রেড করা হয় তবে একই ন্যানোএপ বাইনারি কাজ চালিয়ে যাচ্ছে। একইভাবে, ন্যানোএপ পিএইচআর এপিআই ভি 1.2 এ চলতে পারে এবং রানটাইমে নির্ধারণ করতে পারে যে এটির ব্যবহার অর্জনের জন্য এটি এপিআই ভি 1.3 থেকে সক্ষমতা প্রয়োজন কিনা, বা এটি পরিচালনা করতে পারে কিনা, সম্ভাব্যভাবে করুণ বৈশিষ্ট্য অবক্ষয়ের সাথে।

সিএইচআরই এপিআইয়ের নতুন সংস্করণগুলি অ্যান্ড্রয়েডের পাশাপাশি প্রকাশিত হয়েছে, তবে সিএইচআরই বাস্তবায়ন বিক্রেতার বাস্তবায়নের অংশ হওয়ায়, কোনও ডিভাইসে সমর্থিত সিএইচআরই এপিআই সংস্করণটি অগত্যা একটি অ্যান্ড্রয়েড সংস্করণের সাথে যুক্ত নয়।

সংস্করণ সারাংশ

অ্যান্ড্রয়েড এইচআইডিএল সংস্করণ স্কিমের মতো, সিএইচআরই এপিআই শব্দার্থক সংস্করণ অনুসরণ করে। প্রধান সংস্করণটি বাইনারি সামঞ্জস্যতা নির্দেশ করে, যখন ব্যাকওয়ার্ড-সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি চালু করা হয় তখন ছোট্ট সংস্করণটি বর্ধিত হয়। কোন সংস্করণটি কোনও ফাংশন বা প্যারামিটার প্রবর্তন করেছে তা সনাক্ত করতে সিএইচআরই এপিআইতে উত্স কোড টীকাগুলি অন্তর্ভুক্ত রয়েছে, উদাহরণস্বরূপ @since v1.1

সিএইচআরই বাস্তবায়ন chreGetVersion() এর মাধ্যমে একটি প্ল্যাটফর্ম-নির্দিষ্ট প্যাচ সংস্করণও প্রকাশ করে, যা নির্দেশ করে যখন বাগ ফিক্সগুলি বা ছোটখাটো আপডেটগুলি বাস্তবায়নে করা হয়।

সংস্করণ 1.0 (অ্যান্ড্রয়েড 7)

সেন্সরগুলির জন্য সমর্থন, এবং কোর ন্যানোএপ ক্ষমতা যেমন ইভেন্ট এবং টাইমারগুলির অন্তর্ভুক্ত।

সংস্করণ 1.1 (অ্যান্ড্রয়েড 8)

জিএনএসএসের অবস্থান এবং কাঁচা পরিমাপ, ওয়াই-ফাই স্ক্যানিং এবং মোবাইল নেটওয়ার্কের তথ্যের মাধ্যমে ন্যানোএপ-টু-ন্যানোপ যোগাযোগ এবং অন্যান্য উন্নতিগুলি সক্ষম করার জন্য সাধারণ পরিমার্জনগুলির মাধ্যমে অবস্থানের সক্ষমতা প্রবর্তন করে।

সংস্করণ 1.2 (অ্যান্ড্রয়েড 9)

স্বল্প-শক্তি মাইক্রোফোন, ওয়াই-ফাই আরটিটি রেঞ্জিং, এপি ওয়েক এবং স্লিপ বিজ্ঞপ্তি এবং অন্যান্য উন্নতি থেকে ডেটাগুলির জন্য সমর্থন যুক্ত করে।

সংস্করণ 1.3 (অ্যান্ড্রয়েড 10)

সেন্সর ক্রমাঙ্কন ডেটা সম্পর্কিত ক্ষমতা বাড়ায়, চাহিদার উপর ফ্লাশিং ব্যাচড সেন্সর ডেটাগুলির জন্য সমর্থন যুক্ত করে, সেন্সর সনাক্তকারী ধাপটি সংজ্ঞায়িত করে এবং অতিরিক্ত নির্ভুলতার ক্ষেত্রগুলির সাথে জিএনএসএসের অবস্থান ইভেন্টগুলি প্রসারিত করে।

সংস্করণ 1.4 (অ্যান্ড্রয়েড 11)

5 জি সেল তথ্য, ন্যানোএপ ডিবাগ ডাম্প এবং অন্যান্য উন্নতির জন্য সমর্থন যুক্ত করে।

বাধ্যতামূলক সিস্টেম বৈশিষ্ট্য

যদিও সেন্সরগুলির মতো প্রাসঙ্গিক সংকেতের উত্সগুলি al চ্ছিক বৈশিষ্ট্য ক্ষেত্রগুলিতে শ্রেণিবদ্ধ করা হয়, সমস্ত সিএইচআরই বাস্তবায়নে কয়েকটি মূল ফাংশন প্রয়োজন। এর মধ্যে কোর সিস্টেম এপিআই অন্তর্ভুক্ত রয়েছে, যেমন টাইমার নির্ধারণের জন্য, অ্যাপ্লিকেশন প্রসেসর, লগিং এবং অন্যান্যতে ক্লায়েন্টদের কাছে বার্তা প্রেরণ এবং গ্রহণ করা। সম্পূর্ণ বিশদের জন্য, এপিআই শিরোনামগুলি দেখুন।

CHRE API এ কোড করা মূল সিস্টেম বৈশিষ্ট্যগুলি ছাড়াও, প্রসঙ্গ হাব হাল স্তরে নির্দিষ্ট করা বাধ্যতামূলক CHRE সিস্টেম-স্তরের বৈশিষ্ট্যগুলিও রয়েছে। এর মধ্যে সর্বাধিক তাৎপর্য হ'ল ন্যানোএপসকে গতিশীলভাবে লোড এবং আনলোড করার ক্ষমতা।

সি/সি ++ স্ট্যান্ডার্ড লাইব্রেরি

মেমরির ব্যবহার এবং সিস্টেমের জটিলতা হ্রাস করতে, স্ট্যান্ডার্ড সি এবং সি ++ লাইব্রেরি এবং রানটাইম সমর্থন প্রয়োজন এমন ভাষার বৈশিষ্ট্যগুলির কেবলমাত্র একটি উপসেটকে সমর্থন করার জন্য সিএইচআরই বাস্তবায়নগুলির প্রয়োজন। এই নীতিগুলি অনুসরণ করে, কিছু বৈশিষ্ট্যগুলি তাদের স্মৃতি এবং বিস্তৃত ওএস-স্তরের নির্ভরতার কারণে এবং অন্যদের কারণে স্পষ্টভাবে বাদ দেওয়া হয় কারণ তারা আরও উপযুক্ত chre-নির্দিষ্ট এপিআই দ্বারা সরবরাহিত। যদিও একটি সম্পূর্ণ তালিকা হিসাবে বোঝানো হয়নি, নিম্নলিখিত ক্ষমতাগুলি ন্যানোয়া অ্যাপসগুলিতে উপলব্ধ করার উদ্দেশ্যে নয়:

  • সি ++ ব্যতিক্রম এবং রানটাইম টাইপের তথ্য (আরটিটিআই)
  • স্ট্যান্ডার্ড লাইব্রেরি মাল্টিথ্রেডিং সমর্থন, সি ++ 11 শিরোনাম <thread> , <mutex> , <atomic> , <future> সহ
  • সি এবং সি ++ স্ট্যান্ডার্ড ইনপুট/আউটপুট লাইব্রেরি
  • C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL)
  • সি ++ স্ট্যান্ডার্ড নিয়মিত এক্সপ্রেশন লাইব্রেরি
  • স্ট্যান্ডার্ড ফাংশনগুলির মাধ্যমে ডায়নামিক মেমরি বরাদ্দ (উদাহরণস্বরূপ, malloc , calloc , realloc , free , operator new ) এবং অন্যান্য স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলি যা সহজাতভাবে গতিশীল বরাদ্দ ব্যবহার করে, যেমন std::unique_ptr
  • স্থানীয়করণ এবং ইউনিকোড চরিত্র সমর্থন
  • তারিখ এবং সময় গ্রন্থাগার
  • <setjmp.h> , <signal.h> , abort , std::terminate সহ সাধারণ প্রোগ্রাম প্রবাহকে সংশোধন করে এমন ফাংশনগুলি
  • system , getenv সহ হোস্ট পরিবেশে অ্যাক্সেস করা
  • Posix এবং অন্যান্য গ্রন্থাগারগুলি C99 বা C ++ 11 ভাষার মান অন্তর্ভুক্ত নয়

অনেক ক্ষেত্রে, CHRE API ফাংশন এবং ইউটিলিটি লাইব্রেরি থেকে সমতুল্য ক্ষমতা পাওয়া যায়। উদাহরণস্বরূপ, chreLog অ্যান্ড্রয়েড লগক্যাট সিস্টেমে লক্ষ্যযুক্ত ডিবাগ লগিংয়ের জন্য ব্যবহার করা যেতে পারে, যেখানে আরও একটি traditional তিহ্যবাহী প্রোগ্রাম printf বা std::cout ব্যবহার করতে পারে।

বিপরীতে, কিছু স্ট্যান্ডার্ড লাইব্রেরি ক্ষমতা প্রয়োজন। এটি ন্যানোএপ বাইনারি অন্তর্ভুক্ত করার জন্য বা ন্যানোএপ এবং সিস্টেমের মধ্যে গতিশীল সংযোগের মাধ্যমে স্ট্যাটিক লাইব্রেরির মাধ্যমে এগুলি প্রকাশ করার জন্য প্ল্যাটফর্ম বাস্তবায়নের উপর নির্ভর করে। এটি অন্তর্ভুক্ত, কিন্তু সীমাবদ্ধ নয়:

  • স্ট্রিং এবং অ্যারে ইউটিলিটিস: memcmp , memcpy , memmove , memset , strlen
  • গণিত গ্রন্থাগার: সাধারণত ব্যবহৃত একক-নির্ভুলতা ভাসমান-পয়েন্ট ফাংশন:

    • বেসিক অপারেশনস: ceilf , fabsf , floorf , fmaxf , fminf , fmodf , roundf , lroundf , remainderf
    • ক্ষতিকারক এবং পাওয়ার ফাংশন: expf , log2f , powf , sqrtf
    • ত্রিকোনোমেট্রিক এবং হাইপারবোলিক ফাংশন: sinf , cosf , tanf , asinf , acosf , atan2f , tanhf

কিছু অন্তর্নিহিত প্ল্যাটফর্মগুলি অতিরিক্ত সক্ষমতা সমর্থন করে, একটি ন্যানোএপকে সিএইচআরই বাস্তবায়নে পোর্টেবল হিসাবে বিবেচনা করা হয় না যদি না এটি তার বাহ্যিক নির্ভরতাগুলিকে সিআর এপিআই ফাংশনগুলিতে সীমাবদ্ধ না করে এবং স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলিকে অনুমোদিত করে।

ঐচ্ছিক বৈশিষ্ট্য

হার্ডওয়্যার এবং সফ্টওয়্যার প্রচার করতে, CHRE API বৈশিষ্ট্য ক্ষেত্রগুলিতে বিভক্ত, যা API দৃষ্টিকোণ থেকে al চ্ছিক হিসাবে বিবেচিত হয়। যদিও এই বৈশিষ্ট্যগুলি কোনও সামঞ্জস্যপূর্ণ সিএইচআরই বাস্তবায়নকে সমর্থন করার প্রয়োজন হতে পারে না, তবে তাদের একটি নির্দিষ্ট ন্যানোএপ সমর্থন করার প্রয়োজন হতে পারে। এমনকি যদি কোনও প্ল্যাটফর্ম একটি প্রদত্ত এপিআইগুলির সেটকে সমর্থন না করে তবে ন্যানোয়া অ্যাপস যা এই ফাংশনগুলি উল্লেখ করে অবশ্যই তৈরি এবং লোড করতে সক্ষম হতে হবে।

সেন্সর

সিএইচআরই এপিআই অ্যাকসিলোমিটার, জাইরোস্কোপ, চৌম্বকীয়, পরিবেষ্টিত হালকা সেন্সর এবং সান্নিধ্য সহ সেন্সরগুলির কাছ থেকে ডেটা অনুরোধ করার ক্ষমতা সরবরাহ করে। এই এপিআইগুলি হ'ল অ্যান্ড্রয়েড সেন্সর এপিআইগুলির অনুরূপ একটি বৈশিষ্ট্য সেট সরবরাহ করার জন্য, বিদ্যুতের খরচ হ্রাস করতে ব্যাচিং সেন্সর নমুনাগুলির সমর্থন সহ। সিএইচআরইর মধ্যে সেন্সর ডেটা প্রক্রিয়াকরণ এপি -তে চলার তুলনায় অনেক কম শক্তি এবং গতি সংকেতগুলির নিম্ন ল্যাটেন্সি প্রসেসিং সক্ষম করে।

জিএনএসএস

জিপিএস এবং অন্যান্য স্যাটেলাইট নক্ষত্রমণ্ডল সহ গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (জিএনএসএস) থেকে অবস্থানের ডেটা অনুরোধ করার জন্য সিএইচআরই এপিআই সরবরাহ করে। এর মধ্যে পর্যায়ক্রমিক অবস্থান নির্ধারণের জন্য অনুরোধগুলি, পাশাপাশি কাঁচা পরিমাপের ডেটা অন্তর্ভুক্ত রয়েছে, যদিও উভয়ই স্বতন্ত্র ক্ষমতা। যেহেতু সিএইচআরই জিএনএসএস সাবসিস্টেমের সরাসরি লিঙ্ক রয়েছে, এপি-ভিত্তিক জিএনএসএস অনুরোধগুলির তুলনায় শক্তি হ্রাস করা হয়, কারণ এপি কোনও অবস্থান সেশনের পুরো জীবনচক্রের সময় ঘুমিয়ে থাকতে পারে।

ওয়াই-ফাই

সিএইচআরই মূলত অবস্থানের উদ্দেশ্যে, ওয়াই-ফাই চিপের সাথে ইন্টারঅ্যাক্ট করার ক্ষমতা সরবরাহ করে। যদিও জিএনএসএস বহিরঙ্গন অবস্থানগুলির জন্য ভাল কাজ করে, ওয়াই-ফাই স্ক্যানগুলির ফলাফলগুলি বাড়ির অভ্যন্তরে এবং উন্নত অঞ্চলে সঠিক অবস্থানের তথ্য সরবরাহ করতে পারে। স্ক্যানের জন্য এপি জাগ্রত করার ব্যয় এড়ানোর পাশাপাশি, সিএইচআরই সংযোগের উদ্দেশ্যে ওয়াই-ফাই ফার্মওয়্যার দ্বারা সম্পাদিত ওয়াই-ফাই স্ক্যানগুলির ফলাফল শুনতে পারে, যা সাধারণত বিদ্যুতের কারণে এপি-তে সরবরাহ করা হয় না। প্রাসঙ্গিক উদ্দেশ্যে কানেক্টিভিটি স্ক্যানগুলি লাভ করা শক্তি সঞ্চয়, সঞ্চালিত Wi-Fi স্ক্যানগুলির মোট সংখ্যা হ্রাস করতে সহায়তা করে।

স্ক্যানের ফলাফলগুলি নিরীক্ষণ করার ক্ষমতা এবং চাহিদা অনুসারে স্ক্যানগুলি ট্রিগার করার ক্ষমতা সহ CHRE API V1.1 এ Wi-Fi এর সমর্থন যুক্ত করা হয়েছিল। এই ক্ষমতাগুলি V1.2 এ প্রসারিত হয়েছিল যে বৈশিষ্ট্যটি সমর্থন করে এমন অ্যাক্সেস পয়েন্টগুলির বিরুদ্ধে রাউন্ড-ট্রিপ সময় (আরটিটি) পরিমাপ সম্পাদন করার ক্ষমতা সহ, যা সঠিক আপেক্ষিক অবস্থান নির্ধারণকে সক্ষম করে।

WWAN

সিএইচআরই এপিআই পরিবেশন সেল এবং এর প্রতিবেশীদের জন্য সেল সনাক্তকরণ তথ্য পুনরুদ্ধার করার ক্ষমতা সরবরাহ করে, যা সাধারণত মোটা দানাযুক্ত অবস্থানের উদ্দেশ্যে ব্যবহৃত হয়।

অডিও

CHRE একটি স্বল্প-শক্তি মাইক্রোফোন থেকে অডিও ডেটার ব্যাচগুলি প্রক্রিয়া করতে পারে, যা সাধারণত সাউন্ডট্রিগার এইচএল প্রয়োগ করতে ব্যবহৃত হার্ডওয়্যারকে উপার্জন করে। সিএইচআরইতে অডিও ডেটা প্রক্রিয়াজাতকরণ এটিকে অন্যান্য ডেটা যেমন মোশন সেন্সরগুলির সাথে সংযুক্ত করতে সক্ষম করতে পারে।

রেফারেন্স বাস্তবায়ন

সিএইচআরই কাঠামোর জন্য রেফারেন্স কোডটি সি ++ 11 এ প্রয়োগ করা system/chre প্রকল্পে এওএসপি -তে অন্তর্ভুক্ত রয়েছে। কঠোরভাবে প্রয়োজন না হলেও, ধারাবাহিকতা নিশ্চিত করতে এবং নতুন সক্ষমতা গ্রহণকে ত্বরান্বিত করতে সহায়তা করার জন্য, এই কোডবেসের ভিত্তিতে সমস্ত সিআরআরই বাস্তবায়নগুলির জন্য এটি সুপারিশ করা হয়। এই কোডটি মূল অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অ্যানালগ হিসাবে দেখা যেতে পারে যে এটি এপিআইগুলির একটি ওপেন-সোর্স বাস্তবায়ন যা অ্যাপস ব্যবহার করে, সামঞ্জস্যতার জন্য বেসলাইন এবং স্ট্যান্ডার্ড হিসাবে পরিবেশন করে। যদিও এটি বিক্রেতার-নির্দিষ্ট ক্ষমতাগুলির সাথে কাস্টমাইজ করা এবং প্রসারিত করা যায়, তবে সুপারিশটি হ'ল সাধারণ কোডটি যতটা সম্ভব রেফারেন্সের কাছাকাছি বজায় রাখা। অ্যান্ড্রয়েডের হালালগুলির মতো, সিএইচআরই রেফারেন্স বাস্তবায়ন ন্যূনতম প্রয়োজনীয়তা পূরণ করে যে কোনও ডিভাইসের সাথে মানিয়ে নিতে সক্ষম করতে বিভিন্ন প্ল্যাটফর্ম অ্যাবস্ট্রাকশন ব্যবহার করে।

প্রযুক্তিগত বিশদ এবং একটি পোর্টিং গাইডের জন্য, system/chre প্রকল্পে অন্তর্ভুক্ত রিডমে দেখুন।

,

স্মার্টফোনগুলিতে বেশ কয়েকটি প্রসেসর থাকে, প্রতিটি বিভিন্ন কাজ সম্পাদনের জন্য অনুকূলিত হয়। তবে অ্যান্ড্রয়েড কেবল একটি প্রসেসরে চলে: অ্যাপ্লিকেশন প্রসেসর (এপি)। গেমিংয়ের মতো স্ক্রিন-অন ব্যবহারের ক্ষেত্রে দুর্দান্ত পারফরম্যান্স সরবরাহের জন্য এপিটি সুরযুক্ত, তবে স্ক্রিনটি বন্ধ থাকাকালীন এমনকি ঘন ঘন, সংক্ষিপ্ত বিস্ফোরণগুলির প্রয়োজন এমন বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য এটি খুব বেশি ক্ষুধার্ত। ছোট প্রসেসরগুলি এই কাজের চাপগুলি আরও দক্ষতার সাথে পরিচালনা করতে সক্ষম হয়, ব্যাটারির জীবনকে লক্ষণীয়ভাবে প্রভাবিত না করে তাদের কাজগুলি শেষ করে। যাইহোক, এই নিম্ন-শক্তি প্রসেসরগুলিতে সফ্টওয়্যার পরিবেশগুলি আরও সীমাবদ্ধ এবং ক্রস-প্ল্যাটফর্মের বিকাশকে কঠিন করে তুলতে পারে।

কনটেক্সট হাব রানটাইম এনভায়রনমেন্ট (সিএইচআরই) একটি সাধারণ, মানকযুক্ত, এম্বেডড-বান্ধব এপিআই সহ একটি স্বল্প-শক্তি প্রসেসরে অ্যাপ্লিকেশন চালানোর জন্য একটি সাধারণ প্ল্যাটফর্ম সরবরাহ করে। CHRE ডিভাইস ওএমএস এবং তাদের বিশ্বস্ত অংশীদারদের পক্ষে এপি থেকে প্রসেসিং অফলোড করা, ব্যাটারি সংরক্ষণ এবং ব্যবহারকারীর অভিজ্ঞতার বিভিন্ন ক্ষেত্রের উন্নতি করতে এবং সর্বদা অন, প্রাসঙ্গিকভাবে সচেতন বৈশিষ্ট্যগুলির একটি শ্রেণি সক্ষম করে, বিশেষত যারা পরিবেশন সংবেদনশীলতায় মেশিন লার্নিংয়ের প্রয়োগের সাথে জড়িত তাদেরকে সক্ষম করে তোলে।

মূল ধারণা

CHRE হ'ল সফ্টওয়্যার পরিবেশ যেখানে ন্যানোএপস নামে পরিচিত ছোট নেটিভ অ্যাপ্লিকেশনগুলি একটি নিম্ন-শক্তি প্রসেসরের উপর কার্যকর করে এবং সাধারণ CHRE API এর মাধ্যমে অন্তর্নিহিত সিস্টেমের সাথে যোগাযোগ করে। সিএইচআরই এপিআইগুলির যথাযথ প্রয়োগকে ত্বরান্বিত করতে, সিএইচআরইর একটি ক্রস-প্ল্যাটফর্ম রেফারেন্স বাস্তবায়ন এওএসপি-তে অন্তর্ভুক্ত করা হয়েছে। রেফারেন্স বাস্তবায়নে প্ল্যাটফর্ম বিমূর্ততা স্তরগুলির (পিএলএস) সিরিজের মাধ্যমে অন্তর্নিহিত হার্ডওয়্যার এবং সফ্টওয়্যারগুলিতে সাধারণ কোড এবং বিমূর্ততা অন্তর্ভুক্ত রয়েছে। ন্যানোয়া অ্যাপস প্রায় সর্বদা অ্যান্ড্রয়েডে চলমান এক বা একাধিক ক্লায়েন্ট অ্যাপ্লিকেশনগুলির সাথে আবদ্ধ থাকে, যা সীমাবদ্ধ-অ্যাক্সেস ContextHubManager সিস্টেম এপিআইগুলির মাধ্যমে সিএইচআরই এবং ন্যানোয়া অ্যাপসের সাথে যোগাযোগ করে।

একটি উচ্চ স্তরে, সামগ্রিকভাবে সিএইচআরই এবং অ্যান্ড্রয়েডের আর্কিটেকচারের মধ্যে সমান্তরালগুলি আঁকতে পারে। তবে কয়েকটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:

  • CHRE কেবল নেটিভ কোড (সি বা সি ++) এ বিকাশিত কেবল ন্যানোএপসকে সমর্থন করে; জাভা সমর্থিত নয়।
  • রিসোর্সের সীমাবদ্ধতা এবং সুরক্ষা সীমাবদ্ধতার কারণে, CHRE স্বেচ্ছাসেবী তৃতীয় পক্ষের অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহারের জন্য উন্মুক্ত নয়। কেবল সিস্টেম-বিশ্বাসযুক্ত অ্যাপ্লিকেশনগুলি এটি অ্যাক্সেস করতে পারে।

সিএইচআরই এবং একটি সেন্সর হাবের ধারণাগুলির মধ্যে একটি গুরুত্বপূর্ণ পার্থক্যও রয়েছে। সেন্সর হাব এবং সিআরআর প্রয়োগ করতে একই হার্ডওয়্যারটি ব্যবহার করা সাধারণ হলেও, সিআরই নিজেই অ্যান্ড্রয়েড সেন্সর এইচএল দ্বারা প্রয়োজনীয় সেন্সর ক্ষমতা সরবরাহ করে না। সিএইচআরই প্রসঙ্গ হাব হালের সাথে আবদ্ধ, এবং এটি এপি জড়িত না করে সেন্সর ডেটা পাওয়ার জন্য একটি ডিভাইস-নির্দিষ্ট সেন্সর ফ্রেমওয়ার্কের ক্লায়েন্ট হিসাবে কাজ করে।

Chre ফ্রেমওয়ার্ক আর্কিটেকচার

চিত্র 1। সিএইচআরই ফ্রেমওয়ার্ক আর্কিটেকচার

প্রসঙ্গ হাব হাল

প্রসঙ্গ হাব হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (এইচএল) হ'ল অ্যান্ড্রয়েড ফ্রেমওয়ার্ক এবং ডিভাইসের সিএইচআরই বাস্তবায়নের মধ্যে ইন্টারফেস, hardware/interfaces/contexthub এ সংজ্ঞায়িত। প্রসঙ্গ হাব এইচএল এপিআইগুলিকে সংজ্ঞায়িত করে যার মাধ্যমে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক উপলভ্য প্রসঙ্গ হাবগুলি এবং তাদের ন্যানোএপগুলি আবিষ্কার করে, বার্তা পাসের মাধ্যমে সেই ন্যানোএপিএসের সাথে যোগাযোগ করে এবং ন্যানোপগুলি লোড এবং আনলোড করার অনুমতি দেয়। CHRE এর রেফারেন্স বাস্তবায়নের সাথে কাজ করে এমন প্রসঙ্গ হাব হালের একটি রেফারেন্স বাস্তবায়ন system/chre/host উপলব্ধ।

এই ডকুমেন্টেশন এবং এইচএল সংজ্ঞার মধ্যে দ্বন্দ্বের ক্ষেত্রে, এইচএল সংজ্ঞা প্রাধান্য পায়।

সূচনা

অ্যান্ড্রয়েড বুট আপ করার সময়, কনটেক্সথুবসার্ভিস ডিভাইসে কোনও প্রসঙ্গ হাবগুলি উপলব্ধ কিনা তা নির্ধারণ করার জন্য getHubs() এইচএল ফাংশনটি অনুরোধ করে। এটি একটি ব্লকিং, এককালীন কল, সুতরাং বুট বিলম্ব এড়াতে এটি অবশ্যই দ্রুত সম্পূর্ণ করতে হবে এবং এটি অবশ্যই একটি সঠিক ফলাফল ফিরিয়ে দিতে হবে, কারণ নতুন প্রসঙ্গের কেন্দ্রগুলি পরে চালু করা যায় না।

লোড এবং আনলোড ন্যানোএপস

একটি প্রসঙ্গ হাবের মধ্যে ন্যানোএএপিএসের একটি সেট অন্তর্ভুক্ত থাকতে পারে যা ডিভাইস চিত্রের অন্তর্ভুক্ত থাকে এবং সিআরআর শুরু হওয়ার পরে লোড হয়। এগুলি প্রিলোডেড ন্যানোএপস হিসাবে পরিচিত এবং queryApps() এর প্রথম সম্ভাব্য প্রতিক্রিয়াতে অন্তর্ভুক্ত করা উচিত।

প্রসঙ্গ হাব এইচএএল loadNanoApp() এবং unloadNanoApp() ফাংশনগুলির মাধ্যমে রানটাইমে গতিশীলভাবে ন্যানোএপসগুলি লোডিং এবং আনলোডকে সমর্থন করে। ডিভাইসটির সিএইচআরই হার্ডওয়্যার এবং সফ্টওয়্যার বাস্তবায়নের জন্য নির্দিষ্ট বাইনারি ফর্ম্যাটে এইচএএলকে ন্যানোএপিএস সরবরাহ করা হয়।

যদি কোনও ন্যানোএপ লোড করার বাস্তবায়নে এটি ননভোলেটাইল মেমোরিতে লেখা জড়িত থাকে যেমন প্রসেসরের সাথে সংযুক্ত ফ্ল্যাশ স্টোরেজ যা সিএইচআরই চালায়, তবে সিএইচআরই বাস্তবায়নটি সর্বদা প্রতিবন্ধী অবস্থায় এই গতিশীল ন্যানোইপগুলির সাথে বুট আপ করতে হবে। এর অর্থ হ'ল এইচএএল -এর মাধ্যমে কোনও enableNanoapp() অনুরোধ না পাওয়া পর্যন্ত ন্যানোএপ্পের কোডের কোনওটিই কার্যকর করা হয় না। প্রিলোডেড ন্যানোএপস সক্ষম অবস্থায় আরম্ভ করতে পারে।

প্রসঙ্গ হাব পুনঃসূচনা

যদিও সাধারণ অপারেশন চলাকালীন CHRE পুনরায় চালু হওয়ার আশা করা যায় না, তবে অপ্রত্যাশিত পরিস্থিতি থেকে পুনরুদ্ধার করা প্রয়োজন যেমন একটি আনম্যাপেড মেমরির ঠিকানা অ্যাক্সেস করার চেষ্টা। এই পরিস্থিতিতে, সিএইচআরই অ্যান্ড্রয়েড থেকে স্বাধীনভাবে পুনরায় আরম্ভ করে। এইচএএলটি RESTARTED ইভেন্টের মাধ্যমে এর অ্যান্ড্রয়েডকে অবহিত করে, যা এটি কেবল পাঠানোর পরেই এটি পাঠাতে হবে যে এটি এমন বিন্দুতে পুনরায় সংযুক্ত করার পরে এটি নতুন অনুরোধগুলি যেমন queryApps() গ্রহণ করতে পারে।

Chre সিস্টেম ওভারভিউ

CHRE একটি ইভেন্ট-চালিত আর্কিটেকচারের আশেপাশে ডিজাইন করা হয়েছে, যেখানে গণনার প্রাথমিক ইউনিটটি একটি ইভেন্ট ন্যানোএপ্পের ইভেন্ট হ্যান্ডলিং এন্ট্রি পয়েন্টে পাস করা একটি ইভেন্ট। সিএইচআরই কাঠামোটি মাল্টিথ্রেডেড করা যেতে পারে, তবে একটি প্রদত্ত ন্যানোএপ সমান্তরালে একাধিক থ্রেড থেকে কখনই কার্যকর করা হয় না। সিএইচআরই ফ্রেমওয়ার্কটি তিনটি ন্যানোএপ এন্ট্রি পয়েন্টগুলির মধ্যে একটির মাধ্যমে প্রদত্ত ন্যানোএপের সাথে যোগাযোগ করে ( nanoappStart() , nanoappHandleEvent() , এবং nanoappEnd() ) বা পূর্বের সিআরই এপিআই কলটিতে প্রদত্ত একটি কলব্যাকের মাধ্যমে, এবং ন্যানোএপস সিআরআরইআই এর মাধ্যমে যোগাযোগের মাধ্যমে যোগাযোগ করে। সিএইচআরই এপিআই সেন্সর, জিএনএসএস, ওয়াই-ফাই, ডাব্লুডাব্লুএএন, এবং অডিও সহ প্রাসঙ্গিক সংকেতগুলি অ্যাক্সেসের জন্য বেসিক সক্ষমতার একটি সেট সরবরাহ করে এবং এটি বিক্রেতার নির্দিষ্ট ন্যানোএএপিএস দ্বারা ব্যবহারের জন্য অতিরিক্ত বিক্রেতা-নির্দিষ্ট ক্ষমতা সহ বাড়ানো যেতে পারে।

সিস্টেম তৈরি করুন

প্রসঙ্গ হাব হাল এবং অন্যান্য প্রয়োজনীয় এপি-সাইড উপাদানগুলি অ্যান্ড্রয়েডের পাশাপাশি নির্মিত হলেও, সিএইচআরইর মধ্যে চালিত কোডগুলি এমন প্রয়োজনীয়তা থাকতে পারে যা এটি অ্যান্ড্রয়েড বিল্ড সিস্টেমের সাথে বেমানান করে তোলে যেমন একটি বিশেষায়িত সরঞ্জামচেইনের প্রয়োজনীয়তা। অতএব, এওএসপি -তে সিএইচআরই প্রকল্পটি জিএনইউ মেকের উপর ভিত্তি করে একটি সরলীকৃত বিল্ড সিস্টেম সরবরাহ করে যা ন্যানোএপিএস সংকলন করতে পারে এবং ally চ্ছিকভাবে, সিস্টেমের সাথে সংহত করা যায় এমন লাইব্রেরিতে সিএইচআরই কাঠামো সরবরাহ করে। সিএইচআরইর জন্য সমর্থন যুক্ত করা ডিভাইস নির্মাতারা এওএসপি -তে তাদের টার্গেট ডিভাইসের জন্য বিল্ড সিস্টেম সমর্থনকে সংহত করতে হবে।

সিএইচআরই এপিআই সি 99 ভাষা স্ট্যান্ডার্ডে লেখা হয় এবং রেফারেন্স বাস্তবায়নে সি ++ 11 এর একটি সীমাবদ্ধ উপসেট ব্যবহার করা হয় রিসোর্স-সীমাবদ্ধ অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত।

Chre api

সিএইচআরই এপিআই হ'ল সি শিরোনাম ফাইলগুলির একটি সংগ্রহ যা একটি ন্যানোএপ এবং সিস্টেমের মধ্যে সফ্টওয়্যার ইন্টারফেসকে সংজ্ঞায়িত করে। এটি CHRE সমর্থন করে এমন সমস্ত ডিভাইসগুলিতে ন্যানোএপস কোডকে সামঞ্জস্যপূর্ণ করার জন্য ডিজাইন করা হয়েছে, যার অর্থ একটি নতুন ডিভাইসের প্রকার সমর্থন করার জন্য একটি ন্যানোএপ্পের উত্স কোডটি সংশোধন করার দরকার নেই, যদিও এটি লক্ষ্য ডিভাইসের প্রসেসরের নির্দেশিকা সেট বা অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (এবিআই) এর জন্য বিশেষভাবে পুনরায় সংমিশ্রিত করার প্রয়োজন হতে পারে। সিআরআর আর্কিটেকচার এবং এপিআই ডিজাইনটিও নিশ্চিত করে যে ন্যানোএপসগুলি সিআরআর এপিআইয়ের বিভিন্ন সংস্করণ জুড়ে বাইনারি সামঞ্জস্যপূর্ণ, যার অর্থ ন্যানোএপ্পের বিপরীতে সংকলন করা হয়েছে এমন লক্ষ্য হিসাবে তুলনা করে এমন একটি সিস্টেমে চালানোর জন্য একটি ন্যানোএপপিকে পুনরায় সংযুক্ত করার দরকার নেই। অন্য কথায়, যদি কোনও ন্যানোএপ বাইনারি কোনও ডিভাইসে চালিত হয় যা CHRE API V1.3 সমর্থন করে এবং সেই ডিভাইসটি CHRE API V1.4 সমর্থন করার জন্য আপগ্রেড করা হয় তবে একই ন্যানোএপ বাইনারি কাজ চালিয়ে যাচ্ছে। একইভাবে, ন্যানোএপ পিএইচআর এপিআই ভি 1.2 এ চলতে পারে এবং রানটাইমে নির্ধারণ করতে পারে যে এটির ব্যবহার অর্জনের জন্য এটি এপিআই ভি 1.3 থেকে সক্ষমতা প্রয়োজন কিনা, বা এটি পরিচালনা করতে পারে কিনা, সম্ভাব্যভাবে করুণ বৈশিষ্ট্য অবক্ষয়ের সাথে।

সিএইচআরই এপিআইয়ের নতুন সংস্করণগুলি অ্যান্ড্রয়েডের পাশাপাশি প্রকাশিত হয়েছে, তবে সিএইচআরই বাস্তবায়ন বিক্রেতার বাস্তবায়নের অংশ হওয়ায়, কোনও ডিভাইসে সমর্থিত সিএইচআরই এপিআই সংস্করণটি অগত্যা একটি অ্যান্ড্রয়েড সংস্করণের সাথে যুক্ত নয়।

সংস্করণ সারাংশ

অ্যান্ড্রয়েড এইচআইডিএল সংস্করণ স্কিমের মতো, সিএইচআরই এপিআই শব্দার্থক সংস্করণ অনুসরণ করে। প্রধান সংস্করণটি বাইনারি সামঞ্জস্যতা নির্দেশ করে, যখন ব্যাকওয়ার্ড-সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি চালু করা হয় তখন ছোট্ট সংস্করণটি বর্ধিত হয়। কোন সংস্করণটি কোনও ফাংশন বা প্যারামিটার প্রবর্তন করেছে তা সনাক্ত করতে সিএইচআরই এপিআইতে উত্স কোড টীকাগুলি অন্তর্ভুক্ত রয়েছে, উদাহরণস্বরূপ @since v1.1

সিএইচআরই বাস্তবায়ন chreGetVersion() এর মাধ্যমে একটি প্ল্যাটফর্ম-নির্দিষ্ট প্যাচ সংস্করণও প্রকাশ করে, যা নির্দেশ করে যখন বাগ ফিক্সগুলি বা ছোটখাটো আপডেটগুলি বাস্তবায়নে করা হয়।

সংস্করণ 1.0 (অ্যান্ড্রয়েড 7)

সেন্সরগুলির জন্য সমর্থন, এবং কোর ন্যানোএপ ক্ষমতা যেমন ইভেন্ট এবং টাইমারগুলির অন্তর্ভুক্ত।

সংস্করণ 1.1 (অ্যান্ড্রয়েড 8)

জিএনএসএসের অবস্থান এবং কাঁচা পরিমাপ, ওয়াই-ফাই স্ক্যানিং এবং মোবাইল নেটওয়ার্কের তথ্যের মাধ্যমে ন্যানোএপ-টু-ন্যানোপ যোগাযোগ এবং অন্যান্য উন্নতিগুলি সক্ষম করার জন্য সাধারণ পরিমার্জনগুলির মাধ্যমে অবস্থানের সক্ষমতা প্রবর্তন করে।

সংস্করণ 1.2 (অ্যান্ড্রয়েড 9)

স্বল্প-শক্তি মাইক্রোফোন, ওয়াই-ফাই আরটিটি রেঞ্জিং, এপি ওয়েক এবং স্লিপ বিজ্ঞপ্তি এবং অন্যান্য উন্নতি থেকে ডেটাগুলির জন্য সমর্থন যুক্ত করে।

সংস্করণ 1.3 (অ্যান্ড্রয়েড 10)

সেন্সর ক্রমাঙ্কন ডেটা সম্পর্কিত ক্ষমতা বাড়ায়, চাহিদার উপর ফ্লাশিং ব্যাচড সেন্সর ডেটাগুলির জন্য সমর্থন যুক্ত করে, সেন্সর সনাক্তকারী ধাপটি সংজ্ঞায়িত করে এবং অতিরিক্ত নির্ভুলতার ক্ষেত্রগুলির সাথে জিএনএসএসের অবস্থান ইভেন্টগুলি প্রসারিত করে।

সংস্করণ 1.4 (অ্যান্ড্রয়েড 11)

5 জি সেল তথ্য, ন্যানোএপ ডিবাগ ডাম্প এবং অন্যান্য উন্নতির জন্য সমর্থন যুক্ত করে।

বাধ্যতামূলক সিস্টেম বৈশিষ্ট্য

যদিও সেন্সরগুলির মতো প্রাসঙ্গিক সংকেতের উত্সগুলি al চ্ছিক বৈশিষ্ট্য ক্ষেত্রগুলিতে শ্রেণিবদ্ধ করা হয়, সমস্ত সিএইচআরই বাস্তবায়নে কয়েকটি মূল ফাংশন প্রয়োজন। এর মধ্যে কোর সিস্টেম এপিআই অন্তর্ভুক্ত রয়েছে, যেমন টাইমার নির্ধারণের জন্য, অ্যাপ্লিকেশন প্রসেসর, লগিং এবং অন্যান্যতে ক্লায়েন্টদের কাছে বার্তা প্রেরণ এবং গ্রহণ করা। সম্পূর্ণ বিশদের জন্য, এপিআই শিরোনামগুলি দেখুন।

CHRE API এ কোড করা মূল সিস্টেম বৈশিষ্ট্যগুলি ছাড়াও, প্রসঙ্গ হাব হাল স্তরে নির্দিষ্ট করা বাধ্যতামূলক CHRE সিস্টেম-স্তরের বৈশিষ্ট্যগুলিও রয়েছে। এর মধ্যে সর্বাধিক তাৎপর্য হ'ল ন্যানোএপসকে গতিশীলভাবে লোড এবং আনলোড করার ক্ষমতা।

সি/সি ++ স্ট্যান্ডার্ড লাইব্রেরি

মেমরির ব্যবহার এবং সিস্টেমের জটিলতা হ্রাস করতে, স্ট্যান্ডার্ড সি এবং সি ++ লাইব্রেরি এবং রানটাইম সমর্থন প্রয়োজন এমন ভাষার বৈশিষ্ট্যগুলির কেবলমাত্র একটি উপসেটকে সমর্থন করার জন্য সিএইচআরই বাস্তবায়নগুলির প্রয়োজন। এই নীতিগুলি অনুসরণ করে, কিছু বৈশিষ্ট্যগুলি তাদের স্মৃতি এবং বিস্তৃত ওএস-স্তরের নির্ভরতার কারণে এবং অন্যদের কারণে স্পষ্টভাবে বাদ দেওয়া হয় কারণ তারা আরও উপযুক্ত chre-নির্দিষ্ট এপিআই দ্বারা সরবরাহিত। যদিও একটি সম্পূর্ণ তালিকা হিসাবে বোঝানো হয়নি, নিম্নলিখিত ক্ষমতাগুলি ন্যানোয়া অ্যাপসগুলিতে উপলব্ধ করার উদ্দেশ্যে নয়:

  • সি ++ ব্যতিক্রম এবং রানটাইম টাইপের তথ্য (আরটিটিআই)
  • স্ট্যান্ডার্ড লাইব্রেরি মাল্টিথ্রেডিং সমর্থন, সি ++ 11 শিরোনাম <thread> , <mutex> , <atomic> , <future> সহ
  • সি এবং সি ++ স্ট্যান্ডার্ড ইনপুট/আউটপুট লাইব্রেরি
  • C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL)
  • সি ++ স্ট্যান্ডার্ড নিয়মিত এক্সপ্রেশন লাইব্রেরি
  • স্ট্যান্ডার্ড ফাংশনগুলির মাধ্যমে ডায়নামিক মেমরি বরাদ্দ (উদাহরণস্বরূপ, malloc , calloc , realloc , free , operator new ) এবং অন্যান্য স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলি যা সহজাতভাবে গতিশীল বরাদ্দ ব্যবহার করে, যেমন std::unique_ptr
  • স্থানীয়করণ এবং ইউনিকোড চরিত্র সমর্থন
  • তারিখ এবং সময় গ্রন্থাগার
  • <setjmp.h> , <signal.h> , abort , std::terminate সহ সাধারণ প্রোগ্রাম প্রবাহকে সংশোধন করে এমন ফাংশনগুলি
  • system , getenv সহ হোস্ট পরিবেশে অ্যাক্সেস করা
  • Posix এবং অন্যান্য গ্রন্থাগারগুলি C99 বা C ++ 11 ভাষার মান অন্তর্ভুক্ত নয়

অনেক ক্ষেত্রে, CHRE API ফাংশন এবং ইউটিলিটি লাইব্রেরি থেকে সমতুল্য ক্ষমতা পাওয়া যায়। উদাহরণস্বরূপ, chreLog অ্যান্ড্রয়েড লগক্যাট সিস্টেমে লক্ষ্যযুক্ত ডিবাগ লগিংয়ের জন্য ব্যবহার করা যেতে পারে, যেখানে আরও একটি traditional তিহ্যবাহী প্রোগ্রাম printf বা std::cout ব্যবহার করতে পারে।

বিপরীতে, কিছু স্ট্যান্ডার্ড লাইব্রেরি ক্ষমতা প্রয়োজন। এটি ন্যানোএপ বাইনারি অন্তর্ভুক্ত করার জন্য বা ন্যানোএপ এবং সিস্টেমের মধ্যে গতিশীল সংযোগের মাধ্যমে স্ট্যাটিক লাইব্রেরির মাধ্যমে এগুলি প্রকাশ করার জন্য প্ল্যাটফর্ম বাস্তবায়নের উপর নির্ভর করে। এটি অন্তর্ভুক্ত, কিন্তু সীমাবদ্ধ নয়:

  • স্ট্রিং এবং অ্যারে ইউটিলিটিস: memcmp , memcpy , memmove , memset , strlen
  • গণিত গ্রন্থাগার: সাধারণত ব্যবহৃত একক-নির্ভুলতা ভাসমান-পয়েন্ট ফাংশন:

    • বেসিক অপারেশনস: ceilf , fabsf , floorf , fmaxf , fminf , fmodf , roundf , lroundf , remainderf
    • ক্ষতিকারক এবং পাওয়ার ফাংশন: expf , log2f , powf , sqrtf
    • ত্রিকোনোমেট্রিক এবং হাইপারবোলিক ফাংশন: sinf , cosf , tanf , asinf , acosf , atan2f , tanhf

কিছু অন্তর্নিহিত প্ল্যাটফর্মগুলি অতিরিক্ত সক্ষমতা সমর্থন করে, একটি ন্যানোএপকে সিএইচআরই বাস্তবায়নে পোর্টেবল হিসাবে বিবেচনা করা হয় না যদি না এটি তার বাহ্যিক নির্ভরতাগুলিকে সিআর এপিআই ফাংশনগুলিতে সীমাবদ্ধ না করে এবং স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলিকে অনুমোদিত করে।

ঐচ্ছিক বৈশিষ্ট্য

হার্ডওয়্যার এবং সফ্টওয়্যার প্রচার করতে, CHRE API বৈশিষ্ট্য ক্ষেত্রগুলিতে বিভক্ত, যা API দৃষ্টিকোণ থেকে al চ্ছিক হিসাবে বিবেচিত হয়। যদিও এই বৈশিষ্ট্যগুলি কোনও সামঞ্জস্যপূর্ণ সিএইচআরই বাস্তবায়নকে সমর্থন করার প্রয়োজন হতে পারে না, তবে তাদের একটি নির্দিষ্ট ন্যানোএপ সমর্থন করার প্রয়োজন হতে পারে। এমনকি যদি কোনও প্ল্যাটফর্ম একটি প্রদত্ত এপিআইগুলির সেটকে সমর্থন না করে তবে ন্যানোএপস যা এই ফাংশনগুলি উল্লেখ করে অবশ্যই তৈরি এবং লোড করতে সক্ষম হতে হবে।

সেন্সর

সিএইচআরই এপিআই অ্যাকসিলোমিটার, জাইরোস্কোপ, চৌম্বকীয়, পরিবেষ্টিত হালকা সেন্সর এবং সান্নিধ্য সহ সেন্সরগুলির কাছ থেকে ডেটা অনুরোধ করার ক্ষমতা সরবরাহ করে। এই এপিআইগুলি হ'ল অ্যান্ড্রয়েড সেন্সর এপিআইগুলির অনুরূপ একটি বৈশিষ্ট্য সেট সরবরাহ করার জন্য, বিদ্যুতের খরচ হ্রাস করতে ব্যাচিং সেন্সর নমুনাগুলির সমর্থন সহ। সিএইচআরইর মধ্যে সেন্সর ডেটা প্রক্রিয়াকরণ এপি -তে চলার তুলনায় অনেক কম শক্তি এবং গতি সংকেতগুলির নিম্ন ল্যাটেন্সি প্রসেসিং সক্ষম করে।

জিএনএসএস

জিপিএস এবং অন্যান্য স্যাটেলাইট নক্ষত্রমণ্ডল সহ গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (জিএনএসএস) থেকে অবস্থানের ডেটা অনুরোধ করার জন্য সিএইচআরই এপিআই সরবরাহ করে। This includes requests for periodic position fixes, as well as raw measurement data, though both are independent capabilities. As CHRE has a direct link to the GNSS subsystem, power is reduced compared to AP-based GNSS requests, because the AP can stay asleep during the entire lifecycle of a location session.

ওয়াই-ফাই

CHRE provides the ability to interact with the Wi-Fi chip, primarily for location purposes. While GNSS works well for outdoor locations, the results of Wi-Fi scans can provide accurate location information indoors and in developed areas. In addition to avoiding the cost of waking the AP for a scan, CHRE can listen to the results of Wi-Fi scans performed by the Wi-Fi firmware for connectivity purposes, which typically aren't delivered to the AP for power reasons. Leveraging connectivity scans for contextual purposes helps to reduce the total number of Wi-Fi scans performed, saving power.

Support for Wi-Fi was added in CHRE API v1.1, including the ability to monitor scan results and trigger scans on demand. These capabilities were extended in v1.2 with the ability to perform Round-Trip Time (RTT) measurements against access points that support the feature, which enables accurate relative position determination.

WWAN

The CHRE API provides the ability to retrieve cell identification information for the serving cell and its neighbors, which is typically used for coarse-grained location purposes.

অডিও

CHRE can process batches of audio data from a low-power microphone, which typically leverages hardware used to implement the SoundTrigger HAL. Processing audio data in CHRE can enable it to be fused with other data, such as motion sensors.

রেফারেন্স বাস্তবায়ন

Reference code for the CHRE framework is included in AOSP in the system/chre project, implemented in C++11. While not strictly required, it's recommended for all CHRE implementations to be based off of this codebase, to help ensure consistency and accelerate adoption of new capabilities. This code can be seen as an analogue to the core Android framework in that it's an open-source implementation of APIs that apps use, serving as a baseline and standard for compatibility. While it can be customized and extended with vendor-specific capabilities, the recommendation is to maintain the common code as close to the reference as possible. Similar to the HALs of Android, the CHRE reference implementation uses various platform abstractions to enable it to be adapted to any device meeting the minimum requirements.

For technical details and a porting guide, see the README included in the system/chre project.