پشته AOSP فوق پهن باند (UWB) از رابط UCI تعریف شده توسط FiRa به عنوان سطح HAL استفاده می کند. رابط HAL از یک لوله مات ( IUwbChip::sendUciMessage()
و IUwbClientCallback::onUciMessage()
) برای ارسال و دریافت دستورات، پاسخ ها و اعلان ها رابط فرمان UWB (UCI) استفاده می کند. همه فروشندگان Android UWB باید از تمام پیام های تعریف شده با مشخصات FiRa پشتیبانی کنند. چارچوب UWB سازگار با نسخه قبلی است و با هر نسخه UCI که توسط فروشنده UWB بر روی دستگاه اجرا شده است، کار می کند. از آنجایی که چارچوب AOSP UWB یک ماژول است، همچنین میتواند به طور انتخابی پشتیبانی از درخواستهای تغییر تایید شده (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 را برای فرآیندهای اولیه سازی پشته UWB، اولیه سازی پشته UWB و فرآیندهای شروع و توقف جلسه UWB نشان می دهد.
شکل 1. جریان تماس اولیه پشته UWB (روشن کردن UWB)
شکل 2. جریان فراخوانی اولیه سازی پشته UWB (خاموش کردن UWB)
شکل 3. جریان شروع/توقف جلسه UWB
پیکربندی کد کشور UWB
همانطور که در شکل 1 نشان داده شده است، چارچوب UWB، کد کشور UWB را در طول مقداردهی اولیه پشته UWB با استفاده از دستور vendor-space UCI ANDROID_SET_COUNTRY_CODE
(GID= 0xC
، OID= 0x1
) پیکربندی می کند. چارچوب UWB سعی می کند کد کشور UWB را با استفاده از منابع زیر (به ترتیب اولویت فهرست شده) تعیین کند. چارچوب UWB در اولین منبعی که کد کشور تعیین می شود متوقف می شود.
- لغو کد کشور: کد کشور از طریق یک دستور پوسته adb (آزمایش محلی یا خودکار) اجباری شده است.
- کد کشور تلفن: کد کشور از طریق تلفن همراه بازیابی شده است. اگر چند سیم کارت وجود داشته باشد که کدهای متفاوتی را برمی گرداند، کد کشور انتخاب شده غیر قطعی است.
- کد کشور Wi-Fi: کد کشور از طریق Wi-Fi (80211.ad) بازیابی شده است.
- آخرین کد کشور تلفن شناخته شده: آخرین کد کشور شناخته شده که از طریق تلفن همراه بازیابی شده است. اگر چند سیم کارت وجود داشته باشد که کدهای متفاوتی را برمی گرداند، کد کشور انتخاب شده غیر قطعی است.
- کد کشور مکان: کد کشوری که از ارائهدهنده مکان ترکیبی
LocationManager
بازیابی شده است. - کد کشور پیشفرض OEM: کد کشور که توسط سازنده دستگاه تنظیم شده است.
اگر چارچوب 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 (بر اساس مقررات UWB در کشور جدید)، این ممکن است منجر به تغییر در وضعیت پشته UWB شود.
فرمت فرمان تعریف شده با مشخصات UCI FIRA
برای فرمت بسته های کنترلی UCI، بخش 4.4.2 مشخصات UCI را ببینید.
نسخه سازی رابط
مشخصات UCI به فروشندگان UWB اجازه می دهد نسخه پشته UCI اجرا شده توسط دستگاه را با استفاده از دستورات UCI_GET_DEVICE_INFO_RSP
و UCI_GET_CAPS_INFO_RSP
در معرض دید قرار دهند. چارچوب از این دستورات برای واکشی نسخه UCI دستگاه و تغییر رفتار آن بر این اساس استفاده می کند.
لیست پیش نویس CR های پشتیبانی شده توسط ماژول UWB
پیشنویسهای CR زیر برای FiRa 2.0 توسط ماژول UWB نسخه #330810000 پشتیبانی میشوند:
رابط UCI اندروید (بخش فروشنده FiRa)
مشخصات UCI مجموعهای از شناسههای گروه (GID) و شناسههای کد opcode (OID) را برای همه پیامهای تعریفشده با مشخصات تعریف میکند. این مشخصات همچنین مجموعه ای از GID ها را رزرو می کند که منحصراً برای استفاده فروشنده رزرو شده اند. پشته AOSP UWB از برخی از این GID و OIDهای فروشنده برای دستورات مخصوص اندروید استفاده می کند که در مشخصات تعریف نشده اند. برای جزئیات، بخش 8.4 مشخصات UCI را ببینید.
این پیامهای فروشنده که توسط اندروید استفاده میشوند در بسته HAL android.hardware.uwb.fira_android
تعریف شدهاند.
نسخه سازی رابط فروشنده
فروشندگان UWB باید نسخه android.hardware.uwb.fira_android
بسته HAL پشتیبانی شده در دستگاه را از طریق IUwbChip.getSupportedAndroidUciVersion()
افشا کنند. فریم ورک از این اطلاعات نسخهسازی برای مدیریت سازگاری به عقب استفاده میکند.
لیست GID و OID اندروید
جدول زیر GID ها و OID ها را برای اندروید فهرست می کند. GID 0xE
و 0xF
برای استفاده از OEM های اندروید رزرو شده است.
GID | OID | تعریف |
---|---|---|
ANDROID = 0xC | ANDROID_GET_POWER_STATS = 0x0 | توسط فرمان و پاسخ برای دریافت آمار مربوط به قدرت UWB استفاده می شود. فقط در صورتی پشتیبانی میشود که UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY روی 1 تنظیم شده باشد. |
ANDROID_SET_COUNTRY_CODE = 0x1 | برای تنظیم کد کشور نظارتی فعلی (که با استفاده از سیم کارت یا Wi-Fi تعیین می شود، یا توسط OEM کدگذاری شده است) استفاده می شود. کد کشور به صورت یک مقدار 2 بایتی مطابق با کد کشور ISO-3166 ارسال می شود. مقدار | |
ANDROID_RANGE_DIAGNOSTICS = 0x2 | توسط اعلان برای دریافت آمار تشخیصی محدوده UWB استفاده می شود. فقط در صورتی پشتیبانی می شود که UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS روی 1 تنظیم شده باشد. | |
OEM = 0xE,0xF | 0x00 - 0x3F | برای استفاده OEM رزرو شده است. |
پسوندهای فروشنده به پیام های تعریف شده با مشخصات UCI
این بخش جزئیات برنامه های افزودنی فروشنده برای پیام های تعریف شده با مشخصات UCI را شرح می دهد.
SESSION_SET_APP_CONFIG_[CMD|RSP] و SESSION_GET_APP_CONFIG_[CMD|RSP]
در زیر مقادیر طول نوع (TLV) تعریف شده توسط پشته AOSP در قسمت رزرو شده توسط فروشنده TLVها در 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 بایتی برای پیکربندی گزارش تشخیصی. این بیت ماسک در اندروید 14 یا بالاتر 1 بایت و در اندروید 13 یا پایین تر 4 بایت است. این پارامتر را فقط زمانی پیکربندی کنید که تعاریف بیت:
|
CORE_GET_CAPS_INFO_RSP
موارد زیر TLV هایی هستند که توسط پشته AOSP در قسمت رزرو شده فروشنده از TLV ها در CAPS_INFO
تعریف شده اند:
- GID: 0000b (گروه هسته UWB)
- OID: 000011b (
CORE_GET_CAPS_INFO_RSP
)
جدول زیر پارامترهای پیام های قابلیت UWB را فهرست می کند.
نام پارامتر | طول (هشتت) | برچسب بزنید (شناسنامه) | نسخه رابط فروشنده | توضیحات |
---|---|---|---|---|
SUPPORTED_POWER_STATS_QUERY | 1 | 0xC0 | 1 | مقدار 1 بایت که نشان دهنده پشتیبانی از پرس و جوی آمار قدرت است. ارزش ها:
|
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING | 1 | 0xE3 | 1 | مقدار 1 بایت که نشان دهنده پشتیبانی از ویژگی interleaving آنتن است. ارزش ها:
|
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 | مقدار 1 بایت که نشان دهنده پشتیبانی از گزارش 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 | بیت ماسک 2 بایتی برای نشان دادن کانال هایی که از AoA پشتیبانی می کنند. هر ارزش ها:
|
کدهای وضعیت
در زیر کدهای وضعیت موجود در فضای فروشنده آمده است. اینها در پاسخهای UCI (مانند SESSION_START_RSP
) توسط زیرسیستم UWB (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 باید به دلایل قانونی غیرفعال شود. |