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:

+ * * - * 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; }