![]() |
[Studienarbeiten: Kommunikation zwischen PDAs] | ![]() |
IrLAP bietet eine Flußkontrolle für eine einzelne Verbindung zwischen zwei Geräten.
IrLMP, auf dieser Schicht aufbauend, benutzt diese - hat dabei aber das Problem, daß eine
einzelne Verbindung eventuell andere Kanäle behindert, bspw. wenn der vorhandene Puffer
für ankommende Daten von einer LM-MUX Anwendung nicht schnell genug ausgeschöpft wird,
und somit eine andere LM-MUX Verbindung blockiert. Dies kann zu einer kompletten
Verklemmung führen.
Zur Lösung dieses Problems gibt es die Möglichkeit, jeder Applikation einen eigenen
Puffer zur Verfügung zu stellen, oder aber nicht schnell genug abgeholte Pakete zu
verwerfen, mit dem Problem, einen Mechanismus zu erstellen, der sich von diesem
Datenverlust erholt. Zu diesem Zweck wurde TinyTP als Transportprotokoll für IrLMP
geschaffen. Zudem bietet das von IrDA beschriebene Protokoll noch die Möglichkeit der
Aufteilung (und nachträglichen Zusammenfügung) von zu großen Datenpaketen.
Die Dienstelemente dieser Schicht gleichen denen der IrLMP Schicht, sind aber der
Vollständigkeit halber hier kurz zusammengefaßt:
TTP_Connect.request(Called TTPSAP,Requested QoS, Calling MaxSduSize,Calling
UserData)
TTP_Connect.indication(Calling TTPSAP,Resultant QoS, Calling MaxSduSize,Calling
UserData)
TTP_Connect.response(Calling TTPSAP,Resultant QoS, Called MaxSduSize,Called UserData)
TTP_Connect.confirm(Called TTPSAP,Resultant QoS, Called MaxSduSize,Called UserData)
Die TTPSAP Adresse ist gleich der LSAP-Adresse, also zusammengefügt aus der
Deviceadresse und dem LSAP-SEL.
MaxSduSize gibt die maximale Größe für ein Datenpaket an - dies kann auf den beiden
Geräten unterschiedlich groß sein.
TTP_Disconnect.request(UserData)
TTP_Disconnect.indication(Reason, UserData)
Ist dem LM_Disconnect gleichzusetzen, sendet jedoch zuvor noch ausstehende Daten.
TTP_Data.request(UserData)
TTP_Data.indication(UserData, Status)
TTP_UData.request(UserData)
TTP_UData.indication(UserData)
Wie beim Senden von Daten und dringenden Daten unter IrLMP - zu Bemerken ist nur der Status, der angibt, ob eine Zusammenfügung von Daten gelungen ist.
TTP_LocalFlow.request(Flow=on|off)
Steuert den Fluß zwischen der TTP-Schicht und einem Client.
![]() |
[Studienarbeiten: Kommunikation zwischen PDAs] | ![]() |