پشته فراپهنباند (UWB)
در AOSP
از
میانای UCI تعریفشده توسط FiRa
بهعنوان سطح HAL استفاده میکند. میانای HAL از یک پایپ مبهم
(IUwbChip::sendUciMessage() و IUwbClientCallback::onUciMessage()) برای ارسال
و دریافت فرمانهای میانای فرمان UWB (UCI)، پاسخها، و اعلانها استفاده میکند.
همه فروشندگان Android UWB باید از همه پیامهای تعریفشده در مشخصات FiRa پشتیبانی کنند. چارچوب «فراپهنباند» با نسخههای قدیمی سازگار است و با هر نسخه UCI که فروشنده «فراپهنباند» در دستگاه پیادهسازی کرده باشد کار میکند. ازآنجاییکه چارچوب AOSP UWB یک واحد است،
میتواند بهصورت انتخابی از درخواستهای تغییر (CR) تأییدشده از
مشخصات پیشنویس 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 بااستفاده از فرمان UCI فضای فروشنده
ANDROID_SET_COUNTRY_CODE (GID=0xC، OID=0x1) پیکربندی میکند. چارچوب UWB تلاش میکند
کد کشور UWB را بااستفاده از منابع زیر (فهرستشده به ترتیب اولویت)
تعیین کند. چارچوب «فراپهنباند» در اولین منبعی که کد کشور در آن تعیین شده است متوقف میشود.
- لغو کد کشور: کد کشور ازطریق دستور پوسته adb اجباری شده است (آزمایش محلی یا خودکار).
- کد کشور تلفن: کد کشور ازطریق تلفن همراه بازیابی میشود. اگر چندین سیمکارت وجود داشته باشد که کدهای مختلفی برمیگردانند، کد کشور انتخابشده غیرقطعی است.
- کد کشور Wi-Fi: کد کشور ازطریق Wi-Fi (80211.ad) بازیابی میشود.
- آخرین کد کشور تلفنی شناختهشده: آخرین کد کشور شناختهشده که ازطریق سلولی بازیابی شده است. اگر چند سیمکارت وجود داشته باشد که کدهای مختلفی برمیگردانند، کد کشور انتخابی غیرقطعی است.
- کد کشور مکان: کد کشور بازیابیشده از
LocationManagerارائهدهنده مکان ترکیبی. - کد کشور پیشفرض سازنده اصلی محصول: کد کشوری که سازنده دستگاه تنظیم کرده است.
اگر چارچوب «فراپهنباند» نتواند کد کشور «فراپهنباند» را تعیین کند،
فرمان UCI ANDROID_SET_COUNTRY_CODE را با مقدار
DEFAULT_COUNTRY_CODE ("00") فراخوانی میکند و به برنامههای «فراپهنباند» اطلاع میدهد که
وضعیت پشته «فراپهنباند» DISABLED است. بعداً، وقتی چارچوب «فراپهنباند» بتواند کد کشور معتبری را تعیین کند، کد کشور جدید را بااستفاده از فرمان ANDROID_SET_COUNTRY_CODE پیکربندی میکند و به برنامههای «فراپهنباند» اطلاع میدهد که پشته «فراپهنباند» READY است.
اگر بهدلیل مقررات محلی در کشوری نتوان از «فراپهنباند» استفاده کرد، کنترلکننده «فراپهنباند» کد وضعیت STATUS_CODE_ANDROID_REGULATION_UWB_OFF را برمیگرداند. سپس چارچوب «فراپهنباند» به برنامههای «فراپهنباند» اطلاع میدهد که وضعیت پشته «فراپهنباند» DISABLED است.
وقتی کاربری به کشور دیگری سفر میکند، چارچوب UWB کد کشور جدیدی را بااستفاده از فرمان ANDROID_SET_COUNTRY_CODE UCI پیکربندی میکند. بسته به کد وضعیت برگشتی از کنترلکننده UWB (براساس مقررات UWB در کشور جدید)، این امر ممکن است منجر به تغییر در وضعیت پشته UWB شود.
قالب فرمان تعریفشده با مشخصات FIRA UCI
برای قالب بستههای کنترل UCI، به بخش ۴.۴.۲ مشخصات UCI مراجعه کنید.
نسخهبندی میانا
مشخصات UCI به فروشندگان UWB اجازه میدهد نسخه پشته UCI
پیادهسازیشده توسط دستگاه را بااستفاده از فرمانهای UCI_GET_DEVICE_INFO_RSP و
UCI_GET_CAPS_INFO_RSP نمایان کنند. چارچوب از این فرمانها برای واکشی نسخه UCI دستگاه و تغییر عملکرد آن براساس آن استفاده میکند.
فهرست دستورات کنترل پیشنویس پشتیبانیشده توسط واحد UWB
پیشنویسهای CR زیر برای FiRa 2.0 توسط واحد فراپهنباند نسخه ۳۳۰۸۱۰۰۰۰ پشتیبانی میشود:
میانای Android UCI (بخش فروشنده FiRa)
مشخصات UCI مجموعهای از شناسههای گروه (GID) و شناسههای کد عملیات (OID) را برای همه پیامهای تعریفشده در مشخصات تعریف میکند. این مشخصات همچنین مجموعهای از شناسههای گروه را منحصراً برای استفاده فروشنده رزرو میکند. پشته AOSP UWB از برخیاز این GID و OID فروشنده برای دستورات مختص Android که در مشخصات تعریف نشدهاند استفاده میکند. برای جزئیات، به بخش ۸.۴ مشخصات UCI مراجعه کنید.
این پیامهای فروشنده که Android از آنها استفاده میکند در
android.hardware.uwb.fira_android بسته HAL تعریف شدهاند.
نسخهبندی میانای فروشنده
فروشندگان UWB باید نسخه بسته android.hardware.uwb.fira_android
HAL پشتیبانیشده در دستگاه را ازطریق
IUwbChip.getSupportedAndroidUciVersion() نمایان کنند. این چارچوب از این اطلاعات نسخهبندی برای مدیریت سازگاری با نسخه قدیمی استفاده میکند.
فهرست شناسههای گروهی و شناسههای شیء Android
جدول زیر GID و OID را برای Android فهرست میکند. GIDs 0xE و 0xF
برای استفاده «تولیدکنندگان تجهیزات اصلی» Android رزرو شده است.
| GID | OID | تعریف |
|---|---|---|
ANDROID = 0xC |
ANDROID_GET_POWER_STATS = 0x0 |
مورداستفاده فرمان و پاسخ برای دریافت آمار مربوط به توان «فراپهنباند».
فقط درصورتی پشتیبانی میشود که
UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY
روی 1 تنظیم شده باشد. |
ANDROID_SET_COUNTRY_CODE = 0x1 |
برای تنظیم کد کشور نظارتی فعلی استفاده میشود (بااستفاده از سیمکارت یا Wi-Fi تعیین میشود، یا توسط OEM بهصورت کد ثابت درآمده است). کد کشور بهعنوان مقدار ۲ بایتی متناظر با کد کشور ISO-3166 ارسال میشود. مقدار
|
|
ANDROID_RANGE_DIAGNOSTICS = 0x2 |
اعلان از آن برای دریافت آمار عیبیابی فاصلهیابی فراپهنباند استفاده میکند.
فقط درصورتی پشتیبانی میشود که
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 در بخش رزروشده فروشنده 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 | مقدار ۱ بایتی برای فعال یا غیرفعال کردن گزارش تشخیص خرابی.
این پارامتر را فقط زمانی پیکربندی کنید که مقادیر:
|
DIAGRAMS_FRAME_REPORTS_FIELDS |
۱ یا ۴ | 0xE9 |
2 | ماسک بیتی ۱ بایتی یا ۴ بایتی برای پیکربندی گزارش تشخیص خرابی. این ماسک بیت در Android 14 یا بالاتر ۱ بایت و در Android 13 یا پایینتر ۴ بایت است. این پارامتر را فقط زمانی پیکربندی کنید که
تعاریف بیت:
|
CORE_GET_CAPS_INFO_RSP
موارد زیر TLVهایی هستند که پشته AOSP در بخش رزرو فروشنده TLVها در CAPS_INFO تعریف کرده است:
- GID: 0000b (گروه اصلی فراپهنباند)
- 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 | مقدار ۴ بایتی که حداقل فاصله فاصلهیابی پشتیبانیشده را به میلیثانیه نشان میدهد. |
SUPPORTED_RANGE_DATA_NTF_CONFIG |
4 | 0xE5 |
2 | ماسک بیت ۴ بایتی که مقادیر پشتیبانیشده 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 | مقدار ۴ بایتی که نشاندهنده حداقل مدت زمان شکاف پشتیبانیشده در RSTU است. |
SUPPORTED_MAX_RANGING_SESSION_NUMBER |
4 | 0xE9 |
2 | مقدار ۴ بایتی که نشاندهنده حداکثر تعداد جلسههای پشتیبانیشده برای فاصلهیابی 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 بهصورت زیر تعریف شده است. این اعلان
وقتی وضعیت جلسه سنجش تغییر میکند (برای مثال،
از ACTIVE به IDLE) توسط UWBS ارسال میشود.
| کد دلیل تغییر وضعیت | مقدار | شرح |
|---|---|---|
REASON_ERROR_INVALID_CHANNEL_WITH_AOA |
0x80 |
وضعیت جلسه تغییر کرد زیرا کانال پیکربندیشده از فاصلهیابی AoA پشتیبانی نمیکند. |
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT |
0x81 |
وضعیت جلسه بهدلیل تداخل با دیگر جلسههای فاصلهیابی CCC یا FiRa تغییر کرد. |
REASON_REGULATION_UWB_OFF |
0x82 |
وضعیت جلسه تغییر کرد زیرا «باند فوقوسیع» باید بهدلیل دلیل نظارتی غیرفعال شود. |