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

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

?? esd_pci_200.c

?? canopen 通信協議
?? 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;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人你懂的| 国产福利91精品| 国产福利视频一区二区三区| 欧日韩精品视频| 国产亚洲欧美色| 麻豆91精品91久久久的内涵| 色婷婷久久久久swag精品| 久久久久99精品一区| 蜜臀91精品一区二区三区 | 国产农村妇女毛片精品久久麻豆| 亚洲在线视频网站| 99久久国产免费看| 国产精品人成在线观看免费| 国内精品免费**视频| 欧美一级久久久| 视频一区二区中文字幕| 91国偷自产一区二区开放时间| 欧美韩国日本不卡| 国产成人免费xxxxxxxx| 国产亚洲1区2区3区| 精品无码三级在线观看视频| 91精品国产综合久久精品麻豆| 亚洲综合清纯丝袜自拍| 色婷婷狠狠综合| 亚洲少妇中出一区| 91视频免费观看| 日韩一区二区免费在线电影| 欧美精品三级日韩久久| 中文字幕一区二区三区四区不卡 | 美女久久久精品| 欧美日韩国产在线观看| 亚洲v日本v欧美v久久精品| 欧美影院午夜播放| 亚洲成人av一区二区三区| 欧美性欧美巨大黑白大战| 一区二区三区高清| 欧美日本视频在线| 毛片av一区二区| 精品国产乱码久久久久久久| 国产一区二区三区免费在线观看| 久久综合久色欧美综合狠狠| 国产精品18久久久久久久网站| 久久综合久久99| 波多野结衣中文一区| 亚洲人成小说网站色在线| 亚洲精品在线网站| 美女网站在线免费欧美精品| 久久夜色精品一区| 成人app软件下载大全免费| 一区二区三区四区中文字幕| 欧美午夜宅男影院| 老司机免费视频一区二区| 国产欧美日韩三级| 色婷婷国产精品| 蜜桃av一区二区三区电影| 国产日韩v精品一区二区| 色婷婷国产精品综合在线观看| 日韩国产精品91| 精品国产凹凸成av人导航| 99久久久免费精品国产一区二区| 亚洲第一狼人社区| 国产三级精品在线| 色噜噜夜夜夜综合网| 久久www免费人成看片高清| 国产精品看片你懂得| 91精品欧美一区二区三区综合在| 国产一区啦啦啦在线观看| 一区二区三区视频在线观看| 欧美一区二区三区的| 91丨九色丨国产丨porny| 亚洲欧洲综合另类| 91精品久久久久久久99蜜桃| 国产成人免费高清| 日韩精品亚洲专区| 中文字幕一区视频| 欧美大片国产精品| 色视频成人在线观看免| 狠狠色伊人亚洲综合成人| 亚洲综合一二区| 亚洲电影第三页| 中文字幕一区二区三区精华液| 欧美日韩精品免费| 99久久亚洲一区二区三区青草| 青青草国产成人99久久| 亚洲精品国产一区二区精华液| 亚洲精品一区二区三区香蕉 | 激情五月婷婷综合| 亚洲午夜电影网| 亚洲天堂av老司机| 欧美国产一区二区| 精品国产乱码久久久久久久久 | 欧美激情一区二区在线| 欧美一区二区视频在线观看2022 | 成人福利视频在线看| 久久爱www久久做| 日日骚欧美日韩| 亚洲一二三四区不卡| 亚洲免费观看高清完整版在线观看| 国产亚洲综合性久久久影院| 日韩午夜激情av| 制服丝袜在线91| 欧美久久高跟鞋激| 欧美高清www午色夜在线视频| 欧美性猛交xxxxxxxx| 欧美影院一区二区三区| 97se亚洲国产综合自在线不卡| 成人黄色软件下载| 成人18视频日本| 成人成人成人在线视频| 成人免费高清视频| av电影在线观看一区| 高清国产午夜精品久久久久久| 精品一区二区免费在线观看| 琪琪一区二区三区| 久久精品国产99国产| 韩国av一区二区三区| 国产成人在线色| 成人av在线播放网址| 91免费版在线看| 色天天综合久久久久综合片| 欧美日韩一级片在线观看| 欧美日韩国产综合一区二区三区| 69p69国产精品| 欧美成人精品福利| 久久久国际精品| 亚洲日本一区二区| 午夜成人免费电影| 久久精品国产网站| 成人av高清在线| 精品视频一区二区三区免费| 日韩一区二区免费在线观看| 2022国产精品视频| 中文字幕亚洲在| 午夜伊人狠狠久久| 国产一区二区三区在线看麻豆| 成人性生交大片免费| 色妞www精品视频| 日韩精品一区在线| 亚洲欧美综合另类在线卡通| 天堂va蜜桃一区二区三区| 黑人巨大精品欧美黑白配亚洲| 菠萝蜜视频在线观看一区| 欧美日韩国产大片| 久久久精品国产99久久精品芒果| 亚洲欧美另类综合偷拍| 奇米影视在线99精品| 99热这里都是精品| 日韩欧美国产一二三区| 亚洲同性同志一二三专区| 日韩av一二三| caoporn国产精品| 日韩欧美亚洲国产另类| 亚洲色图19p| 国产在线播放一区三区四| 在线观看日韩电影| 日本一区二区三区电影| 五月激情综合色| eeuss鲁片一区二区三区| 日韩一级欧美一级| 亚洲黄色免费电影| 国产不卡视频一区| 日韩视频在线一区二区| 亚洲午夜三级在线| 成人免费高清在线观看| 日韩精品一区二区三区视频| 一区二区三区四区中文字幕| 国产69精品一区二区亚洲孕妇 | 久久久无码精品亚洲日韩按摩| 国产丝袜欧美中文另类| 亚洲免费观看高清完整版在线观看 | 久久精品欧美日韩| 亚洲成人av中文| av中文字幕在线不卡| 久久久国际精品| 蜜桃久久久久久| 欧美午夜片在线观看| 国产精品久久久久9999吃药| 久久99精品一区二区三区三区| 欧美三级欧美一级| 中文字幕亚洲一区二区va在线| 精久久久久久久久久久| 欧美一区二区三区啪啪| 一区二区三区不卡视频在线观看| 成人精品在线视频观看| 26uuu亚洲综合色欧美| 热久久免费视频| 5月丁香婷婷综合| 日韩中文字幕91| 欧美日韩精品一区二区三区蜜桃| 亚洲欧美另类小说| 精品国产一区二区精华| 亚洲视频一区二区在线| 成人免费视频一区| 国产网站一区二区| 国产福利一区二区三区| 欧美国产国产综合| 成人午夜激情影院| 国产精品久久精品日日| 99久久国产综合色|国产精品| 亚洲色图在线播放|