X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=apps%2Ftosthreads%2Fapps%2FBaseStation%2FBaseStationAppC.nc;h=09ca717efcb67ab987e89e2091ecb0852d0ac2f0;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=a83de933b2b288af94accc41fe22bc78a05b4b5b;hpb=6be6550061e6c0a66273aee61d1d3bb993935124;p=tinyos-2.x.git
diff --git a/apps/tosthreads/apps/BaseStation/BaseStationAppC.nc b/apps/tosthreads/apps/BaseStation/BaseStationAppC.nc
index a83de933..09ca717e 100644
--- a/apps/tosthreads/apps/BaseStation/BaseStationAppC.nc
+++ b/apps/tosthreads/apps/BaseStation/BaseStationAppC.nc
@@ -29,29 +29,34 @@
* 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.
+ *
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.
+ *
+ * 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.
+ *
+ * BaseStation acknowledges a message arriving over the serial link
+ * only if that message was successfully enqueued for delivery to the
+ * radio link.
+ *
+ * The LEDS are programmed to toggle as follows:
+ *
+ * - LED0: Message bridged from serial to radio
+ * - LED1: Message bridged from radio to serial
+ * - LED2: Dropped message due to queue overflow in either direction
+ *
*
- * 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
* @author Chieh-Jan Mike Liang
*/
@@ -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;
}