একাধিক চালু করা প্রোফাইল

Android 13 বা তার পরবর্তী ভার্সনে চলা ডিভাইসের জন্য, Android eUICC-এর জন্য একাধিক চালু থাকা প্রোফাইল (MEP) সাপোর্ট করে। এই ফিচারের সাহায্যে ডিভাইসে একটি ই-সিম চিপ ব্যবহার করে ডুয়াল সিম কাজ করে। এতে একাধিক সিম প্রোফাইল থাকতে পারে এবং একই সময়ে দুটি আলাদা আলাদা পরিষেবা প্রদানকারীর সাথে কানেক্ট করা যেতে পারে। ডিভাইস প্রস্তুতকারকদের অবশ্যই SoC ভেন্ডর এবং ই-সিম চিপসেট ভেন্ডরদের সাথে কাজ করতে হবে যাতে তারা এই ফিচারটি তাদের ডিভাইসে ইন্টিগ্রেট করতে পারে।

ব্যাকগ্রাউন্ড

Android 12 ও এর আগের যেকোনও ভার্সনে চলা ডিভাইসে, AOSP একই সাথে একাধিক প্রোফাইল কাজ করে এমন একটি ই-সিম ব্যবহারের অনুমতি দেওয়ার ক্ষেত্রে সীমিত সহায়তা প্রদান করে। ই-সিম ব্যবহার করলে অনেক জায়গা ও খরচ বাঁচানো যায়, কিন্তু ডুয়াল সিমের সুবিধা না থাকার কারণে ডিভাইস প্রস্তুতকারকরা শুধুমাত্র ই-সিম ব্যবহার করা যায় এমন ডিভাইস তৈরি করতে পারছেন না। শুধুমাত্র ই-সিম ব্যবহার করা যায় এমন ডিভাইসে ডুয়াল সিমের সুবিধা দিতে, ডিভাইস প্রস্তুতকারকদের ডিভাইসে দুটি ই-সিম এলিমেন্ট প্যাক করতে হয়, যার ফলে বিল অফ মেটেরিয়াল (BOM) খরচ বেড়ে যায় এবং সাবস্ক্রিপশন ম্যানেজমেন্টের ক্ষেত্রে ব্যবহারকারীর অভিজ্ঞতা খারাপ হয়। Android 13 থেকে AOSP-তে উপলভ্য MEP ফিচার এই সমস্যার সমাধান করে।

eUICC আর্কিটেকচার

এই বিভাগে, MEP সহ বিভিন্ন Android ভার্সনের ডিভাইসের জন্য ই-সিম চিপ আর্কিটেকচার এবং MEP ছাড়া ডিভাইসের জন্য ই-সিম চিপ আর্কিটেকচার বর্ণনা করা হয়েছে।

Android 14

Android 14 বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসের জন্য, Android ইস্যুকারী সুরক্ষা ডোমেন রুট (ISD-R) বেছে নেওয়ার জন্য MEP-A1 ও MEP-B বিকল্প এবং GSMA SGP V22 3.0-এ উল্লেখ করা eSIM পোর্ট বেছে নেওয়ার জন্য সহায়তা করে। নিচে MEP-A1 এবং MEP-B ISD-R বাছাই করার মডেলের বিবরণ দেওয়া হল:

  • MEP-A1: পোর্ট ০-এ ISD-R বেছে নেওয়া হয়েছে (কমান্ড পোর্ট হল ০) এবং eSIM পোর্ট ১ ও তার পরের পোর্টে প্রোফাইল বেছে নেওয়া হয়েছে। ES10 কমান্ড সবসময় পোর্ট ০-এ পাঠানো হয় এবং কমান্ড পোর্ট ও টার্গেট পোর্ট সবসময় আলাদা হয়। LPA পোর্ট বেছে নেয়।

    MEP-A1 ISD-R সিলেকশন মডেল

    ছবি ১. MEP-A1 ISD-R সিলেকশন মডেল

  • MEP-B: যেকোনও পোর্টে ISD-R বেছে নেওয়া হয় এবং যেকোনও পোর্টে প্রোফাইল অ্যাসাইন করা যায়। যে পোর্টে প্রোফাইল চালু বা বন্ধ করতে হবে (যেখানে রিফ্রেশ বাকি আছে), সেখানে চালু ও বন্ধ করার কমান্ড পাঠানো হয়। কমান্ড পোর্ট এবং টার্গেট পোর্ট সবসময় একই থাকে।

    MEP-B ISD-R বাছাই করার মডেল

    ছবি ২. MEP-B ISD-R বেছে নেওয়ার মডেল

Android 13

Android 13 বা তার পরবর্তী ভার্সনে, MEP কাজ করে এমন ডিভাইসে, eSIM স্লটে একাধিক eUICC পোর্ট থাকে যেখানে প্রতিটি পোর্টে একটি করে প্রোফাইল চালু করা থাকতে পারে। ছবি ৩-এ দেখানো হয়েছে, এই আর্কিটেকচারের মাধ্যমে, একটি eUICC (একটি ফিজিক্যাল স্লট) ডুয়াল সিম ডুয়াল স্ট্যান্ডবাই (DSDS) কাজ করে কারণ প্রতিটি eUICC পোর্ট একটি মডেম বেসব্যান্ডের সাথে লিঙ্ক করা থাকে। Android 13 HAL এবং API, MEP ভেরিয়েন্ট ইন্ডিপেন্ডেন্ট।

MEP কাজ করে এমন ই-সিম চিপ আর্কিটেকচার

ছবি ৩. MEP কাজ করে এমন eSIM চিপ আর্কিটেকচার (Android 13 বা এর পরের যেকোনও ভার্সন)

Android 12 ও তার আগের যেকোনও ভার্সন

MEP ছাড়া Android 12 বা তার আগের যেকোনও ভার্সনে চলা ডিভাইসের ক্ষেত্রে, যেমন ৪ নম্বর ছবিতে দেখানো হয়েছে, eSIM স্লটে একবারে শুধু একটি প্রোফাইল চালু করা যায়। এর অর্থ হল, ডিভাইসে DSDS কাজ করে না।

MEP সাপোর্ট ছাড়া ই-সিম চিপ আর্কিটেকচার

ছবি ৪. MEP কাজ করে না এমন eSIM চিপ আর্কিটেকচার (Android 12 বা তার আগের যেকোনও ভার্সন)

একাধিক চালু করা প্রোফাইলের জন্য API তথ্য প্রবাহ

ছবি ৫-এ Android 13-এ eUICC-এর জন্য MEP-এর তথ্য প্রবাহ বর্ণনা করা হয়েছে। টেলিফোনি ফ্রেমওয়ার্কে UiccPort ক্লাস অন্তর্ভুক্ত থাকে, যা eUICC-তে ফিজিক্যাল স্ট্রাকচারকে উপস্থাপন করে। UiccPort ক্লাসটি সব ধরনের সিম কার্ডের জন্য ব্যবহার করা হয়: ফিজিক্যাল সিম (pSIM), ইন্টিগ্রেটেড সিম (iSIM) এবং এমবেডেড সিম (eSIM)। একাধিক পোর্ট সহ eUICC-এর জন্য, একটি UiccSlot অবজেক্ট এবং UiccCard অবজেক্ট একাধিক UiccPort ইনস্ট্যান্সের সাথে ম্যাপ করে। প্রতিটি UiccPort ইনস্ট্যান্স সর্বাধিক একটি UiccProfile ইনস্ট্যান্সের সাথে লিঙ্ক করা যেতে পারে। এই ফ্লো UiccPort-কে একটি লজিক্যাল স্লটে এবং UiccSlot (ফিজিক্যাল স্লট)-কে একাধিক লজিক্যাল স্লটে ম্যাপ করার অনুমতি দেয়।

MEP তথ্য প্রবাহ

ছবি ৫. MEP সহায়তা সহ eUICC-এর জন্য তথ্যের প্রবাহ

প্রয়োগ

এই বিভাগে MEP ফিচার কীভাবে প্রয়োগ করতে হয় তা বর্ণনা করা হয়েছে। এর মধ্যে HAL সংক্রান্ত প্রয়োজনীয়তা, API ও ইউজার ইন্টারফেসের বিবরণ অন্তর্ভুক্ত। ডিভাইস প্রস্তুতকারকদের MEP কাজ করানোর জন্য SoC ভেন্ডর ও eSIM চিপসেট ভেন্ডরদের সাথে কাজ করতে হবে।

HAL সংক্রান্ত প্রয়োজনীয়তা

eUICC-এর জন্য MEP কাজ করে তা নিশ্চিত করতে, নিম্নলিখিত IRadio AIDL HAL API প্রয়োগ করুন, যা /platform/hardware/interfaces/radio/aidl/aidl_api-এ আছে।

Android 14 বা এর পরের যেকোনও ভার্সনে চলা ডিভাইসকে অবশ্যই HAL ইন্টারফেসের IRadio 2.1 ভার্সন ব্যবহার করতে হবে, যা MultipleEnabledProfileMode (মডেম বা eUICC দ্বারা সমর্থিত ISD-R সিলেকশন মডেল) ব্যবহার করে এবং ICC লজিক্যাল চ্যানেল অপারেশনের সময় ES10 APDU কমান্ড সংক্রান্ত তথ্য পাস করে।

CardStatus

মোডেমকে getIccCardStatusResponse পদ্ধতির উত্তর হিসেবে CardStatus API-এর সাথে কাজ করতে হবে। উত্তরে অবশ্যই SimPortSlotMapping-এর উল্লেখ করা পোর্ট ইনডেক্স ও ফিজিক্যাল স্লট ইনডেক্স থাকতে হবে।

Android 14 বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসের ক্ষেত্রে, সব CardStatus ইভেন্ট সহ মডেমকে কাজ করে এমন MEP মোড পাস করতে হবে।

SimSlotStatus

মোডেমকে getSimSlotsStatus পদ্ধতির উত্তর হিসেবে SimSlotStatus API-এর সাথে কাজ করতে হবে। সিম স্লটের স্ট্যাটাসে SimPortInfo ইন্টারফেসের একটি অ্যারে থাকে, যার মধ্যে পোর্ট ইনডেক্স, চালু করা প্রোফাইলের ICCID এবং পোর্ট স্টেট অন্তর্ভুক্ত থাকে। মডেমকে অবশ্যই অন্তত দুটি SimPortInfo অবজেক্ট রিটার্ন করতে হবে।

Android 14 বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসের ক্ষেত্রে, সব CardStatus ইভেন্ট সহ মডেমকে কাজ করে এমন MEP মোড পাস করতে হবে।

setSimSlotMapping

setSimSlotMapping পদ্ধতিতে অবশ্যই SimPortSlotMapping-এর অ্যারে পাস করতে হবে। অ্যারের ইন্ডেক্স হল লজিক্যাল স্লট এবং SimPortSlotMapping সংশ্লিষ্ট ম্যাপ করা পোর্ট ও ফিজিক্যাল স্লট ইন্ডেক্স নির্দিষ্ট করে। setSimSlotMapping পদ্ধতি পোর্ট থেকে লজিক্যাল স্লটে ম্যাপ করার সুবিধা সেট করে। অ্যাক্টিভ পোর্ট বেছে নিতে LPA অ্যাপ এই পদ্ধতি ব্যবহার করে।

eUICC-এর জন্য MEP কাজ করে এমন API

AOSP টেলিফোনি স্ট্যাকের অংশ হিসেবে একাধিক চালু করা প্রোফাইল সাপোর্ট করে এমন Android ডিভাইসের ক্ষেত্রে নিম্নলিখিত API-এর সাপোর্ট প্রয়োজন।

UiccCardInfo

  • (Android 13 ও তার পরের যেকোনও ভার্সন) isMultipleEnabledProfilesSupported: এই UICC MEP-এর সাথে কাজ করে কিনা তা রিটার্ন করে।
  • (Android 13 ও তার পরবর্তী যেকোনও ভার্সন) getPorts: নির্দিষ্ট UICC-এর জন্য সম্ভাব্য সব পোর্টগুলির তালিকা রিটার্ন করে। UICC যদি MEP কাজ করে না এমন pSIM বা eSIM হয়, তাহলে একটি এলিমেন্টের তালিকা রিটার্ন করে।
  • (বন্ধ করে দেওয়া হয়েছে) getIccId: ICCID ফিরিয়ে দেয়। যেহেতু MEP সহ ডিভাইসের জন্য UICC-তে একাধিক ICCID থাকতে পারে, তাই এর পরিবর্তে UiccPortInfo.getIccId() ব্যবহার করুন।

(Android 13 ও তার পরের যেকোনও ভার্সন) UiccPortInfo

  • getIccId: এই পোর্টে কোনও সাবস্ক্রিপশন চালু থাকলে ICCID ফিরিয়ে দেয়।
  • getPortIndex: পোর্ট ইন্ডেক্স রিটার্ন করে।
  • getLogicalSlotIndex: অ্যাক্টিভ লজিক্যাল মডেম স্ট্যাক ইনডেক্স রিটার্ন করে।

SubscriptionInfo

  • (Android 13 এবং তার পরবর্তী যেকোনও ভার্সন) getPortIndex: সাবস্ক্রিপশন চালু আছে এমন পোর্ট ইনডেক্স ফিরিয়ে দেয়। সাবস্ক্রিপশন বন্ধ করা থাকলে, INVALID_PORT_ID -1 রিটার্ন করে।

EuiccManager

  • switchToSubscription: প্রদত্ত সাবস্ক্রিপশনে পরিবর্তন করে। অ্যাক্টিভ সাবস্ক্রিপশনে ক্যারিয়ার বিশেষ সুবিধা নেই এমন অ্যাপ ব্যবহার করে। কল করা হলে, প্ল্যাটফর্ম ইন্টার্নালি একটি তিন-বিকল্প বেছে নেওয়ার ডায়ালগের মাধ্যমে পোর্ট ইন্ডেক্স সমাধান করে, উপলভ্য পোর্ট না থাকলে বেছে নেওয়া অ্যাক্টিভ সাবস্ক্রিপশন বন্ধ করে দেয়। Android 13 ও এর পরের যেকোনও ভার্সনকে টার্গেট করা অ্যাপকে ভুল সাবস্ক্রিপশন আইডি পাস করে সাবস্ক্রিপশন বন্ধ করতে এই API ব্যবহার করা যাবে না; এর পরিবর্তে, নির্দিষ্ট পোর্ট ইনডেক্স সহ switchToSubscription পদ্ধতি (যা Android 13-এ যোগ করা হয়েছে) ব্যবহার করতে হবে।
  • (Android 13 ও তার পরবর্তী যেকোনও ভার্সন) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): প্রদত্ত সাবস্ক্রিপশনে পাল্টে দেয়। চালু থাকা সাবস্ক্রিপশনের উপর ক্যারিয়ারের বিশেষ সুবিধা থাকা কলিং অ্যাপ কোন পোর্টে সাবস্ক্রিপশন চালু করতে হবে তা নির্দিষ্ট করতে পারে।
  • (Android 13 ও তার পরবর্তী যেকোনও ভার্সন) isSimPortAvailable: পাসিং পোর্ট ইন্ডেক্স উপলভ্য আছে কিনা তা জানায়। কোনও পোর্টে সাবস্ক্রিপশন চালু না থাকলে অথবা বেছে নেওয়া পোর্টে ইনস্টল করা সাবস্ক্রিপশনের তুলনায় কলিং অ্যাপের পরিষেবা প্রদানকারীর বিশেষ সুবিধা থাকলে সেটি উপলভ্য থাকে।

EuiccService

  • (Android 13 ও তার পরবর্তী যেকোনও ভার্সন) onSwitchToSubscriptionWithPort: নির্দিষ্ট পোর্টে দেওয়া সাবস্ক্রিপশনে সুইচ করে। LPA প্রয়োগ Android 13 ও এর পরের যেকোনও ভার্সনে কাজ করতে হবে।

TelephonyManager

  • (Android 13 ও তার পরের যেকোনও ভার্সন) getSimApplicationState: কার্ড অ্যাপ্লিকেশনটির অবস্থা বোঝায় এমন একটি কনস্ট্যান্ট রিটার্ন করে। এই API একটি ফিজিক্যাল স্লট ইনডেক্স এবং একটি পোর্ট ইনডেক্স, দুটিই পাস করে। getSimApplicationState(int physicalSlotIndex) পদ্ধতি (অবচিত) একটি simApplicationState অবজেক্ট পেতে শুধুমাত্র ফিজিক্যাল স্লট ইনডেক্স পাস করে।
  • (Android 13 ও এর পরবর্তী যেকোনও ভার্সন) setSimSlotMapping(Collection<UiccSlotMapping> slots): লজিক্যাল স্লটকে ফিজিক্যাল স্লট ও পোর্টের সাথে ম্যাপ করে।
  • (Android 13 ও তার পরবর্তী যেকোনও ভার্সন) Collection<UiccSlotMapping> getSimSlotMapping: লজিক্যাল স্লট থেকে ফিজিক্যাল সিম স্লট ও পোর্ট ইনডেক্সের ম্যাপিং পায়।

ইউজার ইন্টারফেস

MEP কাজ করে এমন ডিভাইসে eSIM পোর্ট বেছে নেওয়ার ক্ষেত্রে অস্পষ্টতা দূর করতে, ব্যবহারকারীকে অবশ্যই কোনও একটি অ্যাক্টিভ সাবস্ক্রিপশন বন্ধ করতে হবে যাতে নতুন সাবস্ক্রিপশন চালু করা যায়। Android 13-এ, AOSP-তে তিনটি বিকল্প সহ একটি ইউজার ফ্লো অন্তর্ভুক্ত থাকে যা সাবস্ক্রিপশন চালু করার ইউজার ফ্লোতে প্রয়োগ করা যায়। এই ইউজার ফ্লোটি Settings অ্যাপ থেকে পাওয়া যায়। ৬ নম্বর ছবিতে এই UX ফ্লোয়ের একটি উদাহরণ দেখানো হয়েছে।

MEP সিম সাবস্ক্রিপশনের জন্য ইউজার ফ্লো

ছবি ৬. সিম সাবস্ক্রিপশন চালু করার জন্য ইউজার ফ্লো

ফিচারের ফ্ল্যাগ

MEP-এর জন্য কাজ করতে, ডিভাইসকে অবশ্যই নিম্নলিখিত ফিচার ফ্ল্যাগ ঘোষণা করতে হবে:

LPA প্রয়োগ করা

MEP-কে সাপোর্ট করতে, আপনার LPA প্রয়োগ করার সময় নিম্নলিখিত প্রয়োজনীয়তা পূরণ করা হয়েছে কিনা তা নিশ্চিত করুন:

  • একাধিক পোর্ট সাপোর্ট করার জন্য EuiccService থেকে API প্রয়োগ করে।
  • পোর্ট বেছে নেওয়া ও প্রোফাইল চালু করার জন্য API ব্যবহার করে।
  • ক্যারিয়ার অ্যাপগুলিকে বেছে নেওয়া পোর্টে প্রোফাইল চালু করার অনুমতি দিয়ে UX প্রদান করে।

যাচাইকরণ

MEP ফিচারের আপনার ইমপ্লিমেন্টেশন পরীক্ষা করতে, নিশ্চিত করুন যে বিল্ডগুলি নিম্নলিখিত CTS টেস্ট কেস (পাবলিক API-এর জন্য) পাস করেছে: /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts.

ডিভাইস প্রস্তুতকারকদেরও তাদের মডেম, eUICC চিপ এবং eSIM OS ভেন্ডরদের সাথে কাজ করে নিশ্চিত করতে হবে যে ডিভাইসটি নিম্নলিখিত কাজগুলি করতে পারে:

  • দুটি ই-সিম (eSIM) প্রোফাইল চালু করা এবং দুটি আলাদা নেটওয়ার্কের সাথে অ্যাটাচ করা যেতে পারে।
  • যেকোনও eSIM পোর্টে eSIM প্রোফাইল চালু ও বন্ধ করা যাবে।
  • ক্যারিয়ার অ্যাপের মাধ্যমে ট্রিগার করা একটি UX ফ্লো আছে যা ব্যবহারকারীদের প্রোফাইল পরিবর্তন করতে দেয়।

ক্যারিয়ারদের জন্য সাজেশন

ব্যবহারকারীরা যাতে ই-সিম প্রোফাইল এক পোর্ট থেকে অন্য পোর্টে সরানোর সময় পরিষেবা না হারান তা নিশ্চিত করতে, আমরা সাজেস্ট করি যে ক্যারিয়াররা নিম্নলিখিত বিষয়গুলির জন্য সহায়তা প্রদান করে:

  • IMEI ও সিমের ফ্লুইড ম্যাপিং
  • প্রতিটি eUICC শনাক্তকারীর (EID) জন্য একাধিক ICCID বা সিম