يستخدم حِزمة النطاق الفائق العرض (UWB) في AOSP
واجهة UCI التي تحدّدها FiRa
كسطح HAL. تستخدم واجهة HAL مسارًا مسدودًا
(IUwbChip::sendUciMessage()
وIUwbClientCallback::onUciMessage()
) لإرسال
وتلقّي أوامر واجهة الأوامر في النطاق الفائق العرض (UCI) وردود الإشعارات.
على جميع مورّدي تقنية النطاق الفائق العرض (UWB) لأجهزة Android إتاحة جميع الرسائل المحدّدة في مواصفات FiRa. يتوافق إطار عمل النطاق الفائق العرض مع الإصدارات القديمة ويعمل مع أي إصدار UCI
نفَّذه مزوّد النطاق الفائق العرض على الجهاز. بما أنّ إطار عمل UWB في AOSP هو وحدة، فإنه يمكنه أيضًا إضافة ميزات بشكل انتقائي لطلبات التغيير الموافَق عليها (طلبات التعديل) من مسودة مواصفات UCI المخصّصة لإصدارات معايير FiRa الرئيسية. إنّ أي طلبات إعادة نظر تم تنفيذها من هذا النوع
هي عرضة للتغيير.
تعريف الواجهة
يتم تحديد واجهة UWB HAL باستخدام
AIDL الثابت.
تستخدم الواجهة الرئيسية حزمة android.hardware.uwb
.
في ما يلي الواجهات الرئيسية في حزمة android.hardware.uwb
.
IUwbChip.aidl
package android.hardware.uwb;
interface IUwbChip {
String getName();
void open(in android.hardware.uwb.IUwbClientCallback clientCallback);
void close();
void coreInit();
void sessionInit(int sessionId);
int getSupportedAndroidUciVersion();
int sendUciMessage(in byte[] data);
}
IUwbClientCallback.aidl
package android.hardware.uwb;
interface IUwbClientCallback {
oneway void onUciMessage(in byte[] data);
oneway void onHalEvent(in android.hardware.uwb.UwbEvent event, in android.hardware.uwb.UwbStatus status);
}
مسار مكالمة HAL من إطار عمل UWB
توضّح الصور التالية تسلسل المكالمات من إطار عمل النطاق الفائق العرض (UWB) لعمليات إعداد حِزمة UWB وإلغاء إعدادها وبدء جلسة UWB وإيقافها.
الشكل 1: مسار استدعاء إعداد حزمة النطاق الفائق العرض (UWB) (تفعيل خيار UWB)
الشكل 2: تسلسل المكالمات لإزالة إعدادات حزمة النطاق الفائق العرض (UWB) (إيقاف التبديل في النطاق الفائق العرض)
الشكل 3: عملية بدء/إيقاف جلسة النطاق الفائق العرض (UWB)
ضبط رمز بلد النطاق الفائق العرض (UWB)
كما هو موضّح في الشكل 1، يضبط إطار عمل UWB رمز بلد UWB
أثناء بدء تجميع UWB باستخدام الأمر UCI في مساحة المورّد
ANDROID_SET_COUNTRY_CODE
(GID=0xC
، OID=0x1
). يحاول إطار عمل UWB تحديد
رمز بلد UWB باستخدام المصادر التالية (المدرَجة بترتيب الأهمية
). يتوقف إطار عمل UWB عند المصدر الأول الذي يتم فيه تحديد رمز البلد.
- إلغاء رمز البلد: يتم فرض رمز البلد من خلال أمر shell adb (اختبار محلي أو آلي).
- رمز البلد للهاتف: يتم استرداد رمز البلد من خلال شبكة الجوّال. إذا كانت هناك عدة شرائح SIM تعرِض رموزًا مختلفة، يكون رمز البلد الذي تم اختياره غير محدّد.
- رمز البلد لشبكة Wi-Fi: رمز البلد الذي تم استرجاعه من خلال شبكة Wi-Fi (80211.ad).
- آخر رمز بلد معروف للاتصال الهاتفي: آخر رمز بلد معروف تم استرجاعه من خلال شبكة الجوّال إذا كانت هناك شرائح SIM متعددة تعرض رموًا مختلفة، يكون رمز البلد الذي تم اختياره غير محدّد.
- رمز بلد الموقع: رمز البلد الذي تم استرجاعه من
LocationManager
موفِّر الموقع الجغرافي المجمّع - رمز البلد التلقائي للمصنّع الأصلي للجهاز: رمز البلد الذي ضبطه المصنّع الأصلي للجهاز.
إذا تعذّر على إطار عمل النطاق الفائق العرض (UWB) تحديد رمز بلد النطاق الفائق العرض (UWB)، يُطلِب الإطار
ANDROID_SET_COUNTRY_CODE
الأمر UCI بالقيمة
DEFAULT_COUNTRY_CODE ("00")
ويُعلم تطبيقات النطاق الفائق العرض (UWB) بأنّ
حالة حِزمة النطاق الفائق العرض (UWB) هي DISABLED
. في وقت لاحق، عندما يتمكّن إطار عمل UWB من تحديد رمز بلد شرعي، يتم ضبط رمز البلد الجديد باستخدام الأمر
ANDROID_SET_COUNTRY_CODE
وإرسال إشعار إلى تطبيقات UWB بأنّ حِزمة UWB
هي READY
.
إذا تعذّر استخدام تقنية النطاق الفائق العرض (UWB)
بسبب اللوائح المحلية في بلد معيّن، يعرض جهاز التحكّم في تقنية النطاق الفائق العرض رمز الحالة
STATUS_CODE_ANDROID_REGULATION_UWB_OFF
. بعد ذلك، يُرسِل إطار عمل UWB إعلامًا
إلى تطبيقات UWB بأنّ حالة حِزمة UWB هي DISABLED
.
عندما ينتقل المستخدم إلى بلد مختلف، يضبط إطار عمل UWB رمز بلد جديد باستخدام الأمر ANDROID_SET_COUNTRY_CODE
UCI. استنادًا إلى код الحالة الذي يعرضه جهاز التحكّم في النطاق الفائق العرض (UWB) (استنادًا إلى اللوائح التنظيمية للنطاق الفائق العرض في
البلد الجديد)، قد يؤدي ذلك إلى تغيير في حالة حِزمة النطاق الفائق العرض.
تنسيق الأوامر المحدَّد في مواصفات FIRA UCI
للاطّلاع على تنسيق حزم التحكّم في UCI، يُرجى الاطّلاع على القسم 4.4.2 من مواصفات UCI.
تحديد إصدارات الواجهة
تسمح مواصفات UCI لبائعي تقنية النطاق الفائق العرض (UWB) بعرض إصدار حِزمة UCI
الذي نفَّذه الجهاز باستخدام الأمرَين UCI_GET_DEVICE_INFO_RSP
و
UCI_GET_CAPS_INFO_RSP
. يستخدم إطار العمل هذه الأوامر لجلب إصدار
UCI للجهاز وتغيير سلوكه وفقًا لذلك.
قائمة مسودات طلبات تحديث البرامج القابلة للتنفيذ التي تتوافق مع وحدة النطاق الفائق العرض (UWB)
تتيح وحدة النطاق الفائق العرض (UWB) الإصدار 330810000 مسودة طلبات إعادة النظر التالية في FiRa 2.0:
واجهة UCI في Android (جزء المورّد في FiRa)
تحدِّد مواصفات UCI مجموعة من معرّفات المجموعات (GID) ومعرّفات تعليمات التشغيل (OID) لجميع الرسائل المحدّدة في المواصفات. تحتفظ المواصفة أيضًا بمجموعة من أرقام تعريف Google محجوزة حصريًا لاستخدام المورّدين. تستخدِم حزمة AOSP UWB بعض معرّفات GID ومعرّفات OID الخاصة بالمورّدين هذه لأوامر خاصة بنظام التشغيل Android لم يتم تحديدها في المواصفات. لمعرفة التفاصيل، يُرجى الاطّلاع على القسم 8.4 من مواصفات UCI.
يتم تعريف رسائل المورّدين هذه التي يستخدمها Android في ملف برمجي
android.hardware.uwb.fira_android
HAL.
إصدارات واجهة المورّد
على مورّدي تقنية النطاق الفائق العرض (UWB) عرض إصدار حزمة android.hardware.uwb.fira_android
HAL المتوافقة على الجهاز من خلال
IUwbChip.getSupportedAndroidUciVersion()
. يستخدم إطار العمل
معلومات الإصدار هذه للتعامل مع التوافق مع الإصدارات القديمة.
قائمة أرقام تعريف Google وأرقام تعريف OpenID في Android
يسرد الجدول التالي أرقام تعريف Google وأرقام تعريف OpenID لنظام التشغيل Android. إنّ معرّفات Google 0xE
و0xF
محجوزة لمصنّعي المعدّات الأصلية لأجهزة Android.
GID | معرّف الكائنات (OID) | التعريف |
---|---|---|
ANDROID = 0xC |
ANDROID_GET_POWER_STATS = 0x0 |
يُستخدَم هذا الحقل من قِبل الأمر والردّ للحصول على الإحصاءات المتعلّقة بطاقة النطاق الفائق العرض.
لا تتوفّر هذه السمة إلا في حال ضبط
UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY
على 1 . |
ANDROID_SET_COUNTRY_CODE = 0x1 |
يُستخدَم لضبط رمز البلد التنظيمي الحالي (يتم تحديده باستخدام
شريحة SIM أو شبكة Wi-Fi، أو يتم ترميزه بشكل ثابت من قِبل المصنّع الأصلي للجهاز). يتم إرسال رمز البلد
كقيمة مكونة من بايتين تتوافق مع رمز البلد وفقًا لمعيار ISO-3166. يتم استخدام القيمة
|
|
ANDROID_RANGE_DIAGNOSTICS = 0x2 |
يستخدمه الإشعار للحصول على إحصاءات بيانات تشخيص النطاق الفائق العرض (UWB).
لا تتوفّر هذه السمة إلا في حال
ضبط UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS
على 1 .
|
|
OEM = 0xE,0xF |
0x00 - 0x3F |
محجوزة لاستخدام المصنّعين الأصليين للأجهزة. |
إضافات المورّدين إلى الرسائل المحدّدة في مواصفات UCI
يصف هذا القسم تفاصيل إضافات المورّدين إلى الرسائل المحدّدة بمواصفات UCI.
SESSION_SET_APP_CONFIG_[CMD|RSP] وSESSION_GET_APP_CONFIG_[CMD|RSP]
في ما يلي قيم طول النوع (TLV) التي حدّدتها حِزمة AOSP في
الجزء المحجوز للمورّد من قيم طول النوع في APP_CONFIG
:
- GID: 0001b (مجموعة إعدادات جلسة UWB)
- رقم التعريف الفريد (OID): 000011b (
SESSION_SET_APP_CONFIG_CMD
) - رقم التعريف المفتوح (OID): 000100b (
SESSION_GET_APP_CONFIG_CMD
)
يسرد الجدول التالي مَعلمات رسائل ضبط جلسة النطاق الفائق العرض (UWB).
اسم المعلمة | الطول (بالثمانيات) |
العلامة (أرقام التعريف) |
إصدار واجهة المورّد | الوصف |
---|---|---|---|---|
NB_OF_RANGE_MEASUREMENTS |
1 | 0xE3 |
1 | نسبة التداخل إذا تم ضبط AOA_RESULT_REQ
على 0xF0 . لا تتوفّر هذه الميزة إلا إذا تم ضبط
UwbVendorCapabilityTlvTypes.SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING
على 1 . |
NB_OF_AZIMUTH_MEASUREMENTS |
1 | 0xE4 |
1 | |
NB_OF_ELEVATION_MEASUREMENTS |
1 | 0xE5 |
1 | |
ENABLE_DIAGNOSTICS |
1 | 0xE8 |
2 | قيمة من 1 بايت لتفعيل إعداد تقارير بيانات التشخيص أو إيقافه
لا تضبط هذه المَعلمة إلا عندما القيم:
|
DIAGRAMS_FRAME_REPORTS_FIELDS |
1 أو 4 | 0xE9 |
2 | قناع بتات من 1 أو 4 بايت لضبط إعدادات إعداد تقارير بيانات التشخيص تبلغ سعة قناع البتات هذا 1 بايت في Android 14 أو الإصدارات الأحدث و 4 بايت في Android 13 أو الإصدارات الأقدم. لا تضبط هذه المَعلمة إلا عندما يعرِض العنصر
تعريفات الوحدات:
|
CORE_GET_CAPS_INFO_RSP
في ما يلي حِزم البيانات الوصفية التي حدّدتها حِزمة AOSP في القسم المخصّص للمورّد
من حِزم البيانات الوصفية في CAPS_INFO
:
- رقم تعريف المجموعة: 0000b (مجموعة UWB الأساسية)
- رقم التعريف الفريد (OID): 000011b (
CORE_GET_CAPS_INFO_RSP
)
يسرد الجدول التالي مَعلمات رسائل إمكانات النطاق الفائق العرض (UWB).
اسم المعلمة | الطول (بالثمانيات) |
العلامة (أرقام التعريف) |
إصدار واجهة المورّد | الوصف |
---|---|---|---|---|
SUPPORTED_POWER_STATS_QUERY |
1 | 0xC0 |
1 | قيمة بايت واحد تشير إلى توفّر طلب بحث الإحصاءات المتعلقة بالطاقة القيم:
|
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING |
1 | 0xE3 |
1 | قيمة بايت واحد تشير إلى توفُّر ميزة تداخل الهوائي. القيم:
|
SUPPORTED_MIN_RANGING_INTERVAL_MS |
4 | 0xE4 |
2 | قيمة 4 بايت تشير إلى الحد الأدنى المسموح به لفاصل النطاق بالملي ثانية |
SUPPORTED_RANGE_DATA_NTF_CONFIG |
4 | 0xE5 |
2 | قناع بتّ سعة 4 بايت يشير إلى قيم
RANGE_DATA_NTF_CONFIG المسموح بها
قناع بت حيث يتوافق كل بت مع القيم المستخدَمة في
RANGE_DATA_NTF_CONFIG في SET_APP_CFG_CMD . |
SUPPORTED_RSSI_REPORTING |
1 | 0xE6 |
2 | قيمة بايت واحد تشير إلى توفّر ميزة إعداد تقارير RSSI القيم:
|
SUPPORTED_DIAGNOSTICS |
1 | 0xE7 |
2 | قيمة 1 بايت تشير إلى توفّر ميزة إعداد تقارير بيانات التشخيص القيم:
|
SUPPORTED_MIN_SLOT_DURATION_RSTU |
4 | 0xE8 |
2 | قيمة 4 بايت تشير إلى الحد الأدنى المسموح به لمدة الفتحة في RSTU |
SUPPORTED_MAX_RANGING_SESSION_NUMBER |
4 | 0xE9 |
2 | قيمة 4 بايت تشير إلى الحد الأقصى المسموح به لعدد جلسات تحديد المدى باستخدام FiRa |
SUPPORTED_CHANNELS_AOA |
2 | 0xEA |
2 | قناع بتّين للإشارة إلى القنوات المتوافقة مع تقنية AoA يتوافق كل
القيم:
|
رموز الحالة
في ما يلي رموز الحالة في مساحة المورّد. ويتم عرض هذه البيانات في ردود UCI (مثل SESSION_START_RSP
) من خلال النظام الفرعي لتقنية النطاق الفائق العرض (UWBS).
رمز الحالة | القيمة | الوصف |
---|---|---|
STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x52 |
رمز الحالة الذي يتم إرجاعه عندما يتعذّر بدء جلسة تحديد المسافة الحالية بسبب تعارض مع جلسات تحديد المسافة الأخرى في CCC أو FiRa |
STATUS_REGULATION_UWB_OFF |
0x53 |
رمز الحالة الذي يتم إرجاعه عندما يتعذّر بدؤه جلسة تحديد المسافة الحالية بسبب قيود تنظيمية متعلّقة بتقنية النطاق الفائق العرض (UWB) |
رمز سبب تغيير الحالة في SESSION_STATUS_NTF
في ما يلي رموز أسباب تغيير الحالة المحدّدة في مساحة المورّد لسمة الحالة التي يعرضها ملف UWBS في SESSION_STATUS_NTF
. يُرسِل هذا الإشعار
بروتوكول UWBS عند تغيُّر حالة جلسة قياس المسافة (على سبيل المثال،
من ACTIVE
إلى IDLE
).
رمز سبب تغيير الحالة | القيمة | الوصف |
---|---|---|
REASON_ERROR_INVALID_CHANNEL_WITH_AOA |
0x80 |
تغيّرت حالة الجلسة لأنّ القناة التي تم ضبطها لا تسمح بقياس المسافة بالاستناد إلى الاتجاه. |
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x81 |
تغيّرت حالة الجلسة بسبب تعارض مع جلسات تحديد النطاق الأخرى من CCC أو FiRa |
REASON_REGULATION_UWB_OFF |
0x82 |
تغيّرت حالة الجلسة لأنّه يجب إيقاف تقنية النطاق الفائق العرض (UWB) لسبب تنظيمي. |