Gsmd/de

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(libgsmd)
m (Replacing 'OpenMoko' with 'Openmoko')
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[gsmd]] ist der [[GSM]] Daemon, der als ein Hintergrundprozess auf dem OpenMoko läuft und die Verwaltung der traditionellen 'Telefon' Funktionen (Sprache/SMS/GPRS) des Neo1973 übernimmt.
+
[[gsmd]] ist der [[GSM]] Daemon, der als ein Hintergrundprozess auf dem Openmoko läuft und die Verwaltung der traditionellen 'Telefon' Funktionen (Sprache/SMS/GPRS) des Neo1973 übernimmt.
  
 
Weitere technische Details und API Dokumentationen stehen [[Gsmd/document |hier]] zur Verfügung.
 
Weitere technische Details und API Dokumentationen stehen [[Gsmd/document |hier]] zur Verfügung.
Line 29: Line 29:
 
(Baudrate wird automatisch vom Modem ermittelt)
 
(Baudrate wird automatisch vom Modem ermittelt)
  
=== Fom Host PC ===
+
=== Vom Host PC ===
Mit dem aktuellen [[uboot]] (svn > r2885) kann der GSM Modem eingeschaltet und auf der seriellen Konsole des uboot's selbst verbunden werden. Somit kann der PC direkt mit dem Modem kommunizieren. Einige Anmerkungen zu diesem Betriebsmodus des GSM Modems finden Sie [[User:Miki/hosted_gsmd|hier]].
+
Mit dem aktuellen [[uboot]] (svn > r2885) kann das GSM Modem eingeschaltet und auf der seriellen Konsole des uboot's selbst verbunden werden. Somit kann der PC direkt mit dem Modem kommunizieren. Einige Anmerkungen zu diesem Betriebsmodus des GSM Modems finden Sie [[User:Miki/hosted_gsmd|hier]].
  
 
== libgsmd ==
 
== libgsmd ==
Line 37: Line 37:
  
 
== libgsmd-tool ==
 
== libgsmd-tool ==
 +
 +
Libgsmd-tool ist eine kleine Demo Anwendung, die verwendet werden kann, um die Nutzung der libgsmd API zu demonstrieren bzw. zu testen.
  
 
== Nutzung ==
 
== Nutzung ==
  
=== Nutzung des Shell Modes ===
+
Libgsmd kann in mehreren Modis betrieben werden.
  
=== Nutzung des atcmd Modes ===
+
=== Nutzung im Kommandozeilen Modus ===
  
== Netzwerk ähnliche Funktionen ==
+
Der Kommandozeilenmodus bietet eine einfache textbasierte Schnittstelle um Anrufe zu tätigen.
 +
 
 +
Der Kommandozeilenmodus kann wie folgt gestartet werden:
 +
 
 +
libgsmd-tool -m shell
 +
 
 +
Dies kann wie im folgenden Beispiel genutzt werden:
 +
 
 +
<pre>
 +
> 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'
 +
</pre>
 +
 
 +
=== Nutzung im atcmd Modus ===
 +
 
 +
Der stcmd Modus ist ein Passthrough-Modus. Passthrough bedeutet, dass er die [[GSM 07.07]] Befehle akzeptiert, die zum Daemon weitergeleitet werden, der sie ausführt und eine Antwort zurückliefert. Dies kann für die Fehlersuche nützlich sein.
 +
 
 +
Der atcmd Modus kann wie folgt gestartet werden:
 +
 
 +
libgsmd-tool -m atcmd
 +
 
 +
Die Nutzung kann wie im folgenden Beispiel aussehen:
 +
 
 +
<pre>
 +
> 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")'
 +
</pre>
 +
 
 +
== Funktionen zur Netzverbindung ==
 +
 
 +
Funktionen zur Auswahl des Netzbetreibers wurden umgesetzt und zusammengefasst im SVN [http://lists.openmoko.org/pipermail/gsmd-devel/2007-September/000216.html]:
 +
 
 +
Die neuen Kommandos im libgsmd-util sind:
 +
  R  -  Register to given operator (R=number)
 +
  P  -  Print current operator
 +
  L  -  Detect available operators
 +
  Q  -  Read signal quality
 +
 
 +
Dies ist mit der Finktion mit der Bezeichnung "_opers_" implementiert.
  
 
== Was derzeit fehlt ==
 
== Was derzeit fehlt ==
 +
 +
(Bitte fügen Sie einen Punkt zu dieser Auflistung hinzu, wenn Sie eine Funktionalität vermissen.)
 +
 +
* Telefon Funktionalität
 +
** Flugzeugmodus, Ausschalten des gsmd (dies wird außerhalb des gsmd mit Hilfe der Runlevels erledigt)
 +
** Fähigkeit Notrufe zu tätigen, wenn das Gerät über keine SIM Karte verfügt
 +
** Anzeige des Herstellers/Models/Version/IMEI
 +
** Benachrichtigung des Anwenders, wenn die SIM Karte gesperrt ist
 +
 +
* SMS Funktionalität
 +
** SMS empfangen
 +
** Zugriff auf die in der SIM-Karte gespeicherten SMS - ''bald gelöst - siehe Hilfe''
 +
 +
* SIM Funktionalität
 +
** Auslesen der Telefonbucheinträge - ''bald gelöst - siehe Hilfe''
 +
** Schreiben der Telefonbucheinträge - ''bald gelöst - siehe Hilfe''
 +
 +
* GPRS Funktionalität
 +
** Einrichtung der GPRS Verbindung, benutzen Sie dies durch das separate DLC of TS07.10 Multiplex
 +
 +
* gsmd interne Infrastruktur
 +
** feingranulierte Ereignisbehandlung
 +
** Möglichkeit der Bestimmung des Loglevels auf der Kommandozeile
 +
** Logdateien neu erstellen beim SIGUSR1 oder SIGHUP (logrotate)
 +
** Permission Handling
 +
** D-Bus Interface
  
 
== Implementation Thoughts ==
 
== Implementation Thoughts ==
Line 61: Line 198:
  
 
=== Anrufstatus ===
 
=== Anrufstatus ===
 
 
  
 
{{Languages | Gsmd}}
 
{{Languages | Gsmd}}
  
[[Category:Software]]
 
 
[[Category:Implemented]]
 
[[Category:Implemented]]

Latest revision as of 00:02, 23 August 2008

gsmd ist der GSM Daemon, der als ein Hintergrundprozess auf dem Openmoko läuft und die Verwaltung der traditionellen 'Telefon' Funktionen (Sprache/SMS/GPRS) des Neo1973 übernimmt.

Weitere technische Details und API Dokumentationen stehen hier zur Verfügung.

Contents

[edit] Nutzung

[edit] Auf dem Neo

gsmd wird beim Booten als ein Hintergrundprozess (Daemon) durch den Initscript /etc/init.d/gsmd gestartet. In diesem Fall wird die Debug Ausgabe nach /tmp/gsm.log weitergeleitet.

Zum Zwecke der Fehlersuche kann gsmd im Vordergrund gestartet werden, mit folgenden Optionen:

> 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       Display program version
        -d      --daemon        Deamonize
        -h      --help          Display this help message
        -p dev  --device dev    Specify serial device to be used
        -s spd  --speed spd     Specify speed in bps (9600,38400,115200,...)
        -F      --hwflow        Hardware Flow Control (RTS/CTS)
        -L      --leak-report   Leak Report of talloc memory allocator
        -l file --logfile file  Specify a logfile to log to

Wenn Ihr GSM Modem am ttySAC0 angeschlossen ist (wie in Neo1973), dann rufen Sie es z.B. wie folgt auf:

> gsmd -p /dev/ttySAC0 -s 115200 -F

(Baudrate wird automatisch vom Modem ermittelt)

[edit] Vom Host PC

Mit dem aktuellen uboot (svn > r2885) kann das GSM Modem eingeschaltet und auf der seriellen Konsole des uboot's selbst verbunden werden. Somit kann der PC direkt mit dem Modem kommunizieren. Einige Anmerkungen zu diesem Betriebsmodus des GSM Modems finden Sie hier.

[edit] libgsmd

Libgsmd ist eine Bibliothek der Programmiersprache C, die eine API für die Anwendungsprogramme anbietet. Programme, die diese Bibliothek benutzen, können z.B. Anrufe tätigen, einkommende Anrufe annehmen, sich am Netzwerk registrieren, etc.

[edit] libgsmd-tool

Libgsmd-tool ist eine kleine Demo Anwendung, die verwendet werden kann, um die Nutzung der libgsmd API zu demonstrieren bzw. zu testen.

[edit] Nutzung

Libgsmd kann in mehreren Modis betrieben werden.

[edit] Nutzung im Kommandozeilen Modus

Der Kommandozeilenmodus bietet eine einfache textbasierte Schnittstelle um Anrufe zu tätigen.

Der Kommandozeilenmodus kann wie folgt gestartet werden:

libgsmd-tool -m shell

Dies kann wie im folgenden Beispiel genutzt werden:

> 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'

[edit] Nutzung im atcmd Modus

Der stcmd Modus ist ein Passthrough-Modus. Passthrough bedeutet, dass er die GSM 07.07 Befehle akzeptiert, die zum Daemon weitergeleitet werden, der sie ausführt und eine Antwort zurückliefert. Dies kann für die Fehlersuche nützlich sein.

Der atcmd Modus kann wie folgt gestartet werden:

libgsmd-tool -m atcmd

Die Nutzung kann wie im folgenden Beispiel aussehen:

> 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")'

[edit] Funktionen zur Netzverbindung

Funktionen zur Auswahl des Netzbetreibers wurden umgesetzt und zusammengefasst im SVN [1]:

Die neuen Kommandos im libgsmd-util sind:

 R  -  Register to given operator (R=number)
 P  -  Print current operator
 L  -  Detect available operators
 Q  -  Read signal quality

Dies ist mit der Finktion mit der Bezeichnung "_opers_" implementiert.

[edit] Was derzeit fehlt

(Bitte fügen Sie einen Punkt zu dieser Auflistung hinzu, wenn Sie eine Funktionalität vermissen.)

  • Telefon Funktionalität
    • Flugzeugmodus, Ausschalten des gsmd (dies wird außerhalb des gsmd mit Hilfe der Runlevels erledigt)
    • Fähigkeit Notrufe zu tätigen, wenn das Gerät über keine SIM Karte verfügt
    • Anzeige des Herstellers/Models/Version/IMEI
    • Benachrichtigung des Anwenders, wenn die SIM Karte gesperrt ist
  • SMS Funktionalität
    • SMS empfangen
    • Zugriff auf die in der SIM-Karte gespeicherten SMS - bald gelöst - siehe Hilfe
  • SIM Funktionalität
    • Auslesen der Telefonbucheinträge - bald gelöst - siehe Hilfe
    • Schreiben der Telefonbucheinträge - bald gelöst - siehe Hilfe
  • GPRS Funktionalität
    • Einrichtung der GPRS Verbindung, benutzen Sie dies durch das separate DLC of TS07.10 Multiplex
  • gsmd interne Infrastruktur
    • feingranulierte Ereignisbehandlung
    • Möglichkeit der Bestimmung des Loglevels auf der Kommandozeile
    • Logdateien neu erstellen beim SIGUSR1 oder SIGHUP (logrotate)
    • Permission Handling
    • D-Bus Interface

[edit] Implementation Thoughts

[edit] Status Anzeige

[edit] Power Status des Gerätes

[edit] Suspend Power Status

[edit] Status der Netzwerkregistrierung

[edit] Status der Verschlüsselungserkennung

[edit] Anrufstatus

Personal tools

gsmd ist der GSM Daemon, der als ein Hintergrundprozess auf dem OpenMoko läuft und die Verwaltung der traditionellen 'Telefon' Funktionen (Sprache/SMS/GPRS) des Neo1973 übernimmt.

Weitere technische Details und API Dokumentationen stehen hier zur Verfügung.

Nutzung

Auf dem Neo

gsmd wird beim Booten als ein Hintergrundprozess (Daemon) durch den Initscript /etc/init.d/gsmd gestartet. In diesem Fall wird die Debug Ausgabe nach /tmp/gsm.log weitergeleitet.

Zum Zwecke der Fehlersuche kann gsmd im Vordergrund gestartet werden, mit folgenden Optionen:

> 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       Display program version
        -d      --daemon        Deamonize
        -h      --help          Display this help message
        -p dev  --device dev    Specify serial device to be used
        -s spd  --speed spd     Specify speed in bps (9600,38400,115200,...)
        -F      --hwflow        Hardware Flow Control (RTS/CTS)
        -L      --leak-report   Leak Report of talloc memory allocator
        -l file --logfile file  Specify a logfile to log to

Wenn Ihr GSM Modem am ttySAC0 angeschlossen ist (wie in Neo1973), dann rufen Sie es z.B. wie folgt auf:

> gsmd -p /dev/ttySAC0 -s 115200 -F

(Baudrate wird automatisch vom Modem ermittelt)

Fom Host PC

Mit dem aktuellen uboot (svn > r2885) kann der GSM Modem eingeschaltet und auf der seriellen Konsole des uboot's selbst verbunden werden. Somit kann der PC direkt mit dem Modem kommunizieren. Einige Anmerkungen zu diesem Betriebsmodus des GSM Modems finden Sie hier.

libgsmd

Libgsmd ist eine Bibliothek der Programmiersprache C, die eine API für die Anwendungsprogramme anbietet. Programme, die diese Bibliothek benutzen, können z.B. Anrufe tätigen, einkommende Anrufe annehmen, sich am Netzwerk registrieren, etc.

libgsmd-tool

Nutzung

Nutzung des Shell Modes

Nutzung des atcmd Modes

Netzwerk ähnliche Funktionen

Was derzeit fehlt

Implementation Thoughts

Status Anzeige

Power Status des Gerätes

Suspend Power Status

Status der Netzwerkregistrierung

Status der Verschlüsselungserkennung

Anrufstatus