csmamacc.nc

来自「tinyos-2.x.rar」· NC 代码 · 共 115 行

NC
115
字号
/* -*- mode:c++; indent-tabs-mode:nil -*- 
 * Copyright (c) 2006, Technische Universitaet 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 Universitaet 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.
 */

/**
 * Configuration for the CsmaMac.
 *
 * @author: Kevin Klues (klues@tkn.tu-berlin.de)
 * @author: Andreas Koepke (koepke@tkn.tu-berlin.de)
 * @author: Philipp Huppertz (huppertz@tkn.tu-berlin.de)
 */

// #define MAC_DEBUG
configuration CsmaMacC {
  provides {
    interface SplitControl;
    interface MacSend;
    interface MacReceive;
    interface Packet;
  }
  uses {
    interface PhySend as PacketSend;
    interface PhyReceive as PacketReceive;
    interface Packet as SubPacket;
    interface Tda5250Control;  
    interface UartPhyControl;
    interface RadioTimeStamping;
  }
}
implementation {
  components  MainC,
      Tda5250RadioC,    
      CsmaMacP,
      RssiFixedThresholdCMC as Cca,
      new Alarm32khz16C() as Timer,
      new TimerMilliC() as ReRxTimer,
      DuplicateC,
      TimeDiffC,
      LocalTimeC,
      RandomLfsrC
#ifdef MAC_DEBUG
      ,PlatformLedsC
#endif
      ;
              
    MainC.SoftwareInit -> CsmaMacP;
    
    SplitControl = CsmaMacP;
    
    MacSend = CsmaMacP;
    MacReceive = CsmaMacP;
    Tda5250Control = CsmaMacP;
    UartPhyControl = CsmaMacP;
    RadioTimeStamping = CsmaMacP;
    
    CsmaMacP = Packet;
    CsmaMacP = SubPacket;
    CsmaMacP = PacketSend;
    CsmaMacP = PacketReceive;
    
    CsmaMacP.CcaStdControl -> Cca.StdControl;
    CsmaMacP.ChannelMonitor -> Cca.ChannelMonitor;
    CsmaMacP.ChannelMonitorData -> Cca.ChannelMonitorData;
    CsmaMacP.ChannelMonitorControl -> Cca.ChannelMonitorControl;
    CsmaMacP.RssiAdcResource -> Cca.RssiAdcResource;

    components ActiveMessageAddressC;
    CsmaMacP.amAddress -> ActiveMessageAddressC;

    CsmaMacP.Random -> RandomLfsrC;

    CsmaMacP.RadioResourceRequested -> Tda5250RadioC.ResourceRequested;

    CsmaMacP.Timer -> Timer;

    CsmaMacP.ReRxTimer -> ReRxTimer;

    CsmaMacP.Duplicate -> DuplicateC;
    CsmaMacP.TimeDiff16 -> TimeDiffC;
    CsmaMacP.LocalTime32kHz -> LocalTimeC;

#ifdef MAC_DEBUG
    CsmaMacP.Led0 -> PlatformLedsC.Led0;
    CsmaMacP.Led1 -> PlatformLedsC.Led1;
    CsmaMacP.Led2 -> PlatformLedsC.Led2;
    CsmaMacP.Led3 -> PlatformLedsC.Led3;
#endif    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?