]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - apps/tosthreads/apps/BaseStation/BaseStationAppC.nc
Merge TinyOS 2.1.1 into master.
[tinyos-2.x.git] / apps / tosthreads / apps / BaseStation / BaseStationAppC.nc
index a83de933b2b288af94accc41fe22bc78a05b4b5b..09ca717efcb67ab987e89e2091ecb0852d0ac2f0 100644 (file)
  * OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- * Copyright (c) 2008 Johns Hopkins University.
- * All rights reserved.
+/**
+ * BaseStation is a reimplementation of the standard BaseStation application using
+ * the TOSThreads thread library.  It transparently forwards any AM messages it
+ * receives from its radio interface to its serial interface and vice versa. 
  *
- * 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 (updated) modification history and the author appear in
- * all copies of this source code.
+ * <p>On the serial link, BaseStation sends and receives simple active
+ * messages (not particular radio packets): on the radio link, it
+ * sends radio active messages, whose format depends on the network
+ * stack being used. BaseStation will copy its compiled-in group ID to
+ * messages moving from the serial link to the radio, and will filter
+ * out incoming radio messages that do not contain that group ID.</p>
+ *
+ * <p>BaseStation includes queues in both directions, with a guarantee
+ * that once a message enters a queue, it will eventually leave on the
+ * other interface. The queues allow the BaseStation to handle load
+ * spikes.</p>
+ *
+ * <p>BaseStation acknowledges a message arriving over the serial link
+ * only if that message was successfully enqueued for delivery to the
+ * radio link.</p>
+ *
+ * <p>The LEDS are programmed to toggle as follows:</p>
+ * <ul>
+ * <li><b>LED0:</b> Message bridged from serial to radio</li>
+ * <li><b>LED1:</b> Message bridged from radio to serial</li>
+ * <li><b>LED2:</b> Dropped message due to queue overflow in either direction</li>
+ * </ul>
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
- * OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
  * @author Kevin Klues <klueska@cs.stanford.edu>
  * @author Chieh-Jan Mike Liang <cliang4@cs.jhu.edu>
  */
@@ -71,6 +76,7 @@ implementation
              
              new ThreadC(BOOT_THREAD_STACK_SIZE) as BootThread,
              new ThreadC(RADIO_RECEIVE_THREAD_STACK_SIZE) as RadioReceiveThread,
+             new ThreadC(RADIO_SNOOP_THREAD_STACK_SIZE) as RadioSnoopThread,
              new ThreadC(SERIAL_SEND_THREAD_STACK_SIZE) as SerialSendThread,
              new ThreadC(SERIAL_RECEIVE_THREAD_STACK_SIZE) as SerialReceiveThread,
              new ThreadC(RADIO_SEND_THREAD_STACK_SIZE) as RadioSendThread,
@@ -89,6 +95,7 @@ implementation
 
   BaseStationC.BootThread -> BootThread;
   RadioReceiveSerialSendP.ReceiveThread -> RadioReceiveThread;
+  RadioReceiveSerialSendP.SnoopThread -> RadioSnoopThread;
   RadioReceiveSerialSendP.SendThread -> SerialSendThread;
   SerialReceiveRadioSendP.ReceiveThread -> SerialReceiveThread;
   SerialReceiveRadioSendP.SendThread -> RadioSendThread;  
@@ -116,6 +123,7 @@ implementation
   RadioReceiveSerialSendP.ReceiveAMPacket -> BlockingRadioActiveMessageC;
   RadioReceiveSerialSendP.SendAMPacket -> BlockingSerialActiveMessageC;             
   RadioReceiveSerialSendP.BlockingReceiveAny -> BlockingRadioActiveMessageC.BlockingReceiveAny;
+  RadioReceiveSerialSendP.BlockingSnoopAny -> BlockingRadioActiveMessageC.BlockingSnoopAny;
   RadioReceiveSerialSendP.BlockingAMSend -> BlockingSerialActiveMessageC;
   
   SerialReceiveRadioSendP.ReceivePacket -> BlockingSerialActiveMessageC;
@@ -124,12 +132,4 @@ implementation
   SerialReceiveRadioSendP.SendAMPacket -> BlockingRadioActiveMessageC;             
   SerialReceiveRadioSendP.BlockingReceiveAny -> BlockingSerialActiveMessageC.BlockingReceiveAny;
   SerialReceiveRadioSendP.BlockingAMSend -> BlockingRadioActiveMessageC;
-  
-  components ActiveMessageC, SerialActiveMessageC;
-  BlockingRadioActiveMessageC.Receive -> ActiveMessageC.Receive;
-  BlockingRadioActiveMessageC.Snoop -> ActiveMessageC.Snoop;
-  BlockingRadioActiveMessageC.AMSend -> ActiveMessageC.AMSend;
-  
-  BlockingSerialActiveMessageC.Receive -> SerialActiveMessageC.Receive;
-  BlockingSerialActiveMessageC.AMSend -> SerialActiveMessageC.AMSend;
 }