---

Grep for TODO in the source files. :^)

---

The error/exception system probably needs to be reworked or removed.  As
it is, it's fairly gross.  Always checking for error conditions is painful,
but I suppose it's necessary, so being the lazy person I am I will expend
incredible efforts to get out of a little work. :^)

On the one hand, it seems like it would be nice to report extended error
information (a string to describe precisely what went wrong) in addition to a
numeric error code (-E_MEMORY, for instance), but on the other, I'm not sure
how best to implement this.

One big problem is atomicity.  If an operation fails, it should be as if it
never took place.  Right now there are many "unrecoverable" errors, places
where a failure causes the system to be left in an inconsistent state.

---

I need to write a timer system so events can be scheduled.  This is necessary
for regularly querying the RFID tag reader or checking argusd's shm.

---

I need to make room for higher-level code for analyzing the information
gathered from the sensors.  The low-level code would use function calls
to notify the high-level code of events.

---

Client interface code must be written.  I'm guessing it should eventually
support multiple simultaneous client connections and several levels of access
rights.  Also it should probably support multiple types of client connections:
stdin/stdout, TCP/IP, and CORBA come to mind.

There should be functions to broadcast messages to all clients and to send
data to a particular client.  Clients should also be able to send messages to
this program to cause various things to happen (for instance: recalibration,
reconfiguration, reboot, recipe management), and said messages would probably
carry a client-id field so the response can be directed at the sender.

---

More architectural documentation!

---
