Gsmd/ru
From Openmoko
gsmd это GSM демон, работающий в фоне на GTA01 телефоне, управляющий действительно 'телефонной' частью телефона :)
Contents |
Использование
gsmd обычно запускается в виде демона в фоновом режиме, но для отладки он может быть запущен и в обычном режиме.
Приложение поддерживает следующие опции:
> src/gsmd/gsmd --help gsmd - (C) 2006 by Harald Welte <laforge@gnumonks.org> This program is FREE SOFTWARE under the terms of GNU GPL Испоьзование: -v --version Показать версию программы -d --daemon Запустить в режиме демона -h --help Отобразить эту справку по использованию -p dev --device dev Указать последовательное устройство для подключения -s spd --speed spd Указать скорость в бит/секунду (9600,38400,115200,...) -F --hwflow Аппаратное управление потоком (RTS/CTS) -L --leak-report Отчет об утечках памяти -l file --logfile file Указать лог файл для вывода сообщений
Если Ваш GSM модем подключен к ttySAC0 (как в Neo1973), вы можете запустить приложение так:
gsmd -p /dev/ttySAC0 -s 115200 -F
libgsmd
libgsmd это библиотека, написанная на C, предоставляющая API для приложений. Программы, использующие данную библиотеку могут использовать функции телефона устройства, например, совершение исходящих вызовов, принятие входящих вызовов, регистрация в сети и т.п.
libgsmd-tool
libgsmd-tool это небольшое тестовое приложение, которое демонстрирует использование libgsmd API.
Использование
libgsmd-tool имеет несколько режимов работы.
Использование в режиме shell
Режим шелла предоставляет простой командный интерфейс для совершения голосовых вызовов.
Режим шелла может быть включен, используя следующую команду
libgsmd-tool -m shell
Она может быть использована, как в данном примере:
> src/util/libgsmd-tool -m shell libgsm-tool - (C) 2006 by Harald Welte This program is Free Software and has ABSOLUTELY NO WARRANTY ? # A Ответить на входящий вызов D Совершить исходящий вызов H Поднять трубку O Включить o Выключить R Зарегистрироваться в сети O # EVENT: PIN request (type=1) Please enter PIN: 6582 R # EVENT: Netreg searching for network EVENT: Netreg registered (home network) D03024033902 # Dial 03024033902 EVENT: Call Progress: UNKNOWN EVENT: Call Progress: PROCEED EVENT: Call Progress: SYNC EVENT: Call Progress: ALERT H # Hangup EVENT: Call Progress: DISCONNECT EVENT: Call Progress: RELEASE EVENT: Incoming call type=2! EVENT: Incoming call clip=`"03024033902"' EVENT: Incoming call type=2! A # Answer RSTR=`OK' H # Hangup RSTR=`OK'
Использование режима atcmd
Режим пересылки atcmd. Режим пересылки означает использование команд GSM 07.07, передавая из через демона в телефон, и получая обратно ответ. Очень полезно при отладке.
Режим atcmd включается командой
libgsmd-tool -m atcmd
Она может быть использована, как в данном примере:
> src/util/libgsmd-tool -m atcmd libgsm-tool - (C) 2006 by Harald Welte This program is Free Software and has ABSOLUTELY NO WARRANTY AT+CPAS STR=`AT+CPAS' RSTR=`+CPAS: 0' AT+COPS=? STR=`AT+COPS=?' RSTR=`+COPS: (2,"E-Plus","E-Plus","26203"),(3,"o2 - de","o2 - de","26207"),(3,"Vodafone.de","Vodafone","26202"),(3,"T-Mobile D","TMO D","26201")'
Функции, относящиеся к сети
Operator selection functions were implemented and merged into SVN head[1]:
The new commands in libgsmd-util are as followings:
R - Register to given operator (R=number) P - Print current operator L - Detect available operators Q - Read signal quality
This is implemented by the functions with "_opers_" naming.
На данный момент не работает
(добавляйте, пожалуйста, функции, которые не работают)
- Функции телефона
- режим самолета / gsmd stop (это будет сделано вне gsmd, используя уровни запуска)
- получение производителя/модели/ревизии/IMEI
- Сетевые функции
- получение списка доступных операторов
- выбор оператора из списка
- получение списка названий операторов
- запрос уровня сигнала (rather than just events)
- Функции SMS
- отправка SMS
- получение SMS
- получение IMSI
- доступ с SMS, записанных на SIM
- Функции SIM
- чтение телефонной книги
- запись в телефонную книгу
- Функции GPRS
- настройка соединения GPRS, использую для этого отдельный DLC от TS07.10 multiplex
- Внутренняя структура gsmd
- fine-grained event subscriptions (rather than wildcard-subscribe)
- возможность установки уровня детализации логирования через командную строку
- переоткрытие лог файлов по сигналам SIGUSR1 или SIGHUP (logrotate)
- управление разрешениями
- интерфейс d-bus
Мысли для воплощения
Слежение за состоянием
gsmd needs to do apropriate state tracking of the underlying GSM hardware. For many of the state transition we only get events from the GSM Modem, but don't have apropriate query commands. Thus, assuming gsmd runs all the time, applications can come and go, but still have an idea about the current state of the modem, even if they missed the initial state transitions.
Also, gsmd state tracking allows us to allow for safer interoperability of multiple applications. If i.e. one applications has just started an outgoing call, gsmd can detect another application who intends to interfere with that and deny access
device power state
- modem completely off, not responding to AT commands
- modem responding to AT commands, but powered off (CFUN=0)
- modem responding to AT commands, in some power saving mode
- modem responding to AT commands, powered on, fully operational (CFUN=1)
Suspend power state
It must also configure the modem so that it can on appropriate events wake the system from sleep.
network registration state
- not registered to any network, not trying to register
- not registred to any network, searching/trying to register
- registered to home network (including cellID)
- registered to roaming network (including cellID)
ciphering indication state
- ciphering indications not supported by modem
- ciphering indications supported, but disabled in SIM
- ciphering indications supported, ciphering active
- ciphering indications supported, ciphering inactive
call state
- idle
- busy
Sources of gsmd are kept in Openmoko svn in src/target/gsm directory.
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |