Сотовая связь
ОС Аврора предназначена для использования на мобильных устройствах и поддерживает основную функциональность мобильного телефона.
Функции телефонии ОС Аврора включают в себя:
-
телефонные звонки;
-
оповещение с помощью мелодий звонка;
-
маршрутизацию звука телефонного звонка;
-
управление SIM-картами;
-
возможность работы с двумя SIM-картами;
-
подключение к GPRS и к оператору телефонной сети;
-
обработку AT-команд;
-
взаимодействие с SIM ToolKit (STK-меню);
-
общее управление модемом.
-
oFono — фреймворк и демон, который используется для общего управления модемом и обеспечивает доступ к таким инструментам как идентификация в сети, использование часового пояса — NITZ (Network Identity and Time Zone), дополнительная обработка SMS для поддержки MMS;
-
libqofono — библиотека Qt для доступа к демону oFono, включающая API QML;
-
libqofonoext — библиотека Qt для доступа к nemomobile-специфичным расширениям oFono, включающая API QML;
-
ConnMan — фреймворк, обеспечивает управление всеми сетевыми соединениями;
-
libconnman-qt — библиотека Qt для доступа к ConnMan, включающая API QML.
Телефонными звонками можно управлять через oFono и Telepathy.
Промежуточное программное обеспечение для голосовых вызовов и активации звонков реализованы в виде дополнений к oFono и Telepathy:
- telepathy-ring — менеджер соединений Telepathy для GSM и аналогичной мобильной телефонии;
- telepathy-qt — библиотека Qt для клиентов телефонии;
- telepathy-mission-control — менеджер учетных записей и диспетчер каналов для Telepathy;
- voicecall — менеджер голосовых вызовов для реализации пользовательского интерфейса набора номера и активации звонков;
- libcommhistory — централизованное управление историей, сбор событий вызовов и передачи сообщений.
Управление и маршрутизация звукового потока реализована через PulseAudio:
- pulseaudio
- pulseaudio-modules-nemo
Компоненты архитектуры представлены на схеме ниже.
Стек сотовой телефонии состоит из компонентов, обеспечивающих взаимодействие с сотовой сетью в целом и предоставляющих механизмы для расширения функционала сотового телефона.
Сотовый стек состоит из следующих компонентов:
- RIL — аппаратная абстракция HAL based on Bionic;
- oFono — абстракция модема;
- ConnMan — обработка соединения;
- Telepathy — промежуточное ПО голосовой связи и сообщений;
- MCE/StateFS — обработка состояния модема;
- Contactsd — обработка контактов;
- обработка звонков и сообщений.
Содержание:
- Сотовое подключение к данным
- Фреймворк Telepathy
- Обработка состояния сотового модема
- Сотовый речевой вызов и обработка сообщений
Сотовое подключение к данным
Сотовое подключение к данным является частью общей архитектуры сотовой телефонии.
Сеть сотовой связи предоставляет услуги подключения к данным для получения доступа к сети Интернет. Сотовое подключение к данным обрабатывается компонентами:
- основные компоненты:
- ConnMan,
- Libconnman-qt,
- Nemo-qml-plugin-connectivity,
- ConnectionAgent;
- дополнительный компонент расширения: Provisioning-service.
ConnMan является основным демоном, управляющим сетевыми соединениями Wi-Fi, Bluetooth, USB и сотовая связь. Доступ к функционалу ConnMan обеспечивается с помощью высокоуровневого API D-Bus.
ConnMan поддерживает различные технологии через плагин, разработанный подобно oFono. Модульная конструкция делает ConnMan расширяемым, т. е. может быть добавлена поддержка новых технологий соединения. Также в виде плагинов могут быть реализованы методы конфигурации подобные DHCP (протокол динамического конфигурирования узла) и разрешение доменного имени.
Желаемые плагины могут быть разрешены/запрещены и сконфигурированы во время запуска. Для этого можно использовать конфигурационный файл. Файл может, например, определить предпочтительный порядок технологий и список сетевых интерфейсов, которые не будут обработаны ConnMan.
Плагины ConnMan могут быть сконфигурированы во время компиляции или во время сборки с помощью опций, среди которых есть возможность исключения встроенных плагинов, таких как Wi-Fi.
ConnMan использует oFono в качестве провайдера сотовой технологии, и поддержка ConnMan при помощи oFono реализована плагином oFono. ConnMan отслеживает демон oFono в тот момент, когда он запускается, останавливается и перезапускается.
Компонент Libconnman-qt состоит привязок Qt, которые отражают интерфейсы ConnMan D-Bus: класс NetworkManager представляет net.connman.Manager, класс NetworkTechnology представляет net.connman.Technology, класс NetworkService представляет net.connman.Service.
Компонент Nemo-qml-plugin-connectivity является динамически загружаемым QML-плагином расширения для сетевых/коммуникационных QML-приложений, использующих протокол TCP/IP. Он использует Libconnman-qt для связи с ConnMan, чтобы предоставить требуемые службы.
Компонент ConnectionAgent представляет собой демон и плагин, обеспечивающий доступ к интерфейсу агента ConnMan
(т. е. net.connman.Agent) через класс UserAgent
из библиотеки Libconnman-qt.
ConnectionAgent также предоставляет поддержку функции ConnMan autoconnect
для включения
сетевой/коммуникационной технологии, если у соответствующей службы ConnMan
параметр autoconnect
установлен в значение True
.
Provisioning-service используется для установки обновления «по воздуху» (OTA, Over the Air),
т. е. использование предоставленных оператором данных, полученных push-уведомлением для инициализирования
контекста Интернет-данных и MMS-данных (Служба обмена мультимедийными сообщениями) oFono.
Сначала данные получает oFono, который распознает их как push-уведомления и направляет к Provisioning-service
для последующей обработки.
Затем на основе полученных данных Provisioning-service инициализирует контексты данных и MMS oFono.
После обработки данных Provisioning-service распространяет сигнал,
отображающий результат (apnProvisioningSucceeded
, apnProvisioningPartiallySucceeded
, apnProvisioningFailed
).
Необязательно включать Provisioning-service в операционную систему. Он только автоматизирует настройку MMS и Интернет-соединения. В мобильном телефоне те же данные могут быть предоставлены конечным пользователем через UI приложения.
Фреймворк Telepathy
Фреймворк Telepathy является частью общей архитектуры сотовой телефонии.
Промежуточное ПО для сотового голосового вызова и SMS обеспечивается фреймворком Telepathy. Telepathy абстрагирует протокол и технологию, используемую для голосового вызова и обмена сообщениями, предоставив унифицированный интерфейс для пользователя.
Например, при использовании фреймворка Telepathy нет отличий между сотовым голосовым вызовом и вызовом через SIP (Session Initiation Protocol, протокол установления сеанса). Это достигнуто при помощи модульной структуры, где каждый модуль связывается друг с другом через коммуникационный интерфейс D-Bus.
Подробная информация о фреймворке Telepathy и его компонентах представлена в статье.
Обработка состояния сотового модема
На мобильной программной платформе необходимо обрабатывать изменения, обозначенные модемом, и изменения состояния модема. Для учёта изменений и состояний данные передаются на уровень адаптации модема (oFono) независимо из каждого отдельного приложения.
StateFS и MCE предоставляют информацию о системных состояниях, включая модем и модем-связанные состояния.
Сотовый речевой вызов и обработка сообщений
Компоненты речевого вызова и обработки сообщений:
- Voicecall;
- Commhistory-daemon;
- libcommhistory;
- Mms-engine.
Компоненты взаимодействуют с другими частями системы, такими как libqofono и Telepathy, чтобы разрешить выполнение приложений для получения и отправки сообщений (SMS и MMS), а также для получения и создания голосовых вызовов через сотовую сеть.