Gsmd/ru

From Openmoko

Revision as of 00:45, 21 August 2008 by Dolfje (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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.

Personal tools

gsmd это GSM демон, работающий в фоне на GTA01 телефоне, управляющий действительно 'телефонной' частью телефона :)

Использование

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.