亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dmaarraym.nc

?? tinyos-2.x.rar
?? NC
字號:
/*
 * Copyright (c) 2005 Yale University.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. 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.
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgement:
 *       This product includes software developed by the Embedded Networks
 *       and Applications Lab (ENALAB) at Yale University.
 * 4. Neither the name of the University nor that of the Laboratory
 *    may be used to endorse or promote products derived from this
 *    software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY YALE UNIVERSITY 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 REGENTS
 * 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.
 *
 */ 
 /**
 * @brief dma array operations
 * @author Andrew Barton-Sweeney (abs@cs.yale.edu)
 * @author Thiago Teixeira
 */
 /**                                         
 * Modified and ported to tinyos-2.x.
 * 
 * @author Brano Kusy (branislav.kusy@gmail.com)
 * @version October 25, 2007
 */

module dmaArrayM{
    provides interface dmaArray;
}

implementation
{
	  async command uint32_t dmaArray.array_getBaseIndex(DescArray *DAPtr)
	  {
	    uint32_t addr = (uint32_t) (&DAPtr->data[0]);
	    return DescArray_BYTE_ALLIGNMENT - (addr % DescArray_BYTE_ALLIGNMENT);
	  }
	  
	  async command DMADescriptor_t* dmaArray.array_get(DescArray *DAPtr, uint8_t descIndex)
	  {
	    uint32_t baseIndex = call dmaArray.array_getBaseIndex(DAPtr);
	    return (DMADescriptor_t*)&DAPtr->data[baseIndex + descIndex*sizeof(DMADescriptor_t)];
	  }

    command void dmaArray.init(DescArray *DAPtr, 
    														uint32_t num_bytes, 
    														uint32_t sourceAddr, 
    														void *buf)
    {
        uint8_t i = 0;
        DMADescriptor_t* descPtr = NULL;
        //was: uint32_t bytesLeftToSchedule = nbrBytesToTransfer;
        uint32_t bytesLeftToSchedule = num_bytes;
        uint32_t image_data = (uint32_t) buf;

        for (i = 0; bytesLeftToSchedule > 0; ++i) {
            descPtr = call dmaArray.array_get(DAPtr, i);

            call dmaArray.setSourceAddr(descPtr, sourceAddr);
            //was: call dmaArray.setTargetAddr(descPtr, &image.data[ i*(MAX_DESC_TRANSFER/4) ]);
            call dmaArray.setTargetAddr(descPtr, image_data + i*MAX_DESC_TRANSFER ); 
            call dmaArray.enableSourceAddrIncrement(descPtr, FALSE);
            call dmaArray.enableTargetAddrIncrement(descPtr, TRUE);
            call dmaArray.enableSourceFlowControl(descPtr, TRUE);
            call dmaArray.enableTargetFlowControl(descPtr, FALSE);
            call dmaArray.setMaxBurstSize(descPtr, 3);      // burst size: can be 8, 16, or 32 bytes
            call dmaArray.setTransferWidth(descPtr, 3);     // peripheral width for DMA transactions from CIF is always 8-bytes, regardless of DCMD[WIDTH]
            
            if (bytesLeftToSchedule >= MAX_DESC_TRANSFER) {
                call dmaArray.setTransferLength(descPtr, MAX_DESC_TRANSFER);  // 16*8 *2 =256 bytes // must be an integer multiple of 8-bytes
                bytesLeftToSchedule -= MAX_DESC_TRANSFER;
            }
            else {
                call dmaArray.setTransferLength(descPtr, bytesLeftToSchedule);
                bytesLeftToSchedule = 0;
            }

            // continue running the next descriptor
            descPtr->DDADR = (uint32_t)call dmaArray.array_get(DAPtr, i+1);
        }

        // Set the stop bit for the last descriptor
        descPtr->DDADR |= DDADR_STOP;
    }

    command void dmaArray.setSourceAddr(DMADescriptor_t* descPtr, uint32_t val)
    {
        atomic{ descPtr->DSADR = val; }
    }

    command void dmaArray.setTargetAddr(DMADescriptor_t* descPtr, uint32_t val)
    {
        atomic{ descPtr->DTADR = val; }
    }
    
    command void dmaArray.enableSourceAddrIncrement(DMADescriptor_t* descPtr, bool enable)
    {
        atomic{ descPtr->DCMD = (enable == TRUE) ? descPtr->DCMD | DCMD_INCSRCADDR : descPtr->DCMD & ~DCMD_INCSRCADDR; }
    }

    command void dmaArray.enableTargetAddrIncrement(DMADescriptor_t* descPtr, bool enable)
    {
        atomic{ descPtr->DCMD = (enable == TRUE) ? descPtr->DCMD | DCMD_INCTRGADDR : descPtr->DCMD & ~DCMD_INCTRGADDR; }
    }

    command void dmaArray.enableSourceFlowControl(DMADescriptor_t* descPtr, bool enable)
    {
        atomic{descPtr->DCMD = (enable == TRUE) ? descPtr->DCMD | DCMD_FLOWSRC : descPtr->DCMD & ~DCMD_FLOWSRC;}
    }
  
    command void dmaArray.enableTargetFlowControl(DMADescriptor_t* descPtr, bool enable)
    {
        atomic{descPtr->DCMD = (enable == TRUE) ? descPtr->DCMD | DCMD_FLOWTRG : descPtr->DCMD & ~DCMD_FLOWTRG;}
    } 
  
    command void dmaArray.setMaxBurstSize(DMADescriptor_t* descPtr, DMAMaxBurstSize_t size)
    {
				if(size >= DMA_BURST_SIZE_8BYTES && size <= DMA_BURST_SIZE_32BYTES){
        //if(size >= DMA_BURST_SIZE_8BYTES && size <= DMA_BURST_SIZE_32BYTES){
            atomic{
              //clear it out since otherwise |'ing doesn't work so well
              descPtr->DCMD &= ~DCMD_MAXSIZE;  
              descPtr->DCMD |= DCMD_SIZE(size); 
            }
        }        
    }
  
    command void dmaArray.setTransferLength(DMADescriptor_t* descPtr, uint16_t length)
    {
        uint16_t currentLength;
        currentLength = (length < MAX_DESC_TRANSFER) ? length : MAX_DESC_TRANSFER;
				//was: currentLength = (length<8192) ? length: 8190;
        atomic{
            descPtr->DCMD &= ~DCMD_MAXLEN; 
            descPtr->DCMD |= DCMD_LEN(currentLength); 
        }
    }
  
    command void dmaArray.setTransferWidth(DMADescriptor_t* descPtr, DMATransferWidth_t width)
    {
        atomic{
          //clear it out since otherwise |'ing doesn't work so well
          descPtr->DCMD &= ~DCMD_MAXWIDTH; 
          descPtr->DCMD |= DCMD_WIDTH(width);
      }        
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品成人在线| 国产在线播精品第三| 精品在线播放免费| 色哟哟国产精品| 国产欧美精品一区| 青娱乐精品视频在线| 91论坛在线播放| 欧美激情综合在线| 美女一区二区久久| 91农村精品一区二区在线| 久久蜜桃一区二区| 美美哒免费高清在线观看视频一区二区 | 欧美日韩亚洲综合| 国产精品国产三级国产a| 国产麻豆日韩欧美久久| 欧美一卡二卡三卡| 亚洲成av人综合在线观看| 色网综合在线观看| 久久精品夜色噜噜亚洲a∨ | 亚洲乱码一区二区三区在线观看| 国产一区二区三区| 日韩精品一区二区在线观看| 日韩国产高清在线| 这里是久久伊人| 亚洲成av人片| 欧美伦理电影网| 午夜精品一区在线观看| 欧美日韩视频在线观看一区二区三区| 亚洲美女电影在线| 91蝌蚪porny九色| 国产精品久久免费看| 成人av网站在线观看| 国产精品久线在线观看| a级精品国产片在线观看| 欧美国产精品专区| 99久久精品国产一区| 国产精品精品国产色婷婷| 成人爱爱电影网址| 亚洲婷婷在线视频| 欧美日韩精品一区二区天天拍小说| 亚洲精品一二三| 欧美性色综合网| 人人狠狠综合久久亚洲| 精品欧美久久久| 成人激情免费网站| 亚洲精品国产第一综合99久久| 在线观看av不卡| 免费欧美高清视频| 国产欧美日韩三级| 91社区在线播放| 日韩专区一卡二卡| 精品粉嫩aⅴ一区二区三区四区| 国产91精品欧美| 亚洲精品第1页| 欧美一区二区播放| 国产精品白丝av| 亚洲欧美一区二区三区孕妇| 欧美色国产精品| 国产自产视频一区二区三区| 亚洲视频一区在线| 欧美色爱综合网| 黄页视频在线91| 亚洲女同ⅹxx女同tv| 制服丝袜亚洲精品中文字幕| 91亚洲午夜精品久久久久久| 一个色综合av| 久久久亚洲午夜电影| 在线亚洲一区二区| 国产精品996| 午夜精品免费在线观看| 久久久久久久国产精品影院| 色94色欧美sute亚洲线路一ni| 青青青伊人色综合久久| 国产精品美女久久久久久久| 欧美一区二区久久| 91美女福利视频| 国产一区二区三区免费观看| 亚洲国产精品嫩草影院| 日本一区二区视频在线| 欧美性大战久久| 久久夜色精品国产噜噜av| 国产中文一区二区三区| 亚洲图片欧美视频| 国产欧美日韩在线| 日韩欧美一二三| 欧美日韩成人综合| 色综合久久天天| 国产成a人亚洲| 久久成人精品无人区| 亚洲成av人片观看| 舔着乳尖日韩一区| 国产精品初高中害羞小美女文| 精品久久久久久久久久久久久久久久久 | 国产精品第四页| 国产午夜精品一区二区三区视频| 91精品国产福利| 欧美日韩亚洲国产综合| 色婷婷亚洲精品| 99热99精品| av一本久道久久综合久久鬼色| 国产原创一区二区三区| 男女男精品网站| 日本麻豆一区二区三区视频| 午夜电影一区二区三区| 亚洲国产欧美日韩另类综合| 亚洲精品写真福利| 自拍偷自拍亚洲精品播放| 国产精品成人一区二区三区夜夜夜| 久久综合久色欧美综合狠狠| 精品国产一区a| 久久色在线视频| 日韩精品中文字幕在线一区| 777午夜精品视频在线播放| 欧美精品一级二级三级| 欧美日韩国产乱码电影| 欧美怡红院视频| 欧美丰满美乳xxx高潮www| 欧美一区二区视频在线观看2022 | 奇米精品一区二区三区在线观看| 亚洲一区二区三区不卡国产欧美| 一区二区三区美女视频| 亚洲成人av一区二区三区| 亚洲国产精品自拍| 日韩和的一区二区| 精品中文av资源站在线观看| 国产精品亚洲一区二区三区妖精| 成人午夜碰碰视频| 色综合久久综合中文综合网| 欧美在线free| 日韩一级黄色片| 久久久久97国产精华液好用吗| 日本一区二区三区四区| 亚洲精品高清视频在线观看| 日韩av中文在线观看| 国产在线不卡一区| 色悠久久久久综合欧美99| 欧美大片一区二区三区| 2021久久国产精品不只是精品| 久久久久久久久一| 亚洲精品国产一区二区三区四区在线| 亚洲韩国一区二区三区| 国产原创一区二区| 色婷婷av一区二区三区软件| 欧美一级二级三级蜜桃| 欧美激情一区二区三区| 亚洲.国产.中文慕字在线| 国产精品自拍在线| 欧美亚洲免费在线一区| 26uuu久久天堂性欧美| 亚洲欧美日韩国产中文在线| 日本美女一区二区| 99久久久精品免费观看国产蜜| 欧美日韩国产另类一区| 欧美激情艳妇裸体舞| 日韩av在线发布| 色综合久久天天| 精品99999| 亚洲第一狼人社区| 成人av在线播放网站| 91精品在线观看入口| 国产精品久久久久一区二区三区| 水蜜桃久久夜色精品一区的特点| 国产69精品一区二区亚洲孕妇 | 国产精品一线二线三线精华| 在线播放一区二区三区| 国产亚洲女人久久久久毛片| 亚洲一区二区四区蜜桃| 国产一区二区三区免费在线观看| 欧美三级乱人伦电影| 国产精品久久久久一区| 黄一区二区三区| 9191久久久久久久久久久| 亚洲人成网站在线| 高清国产午夜精品久久久久久| 日韩亚洲欧美中文三级| 亚洲一线二线三线久久久| 成人a区在线观看| 久久久久久久久久久久久久久99| 午夜精品视频一区| 欧美色视频一区| 一区二区三区在线看| aaa欧美大片| 中文字幕va一区二区三区| 精品无人码麻豆乱码1区2区| 欧美精品一二三四| 亚洲高清在线视频| 欧美性色黄大片手机版| 一区二区三区欧美日韩| 91色视频在线| 亚洲欧美视频在线观看视频| 97se亚洲国产综合自在线| 国产精品久久一卡二卡| 成人福利视频在线| 国产精品视频看| 成人午夜激情影院| 国产精品护士白丝一区av| 国内不卡的二区三区中文字幕 | 国产成人在线网站| 久久久久免费观看| 国产精品自拍av|