สภาพแวดล้อมรันไทม์ของฮับบริบท (CHRE)

สมาร์ทโฟนประกอบด้วยโปรเซสเซอร์จำนวนหนึ่ง แต่ละตัวมีประสิทธิภาพการทำงานดีที่สุด งานต่างๆ ได้ อย่างไรก็ตาม Android จะทำงานบนโปรเซสเซอร์เดียวเท่านั้น ซึ่งก็คือแอปพลิเคชันต่างๆ โปรเซสเซอร์ (AP) AP ได้รับการปรับแต่งมาเพื่อมอบประสิทธิภาพที่ยอดเยี่ยมเมื่อฉายบนหน้าจอ เช่น การเล่นเกม แต่กำลังหิวโหยที่จะสนับสนุนคุณลักษณะที่ ต้องประมวลผลภาพสั้นๆ บ่อยๆ ตลอดเวลา แม้ว่าหน้าจอ ปิดอยู่ หน่วยประมวลผลขนาดเล็ก สามารถจัดการภาระงานเหล่านี้ได้อย่างมีประสิทธิภาพมากขึ้น ทำงานให้เสร็จสิ้นได้โดยไม่ส่งผลกระทบต่ออายุการใช้งานแบตเตอรี่อย่างเห็นได้ชัด อย่างไรก็ตาม สภาพแวดล้อมของซอฟต์แวร์ในโปรเซสเซอร์ที่ใช้พลังงานต่ำเหล่านี้มีข้อจำกัดมากกว่าและ แตกต่างกันมาก ทำให้การพัฒนาข้ามแพลตฟอร์มเป็นเรื่องยาก

Context Hub Runtime Environment (CHRE) เป็นแพลตฟอร์มทั่วไปสำหรับการเรียกใช้ ในโปรเซสเซอร์แบบใช้พลังงานต่ำ พร้อมทั้งที่เรียบง่ายและเป็นมาตรฐาน API ที่ฝังได้ง่าย CHRE ทำให้ OEM ของอุปกรณ์และ ลดภาระการประมวลผลจาก AP เพื่อประหยัดแบตเตอรี่และปรับปรุงด้านต่างๆ ในด้านประสบการณ์ของผู้ใช้ และช่วยให้มีการเปิดอยู่เสมอ ฟีเจอร์ที่ต้องคำนึงถึงบริบท โดยเฉพาะอย่างยิ่งฟีเจอร์ที่เกี่ยวข้องกับการใช้ ผ่านแมชชีนเลิร์นนิง เพื่อตรวจจับสภาพแวดล้อม

หัวข้อสำคัญ

CHRE คือสภาพแวดล้อมของซอฟต์แวร์ที่แอปที่มาพร้อมเครื่องขนาดเล็กเรียกว่า nanoapps จะทำงานบนตัวประมวลผลที่ใช้พลังงานต่ำและโต้ตอบกับ ผ่าน CHRE API ทั่วไป การเร่งกระบวนการติดตั้งใช้งาน CHRE API ซึ่งเป็นการใช้งานการอ้างอิงข้ามแพลตฟอร์มของ CHRE จะรวมอยู่ใน AOSP การใช้ข้อมูลอ้างอิงประกอบด้วยโค้ดทั่วไปและแอบสแตรกต์ใน ฮาร์ดแวร์และซอฟต์แวร์เบื้องหลังผ่านชุดของเลเยอร์แบบแอบสแตรกชันของแพลตฟอร์ม (PAL) Nanoapps มักจะเชื่อมโยงกับแอปไคลเอ็นต์อย่างน้อย 1 แอปที่ทำงานอยู่ใน Android ซึ่งโต้ตอบกับ CHRE และ Nanoapps ผ่านการเข้าถึงแบบจำกัด ContextHubManager API ของระบบ

ที่ระดับสูง สามารถแสดงคู่ขนานระหว่างสถาปัตยกรรมของ CHRE กับ Android โดยรวม อย่างไรก็ตาม มีความแตกต่างที่สำคัญบางประการ:

  • CHRE สนับสนุนการเรียกใช้เฉพาะ nanoapps ที่พัฒนาขึ้นในโค้ดแบบเนทีฟ (C หรือ C++); ระบบไม่รองรับ Java
  • เนื่องจากข้อจำกัดด้านทรัพยากรและข้อจำกัดด้านความปลอดภัย CHRE จึงไม่เปิด สำหรับใช้งานโดยแอป Android ของบุคคลที่สาม เฉพาะแอปที่ระบบเชื่อถือเท่านั้นที่ทำได้ เข้าถึงได้

นอกจากนี้ยังมีความแตกต่างที่สำคัญระหว่างแนวคิด CHRE และฮับเซ็นเซอร์ แม้ว่ามักจะใช้ฮาร์ดแวร์เดียวกันในการดำเนินการ ฮับเซ็นเซอร์และ CHRE, CHRE เองไม่มีความสามารถของเซ็นเซอร์ ที่เซ็นเซอร์ Android กำหนดไว้ HAL CHRE เชื่อมโยงกับ HAL ของ Context Hub และจะทำหน้าที่เป็นไคลเอ็นต์ของเซ็นเซอร์เฉพาะอุปกรณ์ ในการรับข้อมูลเซ็นเซอร์โดยไม่เกี่ยวข้องกับ AP

สถาปัตยกรรมเฟรมเวิร์ก CHRE

รูปที่ 1 สถาปัตยกรรมเฟรมเวิร์ก CHRE

HAL ของฮับบริบท

เลเยอร์แอบสแตรกของฮาร์ดแวร์ฮับบริบท (HAL) คืออินเทอร์เฟซระหว่างแท็ก เฟรมเวิร์ก Android และการใช้งาน CHRE ของอุปกรณ์ กำหนดไว้ที่ hardware/interfaces/contexthub HAL ของ Context Hub จะกำหนด API ที่เฟรมเวิร์ก Android ใช้ ค้นพบฮับบริบทที่มีอยู่และนาโนแอป และโต้ตอบกับฮับดังกล่าว nanoapps ผ่านการส่งผ่านข้อความและช่วยให้สามารถโหลด Nanoapps และ ยกเลิกการโหลดแล้ว การใช้ข้อมูลอ้างอิงของ HAL ของฮับบริบทที่ทำงานร่วมกับ การใช้งานข้อมูลอ้างอิงของ CHRE มีอยู่ที่ system/chre/host

ในกรณีที่มีความขัดแย้งระหว่างเอกสารประกอบนี้กับคำจำกัดความ HAL และ HAL จะมีความสำคัญเหนือกว่า

การเริ่มต้น

เมื่อ Android เปิดเครื่อง ContextHubService เรียกใช้ฟังก์ชัน HAL ของ getHubs() เพื่อดูว่ามีฮับบริบทหรือไม่ ที่มีอยู่ในอุปกรณ์ เนื่องจากเป็นการบล็อกและการโทรครั้งเดียว จึงต้องดำเนินการให้เสร็จสมบูรณ์ อย่างรวดเร็วเพื่อหลีกเลี่ยงการหน่วงเวลาการเปิดเครื่อง และต้องส่งคืนผลลัพธ์ที่ถูกต้องเหมือนใหม่ ไม่สามารถใช้ฮับบริบทในภายหลัง

โหลดและยกเลิกการโหลด Nanoapps

ฮับบริบทอาจมีชุดแอปนาโนที่รวมอยู่ในอุปกรณ์ และจะโหลดเมื่อ CHRE เริ่มทำงาน ซึ่งเรียกกันว่า NanoApp ที่โหลดล่วงหน้า และควรรวมอยู่ในคำตอบแรกที่เป็นไปได้ของ queryApps()

HAL ของ Context Hub ยังรองรับการโหลดและยกเลิกการโหลด Nanoapps แบบไดนามิกที่ ผ่านฟังก์ชัน loadNanoApp() และ unloadNanoApp() นาโนแอป ให้กับ HAL ในรูปแบบไบนารีเฉพาะสำหรับฮาร์ดแวร์ CHRE และ การใช้ซอฟต์แวร์ของอุปกรณ์

หากการใช้งานสำหรับการโหลด nanoapp ต้องมีการเขียนแอปเป็นแบบไม่ลบเลือน อย่างเช่น พื้นที่เก็บข้อมูลแฟลช ซึ่งเชื่อมต่อกับโปรเซสเซอร์ที่เรียกใช้ CHRE จากนั้น การใช้งาน CHRE ต้องเริ่มต้นระบบด้วยนาโนแอปแบบไดนามิกเหล่านี้ใน สถานะปิดใช้ ซึ่งหมายความว่าจะไม่มีการเรียกใช้โค้ดของ Nanoapp จนกว่าจะมีการเรียกใช้ ได้รับคำขอ enableNanoapp() รายการผ่าน HAL Nanoapps ที่โหลดไว้ล่วงหน้า เริ่มต้นในสถานะเปิดใช้

ฮับบริบทรีสตาร์ท

แม้ว่า CHRE จะไม่รีสตาร์ทในระหว่างการทำงานตามปกติ แต่ อาจจำเป็นต้องฟื้นตัวจากสภาวะที่ไม่คาดคิด เช่น เข้าถึงที่อยู่หน่วยความจำที่ไม่ได้จับคู่ ในสถานการณ์เหล่านี้ CHRE จะรีสตาร์ท แยกจาก Android HAL แจ้งเตือน Android เกี่ยวกับเรื่องนี้ผ่าน RESTARTED ซึ่งต้องส่งหลังจากเริ่มต้น CHRE อีกครั้งแล้วเท่านั้น จุดที่สามารถยอมรับคำขอใหม่ เช่น queryApps()

ภาพรวมของระบบ CHRE

CHRE ได้รับการออกแบบตามสถาปัตยกรรมที่ขับเคลื่อนด้วยกิจกรรม โดยที่หน่วยหลักของ การคํานวณคือเหตุการณ์ที่ส่งไปยังจุดแรกเข้าของการจัดการเหตุการณ์ของ nanoapp ขณะที่ เฟรมเวิร์ก CHRE สามารถเป็นแบบมัลติเทรดได้ nanoapp ที่ระบุจะไม่ถูกดำเนินการ หลายเทรดพร้อมกัน เฟรมเวิร์ก CHRE โต้ตอบกับ nanoapp ที่ระบุ ผ่าน 1 ใน 3 จุดแรกเข้า Nanoapp (nanoappStart(), nanoappHandleEvent() และnanoappEnd()) หรือผ่าน Callback ที่ให้ไว้ใน ที่มีการเรียก CHRE API ก่อนหน้านี้ และ Nanoapps โต้ตอบกับเฟรมเวิร์ก CHRE และ ผ่าน CHRE API CHRE API มีชุดฟังก์ชันพื้นฐาน ความสามารถ รวมทั้งสิ่งอำนวยความสะดวกในการเข้าถึงสัญญาณบริบท เช่น เซ็นเซอร์, GNSS, Wi-Fi, WWAN และเสียง และขยายสัญญาณได้ด้วยอุปกรณ์เพิ่มเติม ความสามารถเฉพาะผู้ให้บริการสำหรับการใช้งานโดย NanoApp เฉพาะผู้ให้บริการ

ระบบบิลด์

ขณะที่สร้าง HAL ของ Context Hub และคอมโพเนนต์ฝั่ง AP อื่นๆ ที่จำเป็น ควบคู่กับ Android โค้ดที่ทำงานภายใน CHRE อาจมีข้อกำหนดที่ทำให้ ไม่สามารถใช้ร่วมกับระบบบิลด์ของ Android เช่น ความต้องการผลิตภัณฑ์ Toolchain ดังนั้นโปรเจ็กต์ CHRE ใน AOSP จึงมีบิลด์ที่เรียบง่าย ระบบที่ใช้ GNU Make เพื่อคอมไพล์ Nanoapps และ CHRE ให้เป็นไลบรารีที่สามารถผสานรวมกับระบบได้ อุปกรณ์ ผู้ผลิตที่เพิ่มการสนับสนุนสำหรับ CHRE ควรรวมการสนับสนุนระบบบิลด์สำหรับ อุปกรณ์เป้าหมายของลูกค้าใน AOSP

CHRE API เขียนขึ้นตามมาตรฐานภาษา C99 และการอ้างอิง จะใช้ชุดย่อยที่ถูกจำกัดของ C++11 ซึ่งเหมาะสำหรับทรัพยากรที่จำกัด แอป

API CHRE

CHRE API คือคอลเล็กชันของไฟล์ส่วนหัว C ซึ่งเป็นตัวกำหนดซอฟต์แวร์ อินเทอร์เฟซระหว่าง Nanoapp และระบบ ออกแบบมาเพื่อทำให้นาโนแอป บนทุกอุปกรณ์ที่สนับสนุน CHRE ซึ่งหมายความว่า ไม่จำเป็นต้องแก้ไขซอร์สโค้ดสำหรับ Nanoapp เพื่อรองรับอุปกรณ์ใหม่ แต่อาจต้องคอมไพล์ใหม่โดยเฉพาะสำหรับอุปกรณ์เป้าหมาย ชุดคำสั่งของโปรเซสเซอร์หรืออินเทอร์เฟซแบบไบนารีของแอปพลิเคชัน (ABI) CHRE สถาปัตยกรรมและการออกแบบ API ยังทำให้ nanoapps สามารถทำงานร่วมกับไบนารีได้ ใน CHRE API เวอร์ชันต่างๆ ซึ่งหมายความว่า NanoApp ไม่มี จะต้องได้รับการคอมไพล์ซ้ำเพื่อให้ทำงานบนระบบที่ใช้ CHRE API เมื่อเทียบกับ API เป้าหมายที่มีการรวบรวม nanoapp เข้าด้วยกัน กล่าวคือ หากไบนารี nanoapp ทำงานในอุปกรณ์ที่รองรับ CHRE API v1.3 และอุปกรณ์เครื่องนั้นได้รับการอัปเกรดให้รองรับ CHRE API v1.4 ซึ่งเป็น nanoapp เดียวกัน เลขฐาน 2 จะยังทำงานต่อไป ในทำนองเดียวกัน nanoapp สามารถทำงานบน CHRE API v1.2 ได้ และสามารถระบุขณะรันไทม์ว่าต้องใช้ความสามารถจาก API v1.3 ไปจนถึง ใช้งานได้จริง หรือทำงานได้หรือไม่ อาจเป็นไปได้ ฟีเจอร์ที่ลดลง

CHRE API เวอร์ชันใหม่เปิดตัวพร้อมกับ Android แต่ในฐานะที่เป็น CHRE เป็นส่วนหนึ่งของ การใช้งานของผู้ให้บริการ เวอร์ชัน CHRE API ที่รองรับในอุปกรณ์ไม่จำเป็นต้องลิงก์กับ เวอร์ชันของ Android

ข้อมูลสรุปของเวอร์ชัน

ชอบ แผนการกำหนดเวอร์ชัน Android HIDL CHRE API จะเป็นไปตามการกำหนดเวอร์ชันทางความหมาย เวอร์ชันหลักแสดงถึงความเข้ากันได้แบบไบนารี ส่วนเวอร์ชันย่อยคือ จะเพิ่มขึ้นเมื่อมีการนำฟีเจอร์ที่เข้ากันได้แบบย้อนหลังมาใช้ CHRE API มีคำอธิบายประกอบซอร์สโค้ดเพื่อระบุว่าเวอร์ชันใดที่มีฟังก์ชัน หรือพารามิเตอร์ เช่น @since v1.1

การติดตั้งใช้งาน CHRE ยังแสดงเวอร์ชันแพตช์เฉพาะแพลตฟอร์มผ่าน chreGetVersion() ซึ่งระบุเมื่อมีการแก้ไขข้อบกพร่องหรืออัปเดตเล็กน้อยใน การติดตั้งใช้งาน

เวอร์ชัน 1.0 (Android 7)

รวมการสนับสนุนสำหรับเซ็นเซอร์ และความสามารถหลักของ Nanoapp เช่น เหตุการณ์และ ตัวจับเวลา

เวอร์ชัน 1.1 (Android 8)

นำความสามารถด้านตำแหน่งมาใช้ผ่านตำแหน่ง GNSS และการวัดดิบ การสแกนหา Wi-Fi และข้อมูลเครือข่ายมือถือ รวมถึงการปรับแต่งทั่วไป เพื่อเปิดใช้การสื่อสารระหว่าง nanoapp-to-nanoapp และการปรับปรุงอื่นๆ

เวอร์ชัน 1.2 (Android 9)

เพิ่มการรองรับข้อมูลจากไมโครโฟนพลังงานต่ำ, ระยะ RTT ของ Wi-Fi, AP การแจ้งเตือนการปลุกและการนอนหลับ รวมถึงการปรับปรุงอื่นๆ

เวอร์ชัน 1.3 (Android 10)

ปรับปรุงความสามารถที่เกี่ยวข้องกับข้อมูลการปรับเทียบเซ็นเซอร์ และเพิ่มการสนับสนุนสำหรับ ล้างข้อมูลเซ็นเซอร์แบบกลุ่มตามคำขอ กำหนดประเภทเซ็นเซอร์สำหรับตรวจจับขั้นตอน และ ขยายเหตุการณ์เกี่ยวกับตำแหน่งของ GNSS ด้วยฟิลด์ความแม่นยำเพิ่มเติม

เวอร์ชัน 1.4 (Android 11)

เพิ่มการรองรับข้อมูลเครือข่ายมือถือ 5G, ดัมพ์การแก้ไขข้อบกพร่องของ Nanoapp และอื่นๆ เพิ่มขึ้น

ฟีเจอร์ของระบบที่จำเป็น

แม้ว่าแหล่งที่มาของสัญญาณบริบท เช่น เซ็นเซอร์ จะถูกจัดอยู่ในหมวดหมู่ที่ไม่บังคับ ต้องมีฟังก์ชันหลัก 2-3 อย่างใน CHRE ทั้งหมด การนำไปใช้งานจริง ซึ่งรวมถึง API ระบบหลัก เช่น API สำหรับการตั้งค่า การจับเวลา การส่งและรับข้อความถึงไคลเอ็นต์บนตัวประมวลผลแอปพลิเคชัน การบันทึก และอื่นๆ ดูรายละเอียดทั้งหมดได้ที่ ส่วนหัว API

นอกจากคุณลักษณะหลักของระบบที่ประมวลผลใน CHRE API แล้ว ยังมี ฟีเจอร์ที่จำเป็นระดับระบบ CHRE ซึ่งระบุที่ระดับ HAL ของฮับบริบท ที่สำคัญที่สุดคือความสามารถในการโหลดและยกเลิกการโหลดแบบไดนามิก nanoapps

ไลบรารีมาตรฐาน C/C++

เพื่อลดการใช้หน่วยความจำและความซับซ้อนของระบบ การติดตั้ง CHRE จำเป็นต่อการสนับสนุนส่วนย่อยของไลบรารี C และ C++ มาตรฐานเท่านั้น และ ฟีเจอร์ภาษาที่ต้องใช้การสนับสนุนรันไทม์ โดยทำตามหลักการเหล่านี้ จะยกเว้นฟีเจอร์อย่างเด่นชัดเนื่องจากหน่วยความจำและระดับระบบปฏิบัติการที่ครอบคลุม ทรัพยากร Dependency และอื่นๆ เนื่องจากระบบได้แทนที่ด้วยทรัพยากร Dependency ที่เหมาะสมมากกว่า API สำหรับ CHRE โดยเฉพาะ โดยไม่ได้ต้องการเป็นรายการโดยสมบูรณ์ แต่รายการต่อไปนี้ ไม่ได้มีจุดประสงค์เพื่อให้นาโนแอปใช้งานได้

  • ข้อยกเว้นของ C++ และข้อมูลประเภทรันไทม์ (RTTI)
  • การสนับสนุนชุดข้อความหลายรายการของไลบรารีแบบมาตรฐาน รวมถึงส่วนหัว C++11 <thread> <mutex> <atomic> <future>
  • ไลบรารีอินพุต/เอาต์พุตมาตรฐาน C และ C++
  • ไลบรารีเทมเพลตมาตรฐาน (STL) ของ C++
  • ไลบรารีนิพจน์ทั่วไปมาตรฐาน C++
  • การจัดสรรหน่วยความจำแบบไดนามิกผ่านฟังก์ชันมาตรฐาน (เช่น malloc, calloc, realloc, free, operator new) และมาตรฐานอื่นๆ ฟังก์ชันไลบรารีที่ใช้การจัดสรรแบบไดนามิกโดยพื้นฐาน เช่น std::unique_ptr
  • การรองรับอักขระ Unicode และการแปล
  • ไลบรารีวันที่และเวลา
  • ฟังก์ชันที่แก้ไขโฟลว์ปกติของโปรแกรม รวมถึง <setjmp.h> <signal.h> abort std::terminate
  • กำลังเข้าถึงสภาพแวดล้อมของโฮสต์ รวมถึง system, getenv
  • POSIX และไลบรารีอื่นๆ ที่ไม่รวมอยู่ในภาษา C99 หรือ C++11 มาตรฐาน

ในหลายกรณี ฟังก์ชันต่างๆ ของ CHRE API มีความสามารถที่เทียบเท่ากัน และไลบรารียูทิลิตี ตัวอย่างเช่น chreLog จะใช้สำหรับการบันทึกการแก้ไขข้อบกพร่องได้ เป้าหมายไปยังระบบ Logcat ของ Android โดยที่โปรแกรมแบบดั้งเดิมอาจ ใช้ printf หรือ std::cout

ในทางตรงกันข้าม อาจจำเป็นต้องใช้ความสามารถบางอย่างเกี่ยวกับไลบรารีมาตรฐาน ขึ้นอยู่กับ การใช้แพลตฟอร์มเพื่อแสดงข้อมูลเหล่านี้ผ่านไลบรารีแบบคงที่สำหรับการรวม ในไบนารี nanoapp หรือโดยการเชื่อมโยงแบบไดนามิกระหว่าง nanoapp และระบบ ช่วงเวลานี้ ซึ่งรวมถึงแต่ไม่จำกัดเพียง

  • ยูทิลิตีสตริงและอาร์เรย์: 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

แม้ว่าแพลตฟอร์มพื้นฐานบางแพลตฟอร์มจะรองรับความสามารถเพิ่มเติม แต่ nanoapp จะไม่ถือว่าถ่ายโอนได้ในการติดตั้งใช้งาน CHRE เว้นแต่จะเป็นข้อจำกัด ทรัพยากร Dependency ภายนอกไปยังฟังก์ชัน CHRE API และไลบรารีมาตรฐานที่อนุมัติ

ฟีเจอร์เสริม

การโปรโมตฮาร์ดแวร์และซอฟต์แวร์ CHRE API แบ่งออกเป็น 2 ส่วน ซึ่งถือว่าเป็นตัวเลือกที่ไม่บังคับในมุมมอง API แม้ว่าฟีเจอร์เหล่านี้ อาจไม่จำเป็นต้องสนับสนุนการใช้งาน CHRE ที่ใช้งานร่วมกันได้ ที่จำเป็นต่อการรองรับ nanoapp บางอย่าง แม้ว่าแพลตฟอร์มจะไม่รองรับ ชุด API ที่กำหนด นาโนแอปที่อ้างอิงฟังก์ชันเหล่านั้นจะต้องสามารถสร้าง แล้วโหลด

เซ็นเซอร์

CHRE API ให้ความสามารถในการขอข้อมูลจากเซ็นเซอร์ ซึ่งรวมถึง ตัวตรวจวัดความเร่ง เครื่องวัดการหมุน เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก เซ็นเซอร์แสงแวดล้อม และพร็อกซิมิตี API เหล่านี้มีไว้เพื่อให้บริการชุดฟีเจอร์ที่คล้ายกับเซ็นเซอร์ Android API รวมถึงการรองรับตัวอย่างเซ็นเซอร์แบบกลุ่มเพื่อลดการใช้พลังงาน การประมวลผลข้อมูลเซ็นเซอร์ภายใน CHRE จะลดพลังงานและเวลาในการตอบสนองที่ลดลงมาก การประมวลผลสัญญาณการเคลื่อนไหวเมื่อเทียบกับการทำงานบน AP

GNSS

CHRE จัดเตรียม API สำหรับขอข้อมูลตำแหน่งจากการนำทางทั่วโลก ระบบดาวเทียม (GNSS) รวมถึง GPS และกลุ่มดาวดาวเทียมอื่นๆ ช่วงเวลานี้ มีทั้งคำขอแก้ไขตำแหน่งตามระยะเวลา ตลอดจนข้อมูลดิบของการวัดผล แม้ว่าทั้งคู่จะเป็นความสามารถที่เป็นอิสระ เนื่องจาก CHRE มีลิงก์ไปยัง GNSS โดยตรง ระบบย่อย พลังงานจะลดลงเมื่อเทียบกับคำขอ GNSS ที่ใช้ AP เนื่องจาก AP สามารถนอนหลับได้ตลอดวงจรของเซสชันตำแหน่ง

Wi-Fi

CHRE ให้ความสามารถในการโต้ตอบกับชิป Wi-Fi สำหรับ วัตถุประสงค์ด้านตำแหน่ง แม้ว่า GNSS จะทำงานได้ดีในสถานที่กลางแจ้ง แต่ผลลัพธ์ของ การสแกนหา Wi-Fi สามารถให้ข้อมูลตำแหน่งที่แม่นยำภายในอาคารและ เหล่านี้ นอกจากเพื่อหลีกเลี่ยงค่าใช้จ่ายในการปลุก AP เพื่อสแกนแล้ว CHRE ยัง ฟังผลการสแกน Wi-Fi ที่ดำเนินการโดย Wi-Fi เฟิร์มแวร์เพื่อการเชื่อมต่อ ซึ่งปกติแล้วจะไม่ส่งไปยัง AP ด้วยเหตุผลด้านพลังงาน การใช้ประโยชน์จากการสแกนการเชื่อมต่อเพื่อวัตถุประสงค์ตามบริบทจะช่วย เพื่อลดจำนวนการสแกน Wi-Fi ทั้งหมด ซึ่งช่วยประหยัดพลังงาน

เพิ่มการสนับสนุน Wi-Fi ใน CHRE API v1.1 แล้ว ซึ่งรวมถึงความสามารถในการตรวจสอบ ผลการสแกนและเรียกใช้การสแกนตามคำขอ เราเพิ่มความสามารถเหล่านี้ v1.2 พร้อมความสามารถในการดำเนินการ ระยะเวลารับส่งข้อมูล (RTT) เทียบกับจุดเข้าใช้งานที่รองรับฟีเจอร์นี้ ซึ่งช่วยให้ การกำหนดตำแหน่งสัมพัทธ์ที่ถูกต้องได้

สงครามโลกครั้งที่ 1

CHRE API มีความสามารถในการเรียกข้อมูลการระบุเซลล์ สำหรับเซลล์ที่ให้บริการและบริเวณใกล้เคียง ซึ่งมักใช้สำหรับ วัตถุประสงค์ตำแหน่งแบบละเอียด

เสียง

CHRE สามารถประมวลผลกลุ่มข้อมูลเสียงจากไมโครโฟนพลังงานต่ำ มักจะใช้ประโยชน์จากฮาร์ดแวร์ที่ใช้ในการติดตั้ง SoundTrigger HAL การประมวลผล ข้อมูลเสียงใน CHRE สามารถเชื่อมโยงกับข้อมูลอื่นๆ ได้ เช่น การเคลื่อนไหว เซ็นเซอร์

การใช้งานข้อมูลอ้างอิง

รหัสอ้างอิงสำหรับเฟรมเวิร์ก CHRE จะรวมอยู่ใน AOSP ในsystem/chre ที่นำไปใช้ใน C++11 แม้จะไม่ใช่ข้อกำหนดที่เคร่งครัด แต่เราขอแนะนำให้ใช้ การติดตั้งใช้งาน CHRE ทั้งหมดให้อิงกับฐานของโค้ดนี้ เพื่อช่วยให้มั่นใจว่า ความสอดคล้องและเร่งการยอมรับความสามารถใหม่ๆ สามารถดูรหัสนี้ เป็นเฟรมเวิร์กของ Android หลักเนื่องจากเป็นโอเพนซอร์ส การนำ API ที่แอปใช้มาใช้ โดยทำหน้าที่เป็นเกณฑ์พื้นฐานและมาตรฐาน สำหรับความเข้ากันได้ ในขณะที่สามารถปรับแต่งและขยายเวลาด้วยผู้ให้บริการเฉพาะ เราแนะนำให้รักษาโค้ดทั่วไปให้ใกล้เคียงกับ อ้างอิงเท่าที่เป็นไปได้ เช่นเดียวกับ HAL ของ Android การอ้างอิง CHRE จะใช้กระบวนการ Abstraction ต่างๆ ของแพลตฟอร์มเพื่อให้นำไปปรับให้เข้ากับ อุปกรณ์ใดก็ได้ที่เป็นไปตามข้อกำหนดขั้นต่ำ

สำหรับรายละเอียดทางเทคนิคและคู่มือการย้าย โปรดดูที่ README ที่รวมอยู่ในโปรเจ็กต์ system/chre