Gsmd/de

From Openmoko

Jump to: navigation, search

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

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)

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.

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

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

Nutzung

Libgsmd kann in mehreren Modis betrieben werden.

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'

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

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.

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

Status Anzeige

Power Status des Gerätes

Suspend Power Status

Status der Netzwerkregistrierung

Status der Verschlüsselungserkennung

Anrufstatus

Personal tools