<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21"> <TITLE>COFFEE-HOWTO: Software</TITLE> <LINK HREF="Coffee-4.html" REL=next> <LINK HREF="Coffee-2.html" REL=previous> <LINK HREF="Coffee.html#toc3" REL=contents> </HEAD> <BODY> <A HREF="Coffee-4.html">Avanti</A> <A HREF="Coffee-2.html">Indietro</A> <A HREF="Coffee.html#toc3">Indice</A> <HR> <H2><A NAME="s3">3.</A> <A HREF="Coffee.html#toc3">Software</A></H2> <H2><A NAME="ss3.1">3.1</A> <A HREF="Coffee.html#toc3.1">Software</A> </H2> <P>Si dovrà creare un eseguibile che lavorerà in questo modo: <UL> <LI>Ottiene i permessi per usare lo spazio degli indirizzi di I/O, chiamando il kernel, con il comando <B>ioperm</B>: es. <EM>ioperm(BASE, intervallo, 1);</EM></LI> <LI>Esegue un'istruzione di richiesta in uscita per impostare la tensione 0.5V sulla porta parallela, es. <EM>outb(1, BASE);</EM></LI> <LI>Attende il tempo necessario alla preparazione del caffè. Sarebbe bello se questo tempo fosse mostrato nella riga di comando.</LI> <LI>Quindi dovrà spegnere la macchina del caffè: <EM>outb(0, BASE)</EM>;</LI> <LI>Prima di terminare deve restituire la porta parallela con un <EM>ioperm(BASE, intervallo, 0);</EM></LI> </UL> </P> <P>Si cambi BASE = 0x3bc per /dev/lp0, 0x378 per /dev/lp1 e 0x278 per /dev/lp2, intervallo = 8.</P> <P>Sarebbe utile avere questo programma setuid in modo che tutti potessero bere il caffè!</P> <H2><A NAME="ss3.2">3.2</A> <A HREF="Coffee.html#toc3.2">Driver di periferica</A> </H2> <P>Basta leggere la <A HREF="http://www.redhat.com:8080/HyperNews/get/khg.html">kernel hacker's guide</A> e implementare un driver di periferica (credo possa restare anche in user space). Per favore lo si compili come modulo, in modo che non si debba compilare il kernel ad ogni aggiornamento. Quindi si scriva:</P> <P> <PRE> echo cappuccino > /dev/coffee </PRE> </P> <P>E si avrà una calda tazza di caffè in pochi minuti! Ci si ricordi di assegnare i giusti permessi a /dev/coffee, a seconda che solo root possa farsi il caffè o meno.</P> <P>Il vantaggio di questo metodo è che supporta il feedback dalla macchina da caffè utilizzando l'ACK della porta parallela, quindi macchine da caffè intelligenti possono produrre un interrupt.</P> <P>Lo si faccia come compito per casa.</P> <H2><A NAME="ss3.3">3.3</A> <A HREF="Coffee.html#toc3.3">Connessione via Internet</A> </H2> <P>Se si è implementato il programma C (si veda sopra), si deve soltanto scrivere un semplice programma CGI che accende e spegne la macchina da caffè. Si dovrebbero scrivere alcune pagine web carine, dove si spiega come fare il caffè, e metterle su un server web <B>apache</B>...</P> <HR> <A HREF="Coffee-4.html">Avanti</A> <A HREF="Coffee-2.html">Indietro</A> <A HREF="Coffee.html#toc3">Indice</A> </BODY> </HTML>