Gsmd/zh tw
From Openmoko
(→libgsmd-tool) |
(→Usage) |
||
Line 44: | Line 44: | ||
== Usage == | == Usage == | ||
− | libgsmd-tool | + | libgsmd-tool 有多重模式。 |
=== Usage of shell mode === | === Usage of shell mode === | ||
− | Shell | + | Shell 模式針對語音通話提供一個簡單的text-based 指令界面。 |
− | + | shell 模式可以利用下面的指令啟動 | |
libgsmd-tool -m shell | libgsmd-tool -m shell | ||
− | + | 以下即為它的實做範例: | |
<pre> | <pre> |
Revision as of 10:30, 19 May 2008
gsmd 是在Openmoko手機上執行的 GSM背景程式。它用來管理話機中傳統的'通話' 領域 (聲音/簡訊/gprs 通訊連結)。
你可以在這裡找到進行中的進階技術描述及API文件。
Contents |
Usage
On the phone
當以/etc/init.d/gsmd script啟動時,gsmd 通常會以背景程式執行,在這個案例當中gsmd會輸出偵錯訊息到 "/tmp/gsm.log"檔案中 (stdout及stderr在這裡則被重新導引).
針對偵錯目地,gsmd可以在前景模式下執行,可以被使用的選項如下:
> gsmd --help gsmd - (C) 2006 by Harald Welte <laforge@gnumonks.org> This program is FREE SOFTWARE under the terms of GNU GPL Usage: -v --version 顯示程式版本 -d --daemon Deamonize -h --help 顯示輔助訊息 -p dev --device dev 指定串列裝置為作用中裝置 -s spd --speed spd 指定bps速度 (9600,38400,115200,...) -F --hwflow 硬體流量控制(RTS/CTS) -L --leak-report Leak Report of talloc memory allocator -l file --logfile file Specify a logfile to log to
如果你的GSM 數據機連接到ttySAC0 (如 Neo1973), 使用如下指令啟動它:
> gsmd -p /dev/ttySAC0 -s 115200 -F
(baud rate可被modem自動偵測)
從host PC
使用最近的 uboot (svn > r2885),gsm modem可以電源啟動,並且從uboot本身連接到uboot的串列控制埠。然後,允許host PC直接與數據機互動。關於host pc執行gsmd 的文章,你可以在這裡找到。
libgsmd
libgsmd 是C 語言API中的程式庫。這個程式庫的程式可以被用在手機上,如打電話、接收電話、註冊為網路一員...等。
libgsmd-tool
libgsmd-tool 是可以用來詮釋libgsmd API的小型展示應用程式。
Usage
libgsmd-tool 有多重模式。
Usage of shell mode
Shell 模式針對語音通話提供一個簡單的text-based 指令界面。
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 Answer incoming call D Dial outgoing number H Hangup call O Power On o Power Off r Register to network R Register to given operator (R=number) U Unregister from netowrk P Print current operator L Detect available operators Q Read signal quality T Send DTMF Tone n Print subscriber numbers pd PB Delete (pb=index) pr PB Read (pr=index) prr PB Read Range (prr=index1,index2) pf PB Find (pf=indtext) pw PB Write (pw=index,number,text) ps PB Support pm PB Memory pp PB Set Memory (pp=storage) pRr Retrieve Readrg Records pRf Retrieve Find Records sd SMS Delete (sd=index,delflg) sl SMS List (sl=stat) sr SMS Read (sr=index) ss SMS Send (ss=ask_ds,number,text|["text"]) sw SMS Write (sw=stat,number,text) sm SMS Storage stats sM SMS Set preferred storage (sM=mem1,mem2,mem3) sc SMS Show Service Centre sC SMS Set Service Centre (sC=number) q Quit 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'
Usage of atcmd mode
The atcmd mode is a passthrough-mode. Passthrough means that it accepts GSM 07.07 commands, passes them through the daemon to the phone, and returns you the response. this is very useful for debugging.
The atcmd mode can be started using
libgsmd-tool -m atcmd
Usage is like in the following example:
> 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.
Currently missing
(please add items to this list if you're missing more features)
- Phone related functions
- Airplane mode / gsmd stop (this will be done outside gsmd, by using runlevels / upstart)
- Capability to set-up Emergency Calls, even if the device does not hold a SIM card
- obtain manufacturer/model/revision/IMEI
- Ability to notify user if the SIM card is locked (or even automagically unlock it?)
- SMS related features
- send SMS
- receive SMS
- obtain IMSI
- access to SIM-card stored SMS - No longer missing - see help
- SIM related functions
- read phonebook entry - No longer missing - see help
- write phonebook entry - No longer missing - see help
- GPRS related functions
- set up GPRS link, use it via separate DLC of TS07.10 multiplex
- gsmd internal infrastructure
- fine-grained event subscriptions (rather than wildcard-subscribe)
- possibility to specify log-level from command line
- logfile re-opening on SIGUSR1 or SIGHUP (logrotate)
- permission handling
- d-bus interface
Implementation Thoughts
Testing framework
Emulating/mocking the firmware, gsmd and libgsmd can be tested for functionality; on any machine. See Kero's page or go directly to the (lib)gsmd testing page.
State tracking
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à |