GloDroid
Воркшоп складатиметься з двох частин: перша частина відведена на роботу з радіо
підсистемою на базі Android - додавання підтримки модему, аудіо тощо. До другої
частини увійде ознайомлення з підсистемою Android USB, а саме з підтримкою та
сучасною імплементацією різноманітних USB режимів.
PinePhone - перший смартфон, котрий почав підтримувати GloDroid. Мабуть деякі з вас
задаються питанням, чи вже можливо зробити з нього свій перший дзвінок ? Ми
обов’язково дамо відповідь на це питання, проте трохи згодом. Програмою нашої
практичної частини передбачено, що кожен матиме змогу опанувати весь шлях, починаючи
з інтеграції RIL бібліотеки і завершуючи налаштуванням аудіо системи.
АТ-команди являють собою основу функціональності всього GSM модуля. Кожен спробує
розібрати їх безпосередньо на модемі використовуючи UART інтерфейс і випробує
базовий функціонал модему. Наступна спільна частина полягає у використанні
бібліотеки для ініціалізації SIM-карти та надання GSM-управління на рівні Android
Hardware Abstraction Layer (HAL). Хтось планував ініціалізувати роботу модему вручну
після кожного запуску ? (Гадаю, що ні)
Ви можете зателефонувати своєму другові використовуючи пакет телефонії AOSP, але ви
не почуєте один одного. Проблема полягає у відсутності конфігурації аудіо, яка на
даний момент має лише один шлях: передавати системний звук на гучномовець. Можливо,
хтось уже стикався з подібними проблемами на ноутбуці Linux. Отже, завершальний етап
– зануритися в аудіокодек і включити необхідні перемикачі. Звучить неважко, тож
давайте спробуємо.
На даний момент Pinephone підтримує лише два режими USB (ADB і зарядка). Сучасні
телефони мають підтримку багатьох режимів USB, таких як передача файлів і медіа,
емуляція порту Ethernet, емуляція пристрою midi тощо. У цій частині ми покажемо
роботу, архітектуру та реалізацію підсистеми Android USB на реальних прикладах у
реальному часі.
Спочатку ми розглянемо необхідні модулі ядра та сценарії ініціалізації, а потім
розглянемо USB-гаджет HAL (рівень апаратної абстракції). Метою семінару буде
впровадження підтримки кількох режимів USB для Glodroid, таких як MTP (Media
Transfer Protocol), PTP (Photo Transfer Protocol), ADB (Android Debug), RNDIS
(Remote Network Device Interface Specification), і MIDI (цифровий інтерфейс музичних
інструментів).
Ми перевіримо наявність необхідних модулів ядра, відредагуємо сценарій ініціалізації
Android USB стеку, проаналізуємо реалізацію USB Gadget HAL та реалізацію в ньому
різних режимів USB, а також проаналізуємо проблеми та їх вирішення, які можуть
виникнути під час процес розвитку. Ви можете повторити усі вищезгадані кроки,
слідуючи одному з двох нижченаведених шляхів.
Ми підготували спеціальний реліз (
v0.7.0-embed-fest-2021),
щоб кожен міг працювати разом з нами під час вокршопу. Використовуючи цей реліз, ви
маєте доступ до параметрів налаштувань середовища:
1. Вивантажте вихідний код за посиланням вище та зробіть Android білд (
інструкції
зі збірки). Ви можете вибрати будь-який підтримуваний пристрій для роботи з
функцією USB, але зауважимо, що модуль GSM доступний лише для PinePhone. Також
зверніть увагу, що повна збірка має високі системні вимоги і займає від 6 годин.
2. Якщо ви не бажаєте робити Android білд, то ви можете скачати готові images
обраного пристрою для кожного кроку нашого воркшопу.