Aktualnie 3 rodzaje portów. Wszystkie dziedziczą z abstrakcyjnej klasy RCXAbstractPort. RCXAbstractPort wymaga w konstruktorze podania obiektu odziedziczonego z klasy PacketHandler. Klasa ta implementuje właściwy protokół komunikacyjny. Analogicznie są trzy rodzaje protokołów komunikacyjnych używanych przez dostępne porty. Wszystkie protokoły dziedziczą z abstrakcyjnej klasy PacketHandler. Nowy protokół dziedzicząc z PAcketHandler musi implementować conajmniej trzy metody: sendPacket, receivePacket i isPacketAvailable(), nadpisywanie pozostałych jest opcjonalne. Protokół dziedziczący z PacketHandler może być skonstruowany na bazie innego protokołu także dziedziczącego z PacketHandler - w ten sposób można tworzyć stosy protokołów.
1. RCXF7Port
Port komunikacyjny wykorzystujący protokół F7, wykorzystuje komunikację szeregową a nie niskopoziomową. Oznacza to, że używane są procedury ROM RCX-a, które pozwalają przesyłać tylko kody sterujące firmware'u LEGO (protokół LEGO). Użyty został kod F7 (wiadomość "set"), jako że umożliwia komunikację w obu kierunkach.
Informacje:
- Kompatybilność z LeJOS 1.0.5 (Protokół jest prawie ten sam jaki był używany przez RCXPort w LeJOS 1.0.5)
- Powinien potrafić skomunikować się z programami uruchomionymi w oryginalnym firmware LEGO (np. programy w NQC)
- Nie nadaję się do przesyłania strumieniowego (bajty mogą zaginąć lub być dostarczone kilkukrotnie)
Stos protokołu: 2 poziomowy składający się z F7DeliveryHandler i F7Handler:
Gwarancja dostarczenia: PRAWIE (F7DeliveryHandler - wykonuje ACK-i i ponowienia co może powodować duplikaty)
Gwarancja spójności: NIE (brak pewności, że pakiety dojdą w tej samoej kolejności w której zostały wysłane)
Integralność pakietów: PRAWIE (sprawdza (jakoś) poprawność)
Adresowanie odbiorców: NIE (dostarcza do wszystkich)
2.1. RCXLNPPort
Port komunikacyjny wykorzystujący LNP - Legos Network Protocol.
Informacje:
- Pozwala na komunikację z programami napisanymi w LegOS i aplikacjami LegOS na PC
Stos protokołu: 2 poziomowy składający się z LNPIntegrityHandler i LNPHandler:
Gwarancja dostarczenia: NIE (mogą zaginąć)
Gwarancja spójności: NIE (brak pewności, że pakiety dojdą w tej samoej kolejności w której zostały wysłane)
Integralność pakietów: TAK (LNPIntegrityHandler - sumy kontrolne)
Adresowanie odbiorców: NIE (dostarcza do wszystkich)
2.2. RCXLNPAddressingPort
Port komunikacyjny wykorzystujący LNP - Legos Network Protocol, wraz z warstwą adresacji.
Informacje:
- Pozwala na komunikację z programami napisanymi w LegOS i aplikacjami LegOS na PC
Stos protokołu: 3 poziomowy składający się z LNPAdressingHandler, NPIntegrityHandler i LNPHandler:
Gwarancja dostarczenia: NIE (mogą zaginąć)
Gwarancja spójności: NIE (brak pewności, że pakiety dojdą w tej samej kolejności w której zostały wysłane)
Integralność pakietów: TAK (LNPIntegrityHandler - sumy kontrolne) Adresowanie odbiorców: TAK (LNPAdressingHandler - wysyła do konkretnego odbiorcy, inne aktywne porty tego protokołu zignorują wiadomość nie do nich skierowaną)
3.1. RCXPort
Port komunikacyjny wykorzystujący LLC - Low Level Communication.
Informacje: - Gwarantuje dostarczenie pakietu. Wstrzymuje komunikację kiedy utraci łączność z odbiornikiem i wznawia przy odnowieniu widoczności
Stos protokołu: 2 poziomowy składający się z LLCReliableHandler i LLCHandler:
Gwarancja dostarczenia: TAK (LLCReliableHandler - ACK-i)
Gwarancja spójności: TAK (LLCReliableHandler - jednobitowy? numer sekwencyjny)
Integralność pakietów: TAK (LLCReliableHandler - sumy kontrolne)
Adresowanie odbiorców: NIE (dostarcza do wszystkich)
3.2. RCXInputStream i RCXOutputStream
Obciachane wersje RCXPort pozwalające tylko czytać dane i tylko wysyłać dane.
4. Serial
Klasa do niskopoziomowej komunikacji przez IR.
Zawiera m.in. metody do ustawiania mocy nadajnika w RCX-ie:
setRangeLong() i setRangeShort()Domyślnie ustawiany jest krótki zasięg, z powodu mniejszego poboru mocy.
Moje strony o LEGO