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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? if_cs89d.c

?? 基于UC/OS II操作系統(tǒng)的TCP/IP協(xié)議的移植源代碼。
?? C
字號:
/*****************************************************************************
* if_cs89d.c - Network Interface Driver for Cirrus CS8900A chipset source file
*
* Copyright (c) 2001 by Cognizant Pty Ltd.
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice and the following disclaimer are included verbatim in any 
* distributions. No written agreement, license, or royalty fee is required
* for any of the authorized uses.
*
* THIS SOFTWARE IS PROVIDED BY THE 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 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 HISTORY (please don't use tabs!)
*
*(yyyy-mm-dd)
* 2001-05-12 Robert Dickenson <odin@pnc.com.au>, Cognizant Pty Ltd.
*            Original file.
*
*****************************************************************************
*/
#include "..\..\netconf.h"
#include "..\..\netbuf.h"
#include "if_cs89d.h"
#include <stdio.h>
#include "..\..\netdebug.h"


#ifndef WIN32 

/***********************************************************************************
 *
 * Function:    ReadPP(ppAdress)
 * Description: This function reads the Packet Page memory in the CS8900 at the
 *              given adress and returns the value.
 *
 **********************************************************************************/
u_short ReadPP(u_short ppAdress)
{
    *(u_short*)portPtr = ppAdress;     // Write the pp Pointer
    return (*(u_short*)portData);      // Get the data from the chip
}

/***********************************************************************************
 *
 * Function:    ReadPP8(u_short ppAdress)
 * Description: This function allows reads to one single byte. This is needed when
 *              Reading the first two bytes of the RxFrame.
 *
 **********************************************************************************/
u_char ReadPP8(u_short ppAdress)
{
    *(u_short*)portPtr = ppAdress;    // Write the pp Pointer
    return(*(u_char*)portData);       // Get the data from the chip
}

/***********************************************************************************
 *
 * Function:    WritePP(u_short ppAdress, u_short inData)
 * Description: This function simply writes the supplied data to the given adress
 *              in the Packet Page data base of the CS8900
 *
 **********************************************************************************/
void WritePP(u_short ppAdress, u_short inData)
{
    *(u_short*)portPtr = ppAdress;    // Write the pp Pointer
    *(u_short*)portData = inData;     // Write the data to the chip
}

/***********************************************************************************
 *
 * Function:    VerifyCS8900(void)
 * Description: Insert your own description of this function
 *
 **********************************************************************************/
u_short VerifyCS8900(void)
{
//    char out[32];
    u_short data = 0;

    if ((*(u_short*)portPtr != 0x3000) && (ReadPP(ppEISA) != 0x630e)) { // Check CS8900
//        SendString((char*)"Error - CS8900 chip not valid !!!\x0a\x0d");
    } else {
        data = ReadPP(ppProdID) >> 8;   // Get the data
//        sprintf(out, "CS8900 OK, Revision: %02x\x0a\x0d\x0a\x0d", data);
//        SendString(out);
    }
    return data;
}

#endif // WIN32

////////////////////////////////////////////////////////////////////////////////
/* 
 * pppMPutRaw - append given character to end of given nBuf.
 * If nBuf is full, append another.
 * Return the current nBuf.
 */
/*
static NBuf* NBufPut(u_char c, NBuf* nb)
{
	NBuf* tb = nb;
	
	// Make sure there is room for the character and an escape code.
	// Sure we don't quite fill the buffer if the character doesn't
	// get escaped but is one character worth complicating this?
	// Note: We assume no packet header.
	if (nb && (&nb->body[NBUFSZ] - (nb->data + nb->len)) < 1) {
		nGET(tb);
		if (tb) {
			nb->nextBuf = tb;
			tb->len = 0;
		}
		nb = tb;
	}
	if (nb) {
		*(nb->data + nb->len++) = c;
	}
	return tb;
}
 */
NBuf* NBufPutW(u_short w, NBuf* nb)
{
	NBuf* tb = nb;
	
	/* Make sure there is room for the character and an escape code.
	 * Sure we don't quite fill the buffer if the character doesn't
	 * get escaped but is one character worth complicating this? */
	/* Note: We assume no packet header. */
	if (nb && (&nb->body[NBUFSZ] - (nb->data + nb->len)) < 2) {
//        TRACE("NBufPutW(%04X, %p) - APPENDING ANOTHER NBUF TO CHAIN !!!!!!!!!!!!\n", w, nb);
        OS_ENTER_CRITICAL();
		nGET(tb);
        OS_EXIT_CRITICAL();
		if (tb) {
			nb->nextBuf = tb;
			tb->len = 0;
		}
		nb = tb;
	}
	if (nb) {
		*(u_short*)(nb->data + nb->len) = w;
        nb->len += 2;
	}
	return tb;
}

/*
// warning: looks very dangerous, could release NBuf in nPullup
static u_short NBufGetW(u_short offset, NBuf* inBuf)
{
    u_short data = 0;
    u_short* pData;

	short i = 2;

//	if (inBuf->len < i && (inBuf = nPullup(inBuf, i)) == NULL)  {
	if (inBuf->len < i || (inBuf = nPullup(inBuf, i)) == NULL)  {
		return 0;
	}
	pData = nBUFTOPTR(inBuf, u_short*);
    data = *pData;
    return data;
}
 */

////////////////////////////////////////////////////////////////////////////////

void WriteNBufPP(u_short TxLocPtr, NBuf* inBuf)
{
    NBuf* nb = inBuf;
    u_short* sPtr;
    short extra = 0;
	short n;
    u_char realign = 0;

//    TRACE("WriteNBufPP(%04X, %p)\n", TxLocPtr, nb);

//    nb->nextBuf = NULL; // TODO: debug why this is req.

	while (nb) {
		sPtr = nBUFTOPTR(nb, u_short*);
		n = nb->len;

//        TRACE("WriteNBufPP(%04X, %p) n = %u\n", TxLocPtr, nb, n);
/*
        if (realign && n) {
            u_char* bPtr = nBUFTOPTR(nb, u_char*);
            extra |= ((*bPtr++) & 0x00ff);
            WritePP(TxLocPtr, extra);
            TxLocPtr += 2;
            n -= 1;
            sPtr = bPtr;
            realign = 0;
        }
 */
        n = max(n, 200);
        while (n > 1) {
            WritePP(TxLocPtr, *sPtr++);          // Send packet data words
            TxLocPtr += 2;
            n -= 2;
        }
/*
        if (n > 0) {
            extra = *sPtr++;
            extra <<= 8;
            realign = 1;
        }
 */
        nb = nb->nextBuf;
	}
    if (realign) {
        WritePP(TxLocPtr, extra);
    }
}


////////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成年人网站91| 亚洲精品自拍动漫在线| 亚洲精品久久7777| 麻豆成人久久精品二区三区红 | 国产麻豆9l精品三级站| 欧美在线综合视频| 中文字幕高清不卡| 久久激五月天综合精品| 欧美性猛交xxxx乱大交退制版| 亚洲国产精品ⅴa在线观看| 精品一区在线看| 欧美高清hd18日本| 亚洲在线中文字幕| 91啪九色porn原创视频在线观看| 久久久久国产精品人| 麻豆高清免费国产一区| 在线不卡中文字幕| 五月激情六月综合| 91福利在线播放| 亚洲欧美电影一区二区| 99久久精品国产一区二区三区| 久久久99精品久久| 国产在线精品一区在线观看麻豆| 欧美一区二区三区电影| 日韩成人免费电影| 欧美一区午夜视频在线观看| 亚洲韩国一区二区三区| 色呦呦日韩精品| 亚洲人成网站精品片在线观看| 成人激情视频网站| 国产精品美女久久久久高潮| 国产精品亚洲а∨天堂免在线| 欧美精品一区二区三区蜜桃| 久久99国产精品麻豆| 久久午夜电影网| 国产伦精品一区二区三区免费迷| 精品伦理精品一区| 国产一区二区不卡老阿姨| 久久九九久久九九| 成人黄动漫网站免费app| 亚洲人被黑人高潮完整版| 99re66热这里只有精品3直播 | www.日韩av| 一区二区在线观看免费| 欧美性感一类影片在线播放| 首页国产欧美日韩丝袜| 91精品国产综合久久精品| 精品一区二区三区免费视频| 国产午夜精品一区二区三区嫩草 | 国产精品午夜久久| 色拍拍在线精品视频8848| 亚洲成av人片一区二区三区| 日韩久久久精品| 国产高清不卡一区二区| 亚洲人午夜精品天堂一二香蕉| 欧美在线小视频| 精品一区二区影视| 亚洲图片你懂的| 欧美日韩高清一区二区三区| 精品综合久久久久久8888| 国产精品美女www爽爽爽| 欧美三级电影网站| 国产自产2019最新不卡| 国产精品高清亚洲| 欧美一区二区视频在线观看2022| 国产精品一区二区久久精品爱涩| 一色屋精品亚洲香蕉网站| 欧美人妖巨大在线| 丁香婷婷综合五月| 日韩va欧美va亚洲va久久| 国产丝袜在线精品| 欧美电影一区二区| 国产91对白在线观看九色| 亚洲国产精品一区二区www在线| 欧美精品一区二区三区很污很色的| 99精品久久99久久久久| 精品一区二区三区影院在线午夜| 亚洲日本中文字幕区| 精品国产成人系列| 在线观看亚洲精品| 国产成人精品免费一区二区| 日韩影视精彩在线| 亚洲精品国产无套在线观| 精品免费99久久| 欧美人动与zoxxxx乱| 97超碰欧美中文字幕| 国模娜娜一区二区三区| 亚洲国产另类精品专区| 中文字幕一区二区三区四区| 久久综合丝袜日本网| 在线不卡中文字幕| 欧美亚洲一区二区在线| 不卡的av电影在线观看| 国内精品国产成人国产三级粉色 | 日韩一级黄色片| 在线观看亚洲精品| 91视频免费观看| 波多野结衣精品在线| 国产精品亚洲а∨天堂免在线| 免费观看日韩电影| 日韩激情av在线| 亚洲国产视频网站| 亚洲黄色小视频| 亚洲乱码精品一二三四区日韩在线| 国产日韩高清在线| 久久久影视传媒| 久久精品网站免费观看| 久久青草欧美一区二区三区| 日韩免费视频一区| 日韩三级伦理片妻子的秘密按摩| 91麻豆精品91久久久久久清纯| 欧美四级电影网| 欧美美女黄视频| 91精品国产黑色紧身裤美女| 欧美日韩免费一区二区三区视频| 欧美三日本三级三级在线播放| 色综合色狠狠天天综合色| 日本高清不卡一区| 在线观看国产日韩| 欧美日韩黄色影视| 欧美一区二区免费观在线| 欧美一区二区人人喊爽| 精品伦理精品一区| 国产蜜臀97一区二区三区| 中文字幕视频一区二区三区久| 国产精品美女一区二区三区| 亚洲欧美偷拍三级| 亚洲国产婷婷综合在线精品| 日本成人在线视频网站| 精品夜夜嗨av一区二区三区| 国产精品一区二区果冻传媒| a级精品国产片在线观看| 欧日韩精品视频| 这里只有精品电影| 久久免费偷拍视频| 成人免费在线观看入口| 亚洲国产成人porn| 国内精品伊人久久久久av影院 | 精品久久久久久久久久久久包黑料 | 日韩福利视频导航| 国产一区二区三区精品视频| 成人午夜伦理影院| 精品视频一区二区三区免费| 精品国产三级a在线观看| 中文字幕 久热精品 视频在线| 亚洲你懂的在线视频| 日韩av成人高清| 不卡视频一二三| 日韩一区二区免费电影| 中文字幕欧美日本乱码一线二线| 亚洲国产一区在线观看| 国产在线精品视频| 欧美影院精品一区| 久久先锋影音av| 三级不卡在线观看| 成人精品鲁一区一区二区| 欧美日韩成人综合| 国产欧美日韩三级| 日本欧美一区二区在线观看| 成人av动漫在线| 精品国产91洋老外米糕| 一卡二卡三卡日韩欧美| 国产在线乱码一区二区三区| 欧美日韩国产免费一区二区| 欧美韩日一区二区三区四区| 日韩高清不卡一区| 色哟哟一区二区在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 精品一区二区三区免费毛片爱 | 日本欧美一区二区三区| 91在线视频免费观看| 欧美精品一区二区在线观看| 亚洲成在人线在线播放| 99久久精品99国产精品| 久久久精品国产免费观看同学| 婷婷中文字幕综合| 欧美在线视频全部完| 国产精品久久久久久久久动漫| 国产一区二区伦理| 精品福利一二区| 免费成人美女在线观看| 欧美日韩精品一区二区三区四区 | 成人激情午夜影院| 国产偷国产偷亚洲高清人白洁 | 亚洲人成网站精品片在线观看| 国产精品一色哟哟哟| 日韩欧美一卡二卡| 日韩av电影免费观看高清完整版在线观看 | 久久先锋影音av| 麻豆精品视频在线观看免费| 欧美精品1区2区3区| 午夜精品久久久| 欧美系列日韩一区| 五月天激情综合网| aaa国产一区| 国产精品乱码人人做人人爱| 国产伦精品一区二区三区视频青涩 | 精品99999| 韩国一区二区三区| 久久久久久久久久久99999|