testpriorityarbiterappc.nc
来自「tinyos-2.0源代码!转载而已!要的尽管拿!」· NC 代码 · 共 98 行
NC
98 行
/* * 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. * - Revision ------------------------------------------------------------- * $Revision: 1.1.2.7 $ * $Date: 2006/03/08 02:01:43 $ * ======================================================================== */ /** * TestPriorityArbiter Application * This application is used to test the functionality of the FcfsPriorityArbiter * component developed using the Resource and ResourceUser interfaces. * <br> * In this test there are 4 users of one ressource. The Leds indicate which * user is the owner of the resource:<br> * <li> normal priority client 1 - led 0 * <li> normal priority client 2 - led 1 * <li> power manager - led 2 * <li> high priority client - led 0 and led 1 and led 2 * <br><br> * The short flashing of the according leds inidicate that a user has requested the * resource. The users have the following behaviour:<br><br> * <li> Normal priority clients are idle for a period of time before requesting the resource. * If they are granted the resource they will use it for a specific amount of time before releasing it. * <li> Power manager only request the resource if its idle. It releases the resource immediatly * if there is a request from another client. * <li> High priority client behaves like a normal client but it will release the resource * after a shorter period of time if there are requests from other clients. * <br><br> * The poliy of the arbiter should be FirstComeFirstServed with one exception: * If the high priority client requests the resource, the resource will be granted to the * high priority client after the release of the current owner regardless of the internal queue of the arbiter. After * the high priority client releases the resource the normal FCFS arbitration resumes. * * @author Kevin Klues (klues@tkn.tu-berlin.de) * @author Philipp Huppertz (extended test FcfsPriorityArbiter) */ configuration TestPriorityArbiterAppC{ } implementation { components MainC, TestPriorityArbiterC, LedsC, BusyWaitMicroC, new FcfsPriorityArbiterC("Test.Arbiter.Resource") as Arbiter, new TimerMilliC() as TimerHigh, new TimerMilliC() as TimerClient1, new TimerMilliC() as TimerClient2; TestPriorityArbiterC -> MainC.Boot; MainC.SoftwareInit -> LedsC; MainC.SoftwareInit -> Arbiter; TestPriorityArbiterC.BusyWait -> BusyWaitMicroC; TestPriorityArbiterC.TimerHighClient -> TimerHigh; TestPriorityArbiterC.TimerClient1 -> TimerClient1; TestPriorityArbiterC.TimerClient2 -> TimerClient2; TestPriorityArbiterC.HighClient -> Arbiter.HighPriorityClient; TestPriorityArbiterC.PowerManager -> Arbiter.LowPriorityClient; TestPriorityArbiterC.Client2 -> Arbiter.Resource[unique("Test.Arbiter.Resource")]; TestPriorityArbiterC.Client1 -> Arbiter.Resource[unique("Test.Arbiter.Resource")]; TestPriorityArbiterC.Leds -> LedsC; }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?