![]() |
IrLAP entspricht der Datenübertragungsschicht (Schicht 2) im OSI-Schichtenmodell und stützt sich auf die bestehenden Halb-Duplex-Protokolle HDLC und SDLC.
Eine wichtige Eigenschaft von IrLAP ist das Konzept von primären und sekundären Stationen. Die primäre Station hat die Verantwortung für die Verbindung. Es gibt genau eine primäre Station und eine (bei point-to-point) oder mehrere (bei point-to-multipoint) sekundäre. Alle Übertragungen gehen von oder zur primären Station. Prinzipiell darf jede Station die Rolle der primären übernehmen, sofern sie implementationsbedingt dazu in der Lage ist . Die primäre Station wird beim Verbindungsaufbau bestimmt und bleibt es bis zum Verbindungsabbau. Diese Tatsache bleibt allerdings hinter den IrLAP Dienstprimitiven verborgen, so daß sie bei deren Beschreibung keine Rolle spielt.
IrLAP benutzt die meisten der HDLC-Standardrahmenformate. Es gibt unnummerierte (unnumbered)U-Rahmen, Überwachungs (supervisory) S-Rahmen und Informations I-Rahmen. U-Rahmen werden für Funktionen wie Verbindungsauf und -abbau oder das Suchen nach anderen Geräten (discovery) benutzt; mit I-Rahmen werden Informationen von einer Station zur anderen übertragen und S-Rahmen dienen zur Unterstützung der Informationsübertragung, also zum Beispiel um ein Datenpaket explizit zu bestätigen (I-Rahmen können andere I-Rahmen implizit ebenfalls bestätigen) oder für die Flußkontrolle.
IrLAP enthält außerdem Funktionen zum Verbindungsauf- und -abbau mit Absprache der Qualität der Verbindung (Übertragungsrate, Timeoutzeiten etc.), zur Ermittlung der Adressen von Geräten in Reichweite und zur Auflösung von Adresskonflikten.
IrLAP_DISCOVERY.request | Startet Suche nach Geräten in Reichweite, die eine Verbindung zulassen. |
IrLAP_DISCOVERY.indication(Discovery-Log) | Wird aufgerufen, wenn die eigene Station bei einer Suche gefunden wurde. Der Parameter Discovery-Log enthält Informationen über die suchende Station. |
IrLAP_DISCOVERY.confirm(Liste von Discovery-Logs) | Als Ergebnis der Suche erhält man eine Liste mit Informationen über die verbindungsbereiten Geräte in Reichweite. |
Discovery-Log | solicited + sniff + device-address + IrLAP-version + discovery-info |
solicited | [true | false] Das solicited Flag ist nicht gesetzt, wenn die Station gefunden wurde, weil sie selbst eine Suche gestartet hat. Dies ist vor allem bei der IrLAP_DISCOVERY.indication der Fall. Es ist gesetzt, wenn die Station durch ihre Antwort auf die Suchanfrage gefunden wurde. |
sniff | [true | false] Dieses Flag ist gesetzt, wenn das Gerät im Sniffing-Mode betrieben wird. |
Device-Address | 32-Bit IrLAP-Geräte-Adresse. |
IrLAP-Version | Versionsnummer der Station. |
Discovery-Info | Maximal 32 Bytes weitere Informationen. Diese werden von höheren Schichten belegt. |
IrLAP_NEW_ADDRESS.request(Device-Address) | Fordert alle Geräte in Reichweite mit der übergebenen Geräte-Adresse auf, eine neue Adresse zu wählen. |
IrLAP_NEW_ADDRESS.confirm(Liste von Discovery-Logs) | Das Ergebnis ist eine Liste von Discovery-Logs, mit den neuen Geräte-Adressen. Die Liste enthält nur Geräte, die zur Adressänderung aufgefordert wurden. |
IrLAP_UNITDATA.request(User-Data) | Löst die Übertragung der übergebenen Daten aus. |
IrLAP_UNITDATA..indication(User-Data) | Zeigt der übergeordneten Schicht an, daß verbindungslose Daten empfangen wurden. |
IrLAP_CONNECT.request(Target-Device-Adr, Requested-QoS, Sniff) |
Initiiere Verbindungsaufbau zum Gerät mit der Adresse
Target-Device-Adr und dem gewünschten quality of service Requested-QOS. Das Sniff-Flag
gibt an, ob die Zielstation im Sniffing-Modus ist. Zieladresse und Sniff-Flag können beide dem Discovery-Log entnommen werden, das von den Discovery Diensten zurückgegeben wird. |
IrLAP_CONNECT.indication(Source-Device-Adr, Connection-Handle,Requested-QoS) |
Informiert die übergeordnete Schicht, daß die Station mit der Adresse Source-Device-Adr eine Verbindung der Qualität Requested QoS wünscht. |
IrLAP_CONNECT.response(Source-Device-Adr, Connection-Handle, Returned-QoS) |
Akzeptiert die Verbindung und sendet den für beide Stationen maximal möglichen QoS zurück. |
IrLAP_CONNECT.confirmation(Connection-Handle, Returned-QoS) |
Zeigt an, daß die Verbindung erfolgreich aufgebaut wurde mit der Qualität Returned-QoS. |
IrLAP_SNIFF.request(Cancel) | Mit diesem Dienst kann der<Sniffing-Modus> ein(Cancel =FALSE) oder ausgeschaltet (Cancel = TRUE) werden. |
IrLAP_DATA.request(Connection-Handle, User-Data,Expedited-Unreliable-Flag) | Mit diesem Dienst wird die Übertragung der übergebenen Daten (User-Data) veranlaßt. Das Expedited-Unreliable-Flag gibt dabei an, ob die Übertragung sicher sein soll oder nicht. |
IrLAP_DATA.indication(Connection-Handle, User-Data,Expedited-Unreliable-Flag) | Mit diesem Dienst teilt IrLAP mit, daß ein Paket mit Daten empfangen wurde. |
IrLAP_STATUS.request(Connection-Handle) | Mit diesem Dienst kann die übergeordnete Schicht überprüfen, ob die Gegenstelle noch auf Bestätigungen für versandte Datenpakete wartet. Die Antwort der anderen Station löst die Funktion IrLAP_STATUS.confirm aus. Hierbei handelt es sich um eine reine Abfragefunktion; die Übertragung der Daten wird nicht beeinflußt. |
IrLAP_STATUS.indication(Connection-Handle, Quality-Of-Link) |
Diese Funktion wird ausgelöst, wenn die Qualität der Verbidung zu schlecht wird. Bleibt die Qualität längere Zeit schlecht, kommt es zum Verbindungsabbruch. |
IrLAP_STATUS.confirm(Connection-Handle, Unacked-Data-Flag) |
Diese Funktion wird aufgerufen, wenn die Gegenstelle auf einen IrLAP_STATUS.request antwortet. Sind noch unbestätigte Datenpakete vorhanden, ist das Unacked-Data-Flag=TRUE. |
IrLAP_RESET.request(Connection-Handle) | Fordert die Gegenstelle zu einem Reset auf. |
IrLAP_RESET.indication(Connection-Handle) | Zeigt an, daß die Gegenstelle einen Reset durchführen will und auf eine Zustimmung wartet. |
IrLAP_RESET.response(Connection-Handle,accept) | Beantwortet den IrLAP_RESET.request der Gegenstelle. Wenn accept=TRUE wird der Reset durchgeführt, sonst nicht. |
IrLAP_RESET.confirm(Connection-Handle,accept) | Die Antwort der Gegenstelle auf den IrLAP_RESET.request wird angezeigt. |
IrLAP_DISCONNECT.request(Connection-Handle) | Beendet die Verbindung. |
IrLAP_DISCONNECT.indication(Connection-Handle, Unacked-Data) |
Zeigt an, daß die Gegenstelle die Verbindung beendet hat. Der Parameter Unacked-Data beinhalted Informationen über noch unbestätigte Datenpakete und ist implementierungsabhängig. |
![]() |