অডিও সুইচ
যেহেতু ব্যবহারকারীরা তাদের দৈনন্দিন কাজগুলি সম্পাদন করার জন্য একাধিক অডিও সোর্স ডিভাইসগুলিকে ক্রমবর্ধমানভাবে ব্যবহার করছেন, ডিভাইস জুড়ে হেডসেট ব্যবহার পরিচালনা করার জন্য একটি সহজ সমাধানের জন্য ক্রমবর্ধমান চাহিদা রয়েছে। অডিও সুইচ ব্যবহারকারীর কার্যকলাপের উপর ভিত্তি করে ডিভাইসগুলির মধ্যে হেডসেট সংযোগগুলিকে ট্রানজিশন করে (যেমন একটি চলচ্চিত্র শুরু করা) এবং অগ্রাধিকারপ্রাপ্ত ইভেন্টগুলি (যেমন একটি ইনকামিং কল)।
ইউএক্স নীতি
- সংযোগ স্যুইচিং দ্রুত এবং ব্যবহারকারীর কর্মের উপর ভিত্তি করে হওয়া উচিত।
- সংযোগ স্যুইচিং ব্যবহারকারীদের কাছে স্বচ্ছ হওয়া উচিত, ব্যবহারকারীদের সুইচিং অবাঞ্ছিত হলে নিয়ন্ত্রণ/প্রত্যাবর্তন করার অনুমতি দেয়।
- স্যুইচিং ব্যবহারকারীর গোপনীয়তাকে সম্মান করা উচিত।
ভূমিকা
অডিও সুইচ সিকার : সিকার হল একটি অডিও সোর্স ডিভাইস (উদাহরণস্বরূপ, একটি ফোন বা ট্যাবলেট), যখন প্রযোজ্য তখন সংযোগ করার জন্য কাছাকাছি একটি হেডসেট খুঁজছে।
অডিও স্যুইচ প্রদানকারী : প্রদানকারী সাধারণত একটি হেডসেট যা তার উপস্থিতি এবং সংযোগের অবস্থার বিজ্ঞাপন দেয় যাতে স্যুইচিং সিদ্ধান্ত নেওয়া যায়।
প্রয়োজনীয়তা ওভারভিউ
স্মার্ট সুইচিং অর্জন করতে, প্রদানকারীদের অবশ্যই নিম্নলিখিত প্রয়োজনীয়তাগুলি মেনে চলতে হবে:
নাম | বর্ণনা | প্রয়োজনীয়তা | বাধ্যতামূলক? |
---|---|---|---|
পৃষ্ঠা স্ক্যান | একটি বিদ্যমান সংযোগ থাকাকালীন অন্য অনুসন্ধানকারীর কাছ থেকে একটি নতুন সংযোগের অনুরোধ গ্রহণ করতে। একক-পয়েন্ট প্রদানকারীদের জন্য:
| কর্মক্ষমতা উন্নত করার জন্য নিম্ন লেটেন্সি পেজ স্ক্যান মোড (স্ক্যানের ব্যবধান 640 ms এর বেশি হওয়া উচিত নয়) প্রয়োজন৷ ব্যাটারি লাইফ এবং স্যুইচিং পারফরম্যান্সের মধ্যে একটি ট্রেড-অফ করতে, প্রদানকারীর বেশিরভাগ ক্ষেত্রে একটি ডিফল্ট পৃষ্ঠা স্ক্যান মোড থাকতে পারে (লো-পাওয়ার মোড, স্ক্যানের ব্যবধান 1280 ms এর বেশি হওয়া উচিত নয়)৷ কিন্তু নিম্নোক্ত পরিস্থিতিতে লো লেটেন্সি মোড ব্যবহার করা আবশ্যক:
| বাধ্যতামূলক |
সংযোগের ইতিহাস | পূর্ববর্তী সংযোগে ফিরে যেতে এবং প্রযোজ্য হলে খেলা পুনরায় শুরু করতে। মেসেজ স্ট্রীম API-এর মাধ্যমে যোগাযোগের মাধ্যমে ফিরে যাওয়া শুরু হবে। প্রযোজ্য হলে বাজানো পুনরায় শুরু করার জন্য বিরতি দেওয়া অডিও ইভেন্ট রেকর্ডে অন্তর্ভুক্ত করা উচিত। | সংযোগের ইতিহাস বজায় রাখুন এবং মেসেজ স্ট্রিম এপিআই প্রয়োগ করুন। | বাধ্যতামূলক |
সংযোগের অবস্থা | কানেকশন স্যুইচিং বিচার করার জন্য অনুসন্ধানকারীদের জন্য। সংযোগের অবস্থার মধ্যে রয়েছে:
| BLE বিজ্ঞাপন এবং বার্তা প্রবাহে সংযোগের অবস্থা অন্তর্ভুক্ত করুন। | বাধ্যতামূলক |
রানটাইম ক্ষমতা পরিবর্তন | প্রোভাইডারে ফার্মওয়্যার আপগ্রেড করে অডিও সুইচ সক্ষম করা যেতে পারে, তাই রানটাইমে সিকার এবং প্রোভাইডারের মধ্যে সক্ষমতাগুলি সিঙ্ক্রোনাইজ করা প্রয়োজন৷ | রানটাইম ক্ষমতা অ্যাক্সেস করতে মেসেজ স্ট্রিম এপিআই প্রয়োগ করুন। | বাধ্যতামূলক |
কনফিগারযোগ্য সুইচিং নিয়ম | ব্যবহারকারীর পছন্দ সেটিংসের মাধ্যমে বিদ্যমান সক্রিয় অডিও স্ট্রিমিং এবং নতুন অডিও স্ট্রিমিং অনুরোধের মধ্যে অগ্রাধিকার কনফিগার করুন। উদাহরণস্বরূপ, অডিও সুইচ সিকার ব্যবহারকারীদের মিডিয়া স্ট্রিমিং এবং কলিং এর মধ্যে স্বয়ংক্রিয় স্যুইচিং সক্ষম/অক্ষম করার জন্য UI সেটিংস প্রদান করতে পারে। অডিও সুইচ সিকার সেট করবে এবং মেসেজ স্ট্রীমের মাধ্যমে সুইচিং নিয়ম পাবে। | শুধুমাত্র মাল্টিপয়েন্ট প্রদানকারী. সংযুক্ত ডিভাইসগুলির মধ্যে পরিবর্তন করার নিয়মগুলি কনফিগারযোগ্য করতে বার্তা স্ট্রীম APIগুলি প্রয়োগ করুন৷ | ঐচ্ছিক |
সক্রিয় ডিভাইস স্যুইচিং | অডিও সুইচ সিকারকে সংযুক্ত ডিভাইসগুলির মধ্যে অডিও স্যুইচিং অনুকরণ করতে দিন। অডিও সুইচ সিকার সাইডে, ব্যবহারকারীদের সহজেই সংযুক্ত ডিভাইসগুলির মধ্যে স্যুইচ করার জন্য একটি UI থাকতে পারে৷ | শুধুমাত্র মাল্টিপয়েন্ট প্রদানকারী. সংযুক্ত ডিভাইসগুলির মধ্যে সক্রিয় অডিও উত্স নির্ধারণ করতে অডিও সুইচ সিকারের জন্য বার্তা স্ট্রীম APIগুলি প্রয়োগ করুন৷ | বাধ্যতামূলক |
মাল্টিপয়েন্ট সুইচিং বিজ্ঞপ্তি | অডিও সুইচ সিকারকে সুইচিং বিজ্ঞপ্তি দেখাতে দিন। | শুধুমাত্র মাল্টিপয়েন্ট প্রদানকারী. যখন একটি মাল্টিপয়েন্ট স্যুইচিং হচ্ছে তখন সংযুক্ত অডিও সুইচ সিকারদের জানানোর জন্য মেসেজ স্ট্রীম এপিআই প্রয়োগ করুন। | বাধ্যতামূলক |
বিজ্ঞাপন পেলোড
প্রদানকারী বিজ্ঞাপনে তার বর্তমান সংযোগের অবস্থা অন্তর্ভুক্ত করবে, বিজ্ঞাপনে বর্ণিত ফাস্ট পেয়ার অ্যাকাউন্ট ডেটার উপরে নির্মিত: যখন আবিষ্কার করা যায় না ।
মনে রাখবেন যে টেবিল 4.2 এর সংস্করণটি 0x1।
সংযোগ স্থিতি ক্ষেত্র
অক্টেট | ডেটা টাইপ | বর্ণনা | মান | বাধ্যতামূলক? |
---|---|---|---|---|
0 | uint8 | ক্ষেত্রের দৈর্ঘ্য এবং প্রকার 0bLLLLTTTT
| 0bLLLL0101
| বাধ্যতামূলক |
1 | uint8 | সংযোগের অবস্থা 0bHAFRSSSS
| 0bHAFRSSSS
| বাধ্যতামূলক |
2 | uint8 | কাস্টম ডেটা বর্তমানে, এটিতে শুধুমাত্র সামগ্রীর ধরন রয়েছে যা বর্তমান অডিও স্ট্রিমিংয়ের ব্যবহার বর্ণনা করতে ব্যবহৃত হয়। অনুসন্ধানকারী এটি প্রদানকারীর কাছে পাঠাবে। | মানটি বর্তমান সক্রিয় স্ট্রিমিংয়ের সন্ধানকারীর কাছ থেকে বার্তা স্ট্রিমের মাধ্যমে সরবরাহকারীকে পাঠানো হয়। 0 যদি বর্তমান সক্রিয় স্ট্রিমিং সিকার থেকে না হয়। | বাধ্যতামূলক |
3 - var | সংযুক্ত ডিভাইস বিটম্যাপ বর্তমানে কোন ডিভাইসগুলি প্রদানকারীর সাথে সংযুক্ত রয়েছে তা দেখানোর জন্য একটি বিটম্যাপ৷ সমস্ত বন্ডেড ডিভাইস ক্রমানুসারে সাজানো হয়, একটি বন্ডেড ডিভাইসের জন্য এক বিট। সরবরাহকারীর কতগুলি বন্ডেড ডিভাইস রয়েছে তার উপর দৈর্ঘ্য নির্ভর করবে। | ম্যাপ করা বিটটি 1 এ সেট করা হয়েছে যদি ডিভাইসটি বর্তমানে প্রদানকারীর সাথে সংযুক্ত থাকে, অন্যথায় 0। বিস্তারিত জানার জন্য সংযুক্ত ডিভাইস বিটম্যাপ দেখুন | ঐচ্ছিক |
সারণি 4.1: সংযোগ স্থিতি ক্ষেত্র কাঁচা ডেটা
সংযোগ পতাকা
0bH = মাথা সনাক্তকরণের উপর
- 1, এখন মাথায়
- 0, অন্যথায়, মাথায় নয় বা কোন OHD সেন্সর নেই
0bA = সংযোগ উপলব্ধতা
- 1, একটি উপলব্ধ সংযোগ আছে
- 0, অন্যথায়
0bF = ফোকাস মোড
- 1, এখন ফোকাস মোডে, মিডিয়া ব্যবহারের জন্য সংযোগ স্যুইচিং অনুমোদিত নয়, অর্থাৎ A2DP থেকে A2DP সুইচিং নেই
- 0, অন্যথায়
0bR = স্বয়ংক্রিয়-পুনঃসংযোগ
- 1, যদি বর্তমান সংযোগটি প্রদানকারীর দ্বারা স্বয়ংক্রিয়-পুনঃসংযোগ করা হয়, যার অর্থ এটি ব্যবহারকারীদের দ্বারা সংযুক্ত নয় (মাল্টিপয়েন্টের জন্য, যদি বিদ্যমান সংযোগগুলির মধ্যে একটি স্বয়ংক্রিয়-পুনঃসংযোগ করা হয় তবে এটি 1 এ সেট করা উচিত)
- 0, অন্যথায়
সংযোগের অবস্থা
- 0x0: কোন সংযোগ নেই
- 0x1: পেজিং
- 0x2: সংযুক্ত কিন্তু কোন তথ্য স্থানান্তর করা হয় না
- 0x3: অ-অডিও ডেটা স্থানান্তর (শুধুমাত্র যখন পরিবর্তনযোগ্য, যদি না হয়, 0xF ব্যবহার করে)
- 0x4: A2DP স্ট্রিমিং, AVRCP প্রযোজ্য নয়
- 0x5: A2DP স্ট্রিমিং এবং AVRCP বাজানো
- 0x6: এইচএফপি (ফোন/ভিওআইপি কল) স্ট্রিমিং, ইনব্যান্ড এবং নন-ইনব্যান্ড রিংটোন সহ
- 0x7: LE অডিও - নিয়ন্ত্রণ ছাড়া মিডিয়া স্ট্রিমিং
- 0x8: LE অডিও - নিয়ন্ত্রণ সহ মিডিয়া স্ট্রিমিং
- 0x9: LE অডিও - কল স্ট্রিমিং
- 0xA: LE অডিও - সম্প্রচার
- 0xF: সাময়িকভাবে সংযোগ সুইচ অক্ষম করুন (যেমন ফার্মওয়্যার আপডেট)
LE অডিও প্রসঙ্গের ধরন এবং সংযোগের অবস্থা
LE অডিও প্রদানকারীকে সুপারিশ করা উচিত যে নির্ধারিত সংখ্যা 6.12.3 -এ উল্লেখিত সমস্ত প্রসঙ্গ প্রকারগুলি পরিচালনা করা উচিত (যদি না প্রদানকারী স্পষ্টভাবে একটি প্রদত্ত প্রসঙ্গ টাইপ সমর্থন না করে) এবং নীচের মতো সংযোগ অবস্থায় প্রসঙ্গ প্রকারকে ম্যাপ করুন৷
- কথোপকথন: 0x9
- মিডিয়া: 0x8
- খেলা: 0x7
- নির্দেশনামূলক: 0x7
- ভয়েস সহকারী: 0x9
- লাইভ: 0x9
- সাউন্ড এফেক্ট: 0x2
- বিজ্ঞপ্তি: 0x2
- রিংটোন: 0x9
- সতর্কতা: 0x7
- জরুরী অ্যালার্ম: 0x9
মিশ্রিত LE অডিও প্রসঙ্গ টাইপ দৃশ্যের জন্য যেমন কল চলাকালীন মিডিয়া প্লে করা, প্রদানকারী সর্বোচ্চ অগ্রাধিকার সহ সংযোগ অবস্থা ব্যবহার করবে, অর্থাৎ উপরের দৃশ্যের জন্য 0x8 (মিডিয়া) এর পরিবর্তে 0x9 (কল) ব্যবহার করবে।
সংযুক্ত ডিভাইস বিটম্যাপ
অবাঞ্ছিত সংযোগ পরিবর্তন এড়াতে, অনুসন্ধানকারীকে জানার প্রয়োজন হতে পারে যে হেডসেটটি বর্তমানে কোন ডিভাইসের সাথে সংযুক্ত রয়েছে৷ উদাহরণস্বরূপ, যখন হেডসেটটি ফোনের সাথে সংযুক্ত থাকে, তখন ব্যবহারকারী তাদের পরিবারের সদস্যদের মধ্যে কেউ ট্যাবলেটে YouTube চালু করলে সংযোগ স্যুইচিং দ্বারা বাধাগ্রস্ত হতে চান না৷
মনে রাখবেন যে এই বিটম্যাপটি বেনামী, অনুসন্ধানকারী জানতে অক্ষম যে অন্যান্য ডিভাইসগুলি প্রদানকারীর সাথে বন্ধন রয়েছে৷ উদাহরণস্বরূপ, 5টি বন্ডেড ডিভাইস নিন:
- 0: ল্যাপটপ (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: ট্যাবলেট (0b000x0000)
- 4: টিভি (0b0000x000)
যদি বর্তমান সংযুক্ত ডিভাইসগুলি একটি ল্যাপটপ এবং একটি ট্যাবলেট হয়, তাহলে বিটম্যাপের মান হবে 0b10010000৷ অর্ডার পরিবর্তন গ্রহণযোগ্য যদি এটি অনিবার্য হয়, যেমন যখন ব্যবহারকারীরা হেডসেট ফ্যাক্টরি রিসেট করে বা যখন বন্ডেড ডিভাইসের সংখ্যা উপরের সীমাতে পৌঁছে যায়।
এলোমেলো সমাধানযোগ্য বিজ্ঞাপন
ট্র্যাকিং এড়াতে এবং ব্যবহারকারীর গোপনীয়তাকে সম্মান করতে, প্রদানকারীকে AES-CTR ব্যবহার করে অ্যাকাউন্ট কী দ্বারা ক্ষেত্রটি ঘোরানো এবং এনক্রিপ্ট করা উচিত:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
যেখানে
কী ব্যবহার করা অ্যাকাউন্ট কী থেকে উদ্ভূত হয়েছে, যা পরবর্তী বিভাগে সংজ্ঞায়িত করা হয়েছে।
SHA-256 হ্যাশ ফাংশন ব্যবহার করে HKDF ফাংশন, IETF RFC 5869 দ্বারা কী তৈরি করা হয়।
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
প্রদানকারী এখানে মূল অ্যাকাউন্ট কী ব্যবহার করবে, অর্থাৎ কীটির প্রথম বাইট হল 0x04, ব্যবহারের প্যাটার্নে অন্তর্ভুক্ত নয়।
IV (প্রাথমিক ভেক্টর) হল শূন্য প্যাডিং সহ অ্যাকাউন্ট কী ডেটার 2-বাইট সল্ট, অর্থাৎ IV হল কনক্যাট(লবণ, 14-বাইট জিরো)।
সংযোগের স্থিতির কাঁচা ডেটা সারণি 4.1 এ সংজ্ঞায়িত করা হয়েছে, যদি সংযোগের স্থিতি পরিবর্তিত হয়, একই বিজ্ঞাপনের সময় ফ্রেমে লবণ এবং RPA পুনরায় তৈরি করা উচিত।
এটি এনক্রিপ্ট করা সংযোগ স্থিতি ক্ষেত্রটিকে একই সময়ে ঘোরাতে সাহায্য করে যেমন অ্যাকাউন্ট কী ডেটা ঘোরে৷
BLE বিজ্ঞাপনটি নিম্নরূপ গঠন করা হবে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান | বাধ্যতামূলক? |
---|---|---|---|---|
0 | uint8 | সংস্করণ এবং পতাকা | 0x10 | বাধ্যতামূলক |
1 - টি | অ্যাকাউন্ট কী ডেটা | পরিবর্তিত হয় | বাধ্যতামূলক | |
t+1 - s | ব্যাটারি ডেটা | পরিবর্তিত হয় | ঐচ্ছিক | |
s+1 - var | এলোমেলো সমাধানযোগ্য ডেটা | পরিবর্তিত হয় | অ্যাকাউন্ট কী তালিকা খালি না থাকলে বাধ্যতামূলক, অন্যথায় বাদ। |
সারণি 4.2: এলোমেলো সমাধানযোগ্য ডেটা সহ BLE বিজ্ঞাপন
এলোমেলো সমাধানযোগ্য ডেটা রয়েছে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান | বাধ্যতামূলক? |
---|---|---|---|---|
0 | uint8 | ক্ষেত্রের দৈর্ঘ্য এবং প্রকার 0bLLLLTTTT
| 0bLLLL0110
| বাধ্যতামূলক |
1 - var | এনক্রিপ্ট করা ডেটা | পরিবর্তিত হয় | বাধ্যতামূলক |
সারণি 4.2.1: এলোমেলো সমাধানযোগ্য ডেটা
উদাহরণ হিসাবে, যদি র্যান্ডম সমাধানযোগ্য ডেটাতে একটি এনক্রিপ্ট করা সংযোগ স্থিতি ক্ষেত্র থাকে, ডিক্রিপ্ট করা ফলাফলটি সংযোগ স্থিতি ক্ষেত্র হবে।
টেম্পারিং প্রতিরোধ করার জন্য, বিজ্ঞাপনে র্যান্ডম রিসোলভেবল ডেটা অন্তর্ভুক্ত করার সময় উপরের অ্যাকাউন্ট কী ডেটা সামান্য পরিবর্তন করা উচিত। সাধারণত, অ্যাকাউন্ট কী ফিল্টার তৈরি করার সময়, একটি লবণের সাথে অ্যাকাউন্ট কী ফিল্টারকে একত্রিত করে একটি মান V তৈরি করা হয়। পরিবর্তে, যখন র্যান্ডম মীমাংসাযোগ্য ডেটাও বিজ্ঞাপন দেওয়া হয়, তখন মান V এইভাবে তৈরি করা উচিত:
V = concat(account_key, salt, random_resolvable_data)
যদি ব্যাটারি ডেটা এবং র্যান্ডম মীমাংসাযোগ্য ডেটা উভয়েরই বিজ্ঞাপন দেওয়া হয়, তাহলে V এইভাবে তৈরি করা উচিত:
V = concat(account_key, salt, battery_data, random_resolvable_data)
অ্যাকাউন্ট কী ব্যবহার করুন
সংযোগ স্যুইচিং অ্যাকাউন্ট-ভিত্তিক, তাই প্রদানকারীর উচিত BLE বিজ্ঞাপনে বর্তমান সংযোগের অ্যাকাউন্টের তথ্য অন্তর্ভুক্ত করা। যদি বর্তমান সংযুক্ত ডিভাইসটি একটি অডিও সুইচ সিকার হয়, তাহলে প্রদানকারীকে এই অনুসন্ধানকারীর সাথে সম্পর্কিত অ্যাকাউন্ট কী পেতে সক্ষম হতে হবে এবং সংযোগ স্থিতি ক্ষেত্রটি এনক্রিপ্ট করতে এই অ্যাকাউন্ট কীটি ব্যবহার করতে হবে৷ যদি সংযুক্ত অডিও উৎসটি অ-অডিও সুইচ সিকার হয়, তাহলে প্রদানকারীর অতি সম্প্রতি ব্যবহৃত অ্যাকাউন্ট কী ব্যবহার করা উচিত।
অ্যাকাউন্ট কী ফিল্টার কম্পিউট করার আগে, প্রদানকারীকে অ্যাকাউন্ট কীগুলির প্রথম বাইট পরিবর্তন করতে হবে যাতে ব্যবহার প্যাটার্নে নিম্নলিখিতগুলির মধ্যে একটি অন্তর্ভুক্ত করা যায়:
- 0b00000100
এই অ্যাকাউন্ট কী ব্যবহার করা হচ্ছে না।
এটি ডিফল্ট ( অ্যাকাউন্ট কী দেখুন)। - 0b00000101
এই অ্যাকাউন্ট কীটি সবচেয়ে সাম্প্রতিক ব্যবহৃত অ্যাকাউন্ট কী।
সংযোগ স্থিতি ক্ষেত্র এই অ্যাকাউন্ট কী দ্বারা এনক্রিপ্ট করা হয়. বর্তমান সংযোগের অবস্থার কোনো অ্যাকাউন্ট কী তথ্য নেই, এর অর্থ হতে পারে কোনো ডিভাইস সংযুক্ত নেই বা সংযুক্ত ডিভাইসটি কোনো অডিও সুইচ অনুসন্ধানকারী নয়। - 0b00000110
এই অ্যাকাউন্ট কীটি ব্যবহার করা অ্যাকাউন্ট কী।
সংযোগ স্থিতি ক্ষেত্রটি এই অ্যাকাউন্ট কী দ্বারা এনক্রিপ্ট করা হয়েছে, এবং বর্তমান সংযুক্ত ডিভাইসটি এই অ্যাকাউন্ট কীটির সাথে যুক্ত।
অডিও সুইচ পেলোডের জন্য পরিকল্পিত
নীচের চিত্রটি অডিও সুইচ পেলোডের জন্য পরিকল্পিত দেখায়।
বার্তা
সংযুক্ত থাকাকালীন, অনুসন্ধানকারী এবং প্রদানকারী অডিও সুইচ ক্ষমতা সিঙ্ক করতে, একটি সংযোগ সুইচ ট্রিগার করতে, স্যুইচিং পছন্দ সেট করতে এবং পেতে, সংযোগের স্থিতি জানাতে এবং আরও অনেক কিছু করতে বার্তা স্ট্রীম ব্যবহার করতে পারে। আমরা নীচের মত অডিও সুইচের জন্য নির্দিষ্ট একটি বার্তা গ্রুপ এবং বার্তা কোড তৈরি করি।
বার্তা গ্রুপের নাম | মান |
---|---|
অডিও সুইচ | 0x07 |
প্রতিটি বার্তা কোডের জন্য অতিরিক্ত বিবরণ নিম্নলিখিত বিভাগে অন্তর্ভুক্ত করা হয়েছে।
বার্তা কোড নাম | মান | শুধুমাত্র মাল্টিপয়েন্ট | প্রেরক | উত্তরদাতা | এনক্রিপ্ট করুন | ম্যাক | ACK |
---|---|---|---|---|---|---|---|
অডিও সুইচের ক্ষমতা পান | 0x10 | এন | উভয় | উভয়, কোড 0x11 এর মাধ্যমে | এন | এন | এন |
অডিও সুইচ এর ক্ষমতা বিজ্ঞপ্তি | 0x11 | এন | উভয় | উভয় | এন | Y | Y |
মাল্টিপয়েন্ট স্টেট সেট করুন | 0x12 | Y | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
সুইচিং পছন্দ সেট করুন | 0x20 | Y | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
সুইচিং পছন্দ পান | 0x21 | Y | অন্বেষণকারী | প্রদানকারী, কোড 0x22 এর মাধ্যমে | এন | এন | এন |
সুইচিং পছন্দকে জানান | 0x22 | Y | প্রদানকারী | অন্বেষণকারী | এন | এন | এন |
সক্রিয় অডিও উৎস পরিবর্তন করুন (সংযুক্ত ডিভাইসে) | 0x30 | Y | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
ফিরে যান | 0x31 | এন | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
মাল্টিপয়েন্ট-সুইচ ইভেন্ট অবহিত করুন | 0x32 | Y | প্রদানকারী | অন্বেষণকারী | এন | এন | এন |
সংযোগ স্থিতি পান | 0x33 | Y | অন্বেষণকারী | প্রদানকারী, কোড 0x34 এর মাধ্যমে | এন | এন | এন |
সংযোগের স্থিতি অবহিত করুন | 0x34 | Y | প্রদানকারী | অন্বেষণকারী | Y | এন | এন |
অডিও সুইচ শুরু সংযোগ বিজ্ঞপ্তি | 0x40 | এন | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
ব্যবহার অ্যাকাউন্ট কী নির্দেশ করুন | 0x41 | এন | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
কাস্টম ডেটা পাঠান | 0x42 | এন | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
ড্রপ সংযোগ লক্ষ্য সেট করুন | 0x43 | Y | অন্বেষণকারী | প্রদানকারী | এন | Y | Y |
সারণি 4.3: অডিও সুইচ বার্তা
অডিও সুইচ বার্তার MAC
বার্তা প্রমাণীকরণ প্রদান করতে, অনুসন্ধানকারী থেকে প্রদানকারীকে পাঠানো অতিরিক্ত ডেটা সহ সমস্ত অডিও সুইচ বার্তাগুলির জন্য একটি বার্তা প্রমাণীকরণ কোড প্রয়োজন৷ যখন MAC-এর সাথে একটি বার্তা পাওয়া যায়, তখন এটি স্বীকার করা উচিত যাতে অনুসন্ধানকারী জানতে পারে যে প্রদানকারী বার্তাটির প্রতি প্রতিক্রিয়া জানিয়েছে কিনা।
বার্তা প্রমাণীকরণ সফল হলে, প্রদানকারী বার্তাটির জন্য ACK পাঠাবে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | স্বীকৃতি | 0xFF |
1 | uint8 | ACK | 0x01 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
4 | uint8 | অডিও সুইচ | 0x07 |
5 | uint8 | অডিও সুইচ বার্তা কোড | পরিবর্তিত হয় |
6 - সে | অতিরিক্ত ডেটা | পরিবর্তিত হয় |
যদি এটি ব্যর্থ হয়, প্রদানকারী বার্তাটির জন্য NAK পাঠাবে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | স্বীকৃতি | 0xFF |
1 | uint8 | NAK | 0x02 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0x0003 |
4 | uint8 | ত্রুটি কারণ | পরিবর্তিত হয় |
5 | uint8 | অডিও সুইচ | 0x07 |
6 | uint8 | অডিও সুইচ বার্তা কোড | পরিবর্তিত হয় |
উল্লেখ্য যে, যদি প্রদানকারী প্রেরক হয়, তাহলে MAC এর প্রয়োজন নেই।
অডিও সুইচের ক্ষমতা পান
অডিও সুইচ প্রদানকারী এবং অনুসন্ধানকারী উভয়ই নীচের বার্তাটি ব্যবহার করে সংযুক্ত ফাস্ট পেয়ার সিকার/প্রোভাইডার অডিও সুইচ সমর্থন করে কিনা তা পরীক্ষা করতে পারে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | অডিও সুইচের ক্ষমতা পান | 0x10 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0 |
সারণি 4.3.1.0: অডিও সুইচের ক্ষমতা পান
অডিও সুইচ এর ক্ষমতা বিজ্ঞপ্তি
অডিও সুইচ বার্তা কোড পাওয়ার ক্ষমতা পাওয়ার পরে, অডিও সুইচ সিকার/প্রোভাইডার নিম্নলিখিত পতাকাগুলির মধ্যে একটির সাথে প্রতিক্রিয়া জানাবে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | অডিও সুইচ এর ক্ষমতা বিজ্ঞপ্তি | 0x11 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 20 যদি এটি সিকার দ্বারা পাঠানো হয় 4 যদি এটি প্রদানকারীর দ্বারা পাঠানো হয় |
4 - 5 | uint16 | অডিও সুইচ সংস্করণ কোড | একটি অ-শূন্য মান মানে এটি অডিও সুইচ সমর্থন করে। বর্তমান সংস্করণ (নিরাপত্তা বর্ধিতকরণ সহ) কোড হল 0x0102। 0x0000 বা 1 সেকেন্ডের মধ্যে কোন প্রতিক্রিয়া নেই মানে এই ডিভাইসে অডিও সুইচ সমর্থিত নয় |
6 - 7 | পতাকা | প্রদানকারীর অডিও সুইচ ক্ষমতা পতাকা এটি সিকার দ্বারা পাঠানো হলে, এই দুটি বাইট উপেক্ষা করা উচিত। | পরিবর্তিত হয় অডিও সুইচ ক্ষমতা পতাকা দেখুন |
8 - 15 | বার্তা না শুধুমাত্র প্রয়োজন যখন এটি সিকার দ্বারা পাঠানো হয় | পরিবর্তিত হয় | |
16 - 23 | বার্তা প্রমাণীকরণ কোড শুধুমাত্র প্রয়োজন যখন এটি সিকার দ্বারা পাঠানো হয় | পরিবর্তিত হয় |
সারণি 4.3.1.1: অডিও সুইচের ক্ষমতা বিজ্ঞপ্তি
অডিও সুইচ ক্ষমতা পতাকা
বিট 0 (অক্টেট 6, MSB): অডিও সুইচ অবস্থা
- 1, যদি অডিও সুইচ অবস্থা চালু থাকে
- 0, অন্যথায়
বিট 1: মাল্টিপয়েন্ট কনফিগারযোগ্যতা
- 1, যদি ডিভাইসটি মাল্টিপয়েন্ট সমর্থন করে এবং এটি চালু এবং বন্ধের মধ্যে সুইচ করা যায়
- 0, অন্যথায় (মাল্টিপয়েন্ট সমর্থন করে না বা মাল্টিপয়েন্ট সবসময় চালু থাকে)
বিট 2: মাল্টিপয়েন্ট বর্তমান অবস্থা
- 1, মাল্টিপয়েন্ট চালু থাকলে
- 0, অন্যথায়
বিট 3: মাথায় সনাক্তকরণ
- 1, যদি এই ডিভাইসটি মাথায় সনাক্তকরণ সমর্থন করে (এমনকি যদি মাথার উপর সনাক্তকরণ এখন বন্ধ থাকে)
- 0, অন্যথায়
বিট 4: মাথার উপর সনাক্তকরণ বর্তমান অবস্থা
- 1, যদি মাথার উপর সনাক্তকরণ চালু থাকে
- 0, অন্যথায় (অন-হেড সনাক্তকরণ সমর্থন করে না বা মাথার উপর সনাক্তকরণ অক্ষম করা হয়)
অন্যান্য সমস্ত বিট সংরক্ষিত, ডিফল্ট 0।
মাল্টিপয়েন্ট স্টেট সেট করুন
অডিও সুইচ সিকারে, আমরা ব্যবহারকারীদের মাল্টিপয়েন্ট কার্যকারিতা চালু/বন্ধ করার জন্য সেটিং প্রদান করতে পারি। অনুসন্ধানকারী নীচের বার্তাটি ব্যবহার করে প্রদানকারীর কাছে বহুবিন্দুর অবস্থা সেট করবে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | মাল্টিপয়েন্ট স্টেট সেট করুন | 0x12 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 17 |
4 | uint8 | বহুবিন্দু রাষ্ট্র | 0: মাল্টিপয়েন্ট বন্ধ করুন 1: মাল্টিপয়েন্ট চালু করুন |
5 - 12 | বার্তা না | পরিবর্তিত হয় | |
13 - 20 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.1.2: মাল্টিপয়েন্ট স্টেট সেট করুন
সুইচিং পছন্দ সেট করুন
অডিও সুইচ অনুসন্ধানকারীরা মাল্টিপয়েন্টের সুইচিং পছন্দ পরিবর্তন করতে পারে এবং নীচের বার্তাটি ব্যবহার করে প্রদানকারীর কাছে সেট করতে পারে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | সুইচিং পছন্দ সেট করুন | 0x20 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 18 |
4 | পতাকা | সুইচিং পছন্দ | পরিবর্তিত হয় মাল্টিপয়েন্ট সুইচিং পছন্দ পতাকা দেখুন |
5 | উন্নত সুইচিং সেটিংস এই বাইটটি সংরক্ষিত, ডিফল্ট মান 0 | পরিবর্তিত হয় | |
6 - 13 | বার্তা না | পরিবর্তিত হয় | |
14 - 21 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.2.0: সুইচিং পছন্দ সেট করুন
মাল্টিপয়েন্ট সুইচিং পছন্দ পতাকা
- বিট 0 (MSB): A2DP বনাম A2DP (ডিফল্ট 0)
- বিট 1: HFP বনাম HFP (ডিফল্ট 0)
- বিট 2: A2DP বনাম HFP (ডিফল্ট 0)
- বিট 3: HFP বনাম A2DP (ডিফল্ট 1)
- বিট 4 - 7: সংরক্ষিত
- উপরে "নতুন প্রোফাইল অনুরোধ" বনাম "বর্তমান সক্রিয় প্রোফাইল" হিসাবে উপস্থাপন করে
- স্যুইচ না করার জন্য 0
- 1 সুইচিং জন্য
সুইচিং পছন্দ পান
অডিও সুইচ অনুসন্ধানকারীরা নীচের বার্তাটি ব্যবহার করে প্রদানকারীর কাছ থেকে মাল্টিপয়েন্টের সুইচিং পছন্দ জিজ্ঞাসা করতে পারে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | সুইচিং কনফিগারেশন পান | 0x21 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0 |
সারণি 4.3.2.1: সুইচিং পছন্দ পান
সুইচিং পছন্দকে জানান
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | সুইচিং পছন্দকে জানান | 0x22 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 2 |
4 | পতাকা | পছন্দের পতাকা পরিবর্তন করা হচ্ছে | পরিবর্তিত হয় মাল্টিপয়েন্ট সুইচিং পছন্দ পতাকা দেখুন |
5 | উন্নত সুইচিং সেটিংস এই বাইটটি সংরক্ষিত, ডিফল্ট মান 0 হওয়া উচিত | পরিবর্তিত হয় |
সারণি 4.3.2.2: সুইচিং পছন্দকে অবহিত করুন
সক্রিয় অডিও উৎস পরিবর্তন করুন (সংযুক্ত ডিভাইসে)
অডিও সুইচ অনুসন্ধানকারীরা নিম্নলিখিত বার্তাটি ব্যবহার করে সংযুক্ত ডিভাইসগুলির মধ্যে সক্রিয় অডিও উত্স পরিবর্তন করার জন্য মাল্টিপয়েন্ট প্রদানকারীকে অনুরোধ করতে পারে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | সক্রিয় অডিও উৎস পরিবর্তন করুন (সংযুক্ত ডিভাইসে) | 0x30 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 17 |
4 | পতাকা | সক্রিয় অডিও সোর্স ইভেন্ট ফ্ল্যাগ স্যুইচ করা হচ্ছে | পরিবর্তিত হয় সক্রিয় অডিও উৎস ইভেন্ট স্যুইচিং দেখুন |
5 - 12 | বার্তা না | পরিবর্তিত হয় | |
13 - 20 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.3.0: সক্রিয় অডিও উৎস পরিবর্তন করুন (সংযুক্ত ডিভাইসে)
সক্রিয় অডিও উৎস ইভেন্ট স্যুইচ করা হচ্ছে
- বিট 0 (MSB): 1টি এই ডিভাইসে সুইচ করুন, 0টি দ্বিতীয় সংযুক্ত ডিভাইসে সুইচ করুন
- বিট 1: 1 স্যুইচ করার পরে ডিভাইসে স্যুইচ করার পরে বাজানো শুরু, অন্যথায় 0। বাজানো পুনরায় শুরু করার অর্থ প্রদানকারী AVRCP প্রোফাইলের মাধ্যমে অনুসন্ধানকারীকে একটি প্লে বিজ্ঞপ্তি পাঠায়। যদি পূর্ববর্তী অবস্থা (সুইচ অফ করার আগে) প্লে না হয়, তাহলে প্রদানকারীর এই পতাকাটিকে উপেক্ষা করা উচিত।
- বিট 2: 1 সুইচ অ্যাওয়ে ডিভাইসে SCO প্রত্যাখ্যান করুন, অন্যথায় 0৷
- বিট 3: 1 সুইচ অ্যাওয়ে ডিভাইসে ব্লুটুথ সংযোগ বিচ্ছিন্ন করুন, অন্যথায় 0৷
- বিট 4 - 7: সংরক্ষিত।
অডিও স্যুইচ অনুসন্ধানকারীরা সর্বদা তাদের অবস্থা সঠিকভাবে নাও জানতে পারে, তাই যখন অনুসন্ধানকারী ইতিমধ্যেই সক্রিয় ডিভাইস থাকে তখন প্রদানকারীর পক্ষে "এই ডিভাইসে স্যুইচ করুন" বার্তা পাওয়া সম্ভব। এই ক্ষেত্রে, অনুসন্ধানকারীকে সঠিক UI দেখানোর জন্য, প্রদানকারী ত্রুটির কারণ, 0x4 - অপ্রয়োজনীয় ডিভাইস ক্রিয়া সহ একটি NAK পাঠাতে পারে।
একজন LE অডিও প্রদানকারীর জন্য যার একাধিক সেট সদস্য রয়েছে, প্রদানকারীর উচিত সমস্ত সদস্যকে অনুসন্ধানকারী থেকে সংযোগ বিচ্ছিন্ন করা, অন্যথায় অনুসন্ধানকারীর ব্লুটুথ স্ট্যাকটি প্রদানকারীর সাথে পুনরায় সংযোগ করা হবে৷
ফিরে যান (সংযোগ বিচ্ছিন্ন ডিভাইসে)
যদি সংযোগ স্যুইচিং অবাঞ্ছিত হয়, ব্যবহারকারীরা সুইচিংটি প্রত্যাবর্তন করতে পারেন এবং কিছু পরিস্থিতিতে, বিঘ্ন কমাতে অডিও সংযোগ পুনরুদ্ধার করা বোধগম্য। অন্বেষক নীচের বার্তাটি ব্যবহার করে ফিরে যেতে ট্রিগার করবে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | ফিরে যান (সংযোগ বিচ্ছিন্ন ডিভাইসে) | 0x31 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 17 |
4 | uint8 | ইভেন্ট ফিরে যান | পরিবর্তিত হয় 0x01: ফিরে যান 0x02: ফিরে যান এবং খেলা আবার শুরু করুন |
5 - 12 | বার্তা না | পরিবর্তিত হয় | |
13 - 20 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.3.1: ফিরে যান (সংযোগ বিচ্ছিন্ন ডিভাইসে)
মাল্টিপয়েন্ট প্রদানকারীদের জন্য, একটি সংযোগ সুইচ করতে, একটি প্রদানকারী একটি অডিও উৎস ডিভাইসের সাথে সংযোগ বাদ দিতে পারে এবং অন্য অডিও উত্সে অডিও সেশনটি বিরতি দিতে পারে৷ উদাহরণস্বরূপ, অনুমান করুন মাল্টিপয়েন্ট হেডসেটটি একটি ট্যাবলেট এবং একটি 3য় সমর্থিত অডিও সুইচ ডিভাইসের সাথে সংযুক্ত৷ ব্যবহারকারী ট্যাবলেটে ভিডিও দেখছেন যখন তাদের ফোনে একটি ইনকামিং কল আছে। ফোনটি হেডসেটে একটি সংযোগ সুইচ ট্রিগার করবে, যা ফোনের সাথে সংযোগ করার জন্য 3য় ডিভাইসের সংযোগটি ফেলে দিতে হবে, পাশাপাশি ফোন থেকে রিংটোন পেতে ট্যাবলেটে মিডিয়া সেশনকে বিরতি দিতে হবে৷ ব্যবহারকারী কল প্রত্যাখ্যান করলে, ফোনটি হেডসেটটিকে "ব্যাক সুইচ এবং প্লে আবার শুরু করতে" বলতে পারে। এই অনুরোধটি পাওয়ার পরে, হেডসেটটিকে অবশ্যই 3য় ডিভাইসের সাথে পুনরায় সংযোগ করতে হবে এবং ট্যাবলেটে বিরতি দেওয়া ভিডিওটি পুনরায় চালু করতে হবে৷
মাল্টিপয়েন্ট-সুইচ ইভেন্ট অবহিত করুন
একটি মাল্টিপয়েন্ট-সুইচ ইভেন্ট সংঘটিত হওয়ার বিষয়ে ব্যবহারকারীদের সচেতন করতে, অডিও সুইচ সিকার ব্যবহারকারীদের একটি বিজ্ঞপ্তি দেখাতে পারে। প্রদানকারীর উচিত সংযুক্ত অডিও সুইচ অনুসন্ধানকারীদের সুইচিং ইভেন্ট সম্পর্কে অবহিত করা।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | মাল্টিপয়েন্ট-সুইচ ইভেন্ট অবহিত করুন অডিও সুইচ সিকার থেকে নন-অডিও সুইচ সিকার, নন-অডিও স্যুইচ সিকার থেকে অডিও সুইচ সিকার এবং অডিও স্যুইচ সিকার থেকে অডিও সুইচ সিকার সহ প্রতিটি সুইচে প্রদানকারীর এটি পাঠানো উচিত | 0x32 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
4 | uint8 | কারণ পরিবর্তন এই মানটি সংযোগ অবস্থার উপর ভিত্তি করে নির্ধারণ করা উচিত। LE অডিও ব্যবহারের ক্ষেত্রে, LE অডিও কনটেক্সট টাইপ এবং কানেকশন স্টেটের মধ্যে ম্যাপিং করা উপযোগী হতে পারে। উদাহরণস্বরূপ, ভয়েস অ্যাসিস্ট্যান্টের সাথে সংযোগের অবস্থা 0x9 (LE অডিও - কল স্ট্রিমিং)। সুতরাং, ভয়েস অ্যাসিস্ট্যান্টদের দ্বারা শুরু করা একটি সুইচের সুইচিং কারণ 0x02 হওয়া উচিত। | পরিবর্তিত হয় 0x00: অনির্দিষ্ট 0x01: মিডিয়া (যেমন A2DP স্ট্রিমিং, LEA মিডিয়া স্ট্রিমিং) 0x02: কল (যেমন HFP স্ট্রিমিং, LEA কল স্ট্রিমিং) |
5 | uint8 | টার্গেট ডিভাইস | পরিবর্তিত হয় 0x01: এই ডিভাইস 0x02: আরেকটি সংযুক্ত ডিভাইস |
6 - এন | utf8 | টার্গেট ডিভাইসের নাম যদি টার্গেট ডিভাইসটি অডিও সুইচ সিকার হয়, সেকারের পাঠানো নাম ব্যবহার করে, অন্যথায় BT নাম ব্যবহার করে, যদি প্রযোজ্য না হয়, তার ঠিকানার শেষ 2 বাইট ব্যবহার করে | পরিবর্তিত হয় |
সারণি 4.3.3.2: মাল্টিপয়েন্ট-সুইচ ইভেন্টকে অবহিত করুন
সংযোগ স্থিতি পান
অনুসন্ধানকারী প্রদানকারীর কাছ থেকে বর্তমান সংযোগের অবস্থা পেতে পারেন:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | সংযোগ স্থিতি পান | 0x33 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0 |
সারণি 4.3.3.3: সংযোগের স্থিতি পান
এই বার্তাটি পাওয়ার পরে, প্রদানকারীকে বার্তা কোড 0x34 দ্বারা প্রতিক্রিয়া জানাবে, সংযোগের স্থিতি অবহিত করবে ।
সংযোগের স্থিতি অবহিত করুন
BLE বিজ্ঞাপনের পেলোডে যেমন সংজ্ঞায়িত করা হয়েছে, মাল্টিপয়েন্ট প্রোভাইডারদের জন্য, যদি বিজ্ঞাপনের প্যাকেট পরিবর্তন করা ছাড়া সংযোগের স্থিতি পরিবর্তিত হয়, তবে প্রদানকারীর উচিত সংযুক্ত অনুসন্ধানকারীদেরও অবহিত করা উচিত যারা পরিবর্তন সম্পর্কে একই অ্যাকাউন্ট কী ব্যবহার করছেন। যদি প্রদানকারী একটি অডিও সুইচ সিকার এবং একটি নন-অডিও সুইচ সিকারের সাথে সংযুক্ত থাকে, যদি নন-অডিও সুইচ সিকার সক্রিয় থাকে, তাহলে প্রদানকারীকে সংযুক্ত অডিও সুইচ সিকারকে সংযোগের অবস্থা সম্পর্কে অবহিত করা উচিত (প্রার্থীর অ্যাকাউন্ট কী ব্যবহার করে)।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | সংযোগের স্থিতি অবহিত করুন | 0x34 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
4 | uint8 | সক্রিয় ডিভাইস পতাকা | পরিবর্তিত হয় 0x00: এই অনুসন্ধানকারী প্যাসিভ, এবং সক্রিয় ডিভাইসটি একই অ্যাকাউন্ট কী ব্যবহার করছে 0x01: এই সিকার হল সক্রিয় ডিভাইস 0x02: এই সিকারটি প্যাসিভ, এবং সক্রিয় ডিভাইসটি অ-অডিও সুইচ সিকার। |
5 - এন | এনক্রিপ্ট করা সংযোগ স্থিতি | পরিবর্তিত হয় | |
n+1 - n+8 | বার্তা না | পরিবর্তিত হয় |
সারণি 4.3.3.4: সংযোগের স্থিতি অবহিত করুন
এনক্রিপ্ট করা সংযোগ স্থিতি বার্তা
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
কোথায়:
কী ব্যবহার করা অ্যাকাউন্ট কী থেকে উদ্ভূত হয়েছে, এলোমেলো সমাধানযোগ্য বিজ্ঞাপন দেখুন।
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV হল কনক্যাট (সেশন_নন্স, মেসেজ_নন্স)
connection_status_raw_data = concat(concat(connection_state, custom_data, connected_devices) যা BLE বিজ্ঞাপনের পেলোডে সংজ্ঞায়িত করা হয়েছে মনে রাখবেন যে ক্ষেত্রের দৈর্ঘ্য এবং প্রকারের জন্য বাইট অন্তর্ভুক্ত করা উচিত নয় যেহেতু আমাদের এখানে বার্তা কোড এবং ডেটা দৈর্ঘ্য রয়েছে।
অডিও সুইচ শুরু সংযোগ বিজ্ঞপ্তি
অডিও সুইচ প্রদানকারীদের জানার প্রয়োজন হতে পারে যে সংযোগ স্যুইচিং অডিও সুইচ দ্বারা ট্রিগার হয়েছে কিনা তা ভিন্ন প্রতিক্রিয়ার জন্য, যেমন অডিও সুইচ ইভেন্টের জন্য ইয়ারকন অক্ষম করুন। এই সংযোগটি একটি অডিও সুইচ সূচিত সংযোগ ছিল তা প্রদানকারীকে অবহিত করার জন্য অনুসন্ধানকারী একটি বার্তা পাঠায়৷
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | অডিও সুইচ শুরু সংযোগ বিজ্ঞপ্তি | 0x40 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 17 |
4 | uint8 | অডিও সুইচ সূচনা সংযোগ ইঙ্গিত | পরিবর্তিত হয় 0: এই সংযোগটি অডিও সুইচ দ্বারা ট্রিগার করা হয়নি 1: এটি একটি অডিও সুইচ চালু করা সংযোগ ছিল |
5 - 12 | বার্তা না | পরিবর্তিত হয় | |
13 - 20 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.4.0: অডিও সুইচ শুরু করা সংযোগকে অবহিত করুন
ব্যবহার অ্যাকাউন্ট কী নির্দেশ করুন
যদি অনুসন্ধানকারীর একাধিক অ্যাকাউন্ট কী (যেমন বহু-ব্যবহারকারী) প্রদানকারীর সাথে যুক্ত থাকে, তাহলে অনুসন্ধানকারী নীচের বার্তাটি ব্যবহার করে নির্দেশ করবে কোন অ্যাকাউন্ট কী ব্যবহার করা হচ্ছে।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | ব্যবহার অ্যাকাউন্ট কী নির্দেশ করুন | 0x41 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 22 |
4 - 9 | utf8 | ব্যবহার স্ট্রিং মধ্যে | UTF8 ("ব্যবহারে") |
10 - 17 | বার্তা না | পরিবর্তিত হয় | |
18 - 25 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.4.1: ব্যবহার অ্যাকাউন্ট কী নির্দেশ করুন
এই বার্তাটি পাওয়ার পর, প্রদানকারী বার্তা প্রমাণীকরণ কোড যাচাই করে কোন অ্যাকাউন্ট কী ব্যবহার করা হচ্ছে তা জানতে পারে।
কাস্টম ডেটা পাঠান
সক্রিয় অডিও সুইচ সিকার কাস্টম ডেটা বাইটে অডিও স্ট্রিমের তথ্য (যেমন অডিও ব্যবহার) এনক্যাপসুলেট করতে পারে এবং নীচের বার্তাটি ব্যবহার করে সরবরাহকারীকে পাঠাতে পারে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | কাস্টম ডেটা পাঠান | 0x42 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 17 |
4 | uint8 | কাস্টম ডেটা | পরিবর্তিত হয় |
5 - 12 | বার্তা না | পরিবর্তিত হয় | |
13 - 20 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.4.2: কাস্টম ডেটা পাঠান
কাস্টম ডেটা পাওয়ার পর, প্রদানকারী কাস্টম ডেটা অন্তর্ভুক্ত করতে বিজ্ঞাপন প্যাকেট আপডেট করবে। একটি মাল্টিপয়েন্ট প্রদানকারীর জন্য, এটি একই অ্যাকাউন্ট কী ব্যবহার করে অন্য সংযুক্ত অনুসন্ধানকারীকে সংযোগের স্থিতি পরিবর্তনের বিষয়ে অবহিত করা উচিত।
ড্রপ সংযোগ লক্ষ্য সেট করুন
মাল্টিপয়েন্ট হেডসেটগুলিতে, যদি বাদ দেওয়ার জন্য পছন্দের সংযোগটি সম্প্রতি ব্যবহৃত না হয়, তবে অডিও সুইচ সন্ধানকারীরা নীচের বার্তাটি ব্যবহার করে কোন ডিভাইসটি ড্রপ করতে হবে তা প্রদানকারীকে বলতে পারে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | অডিও সুইচ | 0x07 |
1 | uint8 | ড্রপ সংযোগ লক্ষ্য সেট করুন | 0x43 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 17 |
4 | uint8 | টার্গেট সংযুক্ত ডিভাইস ড্রপ করা হবে | পরিবর্তিত হয় 1: এই ডিভাইস |
5 - 12 | বার্তা না | পরিবর্তিত হয় | |
13 - 20 | বার্তা প্রমাণীকরণ কোড | পরিবর্তিত হয় |
সারণি 4.3.4.3: ড্রপ সংযোগ লক্ষ্য সেট করুন
রেফারেন্স বাস্তবায়ন
রেফারেন্স বাস্তবায়নের জন্য কাছাকাছি এম্বেড করা SDK লাইব্রেরি দেখুন