অ্যান্ড্রয়েড ওপেন অ্যাকসেসরি 1.0

অ্যান্ড্রয়েড ইউএসবি আনুষাঙ্গিকগুলিকে অবশ্যই অ্যান্ড্রয়েড ওপেন অ্যাকসেসরি (AOA) প্রোটোকল মেনে চলতে হবে, যা একটি আনুষঙ্গিক কীভাবে একটি Android-চালিত ডিভাইসের সাথে যোগাযোগ সনাক্ত করে এবং সেট আপ করে তা সংজ্ঞায়িত করে৷ আনুষাঙ্গিক নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করা উচিত:

  1. একটি সংযুক্ত ডিভাইসের জন্য অপেক্ষা করুন এবং সনাক্ত করুন।
  2. ডিভাইসের আনুষঙ্গিক মোড সমর্থন নির্ধারণ করুন.
  3. ডিভাইসটিকে আনুষঙ্গিক মোডে শুরু করার চেষ্টা করুন (যদি প্রয়োজন হয়)।
  4. যদি ডিভাইসটি AOA সমর্থন করে তবে ডিভাইসটির সাথে যোগাযোগ স্থাপন করুন।

নিম্নলিখিত বিভাগগুলি ব্যাখ্যা করে কিভাবে এই পদক্ষেপগুলি বাস্তবায়ন করতে হয়।

জন্য অপেক্ষা করুন এবং সংযুক্ত ডিভাইস সনাক্ত করুন

আনুষাঙ্গিক ক্রমাগত সংযুক্ত Android-চালিত ডিভাইসের জন্য চেক করা উচিত. একটি ডিভাইস সংযুক্ত করা হলে, ডিভাইসটি আনুষঙ্গিক মোড সমর্থন করে কিনা তা নির্ধারণ করা উচিত।

আনুষঙ্গিক মোড সমর্থন নির্ধারণ

দ্রষ্টব্য: আনুষাঙ্গিক সংযোগের জন্য USB ডিবাগিংয়ের প্রয়োজন নেই তবে বিকাশের সময় ADB প্রয়োজন হতে পারে। বিস্তারিত জানার জন্য, ডিবাগ বিবেচনা দেখুন।

যখন একটি Android-চালিত ডিভাইস সংযোগ করে, তখন এটি তিনটি অবস্থার একটিতে হতে পারে:

  • অ্যান্ড্রয়েড আনুষঙ্গিক মোড সমর্থন করে এবং ইতিমধ্যে আনুষঙ্গিক মোডে আছে।
  • অ্যান্ড্রয়েড আনুষঙ্গিক মোড সমর্থন করে কিন্তু এটি আনুষঙ্গিক মোডে নেই।
  • অ্যান্ড্রয়েড আনুষঙ্গিক মোড সমর্থন করে না।

প্রাথমিক সংযোগের সময়, আনুষঙ্গিকটি সংযুক্ত ডিভাইসের USB ডিভাইস বর্ণনাকারীর সংস্করণ, বিক্রেতা আইডি এবং পণ্য আইডি পরীক্ষা করা উচিত। বিক্রেতা আইডিটি Google-এর আইডি ( 0x18D1 ) এর সাথে মিলিত হওয়া উচিত। ডিভাইসটি ইতিমধ্যেই আনুষঙ্গিক মোডে থাকলে, পণ্যের আইডি 0x2D00 বা 0x2D01 হওয়া উচিত এবং আনুষঙ্গিকটি তার নিজস্ব যোগাযোগ প্রোটোকল ব্যবহার করে বাল্ক ট্রান্সফার এন্ডপয়েন্টের মাধ্যমে ডিভাইসের সাথে যোগাযোগ স্থাপন করতে পারে (ডিভাইসটিকে আনুষঙ্গিক মোডে শুরু করার প্রয়োজন নেই)।

দ্রষ্টব্য: 0x2D00 Android-চালিত ডিভাইসগুলির জন্য সংরক্ষিত যা আনুষঙ্গিক মোড সমর্থন করে। 0x2D01 ডিভাইসগুলির জন্য সংরক্ষিত যা আনুষঙ্গিক মোডের পাশাপাশি Android ডিবাগ ব্রিজ (ADB) প্রোটোকল সমর্থন করে, যা ADB-এর জন্য দুটি বাল্ক এন্ডপয়েন্ট সহ একটি দ্বিতীয় ইন্টারফেস প্রকাশ করে৷ আপনি যদি কম্পিউটারে আনুষঙ্গিক অনুকরণ করেন তবে আনুষঙ্গিক অ্যাপ্লিকেশনটি ডিবাগ করার জন্য আপনি এই শেষ পয়েন্টগুলি ব্যবহার করতে পারেন। সাধারণভাবে, এই ইন্টারফেসটি ব্যবহার করবেন না যদি না আনুষঙ্গিক ডিভাইসে ADB-এর কাছে একটি পাসথ্রু প্রয়োগ করে৷

USB ডিভাইস বর্ণনাকারীর সংস্করণ, বিক্রেতা আইডি বা পণ্যের আইডি প্রত্যাশিত মানগুলির সাথে না মিললে, ডিভাইসটি Android আনুষঙ্গিক মোড সমর্থন করে কিনা তা নির্ধারণ করতে পারে না। আনুষঙ্গিক ডিভাইস সমর্থন নির্ধারণ করতে আনুষঙ্গিক মোডে ডিভাইস চালু করার চেষ্টা করা উচিত (নীচে বিস্তারিত)।

মূল পয়েন্ট: একটি USB আনুষঙ্গিক প্রাথমিক হ্যান্ডশেক করার সময় একটি শিরোনাম পাঠাতে হবে। হেডারে প্রস্তুতকারক, মডেল এবং সংস্করণ রয়েছে। যদিও সংস্করণটি একটি ঐচ্ছিক ক্ষেত্র, যদি একটি অ্যান্ড্রয়েড অ্যাপ ইনস্টল করা থাকে যা শুধুমাত্র সংস্করণের সাথে মেলে, কিন্তু আনুষঙ্গিক কোনো সংস্করণ পাঠায় না, তবে সিস্টেম প্রক্রিয়ায় একটি ব্যতিক্রমের কারণে অ্যান্ড্রয়েড 10 এবং তার নিচে চলমান Android ডিভাইসগুলি রিবুট হবে।

আনুষঙ্গিক মোডে শুরু করার চেষ্টা করুন

সংস্করণ, বিক্রেতা এবং পণ্যের আইডিগুলি অ্যাকসেসরি মোডে একটি Android-চালিত ডিভাইসের সাথে সামঞ্জস্যপূর্ণ না হলে, ডিভাইসটি আনুষঙ্গিক মোড সমর্থন করে কিনা বা ডিভাইসটি আনুষঙ্গিক মোড সমর্থন করে না কিনা তা নির্ধারণ করতে পারে না। এটি ঘটতে পারে কারণ যে ডিভাইসগুলি আনুষঙ্গিক মোড সমর্থন করে (কিন্তু আনুষঙ্গিক মোডে নেই) প্রাথমিকভাবে AOA বিক্রেতা এবং পণ্য আইডিগুলির পরিবর্তে ডিভাইস প্রস্তুতকারক বিক্রেতা এবং পণ্য আইডিগুলিকে রিপোর্ট করে৷

ডিভাইসটি সেই মোড সমর্থন করে কিনা তা নির্ধারণ করতে আনুষঙ্গিক মোডে ডিভাইসটি শুরু করার চেষ্টা করা উচিত:

  1. ডিভাইসটি Android আনুষঙ্গিক প্রোটোকল সমর্থন করে কিনা তা নির্ধারণ করতে একটি 51 নিয়ন্ত্রণ অনুরোধ ("প্রোটোকল পান") পাঠান৷ যদি ডিভাইসটি প্রোটোকল সমর্থন করে, এটি একটি নন-জিরো নম্বর প্রদান করে যা সমর্থিত প্রোটোকল সংস্করণকে উপস্থাপন করে। নিয়ন্ত্রণ অনুরোধটি নিম্নোক্ত বৈশিষ্ট্য সহ শেষবিন্দু 0 এ রয়েছে:
    requestType:    USB_DIR_IN | USB_TYPE_VENDOR
    request:        51
    value:          0
    index:          0
    data:           protocol version number (16 bits little endian sent from the
                    device to the accessory)
    
  2. যদি ডিভাইসটি একটি সমর্থিত প্রোটোকল সংস্করণ ফেরত দেয়, তাহলে ডিভাইসে স্ট্রিং তথ্য সনাক্তকরণের সাথে একটি নিয়ন্ত্রণ অনুরোধ পাঠান। এই তথ্য ডিভাইসটিকে আনুষঙ্গিক জন্য একটি উপযুক্ত অ্যাপ্লিকেশন নির্ধারণ করতে দেয় (অথবা একটি উপযুক্ত অ্যাপ্লিকেশন বিদ্যমান না থাকলে ব্যবহারকারীর কাছে একটি URL উপস্থাপন করুন)। নিয়ন্ত্রণ অনুরোধটি নিম্নলিখিত বৈশিষ্ট্য সহ শেষবিন্দু 0 (প্রতিটি স্ট্রিং আইডির জন্য) এ রয়েছে:
    requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
    request:        52
    value:          0
    index:          string ID
    data            zero terminated UTF8 string sent from accessory to device
    

    নিম্নলিখিত স্ট্রিং আইডিগুলি সমর্থিত, প্রতিটি স্ট্রিংয়ের জন্য সর্বাধিক 256 বাইটের আকার সহ ( \0 দিয়ে শূন্য-সমাপ্ত হওয়া আবশ্যক)৷

    manufacturer name:  0
    model name:         1
    description:        2
    version:            3
    URI:                4
    serial number:      5
    
  3. ডিভাইসটিকে আনুষঙ্গিক মোডে শুরু করতে বলার জন্য একটি নিয়ন্ত্রণ অনুরোধ পাঠান। নিয়ন্ত্রণ অনুরোধটি নিম্নোক্ত বৈশিষ্ট্য সহ শেষবিন্দু 0 এ রয়েছে:
    requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
    request:        53
    value:          0
    index:          0
    data:           none
    

এই পদক্ষেপগুলি সম্পূর্ণ করার পরে, আনুষঙ্গিকটিকে সংযুক্ত USB ডিভাইসটি বাসে আনুষঙ্গিক মোডে পুনরায় পরিচয় দেওয়ার জন্য অপেক্ষা করতে হবে, তারপরে সংযুক্ত ডিভাইসগুলিকে পুনরায় গণনা করুন৷ অ্যালগরিদম বিক্রেতা এবং পণ্য আইডি চেক করে আনুষঙ্গিক মোড সমর্থন নির্ধারণ করে , যা সঠিক হওয়া উচিত (উদাহরণস্বরূপ, ডিভাইস প্রস্তুতকারকের আইডির পরিবর্তে Google-এর বিক্রেতা এবং পণ্য আইডিগুলির সাথে মিলিত) যদি ডিভাইসটি সফলভাবে অ্যাক্সেসরি মোডে স্যুইচ করে। আইডি এবং সংস্করণ সঠিক হলে, আনুষঙ্গিক ডিভাইসের সাথে যোগাযোগ স্থাপন করতে চলে।

দ্রষ্টব্য: AOA বর্তমানে একযোগে AOA এবং MTP সংযোগ সমর্থন করে না। AOA থেকে MTP-তে স্যুইচ করতে, আনুষঙ্গিকটিকে প্রথমে USB ডিভাইসের সংযোগ বিচ্ছিন্ন করতে হবে (হয় শারীরিকভাবে বা বৈদ্যুতিকভাবে সমতুল্য উপায়ে) এবং তারপর MTP ব্যবহার করে পুনরায় সংযোগ করতে হবে।

কোনো পদক্ষেপ ব্যর্থ হলে, আনুষঙ্গিক ডিভাইসটি Android আনুষঙ্গিক মোড সমর্থন করে না তা নির্ধারণ করে এবং পরবর্তী ডিভাইসটি সংযুক্ত হওয়ার জন্য অপেক্ষা করে।

ডিভাইসের সাথে যোগাযোগ স্থাপন করুন

আনুষঙ্গিক মোডে একটি Android-চালিত ডিভাইস শনাক্ত করলে, আনুষঙ্গিকটি ডিভাইসের সাথে যোগাযোগের জন্য বাল্ক এন্ডপয়েন্ট পেতে ডিভাইস ইন্টারফেস এবং এন্ডপয়েন্ট বর্ণনাকারীকে জিজ্ঞাসা করতে পারে।

ইন্টারফেস এবং বাল্ক এন্ডপয়েন্টের সংখ্যা পণ্য আইডির উপর নির্ভর করে। একটি Android-চালিত ডিভাইস যার একটি পণ্য আইডি রয়েছে:

  • 0x2D00 ইনপুট এবং আউটপুট যোগাযোগের জন্য দুটি বাল্ক এন্ডপয়েন্ট সহ একটি ইন্টারফেস রয়েছে।
  • 0x2D01 ইনপুট এবং আউটপুট যোগাযোগের জন্য দুটি বাল্ক এন্ডপয়েন্ট সহ দুটি ইন্টারফেস রয়েছে। প্রথম ইন্টারফেস স্ট্যান্ডার্ড কমিউনিকেশন পরিচালনা করে এবং দ্বিতীয় ইন্টারফেস ADB কমিউনিকেশন পরিচালনা করে। একটি ইন্টারফেস ব্যবহার করতে, প্রথম বাল্ক ইনপুট এবং আউটপুট এন্ডপয়েন্টগুলি সনাক্ত করুন, একটি SET_CONFIGURATION ( 0x09 ) ডিভাইস অনুরোধের সাথে ডিভাইস কনফিগারেশনটিকে 1 এর মান সেট করুন, তারপরে শেষ পয়েন্টগুলি ব্যবহার করে যোগাযোগ করুন৷