UWB HAL ইন্টারফেস

AOSP আল্ট্রা-ওয়াইডব্যান্ড (UWB) স্ট্যাক এইচএএল পৃষ্ঠ হিসাবে FiRa-সংজ্ঞায়িত UCI ইন্টারফেস ব্যবহার করে। HAL ইন্টারফেস একটি অস্বচ্ছ পাইপ ( IUwbChip::sendUciMessage() এবং IUwbClientCallback::onUciMessage() ) ব্যবহার করে UWB কমান্ড ইন্টারফেস (UCI) কমান্ড, প্রতিক্রিয়া এবং বিজ্ঞপ্তি পাঠাতে এবং গ্রহণ করে। সমস্ত Android UWB বিক্রেতাদের অবশ্যই সমস্ত FiRa স্পেসিফিকেশন সংজ্ঞায়িত বার্তা সমর্থন করতে হবে। UWB ফ্রেমওয়ার্কটি পশ্চাদমুখী সামঞ্জস্যপূর্ণ এবং ডিভাইসে UWB বিক্রেতা দ্বারা বাস্তবায়িত যেকোনো UCI সংস্করণের সাথে কাজ করে। যেহেতু AOSP UWB ফ্রেমওয়ার্ক একটি মডিউল , এটি প্রধান FiRa স্ট্যান্ডার্ড রিলিজের জন্য লক্ষ্যযুক্ত ড্রাফ্ট UCI স্পেসিফিকেশন থেকে অনুমোদিত পরিবর্তন অনুরোধের (CRs) জন্য বেছে বেছে সমর্থন যোগ করতে পারে। বাস্তবায়িত এই ধরনের কোনো খসড়া 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);

}

UWB ফ্রেমওয়ার্ক থেকে HAL কল প্রবাহ

এই নিম্নলিখিত চিত্রগুলি UWB স্ট্যাক ইনিশিয়ালাইজেশন, UWB স্ট্যাক ডিইনিশিয়ালাইজেশন, এবং UWB সেশন শুরু এবং বন্ধ করার প্রক্রিয়াগুলির জন্য UWB ফ্রেমওয়ার্ক থেকে কল প্রবাহকে চিত্রিত করে।

UWB স্ট্যাক ইনিশিয়ালাইজেশন

চিত্র 1. UWB স্ট্যাক ইনিশিয়ালাইজেশন কল ফ্লো (UWB টগল চালু)

UWB স্ট্যাক ডিইনিশিয়ালাইজেশন

চিত্র 2. UWB স্ট্যাক ডিইনিশিয়ালাইজেশন কল ফ্লো (UWB টগল বন্ধ)

UWB সেশন শুরু এবং বন্ধ করুন

চিত্র 3. UWB সেশন শুরু/স্টপ প্রবাহ

UWB দেশের কোড কনফিগারেশন

চিত্র 1-এ যেমন দেখানো হয়েছে, UWB ফ্রেমওয়ার্ক UWB স্ট্যাক ইনিশিয়ালাইজেশনের সময় ভেন্ডর-স্পেস UCI কমান্ড ANDROID_SET_COUNTRY_CODE (GID= 0xC , OID= 0x1 ) ব্যবহার করে UWB কান্ট্রি কোড কনফিগার করে। UWB ফ্রেমওয়ার্ক নিম্নলিখিত উত্সগুলি ব্যবহার করে UWB দেশের কোড নির্ধারণ করার চেষ্টা করে (অগ্রাধিকার ক্রমে তালিকাভুক্ত)। UWB ফ্রেমওয়ার্ক প্রথম উৎসে থামে যেখানে দেশের কোড নির্ধারিত হয়।

  1. দেশের কোড ওভাররাইড করুন: একটি adb শেল কমান্ডের মাধ্যমে দেশের কোড বাধ্যতামূলক (স্থানীয় বা স্বয়ংক্রিয় পরীক্ষা)।
  2. টেলিফোনি দেশের কোড: দেশের কোড সেলুলার মাধ্যমে পুনরুদ্ধার করা হয়েছে। যদি একাধিক সিম থাকে যা বিভিন্ন কোড ফেরত দেয়, তাহলে নির্বাচিত দেশের কোডটি অনির্ধারিত।
  3. Wi-Fi দেশের কোড: Wi-Fi (80211.ad) এর মাধ্যমে দেশের কোড পুনরুদ্ধার করা হয়েছে।
  4. সর্বশেষ পরিচিত টেলিফোনি দেশের কোড: সর্বশেষ পরিচিত দেশের কোড সেলুলার মাধ্যমে পুনরুদ্ধার করা হয়েছে। যদি একাধিক সিম থাকে যা বিভিন্ন কোড ফেরত দেয়, তাহলে নির্বাচিত দেশের কোডটি অনির্ধারিত।
  5. অবস্থানের দেশের কোড: LocationManager ফিউজড লোকেশন প্রদানকারী থেকে দেশের কোড উদ্ধার করা হয়েছে।
  6. OEM ডিফল্ট দেশের কোড: ডিভাইস প্রস্তুতকারকের দ্বারা সেট করা দেশের কোড।

যদি UWB ফ্রেমওয়ার্ক একটি UWB দেশের কোড নির্ধারণ করতে অক্ষম হয়, তাহলে এটি DEFAULT_COUNTRY_CODE ("00") এর মান সহ ANDROID_SET_COUNTRY_CODE UCI কমান্ডকে কল করে এবং 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 স্ট্যাকের অবস্থার পরিবর্তনের দিকে নিয়ে যেতে পারে।

FIRA UCI স্পেসিফিকেশন-সংজ্ঞায়িত কমান্ড বিন্যাস

UCI নিয়ন্ত্রণ প্যাকেটের বিন্যাসের জন্য, UCI স্পেসিফিকেশনের বিভাগ 4.4.2 দেখুন।

ইন্টারফেস সংস্করণ

UCI স্পেসিফিকেশন UWB বিক্রেতাদের UCI_GET_DEVICE_INFO_RSP এবং UCI_GET_CAPS_INFO_RSP কমান্ড ব্যবহার করে ডিভাইস দ্বারা বাস্তবায়িত UCI স্ট্যাকের সংস্করণ প্রকাশ করতে দেয়। ফ্রেমওয়ার্ক ডিভাইসের UCI সংস্করণ আনতে এবং সেই অনুযায়ী এর আচরণ পরিবর্তন করতে এই কমান্ডগুলি ব্যবহার করে।

UWB মডিউল দ্বারা সমর্থিত খসড়া CR-এর তালিকা

FiRa 2.0 এর জন্য নিম্নলিখিত খসড়া CRs UWB মডিউল সংস্করণ #330810000 দ্বারা সমর্থিত:

অ্যান্ড্রয়েড UCI ইন্টারফেস (FiRa বিক্রেতা অংশ)

UCI স্পেসিফিকেশন সমস্ত স্পেসিফিকেশন-সংজ্ঞায়িত বার্তাগুলির জন্য গ্রুপ শনাক্তকারী (GID) এবং অপকোড শনাক্তকারী (OIDs) এর একটি সেট সংজ্ঞায়িত করে। স্পেসিফিকেশনটি শুধুমাত্র বিক্রেতার ব্যবহারের জন্য সংরক্ষিত GID-এর একটি সেটও সংরক্ষণ করে। AOSP UWB স্ট্যাক অ্যান্ড্রয়েড-নির্দিষ্ট কমান্ডের জন্য এই বিক্রেতা GID এবং OID গুলির মধ্যে কিছু ব্যবহার করে যা স্পেসিফিকেশনে সংজ্ঞায়িত করা হয়নি। বিস্তারিত জানার জন্য, UCI স্পেসিফিকেশনের বিভাগ 8.4 দেখুন।

Android দ্বারা ব্যবহৃত এই বিক্রেতা বার্তাগুলি android.hardware.uwb.fira_android HAL প্যাকেজে সংজ্ঞায়িত করা হয়েছে৷

বিক্রেতা ইন্টারফেস সংস্করণ

UWB বিক্রেতাদের অবশ্যই IUwbChip.getSupportedAndroidUciVersion() এর মাধ্যমে ডিভাইসে সমর্থিত android.hardware.uwb.fira_android HAL প্যাকেজের সংস্করণ প্রকাশ করতে হবে। ফ্রেমওয়ার্ক পশ্চাদগামী সামঞ্জস্যতা পরিচালনা করতে এই সংস্করণ তথ্য ব্যবহার করে।

Android GID এবং OID-এর তালিকা

নিম্নলিখিত সারণীতে Android এর জন্য GID এবং OID তালিকা রয়েছে৷ GID 0xE এবং 0xF ব্যবহার করার জন্য Android OEM-এর জন্য সংরক্ষিত।

জিআইডি ওআইডি সংজ্ঞা
ANDROID = 0xC ANDROID_GET_POWER_STATS = 0x0 UWB পাওয়ার সম্পর্কিত পরিসংখ্যান পেতে কমান্ড এবং প্রতিক্রিয়া দ্বারা ব্যবহৃত হয়। শুধুমাত্র UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY 1 এ সেট করা থাকলেই সমর্থিত।
ANDROID_SET_COUNTRY_CODE = 0x1

বর্তমান নিয়ন্ত্রক দেশের কোড সেট করতে ব্যবহৃত হয় (সিম বা ওয়াই-ফাই ব্যবহার করে নির্ধারিত, বা OEM দ্বারা হার্ডকোড করা)। দেশের কোডটি ISO-3166 দেশের কোডের সাথে সঙ্গতিপূর্ণ 2 বাইট মান হিসাবে পাঠানো হয়। দেশের কোড অজানা তা বোঝাতে 00 এর মান ব্যবহার করা হয়।

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]

APP_CONFIG এ TLV-এর বিক্রেতা সংরক্ষিত অংশে AOSP স্ট্যাক দ্বারা সংজ্ঞায়িত টাইপ দৈর্ঘ্যের মান (TLVs) নিম্নলিখিতগুলি রয়েছে:

  • 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 1 এর মান সহ SUPPORTED_DIAGNOSTICS প্রদান করে যা নির্দেশ করে যে ডায়াগনস্টিক রিপোর্টিং বৈশিষ্ট্য সমর্থিত।

মান:

  • 1 : বৈশিষ্ট্য সক্রিয়
  • 0 : বৈশিষ্ট্য নিষ্ক্রিয়

DIAGRAMS_FRAME_REPORTS_FIELDS 1 বা 4 0xE9 2

ডায়াগনস্টিক রিপোর্টিং কনফিগার করতে 1-বাইট বা 4-বাইট বিটমাস্ক। এই বিটমাস্কটি Android 14 বা উচ্চতর সংস্করণে 1 বাইট এবং Android 13 বা তার নিচের সংস্করণে 4 বাইট।

এই প্যারামিটারটি তখনই কনফিগার করুন যখন CORE_GET_CAPS_INFO_RSP 1 এর মান সহ SUPPORTED_DIAGNOSTICS প্রদান করে যা নির্দেশ করে যে ডায়াগনস্টিক রিপোর্টিং বৈশিষ্ট্যটি সমর্থিত।

বিট সংজ্ঞা:

  • b0 (0x01) : RSSI ক্ষেত্র সক্রিয় করুন
  • b1 (0x02) : AoA ক্ষেত্র সক্রিয় করুন
  • b2 (0x04) : CIR ক্ষেত্র সক্রিয় করুন

CORE_GET_CAPS_INFO_RSP

CAPS_INFO তে TLV-এর বিক্রেতা সংরক্ষিত অংশে AOSP স্ট্যাক দ্বারা সংজ্ঞায়িত TLVগুলি হল:

  • GID: 0000b (UWB কোর গ্রুপ)
  • OID: 000011b ( CORE_GET_CAPS_INFO_RSP )

নিম্নলিখিত টেবিলটি UWB সক্ষমতা বার্তাগুলির জন্য পরামিতিগুলি তালিকাভুক্ত করে৷

পরামিতি নাম দৈর্ঘ্য
(অক্টেট)
ট্যাগ
(আইডি)
বিক্রেতা ইন্টারফেস সংস্করণ বর্ণনা
SUPPORTED_POWER_STATS_QUERY 1 0xC0 1

1 বাইট মান পাওয়ার পরিসংখ্যান প্রশ্নের জন্য সমর্থন নির্দেশ করে।

মান:

  • 1 : বৈশিষ্ট্য সমর্থিত
  • 0 : বৈশিষ্ট্য সমর্থিত নয়
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING 1 0xE3 1

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 মান নির্দেশ করে। বিটমাস্ক যেখানে প্রতিটি বিট SET_APP_CFG_CMDRANGE_DATA_NTF_CONFIG এ ব্যবহৃত মানের সাথে মিলে যায়।
SUPPORTED_RSSI_REPORTING 1 0xE6 2

1 বাইট মান 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 সমর্থন করে এমন চ্যানেলগুলি নির্দেশ করতে 2 বাইট বিটমাস্ক। বিটমাস্কের প্রতিটি 1 একটি নির্দিষ্ট UWB চ্যানেলের সাথে মিলে যায়।

মান:

  • 0x01 : চ্যানেল 5 সমর্থিত
  • 0x02 : চ্যানেল 6 সমর্থিত
  • 0x04 : চ্যানেল 8 সমর্থিত
  • 0x08 : চ্যানেল 9 সমর্থিত
  • 0x10 : চ্যানেল 10 সমর্থিত
  • 0x20 : চ্যানেল 12 সমর্থিত
  • 0x40 : চ্যানেল 13 সমর্থিত
  • 0x80 : চ্যানেল 14 সমর্থিত

স্ট্যাটাস কোড

নিম্নলিখিত বিক্রেতা স্থান স্ট্যাটাস কোড. এগুলি 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 এ রাজ্য পরিবর্তনের কারণ কোড

SESSION_STATUS_NTF এ UWBS দ্বারা প্রত্যাবর্তিত স্ট্যাটাস ক্ষেত্রের জন্য ভেন্ডর স্পেসে সংজ্ঞায়িত রাষ্ট্র পরিবর্তনের কারণ কোডগুলি নিম্নরূপ। এই বিজ্ঞপ্তিটি 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 অক্ষম করতে হবে।