برای دستگاههای دارای Android 13 یا بالاتر، Android از چندین نمایه فعال (MEP) برای eUICC پشتیبانی میکند. این ویژگی به دستگاهها امکان میدهد بااستفاده از یک تراشه سیمکارت داخلی، از دو سیمکارت پشتیبانی کنند. این تراشه میتواند چندین نمایه سیمکارت داشته باشد و بهطور همزمان به دو شرکت مخابراتی مختلف متصل شود. سازندگان دستگاه باید با فروشندگان SoC و فروشندگان مجموعه تراشه سیمکارت داخلی همکاری کنند تا این ویژگی را در دستگاههایشان ادغام کنند.
پسزمینه
در دستگاههای دارای Android 12 و نسخههای پایینتر، AOSP پشتیبانی محدودی برای فعال کردن یک سیمکارت داخلی برای پشتیبانی از چند نمایه بهطور همزمان ارائه میدهد. باوجود صرفهجویی قابلتوجه در فضا و هزینه که سیمکارت داخلی ارائه میدهد، این فقدان پشتیبانی از دو سیمکارت مانع از آن میشود که سازندگان دستگاه دستگاههای فقط سیمکارت داخلی را بهکار بگیرند. برای ارائه پشتیبانی از دو سیمکارت در دستگاهی که فقط از سیمکارت داخلی پشتیبانی میکند، سازندگان دستگاه باید دو عنصر سیمکارت داخلی را در دستگاه قرار دهند که این امر باعث افزایش هزینههای فهرست مواد اولیه (BOM) میشود و منجر به تجربه کاربری ضعیف در مدیریت اشتراک میشود. ویژگی MEP دردسترس در AOSP از Android 13 این مشکل را برطرف میکند.
معماری eUICC
این بخش معماری تراشه سیمکارت داخلی برای دستگاههای دارای MEP برای نسخههای مختلف Android و معماری تراشه سیمکارت داخلی برای دستگاههای بدون MEP را توضیح میدهد.
Android 14
برای دستگاههای دارای Android 14 یا بالاتر، Android از گزینههای MEP-A1 و MEP-B برای انتخاب ریشه دامنه امنیتی صادرکننده (ISD-R) و انتخاب درگاههای سیمکارت داخلی طبق مشخصات GSMA SGP V22 3.0 پشتیبانی میکند. در زیر مدلهای انتخاب MEP-A1 و MEP-B ISD-R توضیح داده شده است:
MEP-A1: ISD-R در درگاه ۰ انتخاب شده است (درگاه فرمان ۰ است) و نمایهها در درگاههای سیمکارت داخلی ۱ و بالاتر انتخاب شدهاند. فرمانهای ES10 همیشه به درگاه ۰ ارسال میشوند و درگاه فرمان و درگاه هدف همیشه متفاوت هستند. LPA درگاه را انتخاب میکند.
شکل ۱. مدل انتخاب MEP-A1 ISD-R
MEP-B: ISD-R در هر درگاهی انتخاب میشود و میتوان به هر درگاهی نمایه اختصاص داد. فرمانهای فعال و غیرفعال کردن به درگاهی ارسال میشود که نمایه باید در آن فعال یا غیرفعال شود (جایی که بازآوری درانتظار است). درگاه فرمان و درگاه هدف همیشه یکسان است.
شکل ۲. مدل انتخاب MEP-B ISD-R
Android 13
در Android 13 یا بالاتر، در دستگاههایی که از MEP پشتیبانی میکنند، جای سیمکارت داخلی حاوی چندین درگاه eUICC است که هر درگاه میتواند نمایه فعال داشته باشد. همانطور که در «شکل ۳» نشان داده شده است، با این معماری، یک eUICC (یک جایگاه فیزیکی) با پیوند دادن هر درگاه eUICC به یک پایهبند مودم، از «دو سیمکارت آمادهبهکار» (DSDS) پشتیبانی میکند. Android 13 HAL و میاناهای برنامهسازی کاربردی مستقل از گونه MEP هستند.
شکل ۳. معماری تراشه سیمکارت داخلی با پشتیبانی از MEP (Android 13 یا بالاتر)
Android 12 و نسخههای پایینتر
برای دستگاههایی که Android 12 یا نسخههای پایینتر را بدون MEP اجرا میکنند، همانطور که در «شکل ۴» نشان داده شده است، جای سیمکارت داخلی فقط از یک نمایه فعال در هر زمان پشتیبانی میکند. این یعنی دستگاه نمیتواند از DSDS پشتیبانی کند.
شکل ۴. معماری تراشه سیمکارت داخلی بدون پشتیبانی از MEP (Android 12 یا پایینتر)
جریان اطلاعات میانای برنامهسازی کاربردی برای چندین نمایه فعال
شکل ۵ جریان اطلاعات را برای MEP برای eUICC در
Android 13 شرح میدهد. چارچوب تلفن شامل کلاس
UiccPort است که نشاندهنده ساختار فیزیکی در eUICC است. از کلاس
UiccPort برای همه انواع سیمکارت استفاده میشود: سیمکارت فیزیکی (pSIM)،
سیمکارت یکپارچه (iSIM)، و سیمکارت داخلی (eSIM). برای eUICC با چندین درگاه، یک شیء UiccSlot و یک شیء UiccCard به چندین نمونه UiccPort تخصیص داده میشوند. هر نمونه UiccPort میتواند حداکثر به یک نمونه UiccProfile پیوند دهد. این جریان به UiccPort اجازه میدهد به جایگاه منطقی نگاشت شود
و UiccSlot (جایگاه فیزیکی) به چند جایگاه منطقی نگاشت شود.
شکل ۵. جریان اطلاعات برای eUICC با پشتیبانی MEP
پیادهسازی
این بخش نحوه پیادهسازی ویژگی MEP را توضیح میدهد، ازجمله جزئیات مربوط به الزامات HAL، میاناهای برنامهسازی کاربردی، و میانای کاربر. سازندگان دستگاه باید با فروشندگان SoC و فروشندگان مجموعه تراشه سیمکارت داخلی همکاری کنند تا از MEP پشتیبانی کنند.
الزامات HAL
برای پشتیبانی از MEP برای eUICC، میاناهای برنامهسازی کاربردی IRadio AIDL HAL زیر را که در /platform/hardware/interfaces/radio/aidl/aidl_api قرار دارند پیادهسازی کنید.
دستگاههای دارای Android 14 یا بالاتر باید از نسخه
IRadio 2.1 از میاناهای HAL استفاده کنند که از
MultipleEnabledProfileMode (مدل انتخاب ISD-R پشتیبانیشده توسط مودم
یا eUICC) استفاده میکنند و اطلاعات فرمان ES10 APDU را درطول عملیات کانال منطقی ICC
گذر میدهند.
CardStatus
مودم باید از CardStatus API بهعنوان پاسخ به روش
getIccCardStatusResponse پشتیبانی کند. پاسخ باید شامل شاخص درگاه
و شاخص شکاف فیزیکی مشخصشده توسط SimPortSlotMapping باشد.
برای دستگاههایی که Android 14 یا بالاتر را اجرا میکنند، مودم باید حالت MEP پشتیبانیشده را با همه رویدادهای CardStatus بگذراند.
SimSlotStatus
مودم باید از SimSlotStatus API بهعنوان پاسخ به روش
getSimSlotsStatus پشتیبانی کند. وضعیت شکاف سیمکارت شامل آرایهای از
میانای SimPortInfo است که شامل نمایه درگاه، ICCID برای
نمایه فعالشده، و وضعیت درگاه است. مودم باید حداقل دو
SimPortInfo شیء برگرداند.
برای دستگاههای دارای Android 14 یا بالاتر، مودم باید حالت MEP پشتیبانیشده را با همه رویدادهای CardStatus بگذراند.
تنظیم نگاشت جایگاه سیمکارت
روش setSimSlotMapping باید آرایهای از
SimPortSlotMapping را ارسال کند. شاخص آرایه شکاف منطقی است و
SimPortSlotMapping درگاه نگاشتشده مربوطه و شاخص شکاف فیزیکی را مشخص میکند. روش setSimSlotMapping تخصیص از درگاهها به جایگاههای منطقی را تنظیم میکند. برنامه LPA از این روش برای انتخاب درگاه فعال استفاده میکند.
میاناهای برنامهسازی کاربردی پشتیبان MEP برای eUICC
دستگاههای Android که از چندین نمایه فعالشده بهعنوان بخشی از پشته تلفن AOSP پشتیبانی میکنند، باید از میاناهای برنامهسازی کاربردی زیر پشتیبانی کنند.
UiccCardInfo
- (Android 13 و بالاتر)
isMultipleEnabledProfilesSupported: برمیگرداند که آیا این UICC از MEP پشتیبانی میکند یا نه. - (Android 13 و بالاتر)
getPorts: فهرست همه درگاههای ممکن برای یک UICC خاص را برمیگرداند. اگر UICC یک pSIM یا eSIM باشد که از MEP پشتیبانی نمیکند، فهرستی با یک عنصر برمیگرداند. - (منسوخشده)
getIccId: ICCID را برمیگرداند. چون UICC میتواند بیشاز یک ICCID برای دستگاههای دارای MEP داشته باشد، بهجای آن از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: ثابتی را برمیگرداند که نشاندهنده وضعیت برنامه کارت است. این «میانای برنامهسازی کاربردی» هم شاخص جایگاه فیزیکی و هم شاخص درگاه را منتقل میکند. روشgetSimApplicationState(int physicalSlotIndex)(منسوخشده) فقط نمایه جایگاه فیزیکی را برای دریافت شیءsimApplicationStateارسال میکند. - (Android 13 و بالاتر)
setSimSlotMapping(Collection<UiccSlotMapping> slots): شکافهای منطقی را به شکافها و درگاههای فیزیکی نگاشت میکند. - (Android 13 و بالاتر)
Collection<UiccSlotMapping> getSimSlotMapping: نگاشت را از شیارهای منطقی به شیارهای سیمکارت فیزیکی و نمایههای درگاه دریافت میکند.
رابط کاربری
برای رفع ابهام در انتخاب درگاه سیمکارت داخلی، در دستگاههای پشتیبان MEP، کاربران باید بتوانند یکی از اشتراکهای فعال را غیرفعال کنند تا اشتراک جدیدی فعال شود. در Android 13، AOSP شامل یک جریان کاربر با کادر گفتگوی سهگزینهای است که میتواند برای فعال کردن اشتراک جریانهای کاربر از برنامه «تنظیمات» اعمال شود. شکل ۶ نمونهای از این جریان تجربه کاربری را نشان میدهد.
شکل ۶. جریان کاربر برای فعال کردن اشتراک سیمکارت
پرچمهای ویژه
برای پشتیبانی از MEP، دستگاهها باید پرچمهای ویژگی زیر را اعلام کنند:
پیادهسازی LPA
برای پشتیبانی از MEP، مطمئن شوید که پیادهسازی LPA شما الزامات زیر را برآورده میکند:
- میاناهای برنامهسازی کاربردی را از EuiccService برای پشتیبانی از چند درگاه پیادهسازی میکند.
- از میاناهای برنامهسازی کاربردی برای انتخاب درگاه و فعال کردن نمایه استفاده میکند.
- تجربه کاربریای ارائه میدهد که به برنامههای شرکت مخابراتی اجازه میدهد نمایهها را در درگاههای انتخابی فعال کنند.
اعتبارسنجی
برای آزمایش پیادهسازی ویژگی MEP، مطمئن شوید ساختها چارچوبهای تست سازگاری زیر را (برای میاناهای برنامهسازی کاربردی عمومی) بگذرانند:
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts.
سازندگان دستگاه باید با فروشندگان مودم، تراشه eUICC، و سیستمعامل eSIM نیز همکاری کنند تا مطمئن شوند دستگاه میتواند کارهای زیر را انجام دهد:
- میتوانید دو نمایه سیمکارت داخلی را فعال کنید و به دو شبکه مختلف متصل کنید.
- نمایههای سیمکارت داخلی را میتوان در هر درگاه سیمکارت داخلی فعال و غیرفعال کرد.
- جریان تجربه کاربریای وجود دارد که توسط برنامه شرکت مخابراتی راهاندازی میشود و به کاربران امکان میدهد نمایههایشان را عوض کنند.
توصیه برای شرکتهای مخابراتی
برای کمک به اطمینان از اینکه کاربران هنگام انتقال دادن نمایههای سیمکارت داخلی از یک درگاه به درگاه دیگر، سرویس خود را ازدست نمیدهند، توصیه میکنیم شرکتهای مخابراتی از موارد زیر پشتیبانی کنند:
- نگاشت سیال IMEI و سیمکارت
- چندین ICCID یا سیمکارت برای هر شناسه eUICC (EID)