Fabijan Lukin, Fran Pregernik,
Tomislav Sukser Dokumentacija za izradu programa i senzora za obojivo računarstvo |
|||||||||||||
2 Dodavanje smisla obojivom računarstvuObojiva računala sama za sebe i nisu nešto previše pametno. No dobro, ipak imaju svoj operacijski sustav koji ćemo mi s razine pisca programa promotriti ponajviše sa strane njegovog sučelja – API. Valjalo bi započeti s programskom reprezentacijom obojivog računala u jezgri simulatora. Za tu svrhu bacit ćemo pogled na razred GenericPaintableComputer koji se nalazi u datoteci PaintableSimulator.Engine\PaintableComputers\GenericPaintableComputer.PaintableComputerBase.cs. Ono što nam je od nekog značaja u ovom trenutku jest jedna metoda razreda - public override void Cycle(). Ona se poziva svako toliko iz jezgre simulatora za svako obojivo računalo. Njezina svrha je da primi sve komunikacijske pakete koji su došli, zatim da pakete koji predstavljaju zrcaljene podatkovne stranice stavi na ispravno mjesto i omogući da programi preko funkcija operacijskog sustava mogu pristupati tim podacima, te da pokrene instalaciju svih primljenih programa. Nakon toga, pokreće svaki program (točnije, njegovu Update metodu), i kada svi programi završe, šalje zrcalnu sliku svoje podatkovne stranice susjedima ukoliko je došlo do promjene na njoj, te šalje programe koji su se naznačili za kopiranje, ako takvih ima. Pseudokod koji bi to najbolje ilustrirao: Cycle() { dok (ima_paketa) { primi paket p; ako je (p == program) instaliraj p; // p.Install(); inače ako je (p == podatkovna stranica) osvježi zrcalnu sliku podatkovne stranice p; } za svaki instalirani program prog pokreni prog.Update(); za svaki program označen za deinstalaciju pokreni prog.UnInstall(); za svako zatraženo kopiranje programa prog kopiraj i pošalji paket s programom prog; ako je (podatkovna stranica promijenjena ili nije slana već dugo vremena) pošalji podatkovnu stranicu; } Arhitektura obojivog računala 2.1 Arhitektura programaU prethodno navedenom pseudokodu spomenute su metode Install, UnInstall i Update od programa. Međutim, to nisu sve metode koje jedan program mora imati. Prikaz metoda i njihovo značenje dan je u sljedećoj tablici.
Metode programa Osim tih metoda program može sadržavati vlastite metode. U svakom slučaju, program koji se piše za simulator mora naslijediti apstraktni razred ProcessFragmentBase koji u sebi sadrži gore navedene apstraktne metode koje se moraju naslijediti i nadjačati (override). Program koji se piše u naslijeđivanju mora nadjačati i svojstvo public uint ProcessFragmentId koje označava jedinstveni identifikacijski broj programa. To je nužno što program mora posjedovati i kako se on mora napisati da bi se mogao u simulatoru ubaciti u neko obojivo računalo. No, to uistinu nije dovoljno ukoliko želimo prikazati izvođenje tog programa u simulatoru, tj. ukoliko želimo obojati računalo. 2.2 Dodavanje boje programuNije potrebno puno mudrosti, ali je potrebno napraviti još jedan razred koji naslijeđuje razred HomepageColorizer. Potrebno je nadjačati metodu public abstract Color Colorize(Homepage homepage); koja kao svoj parametar prima podatkovnu stranicu za koju se očekuje da sadrži zapis programa iz kojeg se može odrediti boju kojom će obojivo računalo biti prikazano u simulaciji ako se promatra utjecaj izabranog programa. Metoda Colorize mora vratiti objekt tipa Color koji je točno boja koja će se prikazati u simulatoru. Neka konvencija koja se poštovala u simulatoru jest da je zid crn, računala su u pravilu bijela ili prikazana nekom življom bojom ukoliko se radi o prikazivanju stanja promatranog programa. 2.3 Ostale napomene za pisanje programaProgrami za obojiva računala ne smiju iz sigurnosnih razloga baratati nikakvim ulazno-izlaznim operacijama operacijskog sustava na kojem je simulator pokrenut. Ono što oni smiju koristiti jest biblioteka metoda operacijskog sustava obojivog računala i još neke naprednije aritmetičke i slične funkcije. Detalji o pisanju vlastitog programa i spajanju razreda za bojanje s programom bit će dani kasnije u tekstu, poslije opisa biblioteke operacijskog sustava obojivog računala.
|