⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hplcc2420interruptsp.nc

📁 tinyos2.0版本驱动
💻 NC
字号:
/* * Copyright (c) 2005-2006 Rincon Research Corporation * 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 Rincon Research Corporation 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 * ARCHED ROCK OR ITS 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 *//** * MicaZ implementation of the CC2420 interrupts. FIFOP is a real * interrupt, while CCA and FIFO are emulated through timer polling. * <pre> *  $Id: HplCC2420InterruptsP.nc,v 1.5 2007/04/30 17:31:08 rincon Exp $ * <pre> * * @author Philip Levis * @author Matt Miller * @author David Moss * @version @version $Revision: 1.5 $ $Date: 2007/04/30 17:31:08 $ */module HplCC2420InterruptsP {  provides {    interface GpioInterrupt as CCA;  }    uses {    interface GeneralIO as CC_CCA;  }}implementation {  norace uint8_t ccaWaitForState;    norace uint8_t ccaLastState;    bool ccaCheckDisabled = FALSE;  // ************* CCA Interrupt handlers and dispatch *************    /**   * enable an edge interrupt on the CCA pin   * NOT an interrupt in MICAz. Implement as a task polled pin monitor   */  task void CCATask() {    uint8_t CCAState;    atomic {      if (ccaCheckDisabled) {        return;      }    }        //check CCA state    CCAState = call CC_CCA.get(); //get current state here if waiting for edge    if ((ccaLastState != ccaWaitForState) && (CCAState == ccaWaitForState)) {      signal CCA.fired();    }        //if CCA Pin is correct and edge found    //repost task and try again    ccaLastState = CCAState;    post CCATask();  }    async command error_t CCA.enableRisingEdge() {     atomic ccaWaitForState = TRUE; //save the state we are waiting for    atomic ccaCheckDisabled = FALSE;    ccaLastState = call CC_CCA.get(); //get current state    post CCATask();    return SUCCESS;  }  async command error_t CCA.enableFallingEdge() {     atomic ccaWaitForState = FALSE; //save the state we are waiting for    atomic ccaCheckDisabled = FALSE;    ccaLastState = call CC_CCA.get(); //get current state    post CCATask();    return SUCCESS;  }    async command error_t CCA.disable() {    atomic ccaCheckDisabled = TRUE;    return SUCCESS;  }  /***************** Defaults ****************/  default async event void CCA.fired() {  }}

⌨️ 快捷键说明

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