--- /dev/null
+// $Id$
+
+/* tab:4
+ * "Copyright (c) 2000-2005 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice, the following
+ * two paragraphs and the author appear in all copies of this software.
+ *
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
+ *
+ * Copyright (c) 2002-2005 Intel Corporation
+ * All rights reserved.
+ *
+ * This file is distributed under the terms in the attached INTEL-LICENSE
+ * file. If you do not find these files, copies can be found by writing to
+ * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA,
+ * 94704. Attention: Intel License Inquiry.
+ */
+
+/**
+ * Blink is a basic application that toggles the a mote LED periodically.
+ * It does so by starting a Timer that fires every second. It uses the
+ * OSKI TimerMilli service to achieve this goal.
+ *
+ * @author tinyos-help@millennium.berkeley.edu
+ **/
+
+configuration BlinkFailAppC
+{
+}
+implementation
+{
+ components MainC, BlinkFailC, LedsC;
+ components new TimerMilliC() as Timer0;
+ components new TimerMilliC() as Timer1;
+ components new TimerMilliC() as Timer2;
+
+
+ BlinkFailC -> MainC.Boot;
+
+ BlinkFailC.Timer0 -> Timer0;
+ BlinkFailC.Timer1 -> Timer1;
+ BlinkFailC.Timer2 -> Timer2;
+ BlinkFailC.Leds -> LedsC;
+}
+
--- /dev/null
+// $Id$
+
+/* tab:4
+ * "Copyright (c) 2000-2005 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice, the following
+ * two paragraphs and the author appear in all copies of this software.
+ *
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
+ *
+ * Copyright (c) 2002-2003 Intel Corporation
+ * All rights reserved.
+ *
+ * This file is distributed under the terms in the attached INTEL-LICENSE
+ * file. If you do not find these files, copies can be found by writing to
+ * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA,
+ * 94704. Attention: Intel License Inquiry.
+ */
+
+/**
+ * Implementation for Blink application. Toggle the red LED when a
+ * Timer fires.
+ **/
+
+#include "Timer.h"
+
+module BlinkFailC @safe()
+{
+ uses interface Timer<TMilli> as Timer0;
+ uses interface Timer<TMilli> as Timer1;
+ uses interface Timer<TMilli> as Timer2;
+ uses interface Leds;
+ uses interface Boot;
+}
+implementation
+{
+ event void Boot.booted()
+ {
+ call Timer0.startPeriodic( 250 );
+ call Timer1.startPeriodic( 500 );
+ call Timer2.startPeriodic( 1000 );
+ }
+
+ event void Timer0.fired()
+ {
+ dbg("BlinkFailC", "Timer 0 fired @ %s.\n", sim_time_string());
+ call Leds.led0Toggle();
+ }
+
+ int a[10];
+ int i;
+
+ event void Timer1.fired()
+ {
+ dbg("BlinkFailC", "Timer 1 fired @ %s \n", sim_time_string());
+ call Leds.led1Toggle();
+ a[i++] = 1;
+ }
+
+ event void Timer2.fired()
+ {
+ dbg("BlinkFailC", "Timer 2 fired @ %s.\n", sim_time_string());
+ call Leds.led2Toggle();
+ }
+}
+
--- /dev/null
+COMPONENT=BlinkFailAppC
+include $(MAKERULES)
+
--- /dev/null
+README for Blink
+Author/Contact: tinyos-help@millennium.berkeley.edu
+
+Description:
+
+Blink is a simple application that blinks the 3 mote LEDs. It tests
+that the boot sequence and millisecond timers are working properly.
+The three LEDs blink at 1Hz, 2Hz, and 4Hz. Because each is driven by
+an independent timer, visual inspection can determine whether there are
+bugs in the timer system that are causing drift. Note that this
+method is different than RadioCountToLeds, which fires a single timer
+at a steady rate and uses the bottom three bits of a counter to display
+on the LEDs.
+
+Tools:
+
+Known bugs/limitations:
+
+None.
+
+
+$Id$