Введение
USSD запросы широко используются операторами мобильной связи: через них можно узнать баланс, количество предоплаченных минут и мегебайт. Они были разработаны в 1990'х и с тех пор способ работы с ними не поменялся. Пользователь должен ввести неинтуитивный код чтобы на экране высветилось сообщение. USSD-widget предоставляет новый способ использования этих кодов, уменьшающий количество необходимых действий до минимально возможного, что позволяет лучше контролировать свой счет. В том числе это важно в силу того, что опреаторы порой приворовывают в надежде, что это останется незамеченным.
Что из себя представляет этот проект
Этот проект был разработан для n900 и состоит из двух пакетов: USSD4all и USSD-widget. Первый предоставляет GUI и CLI интерфейсы для отправки USSD запросов. Основное нововведение заключается в предоставлении сторонним приложениям простого API и обеспечения необходимых блокировок, чтобы эти программы не мешали друг другу.
Так как реализация USSD от NOKIA в PR 1.2 аналогична реализации в любом другом телефоне и рассчитана на то, что никто другой запросы посылать не будет, она
конфликтует с любой другой программой. USSD4all отключает проблемную GUI часть этой реализации и заменяет ее своей. Надеюсь, что когда-нибудь необходимость в этом отпадет.
USSD-widget это виджет для рабочего стола, который выполняет предустановленные пользователем запросы по команде или по таймеру, удаляет из ответов спам. извлек4ае полезную информацию. показывает на экране и отправляет другим приложениям (например в журнал). Он также может повторять запросы в случае ошибки, что полезно при плохом приемем, напмер в вметро. Так что, если пользователь хочет узнать свой баланс, ему достаточно просто взглянуть на рабочий стол.
Актуальность
USSD коды можно разделить на две группы:
- Редко используемые. Как правило используются для включения сервисов. Каждый раз пользователю нужен новый сервис, так что надо вводить новый код. Традиционный подход работает хорошо.
- Коды для получения информации и включеня ежедневно используемых сервисов. Было бы удобно иметь эту информацию уже высвеченной на рабочем столе, а для сервисов иметь кнопки, их включающие. USSD-widget поддерживает динамическое изменение оформления через DBus интерфейс, что позволяет изменять его цвет в зависиости от статуса услуги, активируемой виджетом. Например, некоторые операторы позволяют иметь несколько номеров на одной SIM карте и переключаться между ними с помощью USSD запросов. В таком случае вы можете иметь по виджету на номер и подсвечивать активный номер.
А даже если ваш шаблон использования не ложится на возможности USSD-widget, вы можете использовать автоматизировать его с помощью USSD4all и любого скриптового языка.
Принципиальная схема
Приложение состоит из 4х модулей: ussdquery.py (CLI утилита для выполнения запросов), qussd (традиционный GUI (я бы с удовольствием сделал бы кнопки побольше, но QT не поддерживает кнопочки с высотой отличной от 72 px.)), USSD-widget (виджет рабочего стола) и ussdd (демон, ожидающий входящие USSD сессии и. если нет приложения, готового обработать сессию, вызывающий qussd).
Во время тестирования многие пользователи жаловались на спам, добавляемый операторами к сообщениям, поэтому USSD-widget использует регулярные выражения для извлечения полезной информации из ответов. Кроме того, некоторые операторы предпочитают возвращать ответ в SMS сообщенииьвместо USSD ответа. Этот случай также может обрабатываться USSD-widget.
Блокировки
Так как GSM модуль только один, USSD сессии должны выстраиваться в очередь. USSD4all организует блокировки таким образом, что запросы от одного приложения не будут посланы по середине сесии другого приложения. Единственным слабым местом являются запросы инициированные сотовой сетью. Из-за отсутствия необходимых оповещений блоктровка будет осуществлена только после приема сообщения. Теоретически, возможно возникнование гонок. Но практически такие сессии используются крайне редко (Текущая раелизация телефонного приложения в n900 не использует USSD4all, поэтому ее сессии также считаются инициированными соовой сетью). Так что вероятностью возникновения такой ситуации можно пренебречь. Или же нужно модифицировать ПО GSM модуля (до которого у меня нет доступа).
Дополнительная документация
За дополнительной информацией вы можете обратиться на домашнюю страницу USSD-widget.
Comments
ошибка
После установки все прекрасно работает, но стоит перегрузить устройство как появляется ошибка: ошибка ввода/вывода при чтении конфигурационного файла. Syntax error in USSD number.
Попытка удаления данной программы 2 раза привела к циклической перезагрузке
А можно попросить вас
А можно попросить вас прислать, что программа печатает в командную строку. Описано тут:
http://kibergus.su/node/4
Содержимое конфигурационного файла (/home/user/.ussdWidget)
И особенно хотелось бы уточнить, что такое "удаление программы два раза". Удалить - установить - снова удалить?
ошибка ввода/вывода при
ошибка ввода/вывода при чтении конфигурационного файла. Syntax error in USSD number.
это как раз и написано в командной строке
удаление программы два раза это утром:обновил версию-стер- циклическая перезагрузка( не уловил с чем связана)- перепрошивка- полдня ходил восстанавливал- поставил опять- ошибка- стер файл .conf(безрезультатно)- деинсталировал виджет- деинсталировал USSD4all-цикличная перезагрузка-перепрошивка
куда можно послать скриншот?
Циклическая перезагрузка
Поставил обновление до fremantle-1.3. Поставил USSD Widget. На обработку запроса пишет внутри "Ошибка". Подумал что не хватает ussd4all. Поставил. Возникла ошибка "Сбой телефон". Запустил приложение Телефон, тоже самое. Выключил. Возникла циклическая перезагрузка.
А все потому, что нокия
Я раскопал это безобразие.
Я раскопал это безобразие. Виджет у меня на PR1.3 работает.
Подробности на форуме maemoworld - http://forum.maemoworld.ru/viewtopic.php?pid=45166#p45166
Просьба перезалить пакет с описанными там изменениями.