From: klueska Date: Tue, 10 Jul 2007 19:55:30 +0000 (+0000) Subject: Removed apps/tests/TestArbiter folder and placed the arbiter tests under apps/tests... X-Git-Tag: release_tools_1_2_4_1~45 X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=commitdiff_plain;h=da7fbedf5c9a70a121f2ef9232c9845b1ccf3540 Removed apps/tests/TestArbiter folder and placed the arbiter tests under apps/tests/arbiters instead --- diff --git a/apps/tests/TestArbiter/TestFcfsArbiter/Makefile b/apps/tests/TestArbiter/TestFcfsArbiter/Makefile deleted file mode 100644 index 4c2094b0..00000000 --- a/apps/tests/TestArbiter/TestFcfsArbiter/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -COMPONENT=TestFcfsArbiterAppC -OPTFLAGS = -O0 -include $(MAKERULES) - diff --git a/apps/tests/TestArbiter/TestFcfsArbiter/README.txt b/apps/tests/TestArbiter/TestFcfsArbiter/README.txt deleted file mode 100644 index 0ef3d460..00000000 --- a/apps/tests/TestArbiter/TestFcfsArbiter/README.txt +++ /dev/null @@ -1,38 +0,0 @@ -README for TestFcfsArbiter -Author/Contact: tinyos-help@millennium.berkeley.edu -@author Kevin Klues - -Description: - -Please refer to TEP 108 for more information about the components -this application is used to test. - -This application is used to test the functionality of the -FcfsArbiter component developed using the Resource -interface. Three Resource users are created and all three request -control of the resource before any one of them is granted it. -Once the first user is granted control of the resource, a timer -is set to allow this user to have control of it for a specific -amount of time. Once this timer expires, the resource is released -and then immediately requested again. Upon releasing the resource -control will be granted to the next user that has requested it in FCFS -order. Initial requests are made by the three resource users in the -following order. - -- Resource 0 - -- Resource 2 - -- Resource 1 -It is expected then that using a first-come-first-serve policy, control of the -resource will be granted in the order of 0,2,1 and the Leds -corresponding to each resource will flash whenever this occurs. - -- Led 0 -> Resource 0 - -- Led 1 -> Resource 1 - -- Led 2 -> Resource 2 - -Tools: - -None. - -Known bugs/limitations: - -None. - diff --git a/apps/tests/TestArbiter/TestFcfsArbiter/TestFcfsArbiterAppC.nc b/apps/tests/TestArbiter/TestFcfsArbiter/TestFcfsArbiterAppC.nc deleted file mode 100644 index aa897643..00000000 --- a/apps/tests/TestArbiter/TestFcfsArbiter/TestFcfsArbiterAppC.nc +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2004, Technische Universitat Berlin - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of the Technische Universitat Berlin nor the names - * of its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 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 - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) 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. - */ - -/** - * Please refer to TEP 108 for more information about the components - * this application is used to test.

- * - * This application is used to test the functionality of the - * FcfsArbiter component developed using the Resource - * interface. Three Resource users are created and all three request - * control of the resource before any one of them is granted it. - * Once the first user is granted control of the resource, a timer - * is set to allow this user to have control of it for a specific - * amount of time. Once this timer expires, the resource is released - * and then immediately requested again. Upon releasing the resource - * control will be granted to the next user that has - * requested it in FCFS order. Initial requests are made - * by the three resource users in the following order
- *
  • Resource 0 - *
  • Resource 2 - *
  • Resource 1 - *
    - * It is expected then that using a first-come-first-serve policy, control of the - * resource will be granted in the order of 0,2,1 and the Leds - * corresponding to each resource will flash whenever this occurs.
    - *
  • Led 0 -> Resource 0 - *
  • Led 1 -> Resource 1 - *
  • Led 2 -> Resource 2 - *
    - * - * @author Kevin Klues - * @version $Revision$ - * @date $Date$ - */ - -#define TEST_ARBITER_RESOURCE "Test.Arbiter.Resource" -configuration TestFcfsArbiterAppC{ -} -implementation { - components MainC, TestFcfsArbiterC as App,LedsC, - new TimerMilliC() as Timer0, - new TimerMilliC() as Timer1, - new TimerMilliC() as Timer2, - new FcfsArbiterC(TEST_ARBITER_RESOURCE) as Arbiter; - - enum { - RESOURCE0_ID = unique(TEST_ARBITER_RESOURCE), - RESOURCE1_ID = unique(TEST_ARBITER_RESOURCE), - RESOURCE2_ID = unique(TEST_ARBITER_RESOURCE), - }; - - App -> MainC.Boot; - - App.Resource0 -> Arbiter.Resource[RESOURCE0_ID]; - App.Resource1 -> Arbiter.Resource[RESOURCE1_ID]; - App.Resource2 -> Arbiter.Resource[RESOURCE2_ID]; - App.Timer0 -> Timer0; - App.Timer1 -> Timer1; - App.Timer2 -> Timer2; - - App.Leds -> LedsC; -} - diff --git a/apps/tests/TestArbiter/TestFcfsArbiter/TestFcfsArbiterC.nc b/apps/tests/TestArbiter/TestFcfsArbiter/TestFcfsArbiterC.nc deleted file mode 100644 index 8a093088..00000000 --- a/apps/tests/TestArbiter/TestFcfsArbiter/TestFcfsArbiterC.nc +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2004, Technische Universitat Berlin - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of the Technische Universitat Berlin nor the names - * of its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 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 - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) 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. - */ - -#include "Timer.h" - -/** - * Please refer to TEP 108 for more information about the components - * this application is used to test - * - * This application is used to test the functionality of the - * FcfsArbiter component developed using the Resource - * interface. Three Resource users are created and all three request - * control of the resource before any one of them is granted it. - * Once the first user is granted control of the resource, a timer - * is set to allow this user to have control of it for a specific - * amount of time. Once this timer expires, the resource is released - * and then immediately requested again. Upon releasing the resource - * control will be granted to the next user that has - * requested it in FCFS order. Initial requests are made - * by the three resource users in the following order
    - *
  • Resource 0 - *
  • Resource 2 - *
  • Resource 1 - *
    - * It is expected then that using a first-come-first-serve policy, control of the - * resource will be granted in the order of 0,2,1 and the Leds - * corresponding to each resource will flash whenever this occurs.
    - *
  • Led 0 -> Resource 0 - *
  • Led 1 -> Resource 1 - *
  • Led 2 -> Resource 2 - *
    - * - * @author Kevin Klues - * @version $Revision$ - * @date $Date$ - */ - -module TestFcfsArbiterC { - uses { - interface Boot; - interface Leds; - interface Resource as Resource0; - interface Resource as Resource1; - interface Resource as Resource2; - interface Timer as Timer0; - interface Timer as Timer1; - interface Timer as Timer2; - } -} -implementation { - - #define HOLD_PERIOD 250 - - //All resources try to gain access - event void Boot.booted() { - call Resource0.request(); - call Resource2.request(); - call Resource1.request(); - } - - //If granted the resource, turn on an LED - event void Resource0.granted() { - call Timer0.startOneShot(HOLD_PERIOD); - call Leds.led0Toggle(); - } - event void Resource1.granted() { - call Timer1.startOneShot(HOLD_PERIOD); - call Leds.led1Toggle(); - } - event void Resource2.granted() { - call Timer2.startOneShot(HOLD_PERIOD); - call Leds.led2Toggle(); - } - - //After the hold period release the resource - event void Timer0.fired() { - call Resource0.release(); - call Resource0.request(); - } - event void Timer1.fired() { - call Resource1.release(); - call Resource1.request(); - } - event void Timer2.fired() { - call Resource2.release(); - call Resource2.request(); - } -} - diff --git a/apps/tests/TestArbiter/TestRoundRobinArbiter/Makefile b/apps/tests/TestArbiter/TestRoundRobinArbiter/Makefile deleted file mode 100644 index 804a6041..00000000 --- a/apps/tests/TestArbiter/TestRoundRobinArbiter/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -COMPONENT=TestRoundRobinArbiterAppC -OPTFLAGS = -O0 -include $(MAKERULES) - diff --git a/apps/tests/TestArbiter/TestRoundRobinArbiter/README.txt b/apps/tests/TestArbiter/TestRoundRobinArbiter/README.txt deleted file mode 100644 index 3b42da3b..00000000 --- a/apps/tests/TestArbiter/TestRoundRobinArbiter/README.txt +++ /dev/null @@ -1,38 +0,0 @@ -README for TestRoundRobinArbiter -Author/Contact: tinyos-help@millennium.berkeley.edu -@author Kevin Klues - -Description: - -Please refer to TEP 108 for more information about the components -this application is used to test. - -This application is used to test the functionality of the -RoundRobinArbiter component developed using the Resource -interface. Three Resource users are created and all three request -control of the resource before any one of them is granted it. -Once the first user is granted control of the resource, a timer -is set to allow this user to have control of it for a specific -amount of time. Once this timer expires, the resource is released -and then immediately requested again. Upon releasing the resource -control will be granted to the next user that has requested it in -round robin order. Initial requests are made by the three resource -users in the following order. - -- Resource 0 - -- Resource 2 - -- Resource 1 -It is expected then that using a round robin policy, control of the -resource will be granted in the order of 0,1,2 and the Leds -corresponding to each resource will flash whenever this occurs. - -- Led 0 -> Resource 0 - -- Led 1 -> Resource 1 - -- Led 2 -> Resource 2 - -Tools: - -None. - -Known bugs/limitations: - -None. - diff --git a/apps/tests/TestArbiter/TestRoundRobinArbiter/TestRoundRobinArbiterAppC.nc b/apps/tests/TestArbiter/TestRoundRobinArbiter/TestRoundRobinArbiterAppC.nc deleted file mode 100644 index 593fea7b..00000000 --- a/apps/tests/TestArbiter/TestRoundRobinArbiter/TestRoundRobinArbiterAppC.nc +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2004, Technische Universitat Berlin - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of the Technische Universitat Berlin nor the names - * of its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 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 - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) 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. - */ - -/** - * Please refer to TEP 108 for more information about the components - * this application is used to test.

    - * - * This application is used to test the functionality of the - * RoundRobinArbiter component developed using the Resource - * interface. Three Resource users are created and all three request - * control of the resource before any one of them is granted it. - * Once the first user is granted control of the resource, a timer - * is set to allow this user to have control of it for a specific - * amount of time. Once this timer expires, the resource is released - * and then immediately requested again. Upon releasing the resource - * control will be granted to the next user that has - * requested it in Round Robin order. Initial requests are made - * by the three resource users in the following order
    - *
  • Resource 0 - *
  • Resource 2 - *
  • Resource 1 - *
    - * It is expected then that using a round robin policy, control of the - * resource will be granted in the order of 0,1,2, and the Leds - * corresponding to each resource will flash whenever this occurs.
    - *
  • Led 0 -> Resource 0 - *
  • Led 1 -> Resource 1 - *
  • Led 2 -> Resource 2 - *
    - * - * @author Kevin Klues - * @version $Revision$ - * @date $Date$ - */ - -#define TEST_ARBITER_RESOURCE "Test.Arbiter.Resource" -configuration TestRoundRobinArbiterAppC{ -} -implementation { - components MainC, TestRoundRobinArbiterC as App,LedsC, - new TimerMilliC() as Timer0, - new TimerMilliC() as Timer1, - new TimerMilliC() as Timer2, - new RoundRobinArbiterC(TEST_ARBITER_RESOURCE) as Arbiter; - - enum { - RESOURCE0_ID = unique(TEST_ARBITER_RESOURCE), - RESOURCE1_ID = unique(TEST_ARBITER_RESOURCE), - RESOURCE2_ID = unique(TEST_ARBITER_RESOURCE), - }; - - App -> MainC.Boot; - - App.Resource0 -> Arbiter.Resource[RESOURCE0_ID]; - App.Resource1 -> Arbiter.Resource[RESOURCE1_ID]; - App.Resource2 -> Arbiter.Resource[RESOURCE2_ID]; - App.Timer0 -> Timer0; - App.Timer1 -> Timer1; - App.Timer2 -> Timer2; - - App.Leds -> LedsC; -} - diff --git a/apps/tests/TestArbiter/TestRoundRobinArbiter/TestRoundRobinArbiterC.nc b/apps/tests/TestArbiter/TestRoundRobinArbiter/TestRoundRobinArbiterC.nc deleted file mode 100644 index de621148..00000000 --- a/apps/tests/TestArbiter/TestRoundRobinArbiter/TestRoundRobinArbiterC.nc +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2004, Technische Universitat Berlin - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of the Technische Universitat Berlin nor the names - * of its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 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 - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) 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. - */ - -#include "Timer.h" - -/** - * Please refer to TEP 108 for more information about the components - * this application is used to test - * - * This application is used to test the functionality of the - * RoundRobinArbiter component developed using the Resource - * interface. Three Resource users are created and all three request - * control of the resource before any one of them is granted it. - * Once the first user is granted control of the resource, a timer - * is set to allow this user to have control of it for a specific - * amount of time. Once this timer expires, the resource is released - * and then immediately requested again. Upon releasing the resource - * control will be granted to the next user that has - * requested it in Round Robin order. Initial requests are made - * by the three resource users in the following order
    - *
  • Resource 0 - *
  • Resource 2 - *
  • Resource 1 - *
    - * It is expected then that using a round robin policy, control of the - * resource will be granted in the order of 0,1,2, and the Leds - * corresponding to each resource will flash whenever this occurs.
    - *
  • Led 0 -> Resource 0 - *
  • Led 1 -> Resource 1 - *
  • Led 2 -> Resource 2 - *
    - * - * @author Kevin Klues - * @version $Revision$ - * @date $Date$ - */ - -module TestRoundRobinArbiterC { - uses { - interface Boot; - interface Leds; - interface Resource as Resource0; - interface Resource as Resource1; - interface Resource as Resource2; - interface Timer as Timer0; - interface Timer as Timer1; - interface Timer as Timer2; - } -} -implementation { - - #define HOLD_PERIOD 250 - - //All resources try to gain access - event void Boot.booted() { - call Resource0.request(); - call Resource2.request(); - call Resource1.request(); - } - - //If granted the resource, turn on an LED - event void Resource0.granted() { - call Timer0.startOneShot(HOLD_PERIOD); - call Leds.led0Toggle(); - } - event void Resource1.granted() { - call Timer1.startOneShot(HOLD_PERIOD); - call Leds.led1Toggle(); - } - event void Resource2.granted() { - call Timer2.startOneShot(HOLD_PERIOD); - call Leds.led2Toggle(); - } - - //After the hold period release the resource - event void Timer0.fired() { - call Resource0.release(); - call Resource0.request(); - } - event void Timer1.fired() { - call Resource1.release(); - call Resource1.request(); - } - event void Timer2.fired() { - call Resource2.release(); - call Resource2.request(); - } -} - diff --git a/apps/tests/arbiters/TestFcfsArbiter/Makefile b/apps/tests/arbiters/TestFcfsArbiter/Makefile new file mode 100644 index 00000000..4c2094b0 --- /dev/null +++ b/apps/tests/arbiters/TestFcfsArbiter/Makefile @@ -0,0 +1,4 @@ +COMPONENT=TestFcfsArbiterAppC +OPTFLAGS = -O0 +include $(MAKERULES) + diff --git a/apps/tests/arbiters/TestFcfsArbiter/README.txt b/apps/tests/arbiters/TestFcfsArbiter/README.txt new file mode 100644 index 00000000..0ef3d460 --- /dev/null +++ b/apps/tests/arbiters/TestFcfsArbiter/README.txt @@ -0,0 +1,38 @@ +README for TestFcfsArbiter +Author/Contact: tinyos-help@millennium.berkeley.edu +@author Kevin Klues + +Description: + +Please refer to TEP 108 for more information about the components +this application is used to test. + +This application is used to test the functionality of the +FcfsArbiter component developed using the Resource +interface. Three Resource users are created and all three request +control of the resource before any one of them is granted it. +Once the first user is granted control of the resource, a timer +is set to allow this user to have control of it for a specific +amount of time. Once this timer expires, the resource is released +and then immediately requested again. Upon releasing the resource +control will be granted to the next user that has requested it in FCFS +order. Initial requests are made by the three resource users in the +following order. + -- Resource 0 + -- Resource 2 + -- Resource 1 +It is expected then that using a first-come-first-serve policy, control of the +resource will be granted in the order of 0,2,1 and the Leds +corresponding to each resource will flash whenever this occurs. + -- Led 0 -> Resource 0 + -- Led 1 -> Resource 1 + -- Led 2 -> Resource 2 + +Tools: + +None. + +Known bugs/limitations: + +None. + diff --git a/apps/tests/arbiters/TestFcfsArbiter/TestFcfsArbiterAppC.nc b/apps/tests/arbiters/TestFcfsArbiter/TestFcfsArbiterAppC.nc new file mode 100644 index 00000000..aa897643 --- /dev/null +++ b/apps/tests/arbiters/TestFcfsArbiter/TestFcfsArbiterAppC.nc @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2004, Technische Universitat Berlin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * - Neither the name of the Technische Universitat Berlin nor the names + * of its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) 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. + */ + +/** + * Please refer to TEP 108 for more information about the components + * this application is used to test.

    + * + * This application is used to test the functionality of the + * FcfsArbiter component developed using the Resource + * interface. Three Resource users are created and all three request + * control of the resource before any one of them is granted it. + * Once the first user is granted control of the resource, a timer + * is set to allow this user to have control of it for a specific + * amount of time. Once this timer expires, the resource is released + * and then immediately requested again. Upon releasing the resource + * control will be granted to the next user that has + * requested it in FCFS order. Initial requests are made + * by the three resource users in the following order
    + *
  • Resource 0 + *
  • Resource 2 + *
  • Resource 1 + *
    + * It is expected then that using a first-come-first-serve policy, control of the + * resource will be granted in the order of 0,2,1 and the Leds + * corresponding to each resource will flash whenever this occurs.
    + *
  • Led 0 -> Resource 0 + *
  • Led 1 -> Resource 1 + *
  • Led 2 -> Resource 2 + *
    + * + * @author Kevin Klues + * @version $Revision$ + * @date $Date$ + */ + +#define TEST_ARBITER_RESOURCE "Test.Arbiter.Resource" +configuration TestFcfsArbiterAppC{ +} +implementation { + components MainC, TestFcfsArbiterC as App,LedsC, + new TimerMilliC() as Timer0, + new TimerMilliC() as Timer1, + new TimerMilliC() as Timer2, + new FcfsArbiterC(TEST_ARBITER_RESOURCE) as Arbiter; + + enum { + RESOURCE0_ID = unique(TEST_ARBITER_RESOURCE), + RESOURCE1_ID = unique(TEST_ARBITER_RESOURCE), + RESOURCE2_ID = unique(TEST_ARBITER_RESOURCE), + }; + + App -> MainC.Boot; + + App.Resource0 -> Arbiter.Resource[RESOURCE0_ID]; + App.Resource1 -> Arbiter.Resource[RESOURCE1_ID]; + App.Resource2 -> Arbiter.Resource[RESOURCE2_ID]; + App.Timer0 -> Timer0; + App.Timer1 -> Timer1; + App.Timer2 -> Timer2; + + App.Leds -> LedsC; +} + diff --git a/apps/tests/arbiters/TestFcfsArbiter/TestFcfsArbiterC.nc b/apps/tests/arbiters/TestFcfsArbiter/TestFcfsArbiterC.nc new file mode 100644 index 00000000..8a093088 --- /dev/null +++ b/apps/tests/arbiters/TestFcfsArbiter/TestFcfsArbiterC.nc @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2004, Technische Universitat Berlin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * - Neither the name of the Technische Universitat Berlin nor the names + * of its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) 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. + */ + +#include "Timer.h" + +/** + * Please refer to TEP 108 for more information about the components + * this application is used to test + * + * This application is used to test the functionality of the + * FcfsArbiter component developed using the Resource + * interface. Three Resource users are created and all three request + * control of the resource before any one of them is granted it. + * Once the first user is granted control of the resource, a timer + * is set to allow this user to have control of it for a specific + * amount of time. Once this timer expires, the resource is released + * and then immediately requested again. Upon releasing the resource + * control will be granted to the next user that has + * requested it in FCFS order. Initial requests are made + * by the three resource users in the following order
    + *
  • Resource 0 + *
  • Resource 2 + *
  • Resource 1 + *
    + * It is expected then that using a first-come-first-serve policy, control of the + * resource will be granted in the order of 0,2,1 and the Leds + * corresponding to each resource will flash whenever this occurs.
    + *
  • Led 0 -> Resource 0 + *
  • Led 1 -> Resource 1 + *
  • Led 2 -> Resource 2 + *
    + * + * @author Kevin Klues + * @version $Revision$ + * @date $Date$ + */ + +module TestFcfsArbiterC { + uses { + interface Boot; + interface Leds; + interface Resource as Resource0; + interface Resource as Resource1; + interface Resource as Resource2; + interface Timer as Timer0; + interface Timer as Timer1; + interface Timer as Timer2; + } +} +implementation { + + #define HOLD_PERIOD 250 + + //All resources try to gain access + event void Boot.booted() { + call Resource0.request(); + call Resource2.request(); + call Resource1.request(); + } + + //If granted the resource, turn on an LED + event void Resource0.granted() { + call Timer0.startOneShot(HOLD_PERIOD); + call Leds.led0Toggle(); + } + event void Resource1.granted() { + call Timer1.startOneShot(HOLD_PERIOD); + call Leds.led1Toggle(); + } + event void Resource2.granted() { + call Timer2.startOneShot(HOLD_PERIOD); + call Leds.led2Toggle(); + } + + //After the hold period release the resource + event void Timer0.fired() { + call Resource0.release(); + call Resource0.request(); + } + event void Timer1.fired() { + call Resource1.release(); + call Resource1.request(); + } + event void Timer2.fired() { + call Resource2.release(); + call Resource2.request(); + } +} + diff --git a/apps/tests/arbiters/TestRoundRobinArbiter/Makefile b/apps/tests/arbiters/TestRoundRobinArbiter/Makefile new file mode 100644 index 00000000..804a6041 --- /dev/null +++ b/apps/tests/arbiters/TestRoundRobinArbiter/Makefile @@ -0,0 +1,4 @@ +COMPONENT=TestRoundRobinArbiterAppC +OPTFLAGS = -O0 +include $(MAKERULES) + diff --git a/apps/tests/arbiters/TestRoundRobinArbiter/README.txt b/apps/tests/arbiters/TestRoundRobinArbiter/README.txt new file mode 100644 index 00000000..3b42da3b --- /dev/null +++ b/apps/tests/arbiters/TestRoundRobinArbiter/README.txt @@ -0,0 +1,38 @@ +README for TestRoundRobinArbiter +Author/Contact: tinyos-help@millennium.berkeley.edu +@author Kevin Klues + +Description: + +Please refer to TEP 108 for more information about the components +this application is used to test. + +This application is used to test the functionality of the +RoundRobinArbiter component developed using the Resource +interface. Three Resource users are created and all three request +control of the resource before any one of them is granted it. +Once the first user is granted control of the resource, a timer +is set to allow this user to have control of it for a specific +amount of time. Once this timer expires, the resource is released +and then immediately requested again. Upon releasing the resource +control will be granted to the next user that has requested it in +round robin order. Initial requests are made by the three resource +users in the following order. + -- Resource 0 + -- Resource 2 + -- Resource 1 +It is expected then that using a round robin policy, control of the +resource will be granted in the order of 0,1,2 and the Leds +corresponding to each resource will flash whenever this occurs. + -- Led 0 -> Resource 0 + -- Led 1 -> Resource 1 + -- Led 2 -> Resource 2 + +Tools: + +None. + +Known bugs/limitations: + +None. + diff --git a/apps/tests/arbiters/TestRoundRobinArbiter/TestRoundRobinArbiterAppC.nc b/apps/tests/arbiters/TestRoundRobinArbiter/TestRoundRobinArbiterAppC.nc new file mode 100644 index 00000000..593fea7b --- /dev/null +++ b/apps/tests/arbiters/TestRoundRobinArbiter/TestRoundRobinArbiterAppC.nc @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2004, Technische Universitat Berlin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * - Neither the name of the Technische Universitat Berlin nor the names + * of its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) 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. + */ + +/** + * Please refer to TEP 108 for more information about the components + * this application is used to test.

    + * + * This application is used to test the functionality of the + * RoundRobinArbiter component developed using the Resource + * interface. Three Resource users are created and all three request + * control of the resource before any one of them is granted it. + * Once the first user is granted control of the resource, a timer + * is set to allow this user to have control of it for a specific + * amount of time. Once this timer expires, the resource is released + * and then immediately requested again. Upon releasing the resource + * control will be granted to the next user that has + * requested it in Round Robin order. Initial requests are made + * by the three resource users in the following order
    + *
  • Resource 0 + *
  • Resource 2 + *
  • Resource 1 + *
    + * It is expected then that using a round robin policy, control of the + * resource will be granted in the order of 0,1,2, and the Leds + * corresponding to each resource will flash whenever this occurs.
    + *
  • Led 0 -> Resource 0 + *
  • Led 1 -> Resource 1 + *
  • Led 2 -> Resource 2 + *
    + * + * @author Kevin Klues + * @version $Revision$ + * @date $Date$ + */ + +#define TEST_ARBITER_RESOURCE "Test.Arbiter.Resource" +configuration TestRoundRobinArbiterAppC{ +} +implementation { + components MainC, TestRoundRobinArbiterC as App,LedsC, + new TimerMilliC() as Timer0, + new TimerMilliC() as Timer1, + new TimerMilliC() as Timer2, + new RoundRobinArbiterC(TEST_ARBITER_RESOURCE) as Arbiter; + + enum { + RESOURCE0_ID = unique(TEST_ARBITER_RESOURCE), + RESOURCE1_ID = unique(TEST_ARBITER_RESOURCE), + RESOURCE2_ID = unique(TEST_ARBITER_RESOURCE), + }; + + App -> MainC.Boot; + + App.Resource0 -> Arbiter.Resource[RESOURCE0_ID]; + App.Resource1 -> Arbiter.Resource[RESOURCE1_ID]; + App.Resource2 -> Arbiter.Resource[RESOURCE2_ID]; + App.Timer0 -> Timer0; + App.Timer1 -> Timer1; + App.Timer2 -> Timer2; + + App.Leds -> LedsC; +} + diff --git a/apps/tests/arbiters/TestRoundRobinArbiter/TestRoundRobinArbiterC.nc b/apps/tests/arbiters/TestRoundRobinArbiter/TestRoundRobinArbiterC.nc new file mode 100644 index 00000000..de621148 --- /dev/null +++ b/apps/tests/arbiters/TestRoundRobinArbiter/TestRoundRobinArbiterC.nc @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2004, Technische Universitat Berlin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * - Neither the name of the Technische Universitat Berlin nor the names + * of its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) 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. + */ + +#include "Timer.h" + +/** + * Please refer to TEP 108 for more information about the components + * this application is used to test + * + * This application is used to test the functionality of the + * RoundRobinArbiter component developed using the Resource + * interface. Three Resource users are created and all three request + * control of the resource before any one of them is granted it. + * Once the first user is granted control of the resource, a timer + * is set to allow this user to have control of it for a specific + * amount of time. Once this timer expires, the resource is released + * and then immediately requested again. Upon releasing the resource + * control will be granted to the next user that has + * requested it in Round Robin order. Initial requests are made + * by the three resource users in the following order
    + *
  • Resource 0 + *
  • Resource 2 + *
  • Resource 1 + *
    + * It is expected then that using a round robin policy, control of the + * resource will be granted in the order of 0,1,2, and the Leds + * corresponding to each resource will flash whenever this occurs.
    + *
  • Led 0 -> Resource 0 + *
  • Led 1 -> Resource 1 + *
  • Led 2 -> Resource 2 + *
    + * + * @author Kevin Klues + * @version $Revision$ + * @date $Date$ + */ + +module TestRoundRobinArbiterC { + uses { + interface Boot; + interface Leds; + interface Resource as Resource0; + interface Resource as Resource1; + interface Resource as Resource2; + interface Timer as Timer0; + interface Timer as Timer1; + interface Timer as Timer2; + } +} +implementation { + + #define HOLD_PERIOD 250 + + //All resources try to gain access + event void Boot.booted() { + call Resource0.request(); + call Resource2.request(); + call Resource1.request(); + } + + //If granted the resource, turn on an LED + event void Resource0.granted() { + call Timer0.startOneShot(HOLD_PERIOD); + call Leds.led0Toggle(); + } + event void Resource1.granted() { + call Timer1.startOneShot(HOLD_PERIOD); + call Leds.led1Toggle(); + } + event void Resource2.granted() { + call Timer2.startOneShot(HOLD_PERIOD); + call Leds.led2Toggle(); + } + + //After the hold period release the resource + event void Timer0.fired() { + call Resource0.release(); + call Resource0.request(); + } + event void Timer1.fired() { + call Resource1.release(); + call Resource1.request(); + } + event void Timer2.fired() { + call Resource2.release(); + call Resource2.request(); + } +} +