تستخدم حزمة النطاق الفائق العرض (UWB) في AOSP
واجهة UCI المحدّدة من قِبل FiRa
كواجهة HAL. تستخدم واجهة HAL قناة غير شفافة
(IUwbChip::sendUciMessage()
وIUwbClientCallback::onUciMessage()
) لإرسال واستلام الأوامر والاستجابات والإشعارات الخاصة بواجهة أوامر UWB (UCI).
يجب أن تتوافق جميع أجهزة Android التي تستخدم تقنية UWB مع جميع الرسائل المحدّدة في مواصفات FiRa. يتوافق إطار عمل النطاق الفائق العرض مع الإصدارات القديمة ويعمل مع أي إصدار من واجهة UCI
نفّذه مورّد النطاق الفائق العرض على الجهاز. بما أنّ إطار عمل النطاق الفائق العرض (UWB) في AOSP هو وحدة،
يمكنه أيضًا إضافة دعم بشكل انتقائي لطلبات التغيير (CR) التي تمت الموافقة عليها من
مسودّة مواصفات UCI التي تستهدف إصدارات رئيسية من معايير FiRa. ويخضع أي من طلبات تغييرات CR التي تم تنفيذها للتغيير.
تعريف الواجهة
يتم تحديد واجهة 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) لعمليات تهيئة حزمة النطاق الفائق العرض وإلغاء تهيئتها وبدء جلسة النطاق الفائق العرض وإيقافها.
الشكل 1. مسار طلب تهيئة حزمة النطاق الفائق العرض (UWB) (تفعيل النطاق الفائق العرض)
الشكل 2. مسار طلب إلغاء تهيئة حزمة النطاق الفائق العرض (إيقاف النطاق الفائق العرض)
الشكل 3. سير عمل بدء/إيقاف جلسة النطاق الفائق العرض (UWB)
إعداد رمز بلد النطاق الفائق العرض
كما هو موضّح في "الشكل 1"، يضبط إطار عمل UWB رمز البلد الخاص بتقنية UWB
أثناء عملية تهيئة حزمة UWB باستخدام أمر UCI الخاص بمساحة المورّد
ANDROID_SET_COUNTRY_CODE
(GID=0xC
، OID=0x1
). يحاول إطار عمل UWB
تحديد رمز البلد الخاص بتقنية UWB باستخدام المصادر التالية (المدرَجة حسب ترتيب الأولوية). يتوقف إطار عمل UWB عند المصدر الأول الذي يتم فيه تحديد رمز البلد.
- تجاوز رمز البلد: رمز البلد الذي تم فرضه من خلال أمر adb shell (اختبار محلي أو آلي)
- رمز بلد الاتصالات الهاتفية: رمز البلد الذي يتم استرداده من خلال شبكة الجوّال إذا كانت هناك شرائح 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 بسبب اللوائح التنظيمية المحلية في بلد ما، سيعرض عنصر التحكّم في 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 مجموعة من معرّفات المجموعات (GIDs) ومعرّفات رموز العمليات (OIDs) لجميع الرسائل المحدّدة في المواصفات. تتضمّن المواصفات أيضًا مجموعة من معرّفات المجموعات المحجوزة حصريًا لاستخدام المورّدين. تستخدم حزمة برامج UWB في AOSP بعض معرّفات GID ومعرّفات OID الخاصة بالمورّدين للأوامر الخاصة بنظام Android والتي لم يتم تحديدها في المواصفات. للحصول على التفاصيل، يُرجى الاطّلاع على الفقرة 8.4 من مواصفات UCI.
يتم تحديد رسائل المورّدين هذه التي يستخدمها Android في حزمة
android.hardware.uwb.fira_android
HAL.
إصدار واجهة المورّد
على مورّدي UWB عرض إصدار حزمة android.hardware.uwb.fira_android
HAL المتوافق مع الجهاز من خلال
IUwbChip.getSupportedAndroidUciVersion()
. يستخدم إطار العمل معلومات تحديد الإصدار هذه للتعامل مع التوافق مع الأنظمة القديمة.
قائمة بمعرّفات GID وOID على Android
يسرد الجدول التالي معرّفات GID وOID لنظام التشغيل Android. يتم حجز المعرّفَين 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
:
- معرّف المجموعة: 0001b (مجموعة إعدادات جلسة النطاق الفائق العرض)
- OID: 000011b (
SESSION_SET_APP_CONFIG_CMD
) - OID: 000100b (
SESSION_GET_APP_CONFIG_CMD
)
يسرد الجدول التالي مَعلمات رسائل إعداد جلسة النطاق الفائق العرض.
اسم المعلمة | الطول (بالبايتات) |
العلامة (المعرّفات) |
إصدار واجهة المورّد | الوصف |
---|---|---|---|---|
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 | قيمة من بايت واحد لتفعيل ميزة إعداد تقارير بيانات التشخيص أو إيقافها
اضبط هذه المَعلمة فقط عندما تعرض الدالة القيم:
|
DIAGRAMS_FRAME_REPORTS_FIELDS |
1 أو 4 | 0xE9 |
2 | قناع بت مكوّن من بايت واحد أو 4 بايتات لإعداد تقارير بيانات التشخيص يبلغ حجم قناع البت هذا بايتًا واحدًا في الإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث، و4 بايتات في الإصدار 13 من نظام التشغيل Android أو الإصدارات الأقدم. لا تضبط هذه المَعلمة إلا عندما تعرض تعريفات البت:
|
CORE_GET_CAPS_INFO_RSP
في ما يلي قيم النوع والطول والقيمة (TLV) التي حدّدتها حزمة AOSP في الجزء المخصّص للمورّد من قيم النوع والطول والقيمة في CAPS_INFO
:
- GID: 0000b (مجموعة UWB الأساسية)
- OID: 000011b (
CORE_GET_CAPS_INFO_RSP
)
يعرض الجدول التالي مَعلمات رسائل إمكانية استخدام النطاق الفائق العرض.
اسم المعلمة | الطول (بالبايتات) |
العلامة (المعرّفات) |
إصدار واجهة المورّد | الوصف |
---|---|---|---|---|
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 | قيمة من بايت واحد تشير إلى إمكانية إعداد تقارير بيانات التشخيص. القيم:
|
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 |
تغيّرت حالة الجلسة لأنّ القناة التي تم ضبطها لا تتوافق مع تحديد المدى باستخدام AoA. |
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x81 |
تم تغيير حالة الجلسة بسبب تعارض مع جلسات أخرى لنظام CCC أو FiRa. |
REASON_REGULATION_UWB_OFF |
0x82 |
تم تغيير حالة الجلسة لأنّه يجب إيقاف نطاق UWB الفائق العرض بسبب متطلبات تنظيمية. |