W ogólnym przypadku sygnały pochodzące z dwóch nadajników nałożą się a Rx odbierze sieczkę. Wprawdzie może się zdarzyć, że odbierane sygnały będą się znacznie różnić poziomem i sygnał z jednego nadajnika całkowicie "przykryje" sygnał z drugiego, ale i tak stracisz transmisję z co najmniej jednego źródła. Zatem musisz kierować ruchem w sieci radiowej.
Możesz to zrobić na kilka sposobów, np:
1)
Przydzielając jednej stacji funkcję mastera dyrygującego ruchem, rozsyłającego znacznik uprawniający wybranego slave'a (jedną z pozostałych stacji) do nadawania. Taki znacznik miałby ściśle określony czas ważności. Jeżeli slave nie odpowie z zadanym czasie to traci prawo głosu. A może nie odpowiedzieć z kilku przyczyn, np:
- znacznik uległ zniekształceniu w torze radiowym i nie został poprawnie rozpoznany przez slave'a
- slave nie działa
- odpowiedź nadana przez slave'a została zakłócona i nie dotarła w rozpoznawalnej postaci do mastera.
2)
W przypadku, gdy ruch w sieci jest niewielki a tym samym niewielkie prawdopodobieństwo kolizji to można pomyśleć o jakiejś uproszczonej wersji CSMA/CD:
(
http://pl.wikipedia.org/wiki/CSMA/CD )
- Każdy NADAWCA, przed nadawaniem, sprawdza na wyjściu CD modułu (Carrier Detect) czy właśnie nie odbywa się jakaś transmisja. Jest to pierwszy krok zmniejszający prawdopodobieństwo kolizji (Carrier Sense).
- Jeżeli łącze jest wolne to NADAWCA wysyła swoją ramkę z dodanym identyfikatorem (adresem odbiorcy, zwrotnym adresem nadawcy, kolejnym numerem ramki, kodem wiadomości... i co tam jeszcze bedzie potrzebne) oraz CRC.
- ODBIORCA odbiera ramkę, weryfikuje CRC i krótkim komunikatem skierowanym do NADAWCY potwierdza przyjęcie poprawnej wiadomości.
- Jeżeli oryginalny pakiet został zniekształcony (na skutek kolizji lub zakłóceń spoza sieci) to ODBIORCA go nie rozpozna i w zadanym czasie nie potwierdzi odbioru. W takim przypadku NADAWCA po odczekaniu _losowego_ czasu opóźnienia powtarza swoją transmisję. Jeżeli zakłócenie było skutkiem kolizji (mimo kontroli stanu CD dwaj nadawcy jednak zaczęli nadawać równocześnie) to po wprowadzeniu dodatkowego, losowego opóźnienia retransmisje nie powinny się już nałożyć.
Różnica wobec klasycznego "ethernetowego" CSMA/CD polega na tym, że nie masz możliwości wiarygodnego monitorowania własnej transmisji (odbiornik ustawiony obok nadajnika i tak odbierze tylko ten jeden sygnał gubiąc wszelkie inne źródła o niższym poziomie). Dlatego pozostaje jedynie weryfikacja poprawności za pomocą komunikatów zwrotnych.
Ogólnie rzecz biorąc łącze radiowe jest zawodne i nigdy nie masz pewności czy komunikat dotrze bez zakłóceń. Dlatego pomijając najprostsze zastosowania (np. dzwonek bezprzewodowy) w każdym przypadku trzeba wziąć pod uwagę kontrolę integralności wiadomości (sumy kontrolne) i potwierdzanie odbioru.
Hint:
Może się przyda (HTH SNAP):
http://www.hth.com/snap .
--
MDz