* 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>
*/
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,
BaseStationC.BootThread -> BootThread;
RadioReceiveSerialSendP.ReceiveThread -> RadioReceiveThread;
+ RadioReceiveSerialSendP.SnoopThread -> RadioSnoopThread;
RadioReceiveSerialSendP.SendThread -> SerialSendThread;
SerialReceiveRadioSendP.ReceiveThread -> SerialReceiveThread;
SerialReceiveRadioSendP.SendThread -> RadioSendThread;
RadioReceiveSerialSendP.ReceiveAMPacket -> BlockingRadioActiveMessageC;
RadioReceiveSerialSendP.SendAMPacket -> BlockingSerialActiveMessageC;
RadioReceiveSerialSendP.BlockingReceiveAny -> BlockingRadioActiveMessageC.BlockingReceiveAny;
+ RadioReceiveSerialSendP.BlockingSnoopAny -> BlockingRadioActiveMessageC.BlockingSnoopAny;
RadioReceiveSerialSendP.BlockingAMSend -> BlockingSerialActiveMessageC;
SerialReceiveRadioSendP.ReceivePacket -> BlockingSerialActiveMessageC;