Next Previous Contents

## 3. Software

## 3.1 Software

You will have to build an executable that will work like this:

- Get permission to use I/O address space, by calling kernel, with the command ioperm: eg ioperm( BASE, range ,1);
- Perform an out request instruction, to set the 0-5V voltage to the parallel port, eg outb( 1, BASE );
- Wait enough time so the coffee is made. It would be nice if that time is read by looking at the command line.
- Then it will turn off the coffee-machine: outb( 0 , BASE );
- Before ending it should give back the parallel port with a ioperm( BASE, range, 0);

Change BASE = 0x3bc for /dev/lp0, 0x378 for /dev/lp1, and 0x278 for /dev/lp2, range=8.

It would be useful if you had that program setuid, so that everybody can drink coffee!

## 3.2 Device driver

Just read kernel hacker's guide, implement a device driver (it could even be user space I think). Please compile it as a module, so that we won't need a kernel compile in every update. Then write:

    echo cappuccino >/dev/coffee

And you will have a hot cup of coffee in minutes! Remember to give the right permission to /dev/coffee, depending on whether you want only root making coffee or not.

The advantage of this method is that it supports feedback from the coffee-machine by using the ACK of parallel port, so that smart coffee-machines could produce an interrupt.

Do it as homework.

## 3.3 Connecting with the Internet

If you have implemented the C program (see above), you just have to write a simple CGI script to turn ON and OFF the coffee-machine. You should write some nice webpages, explaining how to make coffee, and put them on an apache web server...

Next Previous Contents