Notatka: Obecnie praktycznie wszystkie programy nie korzystają z opisanych w tym rozdziale plików, ale z pojedynczego pliku XML, opisanego w rozdziale Rozdział 5. Ten rozdział zostawiono dla celów archiwalnych, pomaga on też zrozumieć strukturę konfiguracji systemu.
Rozdział zawiera opis formatu plików konfiguracyjnych SZARP w wersji 2.1. Wszystkie opisywane pliki konfiguracyjne są zwykłymi plikami tekstowymi, powinny zawierać znaki końca linii w formacie uniksowym. Na długość części pól nałożone są ograniczenia, wynikające z konstrukcji wczytujących je programów. Przekroczenie tych ograniczeń może spowodować zgłoszenie błędu przez program, obcięcie wczytywanych wartości do maksymalnej długości lub błąd programu. Jako separatory pól powinny być stosowane spacje (najlepiej pojedyncze), chyba że coś innego wynika bezpośrednio z innych wymagań. Trudno określić zachowanie programów w przypadku błędnego formatu pliku. Większość (zwłaszcza starszych) programów stara się interpretować nawet błędne pliki, co może być źródłem różnego rodzaju błędów.
Plik parcook.cfg zawiera informację o konfiguracji demonów linii odpowiedzialnych za komunikację ze sterownikami, oraz opis parametrów definiowalnych, wyliczanych przez program parcook. Plik jest wymagany przez każdą instalację SZARP w wersji 2.1, czytany jest przez program parcook. Wykorzystywany może być także do tworzenia identyfikatorów dla komunikacji międzyprocesowej między aplikacjami systemu.
Format pliku jest następujący:
[demony] [okres] [ekstra] [numer] [ilość parametrów] [demon] [port komunikacyjny] ... ... [formuły] [formuła] ...Opis poszczególnych pól:
[demony] - liczba określająca ilość linii z opisami demonów komunikacyjnych (linii komunikacyjnych), od 1 do 64.
[okres] - długość w sekundach okresu co jaki odpytywane będą demony linii, nigdy nie używana była liczba inna niż 10, skutki wpisania innej wartości pozostają nieznane.
[ekstra] - ilość zdefiniowanych w pliku parametrów definiowalnych, może być 0.
[numer] - unikalny numer linii komunikacyjnej, z zakresu od 1 do 64. Zwykle numery nadawane są kolejno. Na każdą linię komunikacyjną przypada 1 linia w pliku.
[ilość parametrów] - ilość parametrów odczytywana ze sterownika, odpowiada wielkości segmentu pamięci dzielonej tworzonej dla demona linii, może być równa 0 lub większa. Liczba 0 oznacza sterownik pusty.
[demon] - ścieżka do demona linii - programu odpowiadającego za komunikację w obrębie jednej linii komunikacyjnej (czyli fizycznie jednego kabla podpiętego do komputera). W starych konfiguracjach bywała pusta - parcook przyjmował domyślną wartość /opt/szarp/bin/linedmn. Zobacz też komentarze do następnego pola.
[port komunikacyjny] - ścieżka do portu komunikacyjnego używanego przez demona linii. W rzeczywistości parcook wywołuje demona linii przekazując mu jako pierwszy parametr identyfikator (numer linii) - czyli liczbę z początku linii, a następnie wszystko co napotka po nazwie demona. Tradycyjnie drugim argumentem do demona linii jest właśnie ścieżka do portu. Kolejne argumenty zależą od konkretnego demona, dla najpopularniejszego - rsdmn mogą to być także prędkość komunikacji (w bodach), ilość bitów stopu, wersja protokołu (liczba). W niektórych starych komunikacjach, gdy nie była podawana ścieżka do demona, parcook tworzył także ścieżkę do portu komunikacyjnego karty Specialix na podstawie numeru linii (numer linii odpowiadał numerowi portu).
[formuły] - ilość linii z formułami opisującymi parametry definiowane. Liczba ta nie musi być tożsama z ilością zdefiniowanych parametrów (pole [ekstra]), gdyż dopuszczalne jest wielokrotne przedefiniowanie parametrów. Liczba linii może być oczywiście równa 0. Następnie powinna wystąpić podana liczba linii z formułami.
[formuła] - formuła programu parcook opisująca parametr. Postać formuły jest następująca:
formuła := wyrażenie '#' komentarz wyrażenie := element ' ' | wyrazenie wyrazenie | 'null' element := (stała|adres_parametru|kod_operacji) ' ' stała := #cyfra[cyfra] adres_parametru := cyfra[cyfra] cyfra := '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9' spacja := ' ' kod_operacji := '&'|'!'|'$'|'#'|'+'|'-'|'*'|'/' komentarz := nie# [nie#] nie#: = !'#' (dowolny znak nie będący '#')Jak wynika z powyższego elementy formuły są oddzielone spacjami. Formuła zapisana jest w Odwrotnej Notacji Polskiej (ONP, RPN). Liczba oznacza wstawienie na stos wartości parametru o określonym liczbą indeksie IPC. Indeksy IPC parametrów to indeksy w tablicy parametrów tworzonej przez program parcook po kolei na podstawie danych o demonach linii i ilości parametrów definiowalnych (liczone od 0). Stała, oznaczana przez liczbę poprzedzoną znakiem # powoduje wstawienie na stos wartości stałej. Napis null oznacza formułę pustą. Formułę kończy także znak #, po którym następuje nieobowiązkowy komentarz. Znaczenie kodów operacji jest następujące:
+ - pobierz dwa parametry z wierzchołka stosu i odłóż na stos ich sumę
- - jak wyżej, tylko różnica
* - jak wyżej, tylko iloczyn
/ - jak wyżej, tylko iloraz
& - zamień miejscami dwa parametry z wierzchołka stosu (swap)
! - kopiuj wartość z wierzchołka stosu (duplicate)
$ - wywołaj funkcję o identyfikatorze i parametrach pobranych kolejno z wierzchołka stosu
= - pobierz adres IPC z wierzchołka stosu i wstaw pod niego kolejną wartość pobraną z wierzchołka stosu
Przykładowa zawartość pliku:
2 10 8 1 32 /opt/szarp/bin/rsdmn /dev/ttyX0 2 58 /opt/szarp/bin/rsdmn /dev/ttyX1 8 31 #0 #2 #7 $ #90 = # wel (Kosmonautów:Węzeł:praca automatyczna w lecie) - 31 #1 #2 #7 $ #91 = # wel (Kosmonautów:Węzeł:praca automatyczna w zimie) - 31 #2 #2 #7 $ #1000 * #92 = # wel (Kosmonautów:Węzeł:zawór mieszania otwarty) Zawór upustowy otw. 31 #3 #2 #7 $ #1000 * #93 = # wel (Kosmonautów:Węzeł:zawór mieszania zamknięty) Zawór upuztowy zam. 89 #0 #2 #7 $ #94 = # wel (Kosmonautów:WęzełCWUiCO:praca automatyczna w lecie) - 89 #1 #2 #7 $ #95 = # wel (Kosmonautów:WęzełCWUiCO:praca automatyczna w zimie) - 89 #2 #2 #7 $ #1000 * #96 = # wel (Kosmonautów:WęzełCWUiCO:zawór mieszania otwarty) Zawór mieszania otw. 89 #3 #2 #7 $ #1000 * #97 = # wel (Kosmonautów:WęzełCWUiCO:zawór mieszania zamknięty) Zawór mieszania zam.
Poprzedni | Spis treści | Następny |
Na skróty, czyli o czym pamiętać przy instalacji serwera/terminala systemu SZARP | Pliki lineX.cfg |