Сотовая связь

Sailfish OS предназначен для использования на мобильных устройствах, а в частности, на мобильных телефонах. Важно, чтобы был эффективный стек сотовой телефонии, позволяющий пользователю управлять контактами и использовать их, создавать, получать телефонные звонки, сообщения и данные по сетям GSM и LTE и управлять ими — основная функциональность мобильного телефона.

Функции телефонии Sailfish OS включают в себя возможности совершения телефонных звонков, предупреждающих мелодией звонка, маршрутизацию аудиотелефонных вызовов, управление SIM и возможность использования двух SIM, GPRS и соединения с оператором телефонной сети, обработки AT-команд, взаимодействие SIM ToolKit и общее управление модемом.

Фреймворк oFono используется для общего управления модемом и ConnMan для управления сетевым соединением:

  • oFono — ответвление (форк) Jolla 01.org/ofono;
  • libqofono — библиотека Qt для доступа к демону oFono, включающее API QML;
  • libqofonoext — библиотека Qt для доступа к nemomobile-специфичным расширениям oFono, включающим API QML;
  • ConnMan — ответвление Jolla 01.org/connman;
  • libconnman-qt — библиотека Qt для доступа к ConnMan, включающая API QML.

Телефонные звонки организованы через oFono и Telepathy. Кроме того, пакеты промежуточного ПО для голосовых вызовов обеспечивают выполнение плагинов для использования Telepathy с oFono и активации звонков, а libcommhistory собирает историю телефонных звонков и сообщений для последующего просмотра:

  • telepathy-ring — менеджер соединений Telepathy для GSM и подобной мобильной телефонии;
  • telepathy-qt — библиотека Qt для клиентов телефонии;
  • telepathy-mission-control — менеджер учетных записей и диспетчер каналов для Telepathy;
  • mer-core/voicecall — менеджер голосовых вызовов для реализации пользовательского интерфейса набора номера и активации звонков;
  • libcommhistory — централизованное управление и сбор событий вызовов и передачи сообщений.

Управление и маршрутизация звукового потока реализована через PulseAudio:

Компоненты архитектуры представлены на схеме ниже.

Архитектура телефонии

Стек сотовой телефонии состоит из компонентов, которые выполняют эти функциональные возможности и взаимодействуют с сотовой сетью в целом. Ниже объясняются компоненты, расширяющие или улучшающие возможности сотовой телефонии. Такие компоненты представляют собой механизмы расширений, используемые во многих современных мобильных телефонах.

Сотовый стек состоит из следующих компонентов:

Сотовое подключение к данным

Сотовое подключение к данным является частью общей архитектуры сотовой телефонии.

Сеть сотовой связи предоставляет услуги подключения к данным для получения доступа к сети Интернет. В Mer сотовое подключение к данным обрабатывается компонентами:

  • основные компоненты:
    • ConnMan,
    • Libconnman-qt,
    • Nemo-qml-plugin-connectivity,
    • ConnectionAgent;
  • дополнительный компонент расширения: Provisioning-service.

ConnMan является основным демоном, управляющим сетевыми соединениями за счет множества технологий, проводных и беспроводных (таких как Wi-Fi, Bluetooth, USB и сотовая связь), используемых в мобильных устройствах. Это обеспечивает высокоуровневый API D-Bus при использовании сетевыми приложениями.

Он поддерживает различные технологии через плагин, разработанный подобно oFono. Эта модульная конструкция делает ConnMan расширяемым, т. е. поддержка новых технологий соединения может быть добавлена. Помимо новых технологий расширения для различных служб могут также быть реализованы в виде плагинов, таких как методы конфигурации подобно DHCP (протокол динамического конфигурирования узла) и разрешение доменного имени.

Желаемые плагины могут быть разрешены/запрещены и сконфигурированы во время запуска, используя конфигурационный файл. Файл может, например, определить предпочтительный порядок технологий и список сетевых интерфейсов, которые не будут обработаны ConnMan.

Плагины ConnMan также сконфигурированы во время компиляции и используют конфигурацию во время сборки и опции, среди которых есть возможность исключения встроенных плагинов, таких как Wi-Fi.

ConnMan использует oFono в качестве провайдера сотовой технологии, и поддержка ConnMan при помощи oFono реализована плагином oFono. ConnMan отслеживает демон oFono в тот момент, когда он запускается, останавливается и перезапускается.

Libconnman-qt состоит из двух библиотек, которые обеспечивают доступ к интерфейсам D-Bus ConnMan в качестве привязок Qt и плагина для приложений QML. Эти привязки являются прямым отражением интерфейсов, заданных при помощи ConnMan.

Nemo-qml-plugin-connectivity является динамически загружаемым собственным QML-плагином расширения Mer для сетевых/коммуникационных QML-приложений, используя TCP/IP. Он использует Libconnman-qt для связи с ConnMan, чтобы предоставить требуемые службы.

Основной целью ConnectionAgent является предоставление демона и библиотеки-плагина QML-приложений для получения доступа к интерфейсу агента 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 и Интернет-соединения. В мобильном телефоне, используя операционную систему, содержащую компоненты Mer, могут быть предоставлены те же данные конечным пользователем через UI приложения.

Фреймворк Telepathy

Фреймворк Telepathy является частью общей архитектуры сотовой телефонии.

Промежуточное ПО для сотового голосового вызова и SMS обеспечивается фреймворком Telepathy. Его основная цель состоит в том, чтобы абстрагировать протокол или технологию, используемую для голосового вызова и обмена сообщениями, предоставив унифицированный интерфейс. С клиентской точки зрения, при отправке сообщения или создании голосового вызова фреймворк Telepathy должен быть похожим независимо от протокола или используемой технологии.

Например, он не должен отличаться для пользователя при создании сотового голосового вызова или SIP (Session Initiation Protocol, протокол установления сеанса) на основе голосового вызова IP, используя фреймворк Telepathy. Это достигнуто при помощи модульной структуры, где каждый модуль связывается друг с другом через коммуникационный фреймворк D-Bus.

Подробная информация о фреймворке Telepathy и его компонентах представлена в статье.

Обработка состояния сотового модема

На мобильной программной платформе необходимо обрабатывать изменения, обозначенные модемом, и изменения состояния модема. Пока это может быть сделано независимо к каждому приложению после изменений состояния, переданных уровню адаптации модема (oFono).

StateFS и MCE предоставляют информацию о системных состояниях, включая модем и модем-связанные состояния.

Обработка контактов

Некоторые компоненты относятся к управлению данными контакта в Sailfish OS, которые вместе обеспечивают доступ к контактной информации из различных источников, включая SIM-карты, списки обмена мгновенными сообщениями, серверы синхронизации и социальные сети.

Сотовый речевой вызов и обработка сообщений

Верхней частью сотовой архитектуры телефонии Mer являются сотовые голосовые вызовы и обработка сообщений. Она состоит из компонентов:

Они взаимодействуют с другими частями системы, такими как libqofono и Telepathy, чтобы разрешить выполнение приложений для получения и отправки сообщений (SMS и MMS), а также получения и создания голосовых вызовов, используя сотовую сеть.