*******************************************************************************
			         trap-timer
				  ver 1.0

*******************************************************************************
			Wysylanie sygnalu kasujacego traps
*******************************************************************************
trap_timer.c - program typu DAEMON ktory nalezy uruchomic po initWatchdog
	       kasujacy traps w modach sync i async

time_trap.schd - SHEDULER - skrypt ustawiajacy mechanizm kasowania trpas
time_trap.defaul - default SCHEDULER jesli ulegnie uszkodzniu time_trap.schd


runwatchdog.c - aplikacja pzowlajaca na RUN/STOP/SHUDOWN systemu watchdoga 
	     kontrolowanego przez traps

runwatchdog.stat - plik wczytywany stanu przy START dla trap_timer.c 


trap.h - biblioteka dla obslugi sygnalow
     !!!!!!!!!!!!!!! UWAGA !!!!!!!!!!!!!! 
     nie nalezy poprawiac pliku trap.h w katalogu ../watchdog/TRAPTIMER/ poniewaz
     plik ten jest kopiowany z katalogu ../watchdog/ podczas uzycia 
     polecenia ./compile w tym katalogu

editraps.c - dla edycji SCHEDULER i send po zmianie danych dla traps	

compile - kompiluje i instaluje pliki w /home/SYSQS/watchdog/

*******************************************************************************
		          Uruchamianie trap_timer	
*******************************************************************************
1. trap_timer nalezy uruchomic po wywolaniu initWatchdog, poniewaz 
   musi byc wczesniej zalozny katalog /mnt/WDbuf/  oraz RAMdisk przez
   initWatchdog.
	

2. trap_timer [bez parametrow] uruachamia sie w modzie DAEMONA
   trap_timer test lub trap_timer TEST uruchamia sie z quiet=1 i nie dziala
   jako DAEMON. Uruchomienie trap_time test & bedzie dzialac jako DAEMON
   ale z printf na ekranie, poniewaz quiet=1 jest ustawiona na stale. 

3. Sterowaniem RUN/PAUSE/HALT ARCHI/SHUDOWN komputer jest wbudowane 
   w trap_timer. Aplikacja sluzaca do obslugi zmiany stanu calego systemu
   ARCHI pod nadzorem traps nazywa sie: runwatchdog i mozna ja wywolac z linii
   polecen powoloki. 

4. Ustawinie danych kontrolych dla traps (dla trap_timer) znajduje sie w pliku
   time_trap.schd nazywanego dalej SCHEDULER. Nalezy zrobic kopie standardowego 
   ustawienia i zapisac do pliku time_trap.default. W kazdej chwili (co 10ms) 
   mozna przywrocic zapisy SCHEDULERA za pomoca aplikacji editraps.

5. trap_timer dziala w dwoch trybach sync i async. W trybie sync wszystkie
   traps sa kasowane jednoczesnie po uplywie ustawionego czastu. W trybie
   async mozna zdefiniowac czas dla kazdej traps oddzielnie po jakim 
   zostanie wyslany sygnal kasujacy pulapke. Ustawienia znajduja sie pliku
   konfiguracyjnym SCHEDULER.  
*******************************************************************************
		   Sterowanie za pomoca aplikacji runwatchdog
*******************************************************************************
runwatchdog uruchomi sie tylko z UID=0.
runwatchdog mozna uruchomic z nastepujacymi parametrami:
 
 * 0-autorun/run (default)
 * 1-pause wstrzymanie dzialania traps do momentu wyslania: runwatchdog 0
 * 2-halt mechanizmu trap i wyjscie do powloki linux
 * 3-halt&shut - zatrzymanie calego systemu watchdoga oraz mechanizmem trap
 * 4-uruchamia initWatchdog & trap_timer z poziomem 0
jesli zostanie zastosowane runwatchdog 3 to ponowne uruchomienie mozliwe 
bedzie tylko przez runwatchdog 4

runwatchdog --help - wyswietla help

uruchomienie runwatchdog bez parametrow lub z blednym parametrem spowoduje
wyswietlenie napisu: "ERROR: available levels: 0,1,2,3,4\n"


UWAGA! plik /home/SYSQS/watchdog/runwatchdog.stat przechowuje stan pocztkowy
       po uruchomieniu SKZ - domyslnie system staruje z poziomem 0. 
       Zmieniajac zapis w tym pliku - system ARCHI bedzie startowal z poziomu
       okreslonego w tym pliku.
*******************************************************************************
			      	    SCHEDULER
*******************************************************************************
1. Sekcja pierwsza zawiera ustawienia licznika (default):
   	S_TIME_SLOT 0    (default 0.0s)
	M_TIME_SLOT 10   (default 10.0ms)
	F_TIME_SLOT 100  (default kasownie ropocznie sie po 1.0s)
   czas po jakim zostanie wyslany sygnal kasujacy trap mozna oszacowac 
   ze wzoru: 
   time = F_TIME_SLOT*(S_TIME_SLOT+M_TIME_SLOT). Jesli kwant czasu jest 10ms
   (default) to time=F_TIME_SLOT*10ms.  F_TIME_SLOT jest przewidziane dla
   trybu sync dzialania trap_timer.

2. Sekcja druga ustawianie pulapek.
	Skladnia:
	CODE300 1 dowolny opis do 2k chars  
	opis:
		CODE300 oznacza pulapke o code=300
		1 - rejestruje pulapke jako aktywna
		0 - wyrejestrowuje pulapkie i nie bedzie ona obslugiwana przez
                    trap_timer
		po 1 lub 0 nalezy zrobic spacje i mozna opisac np. polozenie
                pulapki w innych modulach systemu ARCHI

3. Seckcja trzecia jest przeznaczona dla ustawienia indywidualnych time dla
   trybu async dzialania trap_timer. 
   	Skladnia:
	ALRM300 300
	Opis:
	ALRM300 - oznacza ustawienie czasu dla pulapki o code=300
	100 oznacza, ze pulapka bedzie likwidowana po czasie
	time = 300*(S_TIME_SLOT+M_TIME_SLOT) tzn. po ok. 3.0s  
	W zasadzie ten parametr peni ta sama role co F_TIME_SLOT 
	dla trybu sync dzialania trap_timer.

 4. Trap Mode. Tu mozna ustawic tryb dzialnia trap_timer.
    dla asynchornicznego nalezy pozstawic jake jest (default) 
    czyli # przed napisem TRAPMODE0
    Jesli trap_timer ma pracowac w trybie synchornicznym wowczas:
    nalezy usnac # przed TRAPMODE0.


5. Sekwencja START. Jest sekwencja usuwania traps podczas startu. Mechanizm
   dziala tylko w trybie async.
   Skladnia:
	INIT350 200
	Opis:
	INIT350 - dotyczy trap o code=350.
        200 - czas po kotrym zostanie wyslany sygnal do pulapki. 
	      Czas ten jest dokladnie taki sam jak w formule dla
	      trybu asynchornicznego dzialania trap_timer.

      Jesli nie bedzie potrzeby uruchomioenia usuwania traps w sekwencji START
      to nalezy postawic # przed INIT350 
      UWAGA!
         INIT350
	 INIT352
	 etc.
	Moze byc wazna jest kolejnosc ustawinia. Jako pierwsza bedzie 
  	testowna INIT350, potem kolejne w stosie. 

6. Sekwencja STOP. Usuwanie traps przy zamykaniu systemu (HALT/SHUTDOWN).
   Mechanizm dziala tylko w trybie asynchronicznym. 
   Skladania:
	ENDE301 200- dotyczy trap o code=350.
        200 - czas po kotrym zostanie wyslany sygnal do pulapki. 
	      Czas ten jest dokladnie taki sam jak w formule dla
	      trybu asynchornicznego dzialania trap_timer.
      UWAGA!
         ENDE370
	 ENDE382
	 etc.
	Moze byc wazna jest kolejnosc ustawinia. 
	Moze byc wazna jest kolejnosc ustawinia. Jako pierwsza bedzie 
  	testowna ENDE370, potem kolejne w stosie. 

      Jesli nie bedzie potrzeby uruchomioenia usuwania traps w sekwencji START
      to nalezy postawic # przed ENDE301
*******************************************************************************
			        Edytor - editraps
*******************************************************************************
1. Dziala z linii polecen.

2. Dostepne opcje:
	./editraps [no parameter]  - wysyla SCHEDULER to RAMdisk\n");
	./editraps default         - wysyla default SCHEDULER to RAMdisk
	./editraps [vim/nano/etc.] - edit SCHEDULER i wysyala to RAMdisk po
				     wyjsciu z edytora (dziala tylko dla
 				     bez grafiki).
	./editraps --help 	   - wyswietla help

SHEDULER edytowany zanjsuje sie w katalogu: /home/SYSQS/watchdog/time_trap.schd
*******************************************************************************

