D. Manualpages für die IsdnLib

In den folgenden Abschnitten beschreiben wir die Funktionen der IsdnLib. Dabei werden die Funktionen einzeln in der Art von Manualpages beschrieben.


D.1. IsdnInitialize

  • ZWECK Initialisiert die IsdnLib
  • SYNTAX #include <IsdnLib.h>

    int IsdnInitialize (void (*callback)());

  • BESCHREIBUNG IsdnInitialize wird benutzt um die IsdnLib zu initialisieren und den Q.931 Stack mit dem DLPI Interface zu verbinden. Sie muß vor allen anderen Funktionen der Library aufgerufen werden, oder diese liefern einen Fehler.

    callback ist eine Callback Funktion, die die Applikation angeben muß. Sobald eine Q.931 Nachricht eingeht, die für die Applikation von Interesse sein könnte, wird diese Funktion aufgerufen.

    Nachdem die Library initialisiert wurde, können andere IsdnLib Funktionen benutzt werden, um das ISDN zu benutzen.

    Bevor die Applikation terminiert, sollte diese IsdnFini() aufrufen, um alle belegten Ressourcen wieder freizugeben.

  • DEBUGGING Es existiert ein Debugging Support, falls dieser bei der Generierung der Library nicht ausgeschaltet wurde. Durch Setzen der Environment Variablen ISDN_DEBUG kann angegeben werden, welche Informationen ausgegeben werden sollen. Der angegebene Wert spezifiziert eine Bitmaske, die durch Angabe des Prefixes 0x auch als Hexadezimalwert angegeben werden. Folgende Werte sind definiert:
    0x0001 Ausgabe von Informationen des Schedullers 0x0002 Ausgabe der IsdnLib CallId 0x0008 Ausgabe von Timerinformationen 0x0010 Anzeige der ein- und ausgehenden Q.931 Nachrichten 0x0020 Anzeige der ein- und ausgehenden Q.921 Nachrichten 0x0040 Anzeige interner Q.931 Requests und Indikationen 0x1000 Trace des Beenden einer Funktion 0x2000 Trace jedes Funktionsaufrufs 0x4000 Ausgabe der Warnungen 0x8000 Ausgabe der Fehler
  • RÜCKGABEWERT IsdnInitialize liefert 0 wenn die Initialisierung erfolgreich war, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • FEHLER EISDN_SYSCALL Der Aufruf eines Systemcalls lieferte einen unerwarteten Fehler.
  • BEISPIEL #include <IsdnLib.h>

    void (*IsdnCallback) (tIsdnInd *ind);

    main ()

    /* initalize the application */ if (IsdnInitialize (IsdnCallback)) < 0) /* handle error */ exit (1); IsdnMainLoop (); ... IsdnFini (); exit (0); T>


    D.2. IsdnFini

  • ZWECK Freigabe aller Ressourcen, die von der IsdnLib benutzt wurden
  • SYNTAX #include <IsdnLib.h>

    void IsdnFini ();

  • BESCHREIBUNG IsdnFini beendet die IsdnLib und gibt alle belegten Ressourcen wieder frei.


    D.3. IsdnMainLoop

  • ZWECK Startet die Mainloop der IsdnLib
  • SYNTAX #include <IsdnLib.h>

    int IsdnMainLoop ();

  • BESCHREIBUNG IsdnMainLoop wird verwendet, um die Mainloop der IsdnLib zu starten. Bevor diese nicht gestartet wurde ist es nicht möglich, Q.931 Nachrichten zu empfangen oder ordnungsgemäß zu versenden.

    Da jederzeit, nachdem das ISDN Device aktiviert wurde, Q.931 Nachrichten eintreffen können, sollte IsdnMainLoop relativ schnell nach IsdnInitialize aufgerufen werden. Anderenfalls kann es passieren, das noch alte, nicht behandelte Nachrichten in der Queue stehen, die dann zu Verwirrungen führen könnten.

    Der Aufruf von IsdnMainLoop kehrt erst zurück, wenn dies ausdrücklich durch Setzen der globalen Variable schedulerStop auf einen Wert ungleich 0.

  • RÜCKGABEWERT IsdnInitialize liefert 0 wenn die Mainloop erfolgreich gestartet werden konnte, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL #include <IsdnLib.h>

    void (*IsdnCallback) (tIsdnInd *ind);

    main ()

    ... IsdnInitialize (IsdnCallback); IsdnMainLoop (); IsdnFini (); exit (0); T>


    D.4. IsdnError

  • ZWECK Formatierte Ausgabe des Wertes der Variable isdnErrno
  • SYNTAX #include <IsdnLib.h>

    void IsdnError (const char *str, ...);

  • BESCHREIBUNG IsdnError gibt den Wert der globalen Fehlervariablen isdnErrno formatiert auf stderr aus. Als Parameter erwartet die Funktion eine variable Anzahl von Argumenten, analog zu printf.
  • BEISPIEL ... IsdnError ("Error occured at ...


    D.5. T>
  • ZWECK Registriert einen Filehandler
  • SYNTAX #include <IsdnLib.h>

    void cb (int mode, void *data); int IsdnCreateFileHandler (int fd, int mode, void (*cb) (), void *data);

  • BESCHREIBUNG Mit IsdnCreateFileHandler registriert die Applikation einen Filehandler (cb) für den angegebenen Filedescriptor fd. Dieser wird aufgerufen, sobald einer der in mode angegebenen Ereignisse eintrifft. Folgende Ereignisse können spezifiziert werden:
    ISDN_READABLE
    ISDN_WRITABLE
    ISDN_EXCEPTION
    		

    Ein installierter Filehandler kann mit IsdnDeleteFileHandler jederzeit wieder gelöscht werden.

  • RÜCKGABEWERT IsdnInitialize liefert 0 wenn der Filehandler erfolgreich installiert werden konnte, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL #include <IsdnLib.h>

    Echo (void *data, int mode)

    ... T> main ()

    ... IsdnCreateFileHandler (0, ISDNREADABLE, Echo, NULL); ...


    D.6. IsdnDeleteFileHandler

  • ZWECK Löscht einen zuvor installierten Filehandler
  • SYNTAX #include <IsdnLib.h>

    void IsdnDeleteFileHandler (int fd);

  • BESCHREIBUNG IsdnDeleteFileHandler löscht den zuvor für den Filedescriptor fd installierten Filehandler.
  • BEISPIEL #include <IsdnLib.h>

    Echo (void *data, int mode)

    ... T> main ()

    ... IsdnCreateFileHandler (0, ISDNREADABLE, Echo, NULL); ... IsdnDeleteFileHandler (0);


    D.7. IsdnCreateTimerHandler

  • ZWECK Startet einen Timer und installiert einen Timerhandler
  • SYNTAX #include <IsdnLib.h>

    void cb (int mode, void *data); int IsdnCreateTimerHandler (int ms, void (*cb) (), void *data);

  • BESCHREIBUNG IsdnCreateTimerHandler startet einen Timer mit ms Millisekunden. Sollte der Timer ablaufen, so wird der registrierte Callback cb aufgerufen.

    Ein gestarteter Timer und der installierte Timerhandler können mit IsdnDeleteTimerHandler jederzeit wieder gelöscht werden.

  • RÜCKGABEWERT Wurde der Timer erfolgreich installiert, liefert IsdnCreateTimerHandler eine TimerId für den Timer, dessen Wert größer 0 ist, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL #include <IsdnLib.h>

    Beep (void *data, int mode)

    ... T> main ()

    ... /* create timer for one second ***/ IsdnCreateTimerHandler (1000, Echo, NULL); ...


    D.8. IsdnDeleteTimerHandler

  • ZWECK Stoppt einen Timer und den installierten Timerhandler
  • SYNTAX #include <IsdnLib.h>

    void IsdnDeleteTimerHandler (int timerId);

  • BESCHREIBUNG IsdnDeleteTimerHandler stoppt einen zuvor gestarteten Timer timerId und löscht den installierten TimerHandler.
  • BEISPIEL #include <IsdnLib.h>

    void Cb (); main ()

    ... /* create timer for one second ***/ timerId = IsdnCreateTimerHandler (1000, Cb, NULL); ... IsdnDeleteTimerHandler (timerId); ... T>


    D.9. IsdnAlertingReq

  • ZWECK Signalisierung der Bereitschaft, den eingehenden Anruf entgegenzunehmen.
  • SYNTAX #include <IsdnLib.h>

    int IsdnAlertingReq (const t_IsdnAlertingReq *ireq)

  • BESCHREIBUNG Die IsdnLib signalisiert einen eingehenden Anruf durch eine IsdnCallInd. Durch Aufruf von IsdnAlertingReq signalisiert die Applikation ihre Bereitschaft, den Anruf eventuell entgegenzunehmen. Handelt es sich um einen Telefonanruf, wird beim Anrufer hierdurch das Klingelzeichen generiert.

    Der Parameter ireq definiert weitere Parameter für den Request:

    typedef struct int callId; /* req. */ T>IsdnAlertingReq;
  • callId Referenziert die logische Verbindung. Wenn die Applikation den Anruf nicht behandeln möchte, sollte sie den Anruf mit einem IsdnReleaseReq beenden. Wird auf einen eingehenden Anruf nicht innerhalb von 8 Sekunden reagiert, generiert die IsdnLib selbst eine IsdnReleaseInd.
  • RÜCKGABEWERT IsdnAlertingReq liefert 0 wenn der Request erfolgreich bearbeitet wurde, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • FEHLER
  • EISDN_INV_CALLID Die in ireq angegebene callId konnte keiner logischen Verbindung zugeordnet werden.
  • EISDN_Q931 Es wurde eine unerwartete Q.931 Nachricht empfangen, die nicht der Protokollspezifikation entspricht.
  • BEISPIEL HandleIncommingCall (int callId)

    tIsdnAlertingReq req;

    ... /* check the incomming call */ req.callId = callId; if (IsdnAlertingReq (req)) IsdnError ("Error in IncommingCall"); else ... /* ok */ T>


    D.10. IsdnCallReq

  • ZWECK Initiiert einen ausgehenden Anruf
  • SYNTAX #include <IsdnLib.h>

    int IsdnCallReq (t_IsdnCallReq *req)

  • BESCHREIBUNG IsdnCallReq wird benutzt um einen ausgehenden Anruf zu initiieren. Die IsdnLib erzeugt eine neue Q.931 CallReference Value und versucht den Anruf zu tätigen.

    Der Parameter ireq definiert weitere Parameter für den Request:

    typedef struct int callId; /* n/a */ tCalledPartyNo calledNo; /* opt. no to be called */ tCalledPartySubAddr calledSubAddr; /* opt. subAddr to be called */ tCallingPartyNo callingNo; /* opt. calling no */ tCallingPartySubAddr callingSubAddr; /* opt. calling subAddr */ tIsdnService service; /* opt. complete service */ tBearerCap bearerCap[2]; /* opt. bearer cap */ tHighLayerComp highLayerComp[4]; /* opt. HLC */ tLowLayerComp lowLayerComp[4]; /* opt. LLC */ T>IsdnCallReq;
    Bedeutung der Felder:
  • callId Hat beim Aufruf keine Bedeutung. Wenn der Request erfolgreich bearbeitet wurde, enthält dieses Feld die callId für diese logische Verbindung, die von der IsdnLib vergeben wurde.
  • calledNo Spezifiziert die anzurufende Nummer. Wurde die Nummer nicht angegeben, so kann die Applikation im Overlap Sending Modus die Nummer auch mit Hilfe von IsdnDialReq Nachrichten angegeben.
  • calledSubAddr Spezifiziert die Subadresse der angerufenen Nummer.
  • callingNo Spezifiziert die Nummer des Anrufers, falls angegeben. In vielen Fällen kommt es vor, daß das zwischenliegende Netz diese überprüft und gegebenenfalls ändert.
  • callingSubAddr Spezifiziert die Subadresse des Anrufers, falls angegeben.
  • service Definiert den Dienst, mit der der Anruf initiiert werden soll, falls angegeben. Mit diesem Feld ist es möglich, den Dienst auf einfache Art zu definieren:
  • ISDN_S_VOICE_ALAW Telefonie mit 3.1 kHz, PCM A-law kodiert
  • ISDN_S_VOICE_MULAW Telefonie mit 3.1 kHz, PCM µ-law kodiert Wurde dieses Feld nicht angegeben, so muß der Dienst mit Hilfe der folgenden Felder spezifiziert werden. Anderenfalls haben diese Felder keine Bedeutung.
  • bearerCap Definiert die zu verwenden Bearer Capability, analog zu Q.931.
  • highLayerComp Definiert die zu verwenden High Layer Compatibility, analog zu Q.931.
  • lowLayerComp Definiert die zu verwenden Low Layer Compatibility, analog zu Q.931. Die erfolgreiche Benutzung dieses Requests bedeutet nicht, daß hierdurch eine Verbindung aufgebaut wurde, der Aufbau wurde nur initiiert. Die Verbindung ist erst dann vollständig aufgebaut, wenn die IsdnLib eine IsdnConnectInd generiert.

    Der initiierte Anruf kann jederzeit durch Verwendung von IsdnReleaseReq abgebrochen werden.

  • RÜCKGABEWERT IsdnCallReq liefert 0 wenn der Request erfolgreich bearbeitet wurde, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL InitiateCall ()

    tIsdnCallReq req;

    memset (req, '', sizeof (req)); strcpy (req.calledNo.number, "+493025499203"); strcpy (req.callingNo.number, "+4930999888777"); req.service = ISDNSVOICEALAW; if (IsdnCallReq (req)) IsdnError ("Error in InitiateCall"); else return req.callId; /* return the callId */ T>


    D.11. IsdnConnectReq

  • ZWECK Annahme eines eingehenden Anrufes.
  • SYNTAX #include <IsdnLib.h>

    int IsdnConnectReq (const t_IsdnConnectReq *ireq)

  • BESCHREIBUNG IsdnConnectReq nimmt einen eingegangenen Anruf entgegen. Bevor der Anruf entgegengenommen werden kann, muß die Applikation die Bereitschaft zur Annahme mit IsdnAlertingReq signalisiert haben..

    Der Parameter ireq definiert weitere Parameter für den Request:

    typedef struct /* connect to incomming call */ int callId; /* req. */ tIsdnService service; /* opt. short cut service */ tBearerCap bearerCap; /* opt. selected bearer cap */ tHighLayerComp highLayerComp; /* opt. selected HLC */ tLowLayerComp lowLayerComp; /* opt. selected LLC */ T>IsdnConnectReq;
    Bedeutung der Felder:
  • callId Identifiziert die logische Verbindung.
  • service Definiert den angenommenen Dienst, falls angegeben. Im ISDN ist es möglich, daß der Anrufer mehrere mögliche Dienste angibt. Der Angerufene muß aus dieser Liste einen auswählen, den er am besten behandeln kann. Ist dieser Parameter nicht angegeben, so muß der ausgewählte Dienst über die folgenden Felder spezifiziert werden. Ansonsten haben diese keine Bedeutung.
  • bearerCap Definiert die zu verwenden Bearer Capability, analog zu Q.931.
  • highLayerComp Definiert die zu verwenden High Layer Compatibility, analog zu Q.931.
  • lowLayerComp Definiert die zu verwenden Low Layer Compatibility, analog zu Q.931. Auch nach erfolgreicher Benutzung dieses Requests ist die Verbindung noch nicht hergestellt! Erst nachdem die IsdnLib eine IsdnConnectInd signalisiert, wurde die Verbindung aufgebaut.
  • RÜCKGABEWERT IsdnCallReq liefert 0 wenn der Request erfolgreich bearbeitet wurde, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL ConnectToCaller (int callId, int service)

    tIsdnConnectReq req;

    memset (req, '', sizeof (req)); req.callId = callId; req.service = service; if (IsdnConnectReq (req)) IsdnError ("Error in ConnectToCaller"); else ... /* ok */ T>


    D.12. IsdnDialReq

  • ZWECK Angabe der zu wählenden Nummer bei Overlap Sending.
  • SYNTAX #include <IsdnLib.h>

    int IsdnDialReq (const t_IsdnDialReq *req)

  • BESCHREIBUNG IsdnDialReq überträgt Wählinformationen im Overlap Sending Modus. Es ist somit möglich, wie bei einem normalen Telefon zu wählen (Abnahme des Höhrers, Warten auf das Freizeichen, Wählen).

    Der Parameter ireq definiert weitere Parameter für den Request:

    typedef struct int callId; /* req. */ tCalledPartyNo calledPartyNo; /* req. */ T>IsdnDialReq;
    Bedeutung der Felder:
  • callId Identifiziert die logische Verbindung.
  • calledPartyNo Gibt die zu übermittelnde Wählinformation an.
  • RÜCKGABEWERT IsdnDialReq liefert 0 wenn der Request erfolgreich bearbeitet wurde, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL Dial (int callId, char *number)

    tIsdnDialReq req;

    memset (req, '', sizeof (req)); req.callId = callId; strcpy (req.calledPartyNo.number, number); if (IsdnCallReq (req)) IsdnError ("Error in Dial"); else ... /* OK */ T>


    D.13. IsdnKeypadReq

  • ZWECK Übermittlung von Zusatzinformationen nach Q.932 [itu9303:Q.932]
  • SYNTAX #include <IsdnLib.h>

    int IsdnKeypadReq (const t_IsdnKeypadReq *req)

  • BESCHREIBUNG IsdnKeypadReq übermittelt Zusatzinformationen, mit deren Hilfe weitere Features im ISDN realisiert werden können (z.B. Markeln). Nicht alle Netzwerkbetreiber unterstützen dieses Feature.

    Der Parameter ireq definiert weitere Parameter für den Request:

    typedef struct int callId; /* req. */ char keypad[20+1]; /* req. 1..20 chars, terminated */ T>IsdnKeypadReq;
    Bedeutung der Felder:
  • callId Identifiziert die logische Verbindung.
  • keypad Gibt zu übermittelnde Informationen an. Die Bedeutung dieser liegt außerhalb der Q.931 Protokollspezifikation. Der Benutzer muß sich daher beim ISDN Dienstanbieter nach den unterstützten Features erkundigen.
  • RÜCKGABEWERT IsdnKeypadReq liefert 0 wenn der Request erfolgreich bearbeitet wurde, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL SendKeypad (int callId, char *keypad)

    tIsdnKeypadReq req;

    memset (req, '', sizeof (req)); req.callId = callId; strcpy (req.keypad, keypad); if (IsdnKeypadReq (req)) IsdnError ("Error in SendKeypad"); else ... /* OK */ T>


    D.14. IsdnReleaseReq

  • ZWECK Beendet eine logische Verbindung
  • SYNTAX #include <IsdnLib.h>

    int IsdnReleaseReq (const t_IsdnReleaseReq *req)

  • BESCHREIBUNG IsdnReleaseReq initiiert den Abbruch einer bestehenden oder im Aufbau befindlichen Verbindung.

    Der Parameter ireq definiert weitere Parameter für den Request:

    typedef struct int callId; /* req. */ tCause cause; /* opt. reason */ T>IsdnReleaseReq;
    Bedeutung der Felder:
  • callId Identifiziert die logische Verbindung.
  • cause Spezifiziert einen Grund für den Verbindungsabbruch. Die Bedeutung der verschieden Werte sind der ITU Empfehlung Q.850 [itu9303:Q.850] zu entnehmen. Es ist zu beachten, daß die Verbindung erst dann vollständig beendet ist, wenn die IsdnLib eine IsdnReleaseInd generiert.
  • RÜCKGABEWERT IsdnReleaseReq liefert 0 wenn der Request erfolgreich bearbeitet wurde, -1 anderenfalls. Der Fehler wird dann in der Variablen IsdnErrno gespeichert.
  • BEISPIEL Disconnect (int callId, int cause)

    tIsdnReleaseReq req;

    memset (req, '', sizeof (req)); req.callId = callId; req.cause.value = cause; req.cause.location = CALUSER; if (IsdnReleaseReq (req)) IsdnError ("Error in Disconnect"); else ... /* OK */ T>


    D.15. IsdnAlertInd

  • ZWECK Signalisiert, daß der Anrufer prinzipiell bereit ist, den Anruf entgegenzunehmen
  • SYNTAX #include <IsdnLib.h>

    IsdnCallback (t_IsdnInd *ind);

  • BESCHREIBUNG Die registrierte Callback Funktion wird mit einer IsdnAlertInd Indikation von der IsdnLib aufgerufen, wenn der zuvor Angerufene bereit ist, den Anruf entgegenzunehmen. Sie ersetzt somit das "Klingelzeichen" beim alten Telefon.

    Der Parameter t_IsdnAlertInd liefert weitere Informationen über die Indikation:

    typedef struct /* alerting indication */ tIsdnIndType indType; /* type of inication */ int callId; /* unique ID of the call */ T>IsdnAlertInd;
    Bedeutung der Felder:
  • indType ISDN_ALERT_IND
  • callId Identifiziert die logische Verbindung, für die das Klingeln signalisiert wird.
  • BEISPIEL IsdnCallback (tIsdnInd *ind)

    tIsdnAlertInd *alert = (tIsdnAlertInd*)ind;

    if (ind->indType == ISDNALERTIND) printf ("Alerting for T>


    D.16. IsdnCallInd

  • ZWECK Signalisiert einen eingehenden Anruf
  • SYNTAX #include <IsdnLib.h>

    IsdnCallback (t_IsdnInd *ind);

  • BESCHREIBUNG Die registrierte Callback Funktion wird mit einer IsdnCallInd Indikation von der IsdnLib aufgerufen, wenn ein neuer Anruf eingegangen ist. Die Applikation muß dann entscheiden, ob sie bereit ist, diesen zu empfangen. Falls ja, sollte sie mit dies mit Hilfer eines IsdnAlertingReq signalisieren. Ansonsten sollte der Anruf mit IsdnReleaseReq abgelehnt werden.

    Der Parameter t_IsdnCallInd liefert weitere Informationen über die Indikation:

    typedef struct tIsdnIndType indType; /* type of inication */ int callId; /* unique ID of the call */ tCalledPartyNo calledPartyNo; tCalledPartySubAddr calledPartySubAddr; tCallingPartyNo callingPartyNo; tCallingPartySubAddr callingPartySubAddr; tChannelId channelId; /* identifies the B* channels */ tBearerCap bearerCap[2]; tHighLayerComp highLayerComp[4]; tLowLayerComp lowLayerComp[4]; T>IsdnCallInd;
    Bedeutung der Felder:
  • indType ISDN_CALL_IND
  • callId Identifiziert die logische Verbindung für diesen neuen Anruf.
  • calledPartyNo Gibt die angerufene Nummer an.
  • calledPartySubAddr Gibt die angerufene Subadresse an.
  • callingPartyNo Gibt die Nummer des Anrufer an, falls diese übertragen wurde.
  • callingPartySubAddr Gibt die Subadresse des Anrufer an, falls diese übertragen wurde.
  • channelId Gibt die zu verwendenden ISDN Kanäle an, die für diese Verbindung reserviert wurden.
  • bearerCap Gibt die angebotenen Bearer Capabilities des Anrufers an.
  • highLayerComp Gibt die High Layer Compatibility an, falls vorhanden.
  • lowLayerComp Gibt die Low Layer Compatibility an, falls vorhanden.
  • BEISPIEL IsdnCallback (tIsdnInd *ind)

    tIsdnCallInd *call = (tIsdnCallInd*)ind;

    if (ind->indType == ISDNCALLIND) printf ("Incomming CALL for printf (" called no = printf (" calling no = ... T>


    D.17. IsdnChannelInd

  • ZWECK Signalisiert, daß ein ISDN Datenkanal für die Verbindung bereitgestellt wurde
  • SYNTAX #include <IsdnLib.h>

    IsdnCallback (t_IsdnInd *ind);

  • BESCHREIBUNG Die registrierte Callback Funktion wird mit einer IsdnChannelInd Indikation von der IsdnLib aufgerufen, um der Applikation Zugriff auf den zugewiesenen Datenkanal zu geben. Von diesem Zeitpunkt an, können Daten von diesem logischen Kanal empfangen und gesendet werden.

    Der Parameter t_IsdnAlertInd liefert weitere Informationen über die Indikation:

    typedef struct /* indicates the available channel(s) */ tIsdnIndType indType; /* type of inication */ int callId; /* unique ID of the call */ tChannelId channelId; /* the ID of the selected channel(s) */ int fd; /* fd for the selected channel */ T>IsdnChannelInd;
    Bedeutung der Felder:
  • indType ISDN_CHANNEL_IND
  • callId Identifiziert die logische Verbindung.
  • channelId Gibt die verwendeten ISDN Kanäle an.
  • fd Der Filedescriptor, mit dem auf den logischen Kanal zugegriffen werden kann.
  • BEISPIEL void DataCb(); IsdnCallback (tIsdnInd *ind)

    tIsdnChannelInd *channel = (tIsdnChannelInd*)ind;

    if (ind->indType == ISDNCHANNELIND) printf ("Channel got for IsdnCreateFileHandler (channel->fd, DataCb, ISDNREADABLE, NULL); ... T>


    D.18. IsdnChargeInd

  • ZWECK Übertragung von Gebühreninformationen
  • SYNTAX #include <IsdnLib.h>

    IsdnCallback (t_IsdnInd *ind);

  • BESCHREIBUNG Die registrierte Callback Funktion wird mit einer IsdnChargeInd Indikation von der IsdnLib aufgerufen, wenn Gebühreninformationen aus dem ISDN Netz empfangen wurden (vgl. Q.956 [itu9510:Q.956]).

    Der Parameter t_IsdnChargeInd liefert weitere Informationen über die Indikation:

    typedef struct tIsdnIndType indType; /* type of inication */ int callId; /* unique ID of the call */ int units; /* # of charge units */ T>IsdnChargeInd;
    Bedeutung der Felder:
  • indType ISDN_CHARGE_IND
  • callId Identifiziert die logische Verbindung.
  • units Anzahl der Gebühreneinheiten.
  • BEISPIEL IsdnCallback (tIsdnInd *ind)

    tIsdnChargeInd *alert = (tIsdnChargeInd*)ind;

    if (ind->indType == ISDNCHARGEIND) printf ("Charging for printf ("the call costs T>


    D.19. IsdnConnectInd

  • ZWECK Signalisiert, daß die Verbindung mit der Gegenstelle aufgebaut ist
  • SYNTAX #include <IsdnLib.h>

    IsdnCallback (t_IsdnInd *ind);

  • BESCHREIBUNG Die registrierte Callback Funktion wird mit einer IsdnConnectInd Indikation von der IsdnLib aufgerufen, wenn die Verbindung mit der Gegenstelle aufgebaut ist. Von diesen Zeitpunkt an können Daten zwischen den beiden Stationen über den Filedescriptor ausgetauscht werden, der zuvor durch die IsdnChannelInd mitgeteilt wurde.

    Der Parameter t_IsdnConnectInd liefert weitere Informationen über die Indikation:

    typedef struct /* indicates that the call is connected (active) now */ tIsdnIndType indType; /* type of inication */ int callId; /* unique ID of the call */ T>IsdnConnectInd;
    Bedeutung der Felder:
  • indType ISDN_CONNECT_IND
  • callId Identifiziert die logische Verbindung.
  • BEISPIEL IsdnCallback (tIsdnInd *ind)

    tIsdnConnectInd *alert = (tIsdnConnectInd*)ind;

    if (ind->indType == ISDNCONNECTIND) printf ("Call T>


    D.20. IsdnDisconnectInd

  • ZWECK Signalisiert, daß die Verbindung beendet wurde
  • SYNTAX #include <IsdnLib.h>

    IsdnCallback (t_IsdnInd *ind);

  • BESCHREIBUNG Die registrierte Callback Funktion wird mit einer IsdnDisconnectInd Indikation von der IsdnLib aufgerufen, wenn die Verbindung zwischen zwei Stationen getrennt wurde.

    Der Parameter t_IsdnDisconnectInd liefert weitere Informationen über die Indikation:

    typedef struct tIsdnIndType indType; /* type of inication */ int callId; /* unique ID of the call */ tCause cause; T>IsdnDisconnectInd;
    Bedeutung der Felder:
  • indType ISDN_DISCONNECT_IND
  • callId Identifiziert die logische Verbindung.
  • cause Gibt den Grund an, weshalb die Verbindung getrennt wurde. Zur Bedeutung siehe Q.850 [itu9303:Q.850]. Die Applikation sollte in Folge dieser Indikation den Datenkanal schließen, und die Verbindung durch ein IsdnReleaseReq terminieren. Wenn sie das nicht innerhalb von ca. 15 Sekunden macht, wird dies durch die Vermittlungsstelle initiiert.
  • BEISPIEL IsdnCallback (tIsdnInd *ind)

    tIsdnDisconnectInd *disc = (tIsdnDisconnectInd*)ind;

    if (ind->indType == ISDNDISCONNECTIND) printf ("%d disconnected", disc->callId); printf ("Cause:"); DumpCause (stdout, disc->cause); T>


    D.21. IsdnReleaseInd

  • ZWECK Signalisiert, daß die logische Verbindung beendet ist.
  • SYNTAX #include <IsdnLib.h>

    IsdnCallback (t_IsdnInd *ind);

  • BESCHREIBUNG Die registrierte Callback Funktion wird mit einer IsdnReleaseInd Indikation von der IsdnLib aufgerufen, um der Applikation mitzuteilen, daß die logische Verbindung beendet ist.

    Der Parameter t_IsdnReleaseInd liefert weitere Informationen über die Indikation:

    typedef struct tIsdnIndType indType; /* type of inication */ int callId; /* unique ID of the call */ tCause cause; T>IsdnReleaseInd;
    Bedeutung der Felder:
  • indType ISDN_ALERT_IND
  • callId Identifiziert die logische Verbindung.
  • cause Gibt den Grund an, weshalb die Verbindung getrennt wurde. Zur Bedeutung siehe Q.850 [itu9303:Q.850]. Spätestens nach dem Erhalt dieser Nachricht hat die Applikation den Filedescriptor für den Datenkanal zu schließen, falls dieser noch geöffnet ist. Nach dieser Indikation darf die Applikation keine weiteren Nachrichten für diese callId mehr initiieren, oder es wird ein Fehler gemeldet. Von der IsdnLib sind nach dieser Indikation ebenfalls keine weiteren Nachrichten für diese callId zu erwarten.

    Es ist zu beachten, daß diese Nachricht zu jeder Zeit für eine gültige callId gesendet werden kann.

  • BEISPIEL IsdnCallback (tIsdnInd *ind)

    tIsdnReleaseInd *rel = (tIsdnReleaseInd*)ind;

    if (ind->indType == ISDNRELEASEIND) printf ("%d released now", disc->callId); printf ("Cause:"); DumpCause (stdout, disc->cause); T>


    File was created Wed Feb 26 17:43:12 1997 by tex2html