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

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

?? esd_pci_200.c

?? 美國wind river 公司的CAN總線源代碼
?? C
字號:
/* esd_pci_200.c - implementation of Board Interface for ESD CAN PCI/200 *//* Copyright 2001 Wind River Systems, Inc. *//* modification history --------------------27nov01,dnb written*//* DESCRIPTIONThis file contains the functions that provide a board-level interfaceto the ESD CAN PCI/200 card.*//* includes */#include <vxWorks.h>#include <errnoLib.h>#include <intLib.h>#include <iv.h>#include <sysLib.h>#include "CAN/wnCAN.h"#include "CAN/canController.h"#include "CAN/canBoard.h"#include "CAN/i82527.h"#include "CAN/sja1000.h"#include "CAN/private/esd_pci_200.h"/* external reference */extern STATUS sys_ESD_PCI_200_Init(UINT brdNum);UINT ESD_PCI_200_MaxBrdNumGet(void);struct ESD_PCI_200_DeviceEntry* ESD_PCI_200_DeviceEntryGet(UINT brdNum);void sys_ESD_PCI_200_canOutByte(struct WNCAN_Device *pDev, unsigned int reg,                                UCHAR value);UCHAR sys_ESD_PCI_200_canInByte(struct WNCAN_Device *pDev, unsigned int reg);void sys_ESD_PCI_200_IntConnect(UINT brdNum);/*****************************************************************************		 * ESD_PCI_200_EnableIRQ - The ESD specific function for enabling interrupts * on the PCI bus by the PLX 9052 bridge. *                *	RETURNS:		N/A * * ERRNO: N/A */void ESD_PCI_200_EnableIRQ(    struct WNCAN_Device *pDev){    UINT32 offset = pDev->pBrd->bar0;    ULONG  memBase = pDev->pBrd->ioAddress;    UCHAR data;    UCHAR *addr;    addr = (UCHAR*)memBase + offset + 0x4c;    data = *(addr);    data |=  0x41;    *(addr) = data;    #ifdef DEBUG        data = *(addr);    #endif    return;}/*****************************************************************************		 * ESD_PCI_200_DisableIRQ - The ESD specific function for disabling interrupts * on the PCI bus by the PLX 9052 bridge. *                *	RETURNS:		N/A * * ERRNO: N/A */void ESD_PCI_200_DisableIRQ(    struct WNCAN_Device *pDev){    UINT32 offset = pDev->pBrd->bar0;    ULONG  memBase = pDev->pBrd->ioAddress;    UCHAR  data;    data = *((UCHAR*)memBase + offset + 0x4c);    data &= ~0x41;    *((UCHAR*)memBase + offset + 0x4c) = data;    return;}/************************************************************************** ESD_PCI_200_IntConnect - connect board-level interrupts** This routine connects and enables the board level interrupt of the * specified ESD PCI/200 CAN card.** RETURNS: N/A*   * ERRNO: N/A**/    void ESD_PCI_200_IntConnect(    UINT brdNum){    sys_ESD_PCI_200_IntConnect(brdNum);    return;}/************************************************************************** ESD_PCI_200_IntConnectAll - connect all board-level interrupts** This routine connects and enables the board level interrupts of all * installed ESD PCI/200 CAN cards.** RETURNS: N/A*   * ERRNO: N/A**/    void ESD_PCI_200_IntConnectAll(    void){    int brdNum = ESD_PCI_200_MaxBrdNumGet();    int i;    struct ESD_PCI_200_DeviceEntry *pDE;    for (i = 0; i < brdNum; i++)    {       if ((pDE = ESD_PCI_200_DeviceEntryGet(i)) == NULL)           continue;       else       {          if (pDE->intConnect == FALSE)            sys_ESD_PCI_200_IntConnect(i);       }    }    return;}/************************************************************************** esd_can_pci_200_open - open a CAN device** RETURNS: pointer to a WNCAN_Device structure or 0 if error*   * ERRNO: S_can_illegal_board_no*        S_can_illegal_ctrl_no*        S_can_busy**/struct WNCAN_Device *esd_can_pci_200_open(    UINT brdNdx,     UINT ctrlNdx){    struct WNCAN_Device *pRet = 0;   /* pessimistic */    UINT maxBrdNum;    struct ESD_PCI_200_DeviceEntry *pDE;    maxBrdNum = ESD_PCI_200_MaxBrdNumGet();        pDE = ESD_PCI_200_DeviceEntryGet(brdNdx);       if((brdNdx >= maxBrdNum) || (pDE->inUse == FALSE))    {        errnoSet(S_can_illegal_board_no);    }    else if(ctrlNdx >= 2)    {        errnoSet(S_can_illegal_ctrl_no);    }    else if(pDE->allocated[ctrlNdx] == 1)    {        errnoSet(S_can_busy);    }    else    {        pDE->allocated[ctrlNdx] = 1;        pRet = &(pDE->canDevice[ctrlNdx]);    }    return pRet;}/************************************************************************** esd_can_pci_200_close - close a CAN device** RETURNS: N/A*   * ERRNO: N/A**/void esd_can_pci_200_close(    struct WNCAN_Device *pDev){    UINT   brdNdx;    UINT   ctrlNdx;    struct ESD_PCI_200_DeviceEntry *pDE;        if(pDev != 0)    {        brdNdx = ((pDev->deviceId) & 0xFFFFFF00) >> 8;        ctrlNdx = (pDev->deviceId) & 0xFF;        pDE = ESD_PCI_200_DeviceEntryGet(brdNdx);        pDE->allocated[ctrlNdx] = 0;    }    return;}/************************************************************************** ESD_PCI_200_Init - install driver for the ESD PCI/200 board** This routine initializes the ESD PCI/200 by calling the BSP dependent* routine sys_ESD_PCI_200_Init().** RETURNS: OK or ERROR*   * ERRNO: N/A**/STATUS ESD_PCI_200_Init(    UINT brdNum){    STATUS status;    status = sys_ESD_PCI_200_Init(brdNum);    return(status);}/************************************************************************** ESD_PCI_200_InitAll - init all installed ESD PCI/200 boards.** RETURNS: N/A*   * ERRNO: N/A**/void ESD_PCI_200_InitAll(void){    UINT i,          maxBrds;    /* get the maximum number of ESD PCI/200 boards */    maxBrds = ESD_PCI_200_MaxBrdNumGet();    for(i = 0; i < maxBrds; i++)    {        ESD_PCI_200_Init(i);    }    return;}/******************************************************************* *  ESD_PCI_200_canOutByte - The ESD specific function for CAN writes  *  on the PCI/200 board. * * RETURNS: NONE * * ERRNO: N/A */void ESD_PCI_200_canOutByte(    struct WNCAN_Device *pDev,    unsigned int reg,    UCHAR value){    sys_ESD_PCI_200_canOutByte(pDev,reg,value);    return;}/******************************************************************* *  ESD_PCI_200_canInByte - The ESD specific function for CAN reads  *  on the PCI/200 board. * * RETURNS: UCHAR - The register contents * * ERRNO: N/A */UCHAR ESD_PCI_200_canInByte(    struct WNCAN_Device *pDev,    unsigned int reg){    UCHAR value;    value = sys_ESD_PCI_200_canInByte(pDev,reg);    return(value);}/************************************************************************** esd_can_pci_200_establishLinks - set up function pointers*** RETURNS: OK or ERROR*   * ERRNO: S_can_illegal_config**/STATUS esd_can_pci_200_establishLinks(struct WNCAN_Device *pDev){    STATUS retCode = OK;    if(pDev->pCtrl->ctrlType == WNCAN_SJA1000)    {        pDev->pBrd->onEnterISR = 0;        pDev->pBrd->onLeaveISR = 0;        pDev->pBrd->enableIrq  = ESD_PCI_200_EnableIRQ;        pDev->pBrd->disableIrq = ESD_PCI_200_DisableIRQ;        pDev->pBrd->canInByte = ESD_PCI_200_canInByte;        pDev->pBrd->canOutByte = ESD_PCI_200_canOutByte;    }    else    {        errnoSet(S_can_illegal_config);        retCode = ERROR;    }    return retCode;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 免费成人在线网站| 中文字幕一区二区三区四区| 7777精品伊人久久久大香线蕉完整版 | 久久精品72免费观看| 亚洲欧美日韩在线不卡| 久久免费视频一区| 91精品国产aⅴ一区二区| 色视频欧美一区二区三区| 丁香亚洲综合激情啪啪综合| 日韩不卡免费视频| 亚洲成av人片在线| 亚洲综合在线电影| 中文字幕日本乱码精品影院| 精品久久久影院| 日韩欧美国产一区二区三区| 欧美私人免费视频| 日本久久一区二区| 99这里只有久久精品视频| 国产精品一区免费视频| 久久97超碰色| 免费观看一级特黄欧美大片| 亚洲韩国一区二区三区| 亚洲色欲色欲www| 国产精品人妖ts系列视频| 久久久久久久网| 精品国产1区2区3区| 亚洲一区成人在线| 亚洲卡通欧美制服中文| 亚洲欧美一区二区不卡| 国产精品成人免费精品自在线观看| 午夜av电影一区| 一区二区三区美女| 亚洲一级二级三级在线免费观看| 亚洲综合丝袜美腿| 午夜精品福利在线| 日本在线不卡视频| 捆绑变态av一区二区三区| 人人精品人人爱| 奇米精品一区二区三区在线观看| 丝袜美腿高跟呻吟高潮一区| 天堂一区二区在线免费观看| 日韩高清不卡一区二区三区| 日本成人中文字幕在线视频| 久久99国产精品免费网站| 国产精品一区二区在线观看不卡| 国产精品白丝av| 成人午夜短视频| www.激情成人| 在线免费不卡视频| 91麻豆精品国产91| 久久久亚洲精品一区二区三区| 国产日韩欧美精品一区| 中文字幕中文字幕一区| 亚洲欧美日韩久久| 午夜视黄欧洲亚洲| 久久精品国产精品亚洲红杏| 国产成人av电影在线观看| 成人激情小说网站| 欧美中文一区二区三区| 51精品秘密在线观看| 久久久综合视频| 成人免费在线播放视频| 亚洲午夜在线电影| 久久99精品久久久久久| www.欧美亚洲| 在线不卡一区二区| 久久精品人人做人人爽97| 亚洲天堂中文字幕| 午夜精品福利一区二区蜜股av| 麻豆国产欧美一区二区三区| 成人国产亚洲欧美成人综合网| 欧美日韩五月天| 久久久久久一二三区| 亚洲欧美一区二区三区久本道91| 日本一不卡视频| 成人免费看片app下载| 欧美系列在线观看| 国产三级精品在线| 亚洲成人激情综合网| 国产精品综合视频| 欧美亚洲动漫制服丝袜| 久久亚洲综合色| 亚洲一区二区五区| 国产乱淫av一区二区三区| 欧美日韩在线播放| 国产精品国产a级| 黑人巨大精品欧美黑白配亚洲| 一道本成人在线| 26uuu精品一区二区在线观看| 一区二区三区四区不卡在线| 国产成人无遮挡在线视频| 欧美肥妇bbw| 一区二区三区四区高清精品免费观看| 国内精品自线一区二区三区视频| 欧美视频在线播放| 国产精品嫩草久久久久| 国模少妇一区二区三区| 欧美浪妇xxxx高跟鞋交| 中文字幕五月欧美| 国产精品一区在线观看你懂的| 欧美高清性hdvideosex| 亚洲人成7777| 懂色av一区二区三区蜜臀| 五月天久久比比资源色| 99国产精品久久久久久久久久久| 欧美精品一区二区久久婷婷| 日韩中文欧美在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产午夜精品在线观看| 久久综合综合久久综合| 欧美嫩在线观看| 亚洲自拍另类综合| 日本丰满少妇一区二区三区| 欧美激情在线观看视频免费| 极品美女销魂一区二区三区免费| 欧美伦理影视网| 亚洲综合一区二区三区| 91蜜桃免费观看视频| 国产精品美女久久久久aⅴ| 国产一区二区三区日韩 | 欧美日韩在线三区| 亚洲日本在线天堂| gogogo免费视频观看亚洲一| 中文字幕第一区综合| 国产一区二区三区在线观看免费视频 | 色就色 综合激情| 亚洲三级久久久| 色视频欧美一区二区三区| 亚洲欧洲av色图| 91丨porny丨首页| 综合久久久久久| 91在线精品一区二区三区| 国产精品久久久久久久久图文区 | 色综合一区二区| 亚洲欧美乱综合| 91成人看片片| 亚洲成人777| 欧美一区三区四区| 免费日本视频一区| 日韩欧美国产精品| 国产一区欧美日韩| 国产精品无遮挡| 色综合久久中文综合久久牛| 一区二区三区欧美激情| 欧美日产国产精品| 日本不卡123| 精品国内片67194| 国产精品 欧美精品| 国产精品日韩精品欧美在线| 色网站国产精品| 五月天国产精品| 精品福利一二区| 波多野结衣一区二区三区| 亚洲另类一区二区| 欧美一区二区三区性视频| 久久精品国产**网站演员| 久久久久国产成人精品亚洲午夜| 成人午夜免费电影| 亚洲黄色小说网站| 欧美一区欧美二区| 国产成人午夜片在线观看高清观看| 国产精品久久一卡二卡| 欧美性大战久久久久久久| 奇米色一区二区| 国产精品女人毛片| 欧美日韩色综合| 国产在线视频精品一区| 综合久久国产九一剧情麻豆| 欧美日韩成人综合天天影院| 久久99久久久久久久久久久| 国产精品毛片久久久久久| 欧美色图片你懂的| 国产一区二区三区久久久 | 精品国产a毛片| 91在线免费播放| 久久不见久久见免费视频7| 国产精品你懂的在线| 4438x成人网最大色成网站| 国产91精品一区二区麻豆网站| 亚洲国产乱码最新视频| 国产亚洲女人久久久久毛片| 欧美美女一区二区| 不卡的av网站| 精品一区二区久久| 一区二区在线观看视频在线观看| 精品免费一区二区三区| 色婷婷综合五月| 高潮精品一区videoshd| 日韩成人精品在线| 一区二区高清在线| 欧美国产亚洲另类动漫| 日韩欧美激情在线| 欧美日韩免费电影| 99久久er热在这里只有精品15 | 9人人澡人人爽人人精品| 精品在线你懂的| 亚洲成a人v欧美综合天堂下载| 国产精品国模大尺度视频|