واجهة UWB HAL

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

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

الشكل 1. مسار طلب تهيئة حزمة النطاق الفائق العرض (UWB) (تفعيل النطاق الفائق العرض)

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

الشكل 2. مسار طلب إلغاء تهيئة حزمة النطاق الفائق العرض (إيقاف النطاق الفائق العرض)

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

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

إعداد رمز بلد النطاق الفائق العرض

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

  1. تجاوز رمز البلد: رمز البلد الذي تم فرضه من خلال أمر adb shell (اختبار محلي أو آلي)
  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 بسبب اللوائح التنظيمية المحلية في بلد ما، سيعرض عنصر التحكّم في 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. يتم استخدام القيمة 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:

  • معرّف المجموعة: 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

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

القيم:

  • 1: تم تفعيل الميزة
  • 0: تم إيقاف الميزة

DIAGRAMS_FRAME_REPORTS_FIELDS ‫1 أو 4 0xE9 2

قناع بت مكوّن من بايت واحد أو 4 بايتات لإعداد تقارير بيانات التشخيص يبلغ حجم قناع البت هذا بايتًا واحدًا في الإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث، و4 بايتات في الإصدار 13 من نظام التشغيل Android أو الإصدارات الأقدم.

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

تعريفات البت:

  • b0 (0x01): تفعيل حقول RSSI
  • b1 (0x02): تفعيل حقول "العمر عند التبني"
  • b2 (0x04): تفعيل حقول CIR

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

قيمة بايت واحدة تشير إلى إمكانية طلب إحصاءات الطاقة.

القيم:

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

تغيّرت حالة الجلسة لأنّ القناة التي تم ضبطها لا تتوافق مع تحديد المدى باستخدام AoA.

REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT 0x81

تم تغيير حالة الجلسة بسبب تعارض مع جلسات أخرى لنظام CCC أو FiRa.

REASON_REGULATION_UWB_OFF 0x82

تم تغيير حالة الجلسة لأنّه يجب إيقاف نطاق UWB الفائق العرض بسبب متطلبات تنظيمية.