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

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

?? llpacket.c

?? TI公司的NSP
?? C
字號:
/*
 *  Copyright 2007 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *
 *  @(#) TCP/IP_Network_Developers_Kit 1.92.00.22 01-10-2007 (ndk-b22)
 */
//--------------------------------------------------------------------------
// IP Stack
//--------------------------------------------------------------------------
// llPacket.c
//
// Ethernet Packet Driver
//
// Author: Michael A. Denio
// Copyright 1998, 2003 by Texas Instruments Inc.
//-------------------------------------------------------------------------
#include <stkmain.h>
#include "llpacket.h"

#ifndef _INCLUDE_NIMU_CODE

//--------------------------------------------------------------------
// PUBLIC FUNCTIONS USED FOR INTIALIZATION AND EVENTS
//--------------------------------------------------------------------
#define MAX_INSTANCE    2

static uint     PktDevCount = 0;        // Number of Net Devices
static PDINFO   pdi[MAX_INSTANCE];      // Private Info about devices

//
// Queue for Received Packets
//
PBMQ    PBMQ_rx;

//--------------------------------------------------------------------
// PUBLIC FUNCTIONS USED BY NETCTRL
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// _llPacketInit()
//
// Opens the packet driver environment and enumerates devices
//--------------------------------------------------------------------
uint _llPacketInit(STKEVENT_Handle hEvent)
{
    int i;

    // Initialize RX Queue
    PBMQ_init(&PBMQ_rx);

    //
    // Initialize the packet driver(s)
    //
    PktDevCount = HwPktInit();

    if( PktDevCount > MAX_INSTANCE )
        PktDevCount = MAX_INSTANCE;

    //
    // Initialize PDINFO for each driver instance
    //
    for(i=0; i<PktDevCount; i++)
    {
        mmZeroInit( &pdi[i], sizeof( PDINFO ) );

        // Set physical index
        pdi[i].PhysIdx     = i;

        // Copy Event Handle
        pdi[i].hEvent      = hEvent;

        // MCast List
        pdi[i].MCastCnt    = 0;

        // Default MAC Address (can be overwritten by HwPktOpen())
        pdi[i].bMacAddr[0] = 0x08;
        pdi[i].bMacAddr[1] = 0x00;
        pdi[i].bMacAddr[2] = 0x28;
        pdi[i].bMacAddr[3] = 0xFF;
        pdi[i].bMacAddr[4] = 0xFF;
        pdi[i].bMacAddr[5] = (UINT8)i;
    }

    printf ("My LIBRARY\n");

    return( PktDevCount );
}

//--------------------------------------------------------------------
// _llPacketShutdown()
//
// Called to shutdown packet driver environment
//--------------------------------------------------------------------
void _llPacketShutdown()
{
    PktDevCount = 0;
    HwPktShutdown();

    // Flush out our pending queue
    while( PBMQ_count(&PBMQ_rx) )
        PBM_free( PBMQ_deq(&PBMQ_rx) );
}

//--------------------------------------------------------------------
// _llPacketServiceCheck()
//
// Called to check for packet activity
//--------------------------------------------------------------------
void _llPacketServiceCheck( uint fTimerTick )
{
    uint dev;

    for( dev=0; dev<PktDevCount; dev++ )
        _HwPktPoll( &(pdi[dev]), fTimerTick );
}

//--------------------------------------------------------------------
// PUBLIC FUNCTIONS USED BY THE STACK
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// llPacketOpen()
//
// Opens the packet driver, and request packets of our desired type.
//--------------------------------------------------------------------
uint llPacketOpen( uint dev, HANDLE hEther )
{
    // Our device index is "1" based to the upper layers
    dev--;
    if( dev >= PktDevCount )
        return(0);

    // Init Logical Device
    pdi[dev].hEther = hEther;

    // Call low-level open function
    return( HwPktOpen( &pdi[dev] ) );
}

//--------------------------------------------------------------------
// PacketClose()
//
// Called to shutdown packet driver.
//--------------------------------------------------------------------
void llPacketClose( uint dev )
{
    // Our device index is "1" based to the upper layers
    dev--;
    if( dev >= PktDevCount )
        return;

    // Call low-level close function
    HwPktClose( &pdi[dev] );
}

//--------------------------------------------------------------------
// llPacketSend()
//
// Called to send data to a device. The buffer has been completely
// formatted by the time this call is made, and is ready for
// transmit. The dev parameter is the physical destination device.
//--------------------------------------------------------------------
void llPacketSend( uint dev, PBM_Handle hPkt )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( PBM_getValidLen(hPkt) < 60 )
        PBM_setValidLen( hPkt, 60 );

    if( dev < PktDevCount && PBM_getValidLen(hPkt) <= 1514 )
    {
        PBMQ_enq( &(pdi[dev].PBMQ_tx), hPkt );

        if( pdi[dev].TxFree )
            HwPktTxNext( &(pdi[dev]) );
    }
    else
        PBM_free( hPkt );
}

//--------------------------------------------------------------------
// llPacketGetMacAddr()
//
// Called to the MAC address of the specified device.
//--------------------------------------------------------------------
void llPacketGetMacAddr( uint dev, UINT8 *pbData )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( dev < PktDevCount )
        mmCopy( pbData, pdi[dev].bMacAddr, 6 );
}

//--------------------------------------------------------------------
// llPacketGetMCastMax()
//
// Called to the maxumim multicast addresses that the device can hold.
//--------------------------------------------------------------------
uint llPacketGetMCastMax( uint dev )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( dev < PktDevCount )
        return( PKT_MAX_MCAST );
    else
        return( 0 );
}

//--------------------------------------------------------------------
// llPacketSetRxFilter()
//
// Called to set the Rx Filter mode of the device. The legal modes
// are defined in ETHER.H
//--------------------------------------------------------------------
void llPacketSetRxFilter( uint dev, uint Filter )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( dev < PktDevCount && Filter <= ETH_PKTFLT_ALL )
    {
        pdi[dev].Filter = Filter;
        HwPktSetRx( &(pdi[dev]) );
    }
}

//--------------------------------------------------------------------
// llPacketSetMCast()
//
// Called to set the Multicast list for the device.
//--------------------------------------------------------------------
void llPacketSetMCast( uint dev, uint addrcnt, UINT8 *bAddr )
{
    // Our device index is "1" based to the upper layers
    dev--;

    // Copy the multicast list from ETH and update HW driver
    if( dev < PktDevCount && addrcnt <= PKT_MAX_MCAST )
    {
        pdi[dev].MCastCnt = addrcnt;
        mmCopy( pdi[dev].bMCast, bAddr, 6 * addrcnt );
        HwPktSetRx( &(pdi[dev]) );
    }
}

//--------------------------------------------------------------------
// llPacketGetMCast()
//
// Called to get the Multicast list for the device.
//--------------------------------------------------------------------
uint llPacketGetMCast( uint dev, uint max, UINT8 *bAddr )
{
    // Our device index is "1" based to the upper layers
    dev--;

    // Copy the multicast list to ETH
    if( dev < PktDevCount && max >= pdi[dev].MCastCnt && bAddr  )
    {
        mmCopy( bAddr, pdi[dev].bMCast, pdi[dev].MCastCnt * 6 );
        return( pdi[dev].MCastCnt );
    }
    return(0);
}

//--------------------------------------------------------------------
// llPacketService()
//
// Called to service packet activity.
//--------------------------------------------------------------------
void llPacketService()
{
    // Give all queued packets to the Ether module
    while( PBMQ_count(&PBMQ_rx) )
        EtherRxPacket( PBMQ_deq(&PBMQ_rx) );
}

#endif /* _INCLUDE_NIMU_CODE */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产白丝精品91爽爽久久| 91麻豆国产精品久久| 高清久久久久久| 欧美日韩视频专区在线播放| 久久综合久久综合久久| 伊人婷婷欧美激情| 成人一区二区三区中文字幕| 在线不卡欧美精品一区二区三区| 国产精品久久久久久久久图文区| 男男成人高潮片免费网站| 欧美在线短视频| 国产精品久久午夜夜伦鲁鲁| 国产一区二区成人久久免费影院| 欧美久久久久久久久久 | 91麻豆免费观看| 26uuu亚洲综合色欧美| 丝袜美腿亚洲色图| 在线免费一区三区| 亚洲欧美视频在线观看视频| 岛国av在线一区| 欧美激情在线看| 国产剧情av麻豆香蕉精品| 欧美一区二区日韩一区二区| 亚洲一区二区三区四区在线| 色综合久久中文字幕综合网| 中文字幕中文字幕在线一区| 国产精品一二一区| 久久久久久久久久久99999| 九色porny丨国产精品| 4438x成人网最大色成网站| 亚洲一区二区三区激情| 色噜噜狠狠成人网p站| 亚洲天堂中文字幕| 日本久久精品电影| 亚洲不卡av一区二区三区| 欧美性生交片4| 日韩精品国产欧美| 欧美不卡一区二区| 国产成人丝袜美腿| 亚洲天堂精品视频| 91行情网站电视在线观看高清版| 国产精品久久久一本精品| av电影在线观看完整版一区二区| 国产精品久久久久精k8| 日本高清免费不卡视频| 亚洲一区二区三区国产| 欧美一卡2卡三卡4卡5免费| 美女免费视频一区二区| 久久综合九色综合欧美就去吻| 国产精品69久久久久水密桃| 国产精品激情偷乱一区二区∴| 不卡在线观看av| 亚洲一级二级在线| 日韩一区二区中文字幕| 国产九色精品成人porny| 亚洲国产激情av| 欧美性一级生活| 精品一区二区在线观看| 1区2区3区国产精品| 欧美日韩国产乱码电影| 国产美女精品人人做人人爽| 亚洲视频一区二区免费在线观看| 欧美日韩在线精品一区二区三区激情| 男女激情视频一区| 亚洲欧洲无码一区二区三区| 欧美日韩国产小视频| 精品一区二区三区视频在线观看| 中文字幕第一区第二区| 欧美日韩欧美一区二区| 国产寡妇亲子伦一区二区| 一区二区三区精品久久久| 精品国产sm最大网站| 91精品办公室少妇高潮对白| 麻豆精品久久精品色综合| 亚洲欧美日韩国产手机在线| 欧美xxxxx裸体时装秀| 91在线你懂得| 国产成人在线影院| 日韩在线一区二区| 亚洲欧洲av色图| 欧美videos中文字幕| 91福利区一区二区三区| 成人深夜视频在线观看| 免费高清不卡av| 亚洲女人小视频在线观看| 亚洲精品在线观看视频| 欧美性色综合网| av电影天堂一区二区在线观看| 蜜桃视频一区二区三区| 五月天一区二区| 亚洲精品成a人| 国产精品蜜臀av| 精品成人a区在线观看| 欧美日韩高清在线| 色综合久久久久久久| 国产精品资源在线观看| 全国精品久久少妇| 亚洲成av人综合在线观看| 亚洲欧美日韩国产成人精品影院| 国产拍欧美日韩视频二区| 欧美成人精精品一区二区频| 日韩一区二区精品葵司在线| 欧美日韩1234| 欧美在线视频你懂得| 日韩视频一区在线观看| 欧美日韩卡一卡二| 欧美特级限制片免费在线观看| 91捆绑美女网站| www.日韩在线| 成人精品国产福利| 成人av网站大全| 成人一区二区三区中文字幕| 国产精品99久久不卡二区| 韩国精品久久久| 韩国av一区二区| 国产一区视频网站| 国产成人综合精品三级| 国产精品99久久久久久久vr| 国产iv一区二区三区| 国产成人av一区| 成人自拍视频在线| 99久久婷婷国产综合精品| 99re视频精品| 91年精品国产| 欧美日韩国产一级片| 91精品国产综合久久婷婷香蕉| 7777精品伊人久久久大香线蕉最新版 | 国产九九视频一区二区三区| 裸体一区二区三区| 激情深爱一区二区| 成人精品视频一区二区三区尤物| 国产老妇另类xxxxx| 本田岬高潮一区二区三区| 91麻豆swag| 91精品综合久久久久久| 日韩一区二区三区四区五区六区| 久久色中文字幕| 国产精品成人一区二区三区夜夜夜| 自拍偷拍欧美激情| 午夜不卡在线视频| 精品亚洲aⅴ乱码一区二区三区| 国产成a人亚洲精品| 一本大道久久a久久综合| 欧美精品三级在线观看| 欧美大胆一级视频| 国产精品久久久久9999吃药| 亚洲精品欧美二区三区中文字幕| 亚洲图片有声小说| 黄色成人免费在线| 91麻豆精品一区二区三区| 日韩精品自拍偷拍| 亚洲乱码精品一二三四区日韩在线| 亚洲.国产.中文慕字在线| 国内精品免费在线观看| 色婷婷久久久综合中文字幕 | 色94色欧美sute亚洲13| 欧美一级午夜免费电影| 最新国产成人在线观看| 日韩电影免费在线观看网站| 成人国产精品免费观看| 欧美精品vⅰdeose4hd| 日本一区二区视频在线观看| 亚洲电影你懂得| jizzjizzjizz欧美| 日韩你懂的在线播放| 亚洲精品久久久久久国产精华液| 另类小说图片综合网| 在线免费观看日本一区| 国产亚洲综合av| 调教+趴+乳夹+国产+精品| 91丨porny丨在线| 久久精品视频免费| 免费成人美女在线观看.| 91久久香蕉国产日韩欧美9色| 久久久www成人免费无遮挡大片| 日韩高清欧美激情| 色偷偷成人一区二区三区91 | 成人精品免费看| 日韩美女视频在线| 亚洲成人激情综合网| 91色九色蝌蚪| 国产精品国产自产拍高清av王其| 精品在线你懂的| 在线播放欧美女士性生活| 亚洲精品乱码久久久久久黑人| 成人黄色网址在线观看| 久久久久国产一区二区三区四区| 日本在线不卡一区| 欧美一级在线视频| 日韩电影在线免费观看| 欧美日韩国产色站一区二区三区| 亚洲日本欧美天堂| 91女神在线视频| 亚洲乱码国产乱码精品精可以看 | 亚洲黄一区二区三区| 成人黄色在线网站| 国产精品久99| 91伊人久久大香线蕉| 中文字幕一区二区三区四区不卡| 成人在线视频一区|