בלוטות

סמל HAL של Android Bluetooth

אנדרואיד מספקת מחסנית Bluetooth המוגדרת כברירת מחדל התומכת הן ב- Bluetooth קלאסי והן ב- Bluetooth Low Energy. באמצעות Bluetooth, מכשירי אנדרואיד יכולים ליצור רשתות אזוריות אישיות כדי לשלוח ולקבל נתונים עם התקני Bluetooth סמוכים.

ב- Android 4.3 ואילך, מחסנית ה- Bluetooth של Android מספקת את היכולת ליישם Bluetooth Low Energy (BLE). למינוף מלא של ממשקי ה- API של BLE, עקוב אחר דרישות ה- HCI של Android . מכשירי אנדרואיד עם ערכת שבבים מוסמכת יכולים ליישם Bluetooth או קלאסי או גם Bluetooth קלאסי וגם BLE. BLE אינו תואם לאחור עם ערכות שבבי Bluetooth ישנות יותר.

ב- Android 8.0, מחסנית ה- Bluetooth המקורית כשירה לחלוטין ל- Bluetooth 5. כדי להשתמש בתכונות Bluetooth 5 זמינות, המכשיר צריך לכלול ערכת שבבים מוסמכת ל- Bluetooth 5.

ארכיטקטורת אנדרואיד

יישום Bluetooth מתקשר עם תהליך ה- Bluetooth דרך Binder. תהליך ה- Bluetooth משתמש ב- JNI כדי לתקשר עם מחסנית ה- Bluetooth ומספק למפתחים גישה לפרופילי Bluetooth שונים. תרשים זה מראה את המבנה הכללי של מחסנית ה- Bluetooth:

ארכיטקטורת Bluetooth עם Android
איור 1. ארכיטקטורת Bluetooth אנדרואיד
מסגרת יישומים
ברמת מסגרת היישום נמצא קוד יישום שמשתמש בממשקי ה- API של Android.bluetooth כדי לקיים אינטראקציה עם חומרת ה- Bluetooth. באופן פנימי קוד זה מכנה את תהליך ה- Bluetooth באמצעות מנגנון ה- Binder IPC.
שירות מערכת Bluetooth
שירות מערכת הבלוטות ', הנמצא packages/apps/Bluetooth , נארז כאפליקציית אנדרואיד ומיישם את שירותי הבלוטות 'והפרופילים בשכבת המסגרת של אנדרואיד. יישום זה מתקשר אל מחסנית ה- Bluetooth המקורית באמצעות JNI.
ג'ני
קוד JNI המשויך ל- android.bluetooth נמצא packages/apps/Bluetooth/jni . קוד JNI מתקשר למחסנית ה- Bluetooth כאשר מתרחשות פעולות Bluetooth מסוימות, כמו למשל כאשר מכשירים מתגלים.
מחסנית Bluetooth
מחסנית ה- Bluetooth המוגדרת כברירת מחדל מסופקת ב- AOSP וממוקמת system/bt . הערימה מיישמת את ה- HAL הכללי של Bluetooth ומתאימה אותו באמצעות הרחבות ושינויי תצורה.
יישום ספק
מכשירי ספק מתקשרים עם ערימת ה- Bluetooth באמצעות שפת העיצוב של ממשק החומרה (HIDL).

HIDL

HIDL מגדיר את הממשק בין מחסנית ה- Bluetooth ליישום הספק. כדי ליצור את קבצי ה- Bluetooth HIDL, העבירו את קבצי ממשק ה- Bluetooth לכלי ייצור ה- HIDL. קבצי הממשק ממוקמים hardware/interfaces/bluetooth .

פיתוח מחסניות Bluetooth

מחסנית ה- Bluetooth של Android היא מחסנית Bluetooth מוסמכת לחלוטין. רישום ההסמכה מופיע באתר Bluetooth SIG תחת QDID 169365 .

מחסנית ה- Bluetooth המרכזית שוכנת system/bt . התפתחות מתרחשת ב- AOSP, והתרומות יתקבלו בברכה.

אנדרואיד 7.x ואדריכלות קודמת

שירות מערכת Bluetooth מתקשר עם מחסנית ה- Bluetooth דרך JNI ועם יישומים דרך Binder IPC. שירות המערכת מספק למפתחים גישה לפרופילי Bluetooth שונים. תרשים זה מראה את המבנה הכללי של מחסנית ה- Bluetooth:

ארכיטקטורת Bluetooth עם Android
איור 2. ארכיטקטורת Bluetooth של Android 7.x ומעלה
מסגרת יישומים
ברמת מסגרת היישום נמצא קוד יישום, המשתמש בממשקי ה- API של אנדרואיד.בלוטוש כדי לקיים אינטראקציה עם חומרת ה- Bluetooth. באופן פנימי קוד זה מכנה את תהליך ה- Bluetooth באמצעות מנגנון ה- Binder IPC.
שירות מערכת Bluetooth
שירות מערכת הבלוטות ', הנמצא packages/apps/Bluetooth , ארוז כאפליקציית אנדרואיד ומיישם את שירות הבלוטות 'והפרופילים בשכבת המסגרת של אנדרואיד. יישום זה מתקשר לשכבת HAL באמצעות JNI.
ג'ני
קוד JNI המשויך ל- android.bluetooth נמצא packages/apps/Bluetooth/jni . קוד JNI מתקשר לשכבת HAL ומקבל שיחות חוזרות מה- HAL כאשר מתרחשות פעולות Bluetooth מסוימות, כמו למשל בהתגלות מכשירים.
HAL
שכבת ההפשטה של ​​החומרה מגדירה את הממשק הסטנדרטי שאליו קוראים ממשקי ה- API שלAndroid.bluetooth ותהליך ה- Bluetooth ושאתה חייב ליישם כדי שתפקוד החומרה של Bluetooth יתפקד כראוי. קובץ הכותרת עבור ה- Bluetooth HAL הוא hardware/libhardware/include/hardware/bluetooth.h . בנוסף, עיין בכל hardware/libhardware/include/hardware/bt_*.h
מחסנית Bluetooth
מחסנית ה- Bluetooth המוגדרת כברירת מחדל מסופקת עבורך וממוקמת system/bt . הערימה מיישמת את ה- HAL הכללי של Bluetooth ומתאימה אותו באמצעות הרחבות ושינויי תצורה.
הרחבות ספק
כדי להוסיף סיומות מותאמות אישית ושכבת HCI למעקב, באפשרותך ליצור מודול ספק libbt ולציין רכיבים אלה.

יישום ה- HAL

ה- Bluetooth HAL נמצא ב /hardware/libhardware/include/hardware/bluetooth.h . הקובץ bluetooth.h מכיל את הממשק הבסיסי עבור מחסנית ה- Bluetooth, ועליך ליישם את הפונקציות שלו.

קבצים ספציפיים לפרופיל ממוקמים באותה ספריה. לפרטים, עיין בהתייחסות לקובץ HAL .