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

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

?? if_cs89d.c

?? 嵌入式TCP/IP協議棧
?? 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

////////////////////////////////////////////////////////////////////////////////
/* 
 * NBufPut - 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);
    }
}


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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区四区| 在线播放日韩导航| 国产精品你懂的在线欣赏| 久88久久88久久久| 精品噜噜噜噜久久久久久久久试看 | 欧美成人在线直播| 日本中文字幕一区二区有限公司| 欧美日韩一级片网站| 亚洲午夜久久久久中文字幕久| 亚洲国产精品久久艾草纯爱| 在线视频中文字幕一区二区| 亚洲精品福利视频网站| 一本色道久久综合亚洲91 | 久久欧美中文字幕| 久久国产精品露脸对白| 日韩欧美久久一区| 精品无人码麻豆乱码1区2区 | 欧美大片在线观看| 精品综合久久久久久8888| 日韩精品影音先锋| 国内精品第一页| 国产亚洲短视频| 国产不卡一区视频| 一色桃子久久精品亚洲| 99精品在线观看视频| 亚洲码国产岛国毛片在线| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 一区二区三区精品视频| 91免费观看在线| 亚洲最大成人网4388xx| 欧美日韩国产一区| 美女视频黄频大全不卡视频在线播放| 日韩精品影音先锋| 国产成人在线看| 亚洲天天做日日做天天谢日日欢| 在线视频观看一区| 日韩av二区在线播放| 亚洲精品一区二区三区99| 国产xxx精品视频大全| 中文字幕一区免费在线观看| 91久久久免费一区二区| 日韩免费观看2025年上映的电影 | 日日噜噜夜夜狠狠视频欧美人| 欧美一区二区播放| 国产成人福利片| 亚洲男人天堂av| 欧美一区二区视频在线观看2020 | 欧美一区二区视频在线观看2022 | 亚洲午夜久久久| 制服丝袜中文字幕一区| 国产一区二区福利| 日韩理论电影院| 91.com在线观看| 国产精品自拍一区| 亚洲美腿欧美偷拍| 日韩免费电影一区| 99久久婷婷国产综合精品电影| 亚洲成人精品一区二区| 久久久久久久久久看片| 91麻豆国产福利精品| 久久亚洲一区二区三区四区| 99久久综合色| 奇米色777欧美一区二区| 国产女人18毛片水真多成人如厕| 欧洲亚洲精品在线| 国产精品中文字幕日韩精品| 亚洲精品午夜久久久| 欧美成人艳星乳罩| 91片在线免费观看| 精品亚洲porn| 一区二区三区中文在线| 2014亚洲片线观看视频免费| 日本二三区不卡| 国产一区二区网址| 精品国产乱子伦一区| 99精品视频中文字幕| 免费成人在线视频观看| 成人免费在线观看入口| 精品久久久久久最新网址| 色美美综合视频| 国产一区二三区好的| 亚洲6080在线| 国产精品人人做人人爽人人添| 91精品蜜臀在线一区尤物| 99re热视频精品| 国产一区二区主播在线| 天天影视网天天综合色在线播放| 国产精品久久久久永久免费观看| 日韩一区和二区| 日本 国产 欧美色综合| 亚洲视频1区2区| 久久久久久久精| 91精品国产综合久久福利| 91蜜桃视频在线| 国产一二三精品| 日韩av在线播放中文字幕| 怡红院av一区二区三区| 中文字幕欧美激情| 日韩精品在线看片z| 欧美乱妇23p| 在线亚洲一区二区| jiyouzz国产精品久久| 国产原创一区二区三区| 七七婷婷婷婷精品国产| 欧美一区二区二区| 欧美在线不卡视频| 91亚洲国产成人精品一区二区三| 国产精品性做久久久久久| 免费看欧美女人艹b| 亚洲福利一二三区| 亚洲免费伊人电影| 中文字幕一区二区不卡| 国产色91在线| 337p日本欧洲亚洲大胆精品| 日韩一区二区麻豆国产| 欧美美女直播网站| 欧美性受xxxx黑人xyx| 色呦呦网站一区| 99视频精品免费视频| 成人久久久精品乱码一区二区三区 | 91丝袜呻吟高潮美腿白嫩在线观看| 国产一区二区不卡在线| 国产在线精品一区二区夜色| 麻豆视频观看网址久久| 奇米777欧美一区二区| 日韩av电影免费观看高清完整版在线观看| 亚洲综合色噜噜狠狠| 一区二区三区久久久| 一区二区三区在线免费观看| 亚洲精品免费看| 亚洲精品亚洲人成人网| 一区二区三区**美女毛片| 亚洲免费在线观看视频| 一区二区三区四区亚洲| 亚洲精品乱码久久久久久黑人| 欧美色图一区二区三区| 欧美三级电影一区| 欧美日韩视频在线第一区| 欧美区视频在线观看| 欧美丰满一区二区免费视频| 6080午夜不卡| 日韩视频在线你懂得| 精品国产乱码久久久久久图片| 精品国产乱码久久久久久图片 | 成人欧美一区二区三区黑人麻豆| 国产精品初高中害羞小美女文| 亚洲欧洲日韩在线| 亚洲黄色小说网站| 日韩欧美国产综合一区 | 精品三级在线观看| 久久夜色精品国产噜噜av| 亚洲国产成人午夜在线一区| 国产精品福利一区二区| 亚洲精品菠萝久久久久久久| 亚洲动漫第一页| 麻豆一区二区三| 国产不卡一区视频| 色婷婷久久综合| 欧美肥妇bbw| 久久新电视剧免费观看| 国产精品久久福利| 一区二区三区毛片| 免费成人在线影院| 亚洲色图制服丝袜| 亚洲一二三四久久| 另类人妖一区二区av| 国产成a人亚洲| 91网站最新地址| 91麻豆精品国产无毒不卡在线观看| 精品国产乱码久久久久久久久 | 久久亚洲欧美国产精品乐播| 国产精品护士白丝一区av| 一区二区三区日韩精品| 蜜桃视频一区二区三区在线观看 | 美国精品在线观看| 成人动漫中文字幕| 欧美综合一区二区| 国产精品综合一区二区| 色婷婷久久综合| 精品久久一区二区三区| 自拍偷拍国产亚洲| 日产欧产美韩系列久久99| 国产99久久久国产精品免费看| 日本精品一区二区三区高清 | 精品视频色一区| 久久综合色一综合色88| 亚洲人成网站影音先锋播放| 日韩av在线免费观看不卡| 成人免费观看av| 欧美精品亚洲一区二区在线播放| 久久久久久久久久久黄色| 亚洲美女免费视频| 精品一区二区免费视频| 色婷婷av一区二区三区gif| 国产美女娇喘av呻吟久久| 欧美艳星brazzers| 久久精品免费在线观看| 午夜精品久久久久久久| 成人免费福利片| 日韩欧美成人一区|