শ্রবণযোগ্য নিয়ন্ত্রণ
ফাস্ট পেয়ার-এর হিয়ারেবল কন্ট্রোলস-এর লক্ষ্য হলো অ্যান্ড্রয়েডের গুরুত্বপূর্ণ হিয়ারেবল ফিচারগুলোর জন্য আরও উন্নত অ্যাক্সেস কন্ট্রোল প্রদান করা। এই উদ্দেশ্য পূরণের জন্য মেসেজ স্ট্রিম-এর ভেতরে একটি নতুন মেসেজ গ্রুপ ‘হিয়ারেবল কন্ট্রোলস’ যুক্ত করা হয়েছে।
| বার্তা গ্রুপের নাম | মূল্য |
|---|---|
| শ্রবণযোগ্য নিয়ন্ত্রণ | ০x০৮ |
সক্রিয় শব্দ নিয়ন্ত্রণ
প্রিমিয়াম হেডফোনগুলির জন্য অ্যাক্টিভ নয়েজ কন্ট্রোল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হয়ে উঠছে। সিকার (Seeker) প্রান্তে, স্টেট সেট, গেট এবং সেভ করার জন্য ফাস্ট পেয়ার (Fast Pair)-এর ইউআই (UI) এবং লজিক থাকবে, এবং স্টেটটি প্রোভাইডার (Provider) প্রান্তে সংরক্ষিত হবে। ইভেন্ট স্ট্রিম সংযুক্ত হলে প্রোভাইডারের জন্য সেশন ননস (Session Nonce) পাঠানো বাধ্যতামূলক। এটি অর্জন করার জন্য, নিম্নলিখিত মেসেজ কোডগুলি সংজ্ঞায়িত করা হয়েছে:
| বার্তার কোড নাম | মূল্য | প্রেরক | উত্তরদাতা | ম্যাক | ACK |
|---|---|---|---|---|---|
| এএনসি রাজ্য পান | ০x১১ | অনুসন্ধানকারী | সরবরাহকারী | এন | এন |
| এএনসি রাষ্ট্র নির্ধারণ করুন | ০x১২ | অনুসন্ধানকারী | সরবরাহকারী | ওয়াই | ওয়াই |
| এএনসি রাজ্যকে অবহিত করুন | ০x১৩ | সরবরাহকারী | অনুসন্ধানকারী | এন | এন |
যখন কোনো সিকার কোনো প্রোভাইডারের সাথে সংযোগ স্থাপন করে, অথবা যখন কোনো প্রোভাইডার একটি "Get ANC state" বার্তা গ্রহণ করে, তখন প্রোভাইডারটি তার ANC সক্ষমতা এবং সংরক্ষিত অবস্থা সম্পর্কে সিকারকে জানানোর জন্য ANC অবস্থাটি নোটিফাই করতে পারে। বার্তাটি নিম্নরূপ:
| বাইট | ডেটা টাইপ | বর্ণনা | মূল্য |
|---|---|---|---|
| ০ | uint8 | শ্রবণযোগ্য নিয়ন্ত্রণ | ০x০৮ |
| ১ | uint8 | এএনসি রাজ্যকে অবহিত করুন | ০x১৩ |
| ২ - ৩ | uint16 | অতিরিক্ত ডেটার দৈর্ঘ্য | ০x০৪ |
| ৪ - ৭ | এএনসি নিয়ন্ত্রণ ডেটা | বিভিন্ন |
এএনসি নিয়ন্ত্রণ ডেটা
| বাইট | ডেটা টাইপ | বর্ণনা | মূল্য |
|---|---|---|---|
| ০ | uint8 | সংস্করণ কোড | পরিবর্তনশীল , এই সংস্করণের জন্য 0x02 |
| ১ | পতাকা | UI টগল প্রতিটি মোড তার ফ্ল্যাগ বিটের মান অনুসারে সক্রিয় (1) বা নিষ্ক্রিয় (0) হয়, নিম্নরূপ: বিট ০ (MSB): স্বচ্ছ বিট ১: অভিযোজিত (অথবা সমর্থিত না হলে ০) বিট ২: বন্ধ বিট ৩: সংরক্ষিত (বিটটিকে ০-তে সেট করুন) বিট ৪: এএনসি | বিভিন্ন |
| ২ | পতাকা | সেটযোগ্য টগল উপরে উল্লিখিত UI টগল বিটগুলোর যেকোনো একটি বা সবগুলো এখানেও সেট করা যেতে পারে, যা নির্দেশ করবে বর্তমানে কোনটি সক্রিয় আছে। | বিভিন্ন |
| ৩ | পতাকা | বর্তমান অবস্থা কেবলমাত্র একটি বিট সেট করা যাবে এবং এই বাইটের মান অবশ্যই অশূন্য হতে হবে। | বিভিন্ন |
সিকারটি এএনসি কন্ট্রোল ডেটা অনুযায়ী টগল ইউআই প্রদর্শন করবে।
উদাহরণ ১: প্রোভাইডারটি ৩-ওয়ে এএনসি সমর্থন করে: ট্রান্সপারেন্ট - অফ - এএনসি এবং বাডগুলো মাথায় লাগানো আছে, এখন সব মোড সেট করা যায়, এবং বর্তমান অবস্থা হলো অফ:
| বাইট | ডেটা টাইপ | বর্ণনা | মূল্য |
|---|---|---|---|
| ০ | uint8 | সংস্করণ কোড | ০x০২ |
| ১ | পতাকা | UI টগল | 0b10101000 |
| ২ | পতাকা | সেটযোগ্য টগল | 0b10101000 |
| ৩ | পতাকা | বর্তমান অবস্থা | 0b00100000 |
উদাহরণ ২: প্রোভাইডারটি ৩-ওয়ে এএনসি সমর্থন করে: ট্রান্সপারেন্ট - অফ - এএনসি, এখন মাথায় কেবল একটি বাড লাগানো আছে অথবা কোনো বাডই লাগানো নেই, তাই কোনো মোড সেট করা যায় না, এবং বর্তমান অবস্থাটি হলো অফ:
| বাইট | ডেটা টাইপ | বর্ণনা | মূল্য |
|---|---|---|---|
| ০ | uint8 | সংস্করণ কোড | ০x০২ |
| ১ | পতাকা | UI টগল | 0b10101000 |
| ২ | পতাকা | সেটযোগ্য টগল | 0b00000000 |
| ৩ | পতাকা | বর্তমান অবস্থা | 0b00100000 |
যদি ব্যবহারকারী টগলটি পরিবর্তন করে, তাহলে সিকার প্রোভাইডারের কাছে বর্তমান অবস্থাটি নিম্নরূপভাবে সেট করবে:
| বাইট | ডেটা টাইপ | বর্ণনা | মূল্য |
|---|---|---|---|
| ০ | uint8 | শ্রবণযোগ্য নিয়ন্ত্রণ | ০x০৮ |
| ১ | uint8 | এএনসি রাষ্ট্র নির্ধারণ করুন | ০x১২ |
| ২ - ৩ | uint16 | অতিরিক্ত ডেটার দৈর্ঘ্য | পরিবর্তনশীল , 0x04 অথবা 0x14 |
| ৪ | uint8 | অনুসন্ধানকারী সংস্করণ কোড | পরিবর্তনশীল , 0x01 অথবা 0x02 |
| ৫ | পতাকা | এএনসি সেটযোগ্য মোড (ইউআই টগল) | বিভিন্ন |
| ৬ | পতাকা | এএনসি সক্রিয় মোড (সেটযোগ্য টগল) | বিভিন্ন |
| ৭ | পতাকা | নতুন এএনসি মোড সূচক (নতুন অবস্থা) | বিভিন্ন |
| ৮ - ২৩ | সংরক্ষিত | বিভিন্ন |
বাইট ৪ থেকে ৭ হলো সিকার সাইড থেকে পাঠানো এএনসি কন্ট্রোল ডেটা । যদি অতিরিক্ত দৈর্ঘ্যের মান 0x14 হিসেবে সেট করা হয়, তাহলে সংরক্ষিত বাইট ৮-২৩ উপস্থিত থাকবে এবং এই বাইটগুলো গ্রহণ করার পর প্রোভাইডারের উচিত সেগুলোকে উপেক্ষা করা। যদি অতিরিক্ত দৈর্ঘ্যের মান 0x04 হিসেবে সেট করা হয়, তাহলে কোনো সংরক্ষিত বাইট উপস্থিত থাকে না।
যখন কোনো প্রোভাইডার "সেট এএনসি স্টেট" মেসেজ পায়, তখন তার উচিত মেসেজটি অ্যাকনলেজ করা এবং সংযুক্ত সকল সিকারকে এএনসি স্টেট সম্পর্কে অবহিত করা। যদি ব্যবহারকারী হেডসেট জেসচার বা কম্প্যানিয়ন অ্যাপ্লিকেশনের মাধ্যমে সেটিংটি পরিবর্তন করেন, তাহলেও প্রোভাইডারের উচিত সংযুক্ত সকল সিকারকে নোটিফিকেশন পাঠানো।
উদাহরণ ৩: প্রোভাইডারটি ৪-ওয়ে এএনসি সমর্থন করে: ট্রান্সপারেন্ট - অ্যাডাপ্টিভ - অফ - এএনসি, বাডগুলো মাথায় লাগানো আছে, এখন সব মোড সেট করা যায়, এবং বর্তমান অবস্থা হলো অ্যাডাপ্টিভ:
| বাইট | ডেটা টাইপ | বর্ণনা | মূল্য |
|---|---|---|---|
| ০ | uint8 | সংস্করণ কোড | ০x০২ |
| ১ | পতাকা | UI টগল | 0b11101000 |
| ২ | পতাকা | সেটযোগ্য টগল | 0b11101000 |
| ৩ | পতাকা | বর্তমান অবস্থা | 0b01000000 |