واجهة النطاق الفائق العرض (HAL)

يستخدم حِزمة النطاق الفائق العرض (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 وإيقافها.

إعداد حزمة النطاق الفائق العرض (UWB)

الشكل 1: مسار استدعاء إعداد حزمة النطاق الفائق العرض (UWB) (تفعيل خيار UWB)

إيقاف حزمة النطاق الفائق العرض (UWB)

الشكل 2: تسلسل المكالمات لإزالة إعدادات حزمة النطاق الفائق العرض (UWB) (إيقاف التبديل في النطاق الفائق العرض)

بدء جلسة النطاق الفائق العرض (UWB) وإيقافها

الشكل 3: عملية بدء/إيقاف جلسة النطاق الفائق العرض (UWB)

ضبط رمز بلد النطاق الفائق العرض (UWB)

كما هو موضّح في الشكل 1، يضبط إطار عمل UWB رمز بلد UWB أثناء بدء تجميع UWB باستخدام الأمر UCI في مساحة المورّد ANDROID_SET_COUNTRY_CODE (GID=0xC، OID=0x1). يحاول إطار عمل UWB تحديد رمز بلد UWB باستخدام المصادر التالية (المدرَجة بترتيب الأهمية ). يتوقف إطار عمل UWB عند المصدر الأول الذي يتم فيه تحديد رمز البلد.

  1. إلغاء رمز البلد: يتم فرض رمز البلد من خلال أمر shell adb (اختبار محلي أو آلي).
  2. رمز البلد للهاتف: يتم استرداد رمز البلد من خلال شبكة الجوّال. إذا كانت هناك عدة شرائح SIM تعرِض رموزًا مختلفة، يكون رمز البلد الذي تم اختياره غير محدّد.
  3. رمز البلد لشبكة Wi-Fi: رمز البلد الذي تم استرجاعه من خلال شبكة Wi-Fi (80211.ad).
  4. آخر رمز بلد معروف للاتصال الهاتفي: آخر رمز بلد معروف تم استرجاعه من خلال شبكة الجوّال إذا كانت هناك شرائح SIM متعددة تعرض رموًا مختلفة، يكون رمز البلد الذي تم اختياره غير محدّد.
  5. رمز بلد الموقع: رمز البلد الذي تم استرجاعه من LocationManager موفِّر الموقع الجغرافي المجمّع
  6. رمز البلد التلقائي للمصنّع الأصلي للجهاز: رمز البلد الذي ضبطه المصنّع الأصلي للجهاز.

إذا تعذّر على إطار عمل النطاق الفائق العرض (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. يتم استخدام القيمة 00 للإشارة إلى أنّ رمز البلد غير معروف.

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 بايت لتفعيل إعداد تقارير بيانات التشخيص أو إيقافه لا تضبط هذه المَعلمة إلا عندما CORE_GET_CAPS_INFO_RSP تعرض SUPPORTED_DIAGNOSTICS بقيمة 1 تشير إلى أنّ ميزة إعداد تقارير بيانات التشخيص متوفرة.

القيم:

  • 1: تم تفعيل الميزة
  • 0: الميزة غير مفعّلة

DIAGRAMS_FRAME_REPORTS_FIELDS 1 أو 4 0xE9 2

قناع بتات من 1 أو 4 بايت لضبط إعدادات إعداد تقارير بيانات التشخيص تبلغ سعة قناع البتات هذا 1 بايت في Android 14 أو الإصدارات الأحدث و 4 بايت في Android 13 أو الإصدارات الأقدم.

لا تضبط هذه المَعلمة إلا عندما يعرِض العنصر CORE_GET_CAPS_INFO_RSP القيمة SUPPORTED_DIAGNOSTICS مع القيمة 1 التي تشير إلى توفّر ميزة إعداد تقارير بيانات التشخيص.

تعريفات الوحدات:

  • b0 (0x01): تفعيل حقول RSSI
  • b1 (0x02): تفعيل حقول "اتجاهات الإعلانات"
  • b2 (0x04): تفعيل حقول CIR

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

قيمة بايت واحد تشير إلى توفّر طلب بحث الإحصاءات المتعلقة بالطاقة

القيم:

  • 1: الميزة متاحة
  • 0: الميزة غير متاحة
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING 1 0xE3 1

قيمة بايت واحد تشير إلى توفُّر ميزة تداخل الهوائي.

القيم:

  • 1: الميزة متاحة
  • 0: الميزة غير متاحة
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

القيم:

  • 1: الميزة متاحة
  • 0: الميزة غير متاحة
SUPPORTED_DIAGNOSTICS 1 0xE7 2

قيمة 1 بايت تشير إلى توفّر ميزة إعداد تقارير بيانات التشخيص

القيم:

  • 1: الميزة متاحة
  • 0: الميزة غير متاحة
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 يتوافق كل 1 في قناع البتات مع قناة UWB معيّنة.

القيم:

  • 0x01: قناة 5 متوافقة
  • 0x02: القناة 6 متاحة
  • 0x04: القناة 8 متاحة
  • 0x08: القناة 9 متاحة
  • 0x10: القناة 10 متاحة
  • 0x20: القناة 12 متاحة
  • 0x40: القناة 13 متاحة
  • 0x80: القناة 14 متاحة

رموز الحالة

في ما يلي رموز الحالة في مساحة المورّد. ويتم عرض هذه البيانات في ردود 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) لسبب تنظيمي.