LPRGBD(1)

NAZWA
lprgbd - Line Printer Red-Green-Blue Daemon

SKŁADNIA
lprgbd [ -mnfhv ] [ -p port ] [ -i interwał ] [ -b liczba ticków jasności ] [ -d liczba ticków ciemności ]

OPIS
lprgbd jest demonem umożliwiającym mruganie diodą RGB (ang. Red-Green-Blue), której poszczególne segmenty (który do którego, to już jak sobie babcia życzy) są podłączone do trzech najmłodszych bitów portu równoległego według instrukcji, która jest gdzieśtam niżej. Historia jest prosta: Powstał jako daemon realizujący główny cel istnienia superkomputera Slipi (http://slipi.chmurka.net/), gdy nie mogłem zasnąć. Efekt działania można zobaczyć na zdjęciach na stronie http://slipi.chmurka.net/img/ [gophi@avenger ~:502]$ grep lprgbd /var/slipi/nfs/root/etc/init/sysinit /usr/local/bin/lprgbd -b 1 -d 5 -i 25000

OPCJE

-p  Umożliwia podanie numeru portu (sprzętowego, wy sieciowi zboczeńcy) innego, niż domyślny. Numer należy podać w postaci akceptowalnej przez itoa, czyli dec, 0oct lub 0xhex, np. 0x378. Domyślnie jest 0x3BC, bo w akcie swojego zboczenia i słabości do starych kompuf podłączyłem diodę do karty graficznej Herculesa (ktoś jeszcze pamięta to cudo?), która ma taki numer przypisany domyślnie.

-i  Umożliwia podanie interwału (mhehehe, kojarzy mi się z określeniem "ty wale przeciwpowodziowy" :D) czasowego między blinknięciami innego, niż domyślny. Interwał podaje się w mikrosekundach.

-b  Określa okres (w cyklach timera, który tyka proces łbem co interwał czasu podany przy -i), przez który światło jest widoczne podczas pracy automatycznej. Przydatne do tworzenia efektów stroboskopu, migającego, psychodelicznego światła lub gdy zachodzi konieczność zwiększenia intensywności diody, a tobie nie chce się inwestować w bufory odciążające chipset albo kilka diod (to drugie w przypadku, gdyby za duże wypełnienie przebiegu światła w funkcji czasu na diodzie mogło ją zabić... Ale zdanie wymyśliłem...). Domyślnie równe 0, co oznacza 100% wypełnienie (ale intuicyjne, nie?). Jeśli zostanie podana inna wartość a nie zostanie podana opcja -d (o niej niżej), lub zostanie podane -d 0, to wartość -d przyjmie domyślnie taką samą wartość, jak podana tutaj, tworząc 50% wypełnienie. A zanim spytasz, co jeśli chcesz mieć niezerowe -b i zerowe -d, najpierw upewnij się, że ręce są podłączone do mózgu :P Ale ci pojechałem, miaaaaaaaaaaaaaaaaau! :P

-d  Analogicznie do -b, ale określa okres ciemności. Literka d, bo darkness. Shadow and darkness visit me at night... Here in the backroom of my mind... Jeśli zostanie podane bez -b, to wartość opcji -b przyjmie tą samą wartość, co podana tutaj. Efekt jak wyżej, efekt przy -b 0 także (bosz, jak ja nie lubię pisać oczywistych rzeczy... Ale to tak tylko dla porządku).

-m  Sprawia, że program uruchamia się w trybie pracy manualnej (opisanej przy okazji opisu sygnałów) zamiast domyślnej pracy automatycznej, czyli tej z interwałami, okresami i innymi straszydłami. Ej, tak w ogóle to pisałem wam już, że format groff, czyli ten, w którym pisze się manuale, jest trochę... No, bo mnie ocenzurują, to nie napiszę. I fakt, że znam go tylko z manuala ekg, którego mam przyjemność być developerem (ekg znaczy, nie manuala), nic nie zmienia :P

-n  Nie używa swojej magicznej, roociej mocy (której i tak potrzebuje do przygarnięcia pod skrzydełko portu) do przydzielenia sobie najwyższego dostępnego priorytetu w systemie. Nie renice, jak nazwa wskazuje, to byłoby zbyt proste i nieskuteczne, bo nawet procesy z renice -19 standardowo korzystają z domyślnego trybu schedulowania. Dzięki użyciu tej opcji inne procesy w systemie nie będą wywłaszczane z kolejki wykonywania silnym kopem w tył głowy, kiedy nadejdzie ten magiczny moment, w którym program będzie miał wykonać blinknięcie diodą. Ej, wyobraźcie sobie kolejkę wykonania jak toaletę... Chcielibyście być zwalani z kibla przez jakiśtam proces, który chce sobie ...pierdnąć w kolorach tęczy...? :)

-f  Nie przechodzi w tło. Opcja sprawia, że program będzie chodził na pierwszym planie, przyklejony do terminala niczym blondynka do ...no. Propo blondynek, wiecie czym się różni blondynka od kury? Kura nie wierci się na jajkach ;P

-h  Wyświetla krótką informację na temat wersji programu i składni. Taki tam fasthelp, nic ciekawego.

-v  Informacja na temat wersji. Samej, bez składni.

SYGNAŁY

SIGTERM
    Powoduje natychmiastowe zwolnienie portu, wyłącznie diody i zakończenie działania.

SIGINT
    Tak samo, jak SIGTERM. Dziwne, nie? No magia normalnie ;)

SIGALRM
    Sprawia, że program zachowuje się tak, jakby właśnie upłynął przewidziany na blinknięcie czas. Efekt uboczny realizowania timerów na setitimer(2), ale nie chce mi się tworzyć sekcji błędy, więc zrobiłem z tego feature.

SIGUSR1
    Przechodzi w tryb pracy automatycznej, czyli wyzwalanej timerem. Taka broń szybkostrzelna. Coś jak rep w assemblerze x86. Tyle że rep w asmie nie ma zabezpieczenia przed pokazywaniem ciemności, A MÓJ LPRGBD MA AHEUAEHUAHEUAEHUAEHUEAHAEHAHUHUAUAHUAHUAEHUEA =)))

SIGUSR2
    Przechodzi w tryb pracy manualnej, czyli wyzwalanej sygnałem (ale nie SIGALRM ;)), a jeśli ten tryb był już włączony, to przechodzi do następnego koloru w cyklu. Jeśli nie był włączony to ustawia ciemność. Taką prawdziwą, najczarniejszą ciemność. Strrraszne, nie? ;) Jaka jest kolejność kolorów, to już twoja brożka (co mi przypomina jak rozdawaliśmy z kumplem ulotki gabinetu ginekologicznego i jakaś kobieta nie wzięła... Jej brożka, hehe :P), jak tam sobie podepniesz diodę do bitów - program przechodzi kolejno po liczbach od 0 do 7.

PODŁĄCZENIE
Algo jest taki: Kupujemy diodę RGB na Allegro albo w sklepie Semiconductors Bank przy Hożej 35 w Warszawie (podaję namiar, bo tam kupiłem swoją), kupujemy trzy rezystory 200 omów (zwykle sprzedają po 10 sztuk, więc można sobie zrobić klimatyczny naszyjnik), kupujemy dwurzędowy wtyk męski (to się tak naprawdę nazywa) DB 25 pin i podłączamy trzy segmenty diody przez rezystory do pinów 2, 3 i 4 (są oznaczone na wtyku), a masę diody (jest widoczna, to takie miejsce, które w strukturze diody zajmuje więcej miejsca niż inne) do dowolnej końcówki między numerem 18 a 25. Proste? Proste. Warszawiacy mogą kupić toto na giełdzie pod GUSem lub we wspomnianym już Semiconductors Bank, ewentualnie jeśli ktoś jest totalnym beztalenciem jeśli chodzi o elektronikę, to za browca mogę mu to zlutować.

AUTOR
Adam Wysocki (http://www.gophi.rotfl.pl/). Taki tam... Chomik :P

ZGŁASZANIE BŁĘDÓW
Skargi, browary i wnioski na adres gophi at chmurka.net (a niech mi ktoś tylko spam wyśle, to poszczuję stadem programujących piranii).