TinyOS 2.0.2 Documentation
Last Modified: Jul 30 2007

This is the documentation for the TinyOS 2.0.2 release. There is also documentation for versions 2.0.1, 2.0.0 and 1.x.

TinyOS 2.0 has three sets of documentation. The first set is the release notes and high-level overviews of the system. The second set is a series of tutorials and a TinyOS programming manual, which explore different parts of the system in order to help you get started. The third set is detailed documentation of the system, including TEP (TinyOS Enhancement Proposals), which describe the structure, design goals, and implementation of parts of the system as well as nesC and Java source code documentation.

If you're just getting started, the best place to start is with the tutorials.

1. Release Notes
2. Tutorials

TinyOS 2.0 has a few tutorials to get a new user started with programming the system. These tutorials introduce nesC programming and some major TinyOS abstractions, such as timers and communication.

Additionally, for more advanced programming, there is a TinyOS Programming Manual. The book describes nesC's features in greater detail, including generic components, concurrency, and common component design patterns.

3A. TEPs and source code documentation

TEPs are written in ReStructured Text, and so can be read either as HTML or as a text document. TEP 1 describes the different kinds of TEPs and their roles. TEPs 1-100 are BCP (Best Current Practice) TEPs, while TEPS 101+ are Informational, Documentary, or Experimental. Currently, many TEPs are Drafts: comments and feedback to the authors or the associated working group is welcome. The following TEPs are Documentary and BCP: they deal with TinyOS, its protocols, and its programming interfaces:

  • TEP 1: TEP Structure and Key Words [HTML] [PDF] [TXT]
  • TEP 2: Hardware Abstraction Architecture [HTML] [PDF] [TXT]
  • TEP 3: Coding Standards [HTML] [PDF] [TXT]
  • TEP 101: ADC [HTML] [PDF] [TXT]
  • TEP 102: Timers [HTML] [PDF] [TXT]
  • TEP 103: Storage [HTML] [PDF] [TXT]
  • TEP 106: Schedulers and Tasks [HTML] [PDF] [TXT]
  • TEP 107: Boot Sequence [HTML] [PDF] [TXT]
  • TEP 108: Resource Arbitration [HTML] [PDF] [TXT]
  • TEP 109: Sensorboards [HTML] [PDF] [TXT]
  • TEP 111: message_t [HTML] [PDF] [TXT]
  • TEP 112: Microcontroller Power Management [HTML] [PDF] [TXT]
  • TEP 113: Serial Communication [HTML] [PDF] [TXT]
  • TEP 114: SIDs: Source and Sink Independent Drivers [HTML] [PDF] [TXT]
  • TEP 115: Power Management of Non-Virtualized Devices [HTML] [PDF] [TXT]
  • TEP 116: Packet Protocols [HTML] [PDF] [TXT]
  • TEP 117: Low-Level I/O [HTML] [PDF] [TXT]
  • TEP 118: Dissemination [HTML] [PDF] [TXT]
  • TEP 119: Collection [HTML] [PDF] [TXT]
  • TEP 123: Collection Tree Protocol (CTP) [HTML] [PDF] [TXT]
  • TEP 124: Link Estimation Exchange Protocol (LEEP) [HTML] [PDF] [TXT]
  • TEP 125: TinyOS 802.15.4 Frames [HTML] [PDF] [TXT]
  • TEP 126: CC2420 Radio Stack [HTML] [PDF] [TXT]
  • TEP 127: Packet Link Layer [HTML] [PDF] [TXT]
  • TEP 128: Platform Independent Non-Volatile Storage Abstractions [HTML] [PDF] [TXT]
  • TEP 129: Basic Platform Independent Non-Volatile Storage Layers [HTML] [PDF] [TXT]
  • TEP 130: Testbeds - Setup and Interfaces [HTML] [PDF] [TXT]

In addition, there are several TEPs which deal with issues besides TinyOS code, such as the structure of the TinyOS Alliance and design considerations:

  • TEP 120: TinyOS Alliance Structure [HTML] [PDF] [TXT]
  • TEP 121: Towards TinyOS for 8051 [HTML] [PDF] [TXT]
3B. TinyOS Source Code Documentation

In addition to TEPs, which document the organization and design behind important parts of TinyOS, there is also source code documentation for the following platforms: eyesIFXv2, iris, mica2, mica2dot, micaz, shimmer, telosb, telosb and tinynode.

The build status, history, memory statistics and power profiles of regression builds of selected TinyOS applications can be seen online on the TinyOS CruiseControl Server.

3C. TinyOS Java toolchain Code Documentation

There is similar javadoc documentation for the Java toolchain, which describes the Java classes and their functionality. This documentation is incomplete.