/** \mainpage The Contiki Operating System \author Adam Dunkels The Contiki operating system is a highly portable, minimalistic operating system for a variety of resource constrained systems with memory size on the order of a few kilobytes. Contiki provides a simple event-driven kernel with optional preemptive multithreading, interprocess communication using message passing signals, a dynamic process structure and support for loading and unloading programs, native TCP/IP support using the uIP TCP/IP stack, and a graphical subsystem with either direct graphic support for directly connected terminals or networked virtual display with VNC or Telnet. Contiki is written in the C programming language and is freely available as open source under a BSD-style license. More information about Contiki can be found at the Contiki home page: http://www.sics.se/~adam/contiki/ The ESB (Embedded Sensor Board) is a prototype wireless sensor network device developed at Freie Universität Berlin. The ESB consists of a Texas Instruments MSP430 low-power microcontroller with 2k RAM and 60k flash ROM, a TR1001 radio transceiver, a 32k serial EEPROM, an RS232 port, a JTAG port, a beeper, and a number of sensors (passive IR, active IR sender/receiver, vibration/tilt, microphone, temperature). The Contiki/ESB port brings support for TCP/IP, loadable programs (over-the-air programming), event-based multitasking, and cooperative multi-threading (preemptive threading is implemented but not yet fully tested) to the ESB. The Contiki/ESB port contains drivers for most of the sensors. The drivers were mostly adapted from sources written by FU Berlin. \sa \ref esb "The Scatterweb/ESB board" \section contiki-esb-threads Processes, multi-threading and protothreads Contiki is based on an event-driven kernel but provides support for both multi-threading and a lightweight stackless thread-like construct called protothreads. \sa \ref process "Contiki processes" \sa \ref mt "Contiki multi-threading" \sa \ref pt "Protothreads" \section contiki-sensors Sensor interfaces \section contiki-esb-communication Communication Contiki includes the uIP TCP/IP stack (http://www.sics.se/~adam/uip/) that provides Contiki with TCP/IP networking support. uIP provides the protocols TCP, UDP, IP, and ARP. In Contiki, the TCP/IP stack typically is used for all communication. \sa \ref uip "The uIP TCP/IP stack documentation" \sa \ref tcpip "The Contiki/uIP interface" \sa \ref psock "Protosockets library" \section contiki-esb-lib Libraries Contiki provides a set of convenience libraries for memory management and linked list operations. \sa \ref etimer "Event timer library" \sa \ref timer "Simple timer library" \sa \ref memb "Memory block management" \sa \ref list "Linked list library" */